Skip to main content
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)
  • 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