> ## 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.

# List Watched Brand Emails

> Emails the brands you watch have sent, newest first

List emails from the brands your company watches, newest sent first, a page at a time. This is the feed on the dashboard's **Competitors** page. Emails usually arrive a few hours after they are sent, and `since` matches the send time. When you poll, set `since` about a day before your last check and skip emails whose `id` you have already seen.

Each email's `url` also works as the `url` of [Create Template from Example](/api-reference/templates/create-from-example), to remix it for your brand.

Requires the `templates:read` scope.

## Query parameters

<ParamField query="domain" type="string">
  Only this watched brand, by website or domain, such as `linear.app`. A brand
  you don't watch returns an empty list.
</ParamField>

<ParamField query="since" type="string">
  Only emails sent at or after this ISO 8601 date or time, such as `2026-10-01`
  or `2026-10-01T00:00:00Z`.
</ParamField>

<ParamField query="limit" type="integer" default="24">
  Emails per page, 1 to 60.
</ParamField>

<ParamField query="cursor" type="string">
  `nextCursor` from the previous page, for older emails. Pages don't shift when
  new emails arrive while you page.
</ParamField>

```bash theme={null}
curl "https://api.sequenzy.com/api/v1/gallery/watchlist/emails?since=2026-10-01&limit=10" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

## Response

<ResponseField name="emails" type="object[]">
  Emails from your watched brands, newest sent first.

  <Expandable title="properties">
    <ResponseField name="id" type="string">Email ID.</ResponseField>
    <ResponseField name="subject" type="string | null">Subject line.</ResponseField>
    <ResponseField name="preheader" type="string | null">Preview text.</ResponseField>
    <ResponseField name="type" type="string | null">Email type, such as `promotional`, `lifecycle` or `product_update`.</ResponseField>
    <ResponseField name="subtype" type="string | null">Email subtype, such as `feature_announcement` or `win_back`.</ResponseField>
    <ResponseField name="sentAt" type="string">When the brand sent it (ISO 8601).</ResponseField>
    <ResponseField name="collectedAt" type="string">When the gallery received it (ISO 8601).</ResponseField>
    <ResponseField name="analysis" type="object | null">The email's breakdown, the same as in [List Email References](/api-reference/references/list). `null` until it has been analyzed.</ResponseField>
    <ResponseField name="brand" type="object">The brand's `name`, `domain` and `slug`.</ResponseField>
    <ResponseField name="url" type="string">The email's gallery page.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="nextCursor" type="string | null">
  Pass as `cursor` for the next page. `null` on the last page.
</ResponseField>

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "emails": [
      {
        "id": "em_51kd",
        "subject": "Introducing Linear Asks",
        "preheader": "Turn requests from Slack into issues",
        "type": "product_update",
        "subtype": "feature_announcement",
        "sentAt": "2026-10-03T16:05:00.000Z",
        "collectedAt": "2026-10-03T21:40:00.000Z",
        "analysis": null,
        "brand": { "name": "Linear", "domain": "linear.app", "slug": "linear" },
        "url": "https://sequenzy.com/email-examples/brands/linear/emails/introducing-linear-asks"
      }
    ],
    "nextCursor": "2026-10-03T16:05:00.000Z_em_51kd"
  }
  ```

  ```json 400 theme={null}
  {
    "error": "since must be an ISO 8601 date, like 2026-10-01T00:00:00Z"
  }
  ```

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

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

A 400 also means `domain` is not a website or `cursor` is not one this endpoint returned. A 422 means `limit` is outside 1 to 60.


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