> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sequenzy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Watch a Brand

> Start watching a brand's emails, like a competitor's

Watch a brand, usually a competitor, by its website, the same as **Watch a brand** on the dashboard's **Competitors** page.

If the brand is already in the [Sequenzy email gallery](https://sequenzy.com/email-examples), you watch it at once: the watch comes back `available`, and its emails are in [List Watched Brand Emails](/api-reference/references/watchlist-emails). Otherwise the brand is requested, the same as [Request a Brand](/api-reference/references/brand-requests-create), and its emails show up once it is added and they are collected. New emails usually arrive a few hours after they are sent.

Watching again keeps the one watch: it returns 200 with `created` set to `false`, and a new `note` replaces the old one, so a retry never duplicates. Your company can keep up to 50 watches and brand requests together.

Requires the `templates:write` scope.

## Request

<ParamField body="website" type="string" required>
  The brand's website or domain, up to 255 characters, such as `competitor.com`
  or `https://competitor.com/pricing`. It is reduced to the registrable domain,
  so `www.competitor.com` and `competitor.com` are the same brand. Your own
  website returns 400.
</ParamField>

<ParamField body="note" type="string">
  Optional, up to 300 characters: what you want to see from the brand, such as
  its onboarding emails.
</ParamField>

```bash theme={null}
curl -X POST "https://api.sequenzy.com/api/v1/gallery/watchlist" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "website": "linear.app" }'
```

## Response

<ResponseField name="created" type="boolean">
  `true` for a new watch (status 201), `false` when you already watched this
  domain (status 200).
</ResponseField>

<ResponseField name="watch" type="object">
  The watch, with the same fields as in [List Watched
  Brands](/api-reference/references/watchlist-list).
</ResponseField>

<ResponseField name="message" type="string">
  What happens next.
</ResponseField>

<ResponseExample>
  ```json 201 theme={null}
  {
    "success": true,
    "created": true,
    "watch": {
      "id": "req_8fk2",
      "domain": "linear.app",
      "note": null,
      "status": "available",
      "declineReason": null,
      "watchedAt": "2026-10-04T10:00:00.000Z",
      "emailCount": 42,
      "latestEmailAt": "2026-10-03T16:05:00.000Z",
      "brand": {
        "name": "Linear",
        "slug": "linear",
        "url": "https://sequenzy.com/email-examples/brands/linear"
      }
    },
    "message": "Watching. Its emails are in GET /gallery/watchlist/emails, and new ones arrive a few hours after they're sent."
  }
  ```

  ```json 400 theme={null}
  {
    "error": "That is your own website. Enter a brand you want to learn from."
  }
  ```

  ```json 401 theme={null}
  {
    "error": "Invalid API key"
  }
  ```

  ```json 403 theme={null}
  {
    "error": "API key is missing required scope: templates:write"
  }
  ```
</ResponseExample>

A 400 also means the website is not a valid domain, or that your company already keeps 50 watches and brand requests; stop watching some with [Stop Watching a Brand](/api-reference/references/watchlist-delete) first. A 422 means the body failed validation, such as a missing `website` or a `note` over 300 characters.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.