Skip to main content
decline_proposals records that the buyer evaluated one or more proposals and will not pursue them. The operation is terminal: a seller must reject later refine_proposals, canonical accept_proposal, or new logical calls through the deprecated 3.x create_media_buy compatibility facade for a declined proposal with INVALID_STATE. Exact retries of an earlier successful call still follow the shared idempotency replay contract. A proposal that was already executed cannot subsequently be declined and returns unable. Request schema: /schemas/3.2.1/media-buy/decline-proposals-request.json
Each result has an explicit declined or unable outcome and preserves request order. Retrying with the same idempotency key replays the original response. Declining the same proposal again under a new key also returns declined while preserving the first recorded reason and detail, making the terminal state semantically idempotent. When opportunity is present, every proposal must belong to its opportunity_id. Proposal outcomes are independent, but the opportunity update is applied only if every result is declined; any unable result leaves the opportunity unchanged. Declining a seller offer (experimental in AdCP 3.3, a proposal with proposal_initiator: "seller" against an accepted buy) works the same way: the signed terms of the accepted buy stand and the offer can no longer be accepted. An offer the buyer ignores lapses at expires_at (disposition expired) with no call and the signed terms stand, and declining an offer that has already lapsed returns declined. See Seller offers. The request does not carry proposal_version. Each proposal_id identifies one immutable commercial snapshot; refine_proposals mints a new ID whenever terms change.