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

# Advertiser

> The brand you buy for: identity, currency, markets, and the defaults every campaign inherits.

An **advertiser** is the brand a buyer account purchases media for. Campaigns, creatives and delivery
all belong to an advertiser, and its settings are the defaults every campaign starts from.

## Key fields

<ResponseField name="id" type="integer" required>
  Stable numeric id. Tools accept it as a number or an integer string.
</ResponseField>

<ResponseField name="name" type="string" required>
  Display name, for example "Wrenfield Coffee Co.".
</ResponseField>

<ResponseField name="brandDomain" type="string">
  The brand's domain (for example `wrenfieldcoffee.test`). Used to resolve the brand card and to
  identify the brand to sellers.
</ResponseField>

<ResponseField name="linkedBrand" type="object">
  The resolved brand card: name, logo, colors, industry, tagline and tone. Semi and the creative
  composer use the tone when writing copy.
</ResponseField>

<ResponseField name="primaryCurrency" type="string" required>
  ISO 4217 code. Every campaign budget uses it. It **locks after the first campaign**, so confirm it
  before creating.
</ResponseField>

<ResponseField name="sandbox" type="boolean" required>
  Sandbox advertisers run the whole loop with simulated delivery and no real spend. Fixed at
  creation.
</ResponseField>

<ResponseField name="brandCountries / channels" type="array">
  Preferred markets (ISO 3166-1 alpha-2) and channels. New campaigns start with these.
</ResponseField>

<ResponseField name="status" type="enum">
  `ACTIVE` or `ARCHIVED`. Archived advertisers can be restored.
</ResponseField>

<ResponseField name="autonomy" type="object">
  Defaults for new campaigns: `inventorySelection` and `rebriefing`, each `manual`, `propose` or
  `automatic`.
</ResponseField>

## Brand lookup

Before creating, preview the brand card without saving anything:

```json save_advertiser theme={null}
{ "resolveBrand": "wrenfieldcoffee.test" }
```

Semicola checks the AdCP brand registry and the domain's `/.well-known/brand.json`. The preview is
never stored.

## Create, update, archive

<CodeGroup>
  ```json Create theme={null}
  {
    "name": "Wrenfield Coffee Co.",
    "brand": "wrenfieldcoffee.test",
    "primaryCurrency": "USD",
    "sandbox": true,
    "brandCountries": ["US"],
    "idempotencyKey": "wrenfield-advertiser-create-0001"
  }
  ```

  ```json Archive theme={null}
  { "advertiserIds": [12], "isArchived": true }
  ```
</CodeGroup>

If a required field is missing, `save_advertiser` returns `needs_input` with a question. Check the
exact shapes in the [v3 Tool Catalog](/v3/tool-catalog).
