Skip to main content
Canceling a campaign cancels every media buy under it, and each seller answers on its own time. The campaign reads as phase: "ending" until every buy has ended. Most of the time that is only waiting. Sometimes a buy’s cancel did not reach its seller, or the seller refused it, and the campaign stays ending until someone sends the cancel again. While the phase is ending, reading the campaign returns stalledCancels: the buys that will not finish ending without a new request, each with the reason.
The response text names each buy and its state too.

An empty list

An empty stalledCancels means every open buy is waiting normally: ending at its seller, waiting for an operator to approve the cancel, or being sent or retried by Apostra. There is nothing to do but wait. The list is a statement about the buys that need a new request, so it is not a progress report.

The three states

To send it again, use save_campaign with desiredPhase: "canceled" and the campaign’s current expectedRevision. That call sends the cancel only for the buys that are pending or failed, and never cancels a confirmed buy twice. To cancel one buy, use save_media_buy with mediaBuyId and isCanceled: true.

What error holds

error uses AdCP’s own error shape, with only two fields:
  • code is present only when it is one of AdCP’s standard error codes. A seller may send a code of its own; it is left out.
  • recovery is present when the seller sent transient, correctable or terminal.
error is absent when the seller sent neither a standard code nor a recovery, and for a rejected approval. The state, not error, says the seller refused. The seller’s own message, suggestion, details and buyer_reason are never returned.

When the list is absent

The field is absent in every phase except ending. It is also absent for a campaign whose cancel was requested before Apostra began recording each cancel it sends: for those, a buy with no cancel on record does not prove that none was sent. Such a campaign reads as it did before, with the phase ending and no list. Send the cancel again if it has stayed ending. Related: cancel a campaign and its media buys, and the limits of v3 cancellation.