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
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 |
campaignBudgetType | enum | No | total_budget (default) — budget covers media plus fees |
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
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— missingnameorbrand, or an unsupportedprimaryCurrency.
Related
Advertiser tasks
All advertiser operations
Advertiser overview
Fields, lifecycle, and concepts
List available accounts
Find accounts to link
Update advertiser
Change defaults later