list_proposals returns the seller’s current proposals for one account, narrowed to opportunities, media buys, or proposal IDs when the buyer supplies them. It is a synchronous read that never changes proposal or opportunity state. It is the repair read for proposal.created notifications, for proposal.offered (the buy-scoped sibling for seller offers against accepted media buys, defined under media_buy.seller_offers), and for proposal records in list_account_changes. Buyers learn that something changed from those signals and use list_proposals for current state, not for routine polling.
Request schema: /schemas/3.3.0-beta.0/media-buy/list-proposals-request.json
proposal.offered notification, read the proposal named in it with proposal_ids. To catch up on a buy after missed notifications, filter by buy:
Response schema:
/schemas/3.3.0-beta.0/media-buy/list-proposals-response.json
Snapshot and disposition
Eachproposal is the snapshot exactly as the seller issued it, so its terms_digest still verifies. Lifecycle state sits beside it in disposition, because a snapshot’s proposal_status (draft, committed, accepted) never changes after issue.
Sellers keep a snapshot readable while it is
available and for at least 30 days after it becomes accepted, declined, expired, or withdrawn. After that the snapshot may be gone; get_media_buys remains the record of accepted terms, and an older change-feed record repairs as unavailable. Refining or accepting a withdrawn snapshot fails with INVALID_STATE, as for a declined one. There is no withdrawal notification.
origin says how the snapshot was created:
A snapshot with
proposal_initiator: "seller" is always listed with origin: "seller_offer".
Seller offers
Seller offers are distinct from later proposals. A later proposal is adraft new_media_buy the seller creates under the buyer’s later_proposals consent and announces with proposal.created. A seller offer is a committed change to a live buy, announced with proposal.offered; it needs no later_proposals consent. Post-purchase media_buy_update proposals are out of scope for later proposals, so media_buy_update appears here only as a seller offer. Both notifications are identifiers-only and repair through list_proposals.
An outstanding offer (committed, not yet accepted, declined, or expired) is stale when a revision of its media buy leaves its base_media_buy_revision behind the buy’s current revision, whoever made the revision. A revision made by accepting the offer itself is not a staleness event, and terminal dispositions never change. A stale offer stays readable but cannot be accepted:
- The seller derives the state from the buy’s current revision at read time, so it never lists a stale offer as
available. It reportswithdrawn, withdisposition_changed_atset to the revision time. This is the one exception to the rule that a committed proposal is not withdrawn beforeexpires_at: the buyer could not act on the offer anyway, and the seller may release the replacement inventory it held. accept_proposalandrefine_proposalsfor it fail withINVALID_STATE, like any withdrawn snapshot, and the existing base-revision check still guards acceptance. Onceexpires_athas passed,PROPOSAL_EXPIREDtakes precedence.- It stays readable for at least 30 days after the revision, the same as any terminal disposition. No
withdrawnnotification is sent, so buyers must not cacheavailablefor an offer; read it withproposal_idsbefore acting.
available, media_buy_ids with dispositions: ["available"] returns only offers the buyer can still accept. A buyer that finds a notified offer missing from that scan reads it by proposal_ids, which distinguishes withdrawn (stale) from a snapshot past retention.
Opportunities
opportunities[] has one entry for each opportunity referenced by a returned proposal or named in opportunity_ids; unknown or inaccessible opportunity IDs are omitted. later_proposals is the consent the seller recorded and will enforce, including the computed window_ends_at and created_count. If updated_at shows a change the buyer did not make, another principal on the same account updated the opportunity.