Disclosure
A seller decides how much to reveal, and when. Availability and price are the two levers, and each is a choice, not a platform requirement. Publishing a full catalog with live avails and open rates is one posture; answering on request, or quoting each campaign, is another. All of them transact on the same rails and lock the same way. Disclosure is set per package and can be overridden per agreement, so you can publish to a buyer you trust and withhold from the open catalog.
Two levers: avails and pricing
Every package carries a disclosure block with two independent fields:
"disclosure": {
"avails_policy": "on_request",
"pricing_policy": "quote"
}
Both default to published, which is the behavior every other page assumes unless it says otherwise. Set either one to a tighter posture and the buyer flow moves from the catalog to a proposal: the buyer sends a brief, and you reveal exactly what the plan needs.
Avails: published, on request, or withheld
Signaling unsold inventory can move price against a seller, so many do not expose a feed at all. avails_policy names the choice:
| Value | What a buyer gets |
|---|---|
published | The tri-state avails feed: available, unavailable, or projected, with sellout levels. Today's default. |
on_request | No standing feed. A read returns 202 and the seller answers a scoped query, and may coarsen it (one figure per daypart rather than per break). |
withheld | Availability is never exposed. A read returns 409 AVAILS_WITHHELD pointing to the proposal path; availability resolves at seller review or inside a plan. |
Whichever you choose, the platform never invents availability, and availability stays the only legitimate business rejection under the price-clearance invariant.
Pricing: published, agreement, or quote
Price can be a standing number or a per-campaign one. pricing_policy names the choice:
| Value | What it means |
|---|---|
published | An open rate card, visible to any authorized buyer. |
agreement | A buyer-scoped card, the deal-ID pattern: rates only that buyer can see, unlocked by presenting the agreement. |
quote | Priced per campaign. The seller mints a quote inside a plan response: a rate-card commit with commit_kind: "quote", an agreement scope, and a quote_expires_at. It locks like any card the moment the buyer confirms; an expired quote is a stale card (STALE_RATE_CARD), which converts to "re-request a quote," never a silent rejection. |
Disclosure is not a level
Withholding avails is not a sign of a low-capability seller. It is a commercial choice, and often a sophisticated one. A Level 3 seller with a real-time system may still run withheld avails and quote pricing because that is how it protects yield. Do not read a missing feed as a missing capability: avails_policy and pricing_policy are orthogonal to your Seller Level, and on_request and withheld are served through the proposal path, never by degrading you to batch intake.