Skip to main content
Deprecated. This page documents the v2 buyer API, which is closed to new API clients and switches off on 1 December 2026. Use V3 instead: see Move a v2 buyer REST integration to V3. The conversion endpoint, Log event, stays open.
GET /api/v2/buyer/campaigns/:id/workspace Returns the CampaignWorkspace projection: a presentation-ready view over Get campaign that assembles phase, handling, budget, source, media buys, and per-seller creative approval status into one response. It’s built for a single-call dashboard read — the campaign drill-in widget uses it — not a substitute for get_campaign, which remains the source of the raw campaign resource.

Request

Parameters

Response

Returns the CampaignWorkspace for the campaign — the base campaign fields plus mediaBuys[] and creatives[]. See the getCampaignWorkspace schema in the API reference for the authoritative response shape and field types; the key fields are summarized in Sections below. Conditional fields (for example source, and each media buy’s attentionNote) appear only when they apply to the campaign. CampaignWorkspace also declares spend, pacing, outcome, and recentActivity top-level fields, and dimensions/previewUrl/placements on each creative — but this endpoint does not hydrate any of them today. They are simply absent from the response, not falsy or zero.

Review vs. record mode

mode tells the campaign drill-in widget which receipt moment it’s rendering, and is chosen by the server from the campaign’s phase — it is not a request parameter. A campaign still in draft (not yet executed / gone live) returns mode: "review": a plan glance plus a read-only readiness.blockers list of what still stands between the draft and launch. Every other phase (active, completed, canceled) returns mode: "record", the ongoing-delivery view. Only in review mode does this endpoint hydrate readiness, and only its blockers[] — never nextAction, and attention is always [] here. Each blocker is { code, message }, derived purely from the campaign’s own media buys and creatives (no extra lookups):
  • CREATIVE_NOT_READY — one per creative that isn’t ready on every media buy it’s attached to: rejected, in_review, missing, or not yet resolvable on any single occurrence blocks the whole creative (approved on one media buy does not clear a still-unresolved or rejected occurrence on another; a creative with no seller-review status yet counts as not ready, never as clear). The one exception is a seller on an ad platform that reviews a creative only once an ad uses it (Meta, Snap, Reddit, Spotify, Amazon and OpenAI Ads): there, a creative that has not been sent to the platform yet is expected before launch and is not a blocker, because launching sends it. A rejected, in-review or failed creative still blocks. The other exception is a media buy that books now with no creatives, because every source it routes to accepts that and no line item sets startRequiresAllCreativesApproved: true: a creative there that is only waiting on the seller’s review (or has no verdict yet) is not a blocker, since it attaches when the seller approves it. The launch preview names that buy. A rejected, missing or failed creative on it still blocks. See Creative sync outcomes.
  • NO_MEDIA_BUYS — the campaign has no media buys yet
readiness.blockers is always present as an array in review mode — an empty array means the campaign is ready to go live, not that readiness wasn’t checked. In record mode, readiness is absent entirely, as before.

Sections

creatives[].readiness is the worst status across that creative’s sellerReviews[] — rejected outranks in_review/missing, which outranks ready. A creative with no seller reviews yet omits readiness entirely rather than defaulting to ready. mediaBuys[] and creatives[] are drawn directly from the campaign’s own media buys, so this is a single-fetch read — no extra round-trip per media buy or creative.

Errors

  • 404 NOT_FOUND — no campaign with this ID is visible to the authenticated account.
See Errors for the full error contract.

Get campaign

The full campaign resource this projects from

List campaigns

Compact summaries across campaigns

Get media buy status

Poll live ADCP status

Campaign overview

Fields, lifecycle, and concepts