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

# Request a Brand

> Ask for a brand, like a competitor, to be added to the email gallery

Ask for a brand, usually a competitor, to be added to the [Sequenzy email gallery](https://sequenzy.com/email-examples), the same as **Suggest a brand** in the dashboard's gallery picker. Sequenzy signs up to the brand's emails and adds them to the gallery; follow the request with [List Brand Requests](/api-reference/references/brand-requests-list).

Asking again for the same domain keeps the one request: it returns 200 with `created` set to `false`, and a new `note` replaces the old one, so a retry never duplicates. If the brand is already in the gallery, the request comes back with status `available`. Your company can keep up to 50 requests.

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 request. 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/brand-requests" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "website": "competitor.com",
    "note": "Their onboarding emails"
  }'
```

## Response

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

<ResponseField name="request" type="object">
  The request, with the same fields as in [List Brand
  Requests](/api-reference/references/brand-requests-list).
</ResponseField>

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

<ResponseExample>
  ```json 201 theme={null}
  {
    "success": true,
    "created": true,
    "request": {
      "id": "req_3jd9",
      "domain": "competitor.com",
      "note": "Their onboarding emails",
      "status": "requested",
      "declineReason": null,
      "requestedAt": "2026-10-02T15:40:00.000Z",
      "brand": null
    },
    "message": "Requested. The brand moves to collecting once it is added, and its emails show up in references once they arrive."
  }
  ```

  ```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 requests; remove some with [Remove a Brand Request](/api-reference/references/brand-requests-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.