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

# Create advertiser

> Open a new advertiser account

`POST /api/v2/buyer/advertisers`

Creates an advertiser — the top-level account that owns campaigns, creatives, audiences, and linked partner accounts. Provide a name and a brand domain; Scope3 resolves brand identity from `/.well-known/brand.json`, the AdCP registry, or Brandfetch enrichment.

## Request

<CodeGroup>
  ```bash curl theme={null}
  curl -X POST https://api.interchange.io/api/v2/buyer/advertisers \
    -H "Authorization: Bearer $SCOPE3_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Acme Corp",
      "description": "Global advertising account for Acme Corporation",
      "brand": "acme.com",
      "primaryCurrency": "USD",
      "optimizationApplyMode": "MANUAL",
      "sandbox": false
    }'
  ```

  ```json With linked accounts and caps theme={null}
  {
    "name": "Acme Corp",
    "brand": "acme.com",
    "optimizationApplyMode": "MANUAL",
    "linkedAccounts": [
      { "storefrontId": 42, "sourceId": "src_main", "accountId": "acc_acme_pinnacle", "credentialId": "cred_snap_coke", "billingType": "advertiser" }
    ],
    "frequencyCaps": [
      { "max_impressions": 3, "window": { "interval": 7, "unit": "days" } }
    ]
  }
  ```
</CodeGroup>

## Parameters

| Field                   | Type    | Required | Notes                                                                                                                                                                                                                                |
| ----------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `name`                  | string  | Yes      | Advertiser name (1–255 chars)                                                                                                                                                                                                        |
| `brand`                 | string  | Yes      | Brand domain (e.g. `acme.com`) or brand website URL                                                                                                                                                                                  |
| `description`           | string  | No       | Optional description (max 1000 chars)                                                                                                                                                                                                |
| `saveBrand`             | boolean | No       | When `true`, auto-saves the resolved or confirmed brand identity to the AdCP registry if not yet registered. Normally not required when enrichment succeeds; use after review when registry persistence is desired. Default `false`  |
| `primaryCurrency`       | string  | No       | ISO 4217 code (3 letters). Defaults to `USD`. Campaigns under this advertiser must use it                                                                                                                                            |
| `optimizationApplyMode` | enum    | No       | `AUTO` or `MANUAL`. Default `MANUAL`                                                                                                                                                                                                 |
| `sandbox`               | boolean | No       | When `true`, all ADCP calls route to sandbox accounts. **Immutable after creation.** Default `false`                                                                                                                                 |
| `linkedAccounts`        | array   | No       | Partner accounts to link at creation. Each: `storefrontId`, `sourceId`, `accountId`, `credentialId?`, `billingType?`. Use `credentialId` from list available accounts when multiple connected credentials expose the same account ID |
| `utmConfig`             | array   | No       | Default UTM params (max 20). Each: `paramKey`, `paramValue`                                                                                                                                                                          |
| `frequencyCaps`         | array   | No       | Buyer-side caps. Each: `max_impressions` plus `window` (`{ interval, unit }`); `unit` is `seconds`, `minutes`, `hours`, `days`, or `campaign`                                                                                        |
| `dataDelivery`          | object  | No       | Offline data delivery destination config                                                                                                                                                                                             |

## Response

```json theme={null}
{
  "id": "12345",
  "name": "Acme Corp",
  "description": null,
  "status": "ACTIVE",
  "sandbox": false,
  "brand": "acme.com",
  "primaryCurrency": "USD",
  "optimizationApplyMode": "MANUAL",
  "createdAt": "2025-01-15T10:30:00Z",
  "updatedAt": "2025-01-15T10:30:00Z",
  "linkedBrand": {
    "id": "brand_456",
    "name": "Acme Corp",
    "domain": "acme.com",
    "manifest": { "name": "Acme Corp", "url": "https://www.acme.com" }
  },
  "utmConfig": [
    { "paramKey": "utm_source", "paramValue": "scope3", "source": "advertiser" },
    { "paramKey": "utm_medium", "paramValue": "agentic", "source": "advertiser" },
    { "paramKey": "utm_campaign", "paramValue": "{CAMPAIGN_ID}", "source": "advertiser" },
    { "paramKey": "utm_content", "paramValue": "{CREATIVE_ID}", "source": "advertiser" },
    { "paramKey": "utm_media_buy", "paramValue": "{MEDIA_BUY_ID}", "source": "advertiser" },
    { "paramKey": "utm_package", "paramValue": "{PACKAGE_ID}", "source": "advertiser" }
  ]
}
```

Returns `201` with the full advertiser resource. `id` is the stable identifier you pass to every sub-resource operation. If the brand resolves through enrichment rather than an official registry entry, the response carries a `brandWarning`. If no registry or enrichment data is found, the first create returns `400`; after confirming the advertiser name and brand domain, retry with `saveBrand: true` to register that brand identity.

## Errors

* `400 VALIDATION_ERROR` — missing `name` or `brand`, or an unsupported `primaryCurrency`.

See [Errors](/v2/reference/errors) for the full error contract.

## Related

<CardGroup cols={2}>
  <Card title="Advertiser tasks" href="/v2/buyer/advertisers/tasks" icon="list-check">
    All advertiser operations
  </Card>

  <Card title="Advertiser overview" href="/v2/object-guides/advertiser" icon="user-tie">
    Fields, lifecycle, and concepts
  </Card>

  <Card title="List available accounts" href="/v2/buyer/advertisers/tasks/list-available-accounts" icon="link">
    Find accounts to link
  </Card>

  <Card title="Update advertiser" href="/v2/buyer/advertisers/tasks/update-advertiser" icon="pen">
    Change defaults later
  </Card>
</CardGroup>
