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. When the seller decides, the task completes, Semicola updates the buy and, if you registered a push notification URL, calls it with a signed webhook. You can also poll the task.

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.