Publish a catalog
Three objects make you transactable: packages, a rate card, and avails. Publish them by console, API, or files; the pipeline is identical.
At a glance
- Scope:
catalog:write - Endpoints:
PUT /v1/me/catalog,PUT /v1/me/rate-cards,PUT /v1/me/avails - Every ingest runs the catalog integrity rule; conflicts reject before a buyer can ever see them
- No code? The same pipeline runs on file drops
1. Define packages
Publish packages with PUT /v1/me/catalog. Each package carries a type, a definition, and the currencies and guarantee tiers it sells under; the full field reference is the package object.
PUT /v1/me/catalog
{ "taxonomy_version": "yourco-2026q4-v1",
"packages": [
{ "package_id": "yc-news-am", "type": "daypart", "network": "YourNet",
"definition": { "selling_title": "Morning News", "days": ["Mon","Tue","Wed","Thu","Fri"],
"start": "06:00", "end": "09:00" },
"currencies": ["spots"], "guarantee_tiers": ["ng_preemptible","guaranteed"] },
{ "package_id": "yc-holiday-rot", "type": "rotator", "network": "YourNet",
"definition": { "windows": [{ "days": ["Sat","Sun"], "start": "09:00", "end": "20:00" }] },
"effective": { "start": "2026-11-23", "end": "2026-12-27" },
"currencies": ["hh"], "guarantee_tiers": ["audience_guaranteed"] } ] }
The integrity check runs on ingest: overlapping Available coverage on the same network and week rejects the update with a conflict report. Fix, resubmit, done; the error can never reach a buyer.
2. Publish rates
Publish rates with PUT /v1/me/rate-cards: versioned commits with an effective window, drift detection included. The entry dimensions are documented on the rate entry object.
PUT /v1/me/rate-cards
{ "commit": "yourco-2026q4-v2", "effective": { "start": "2026-09-28", "end": "2026-12-27" },
"entries": [ { "package_id": "yc-news-am", "week": "2026-W41",
"class": "scatter", "advertiser_class": "general", "spot_length": 30,
"guarantee_tier": "ng_preemptible", "clearance_tier": "P2",
"gross_rate_unit": 180.00 } ] }
3. Publish avails, honestly (or don't)
Publish avails with PUT /v1/me/avails, batched. Tri-state per package and week: available, unavailable, or projected (quotable, not firmly clearable), with a sellout_level. Buyers' agents reward honest sellout signals with earlier, larger orders. Publishing is optional: you can set a package's avails_policy to on_request or withheld and answer briefs with a plan instead. See Sell without publishing avails.
4. Choose visibility and disclosure
Private catalogs per agreement with negotiated rates, open catalog at standard terms, or both. Alongside visibility, set disclosure per package: publish rates or quote per campaign (pricing_policy), publish avails or hold them (avails_policy), and override either per agreement. Remnant windows can publish on a standing cadence with signals. Then watch the review queue: see Approve orders. For how real inventory shapes compose (sports, tentpoles, pools, sponsorships, local markets, other currencies), see Selling patterns.