These workflows require an enrolled Buyer account. Call
get_status first
and use switch_account if the active account is a Seller or organisation.Buyer workflow at a glance
- Create or select an advertiser.
- Create a campaign with its brief, flight, and budget.
- Request proposals from ready sellers.
- Accept a quoted proposal or stage returned products.
- Inspect the staged media buys and resolve any draft issues.
- Launch the campaign explicitly.
1. Create an advertiser
Creating requiresname and brand. Choose the primary currency deliberately:
it defaults to USD when omitted and becomes locked after the first campaign or
seller binding. sandbox is also immutable after creation.
advertiserId. To update, send it with only the fields to
change. Do not send sandbox on an update.
2. Create a campaign
Creation requiresadvertiserId, name, flight, budget, and an
idempotencyKey. Write the brief from the buyer’s stated goal, audience, and
what is being promoted.
campaignId and revision.
3. Choose sellers and request proposals
get_status returns readyDestinations with the seller IDs accepted by
request_proposals. These are seller/storefront IDs, not account IDs.
complete, partial, or failed result. A concurrent call
using the same idempotency key may instead see running; retry that same key
until it becomes terminal. Each seller may return:
quotedwith qualified Proposal IDs;productswith aproductQueryId; orfailedwith a bounded error.
4. Stage a media buy
Accept a quoted proposal
idempotencyKey on every call, although proposal
acceptance derives retry safety from the qualified proposal version and does
not consume the supplied key.
Stage returned products
For a seller that returned products without a Proposal, preserve every returned identity field and use that seller’sproductQueryId as the idempotency key:
inventorySourceId and salesAgentId
distinguish products that may otherwise look identical across seller routes.
Creation-time flight and top-level budget are not supported by
save_media_buy; allocate with products[].budget, then update the draft’s
flight in a separate call using mediaBuyId.
5. Inspect staged work
List media buys under the campaign:proposalSource fields returned by save_media_buy when that audit link
matters. There is no cross-campaign Buyer media-buy list; select a campaign
first.
Buyer reads currently project isArchived: false because the underlying read
does not expose media-buy archive state. Do not use that field or an
isArchived: true search as proof that no archived buy exists.
There is no separate confirmation call in v3. At this step, inspect each draft,
apply any supported correction with save_media_buy({ mediaBuyId: ... }), and
continue only when the staged set is the one you intend to launch.
6. Launch explicitly
Launch is an update to an existing campaign, not part of campaign creation:Lifecycle operations
isPaused: truepauses an active campaign;falsereactivates it.isArchived: truearchives it.desiredPhase: "canceled"and unarchive are not implemented in v3; use v2.- A tracked campaign is read-only until it is adopted or duplicated through the existing v2 workflow.
autonomyfields are accepted for forward compatibility but are not persisted yet.