Skip to main content
A campaign’s status (DRAFT, ACTIVE, PAUSED, …) says where it is in its lifecycle. It doesn’t say whether it can launch, or whether a launched campaign is actually delivering. Semicola answers those two questions separately.

Launch blockers

Review & go live lists every blocker with a plain-language label and, where there is one, a fix Semi can do for you. canGoLive is true only for a draft with no blockers. The campaign workspace carries the same answer as actions.canGoLive. Launching with any blocker present is refused with CONFLICT (“Not ready to go live: …”), and the blockers come back in the error’s details. A launch can also stop if a selected product is on one of the advertiser’s exclusion property lists.

Creatives aren’t a launch blocker

Missing creative isn’t in the blocker list. The receipt reports format coverage (required, covered, missing) so you can see which buys still need creative, but a campaign can launch without it: sellers accept the buy and it waits in pending_creatives until a creative arrives. Don’t tell a buyer creative is required before launch unless a tool response says so.

Is it delivering?

GET /api/v2/buyer/campaigns/{id}/media-buy-status returns the campaign’s operationalStatus, the most restrictive across its buys: Each buy also lists blockers: creatives_required, awaiting_seller_approval, or the failure’s errorCode (dispatch_failed when there’s none), plus pendingReason and pendingSince. The response also says how many sellers were queried, whether any seller-side buy exists, whether any delivery has been reported, and how many creative reviews are pending with sellers.

Agent guidance

  • Before saying a campaign is delivering, check operationalStatus. status: ACTIVE alone isn’t enough.
  • When a draft can’t launch, surface every blocker as a concrete next step, never just “it isn’t ready”.
  • Several blockers can be present at once. Address them all.