open_approvals.
What each item shows
The evaluation is advice. It never approves or rejects on its own, and a fresh evaluation never
changes an item’s status.
Deciding
Approve or reject in the page, or withdecide_media_buy_approval:
decide_media_buy_approval
decide_media_buy_approval always asks the person to confirm before it acts.
What happens next
- Approved: the buy is forwarded to your inventory source. The outcome is recorded (all completed, all submitted, partial, or failed), and the buyer’s side moves to active once the source accepts.
- Rejected: the buyer’s AdCP task ends as rejected, with your notes as the reason.
Media buys on your storefront
open_media_buys_page lists every buy on the storefront, most urgent first. open_page (page: "media_buy_timeline")
shows one buy’s stages (received, screened, decided, forwarded, accepted, delivering) with timestamps
and where it is stuck.
Decisions are final
An item movespending → approved or pending → rejected. Deciding an item that’s no longer pending
fails (“Cannot approve an approval that is approved.”), so a double decision can’t slip through. A
pending approval for a proposal draft becomes revoked when that draft is discarded.
When forwarding fails
Approval and forwarding are separate. If your approval is recorded but the forward to the inventory source failed, re-send it withretry_forward (the media buy id or its approval id). It reuses the
same idempotency key, so a source that already received the buy can’t book it twice. The result is
forwarded, forward_failed or awaiting_source. retry_forward asks the person to confirm.
Over REST
All under/api/v2/storefront:
Not available yet
- A delivery-readiness block on pending items (packages without a creative, creatives that don’t fit and why, creative sync failures). Check the buy’s creatives on the timeline before approving.