PUT /api/v2/buyer/advertisers/{advertiserId}
Updates an existing advertiser through the raw v2 API. All body fields are optional — send only what you want to change. Brand domain, an already-known country scope, currency, and reporting time zone can change only before the first campaign or seller-account binding. A legacy advertiser whose country scope is still unknown may classify it once even after first use. sandbox is fixed at creation.
In the app
In Apostra, advertiser settings open as one Task titled Advertiser settings. Open it from Settings on an advertiser’s row on the Advertisers Page, from the pencil beside the advertiser in the left rail, or from Edit advertiser under Settings → Setup & readiness. An agent opens it withopen_add_advertiser and
the advertiser’s advertiserId. The Task lets you change the name,
description, channels, and, until the advertiser has a campaign or linked
seller account, the reporting time zone. The brand domain, countries, currency,
and environment show as read-only, each with a short reason. Until the
advertiser has a campaign or linked seller account, the brand domain, countries
and currency can still be changed through this endpoint or an agent; after
that they are fixed. The environment is fixed when the advertiser is created.
Save changes saves the advertiser, opens the Advertisers Page, and closes
the Task. Cancel closes it without saving. If the Advertisers Page can’t
open, the Task stays open with the error and a Done button. Once the Task
closes, it doesn’t come back when you reopen that chat. Creating an advertiser
works the same way, except the confirmation stays open so you can switch into
the new advertiser or add another, until you choose Done.
Buyer-owned labels are managed separately through V3 MCP save_advertiser,
not this REST endpoint. See Dimensions and labels.
Request
curl
Parameters
Response
brandCountriesKnown: true confirms that brandCountries is authoritative.
An empty authoritative list is global, not a scope with zero countries. A
legacy advertiser may return brandCountriesKnown: false with an empty list;
setting brandCountries classifies that scope once, even after first use.
If a legacy advertiser has no settings row and its terminal (completed, cancelled, or archived) campaign history spans currencies, include
primaryCurrency with the intended currency when you add its brand. The value must match one of the historical campaign currencies. Active campaigns and currently linked seller accounts remain authoritative and still block conflicting currency choices; do not create a duplicate advertiser to bypass that conflict.Errors
400 VALIDATION_ERROR— invalid field value.409 CONFLICT— brand domain, an already-known country scope, currency, or reporting time zone is changed after the first campaign or seller-account binding, or legacy currency evidence cannot be resolved safely. Classifying a still-unknown legacy country scope is the one country-scope exception.404 NOT_FOUND—advertiserIddoes not exist or is not visible to the authenticated account.
The canonical UI keeps brand, an already-known country scope, and currency out of the edit form. It offers a one-time country classification for a legacy advertiser whose scope is still unknown. Create another advertiser from the UI when known identity values must differ.
Related
Advertiser tasks
All advertiser operations
Advertiser overview
Fields, lifecycle, and concepts
Get advertiser
Read the current state first
Delete advertiser
Archive when done