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. After that, the raw v2 API refuses a brand change; an account administrator changes the brand for future buys through save_advertiser instead. A brand the advertiser has used stays reserved to it, archived included; the exception is an archived sandbox advertiser, which releases every brand it has used. Changing back to an earlier brand reuses its seller accounts where their links still exist; a link that a newer link at the same seller agent replaced may need to be found or provisioned again. Currency and reporting time zone stay fixed. 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, everything about an advertiser lives on the advertiser. Its 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 the Media Partners Page. An agent opens it withopen_add_advertiser and the advertiser’s
advertiserId.
The Task’s header shows the advertiser’s status (active or archived) and a
Sandbox label on a sandbox advertiser. The brand domain and currency fields each
carry a status chip (for the brand, Resolved, Pending, or Not set), and when the
brand or currency is missing, the field’s helper text says what to ask Murph to
set. You can 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.
In a Media Company account, Advertiser settings is available for your House
and Self-serve advertisers. You can change the name and the reporting time
zone there. A Scope3-operated System advertiser has no settings action.
The Task also shows Client access for these advertisers. Where client
access is turned on for your account, you invite someone from the client and
decide what they can do; where it is not, the section says so. See
Invite and manage a client’s access.
Advertiser settings is the only place in the app for an advertiser’s own
settings: the account Settings menu no longer has an advertiser section.
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. The same code, on fieldbrandCountries, means the new brand or countries would create or widen an overlap with another active advertiser of the same brand in your account. The message names that advertiser and suggests countries outside the overlap. An edit that leaves an existing overlap unchanged, or narrows it, is allowed. See One brand, one market.409 CONFLICT— brand domain, an already-known country scope, currency, or reporting time zone is changed through this API 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