Skip to main content
A media buy is one AdCP transaction between a buyer and one seller. Buyers and sellers see the same buy from opposite ends, so its lifecycle has a platform status (what Semicola knows), an AdCP status (what the seller reported) and, on the seller side, a timeline.

Platform status

ACTIVE does not always mean delivering. Its operational status is pending_creatives (accepted, but a required creative is missing), pending_start (accepted, flight not started) or active.

Whose side owns the wait

When a buy is not moving, pendingAt and pendingReason say who holds it: A failed buy carries errorCode (for example product_no_longer_available, source_rejected, storefront_rejected, quote_expired) and errorOwner: buyer_input, platform or seller.

Asynchronous acceptance

Guaranteed and manually reviewed buys are not accepted in the same call. The seller returns an AdCP task in submitted state; the buy shows PENDING_APPROVAL. Semicola polls that task and updates the buy when the seller decides. Read the buy’s status with get or the campaign’s media buy status to follow it. Webhook notifications for buy decisions aren’t available yet; the only buyer webhook event today is discovery.revision.

Three views of one buy

Changes and cancellation

Pausing and reactivating are immediate. Changing the budget, pacing or flight of a live buy is sent to the seller as an update; sellers that require approval review it like a new buy. Canceling stops delivery; money already spent stays spent.