GET /api/offers/guide — the sell-side versioned guide
Public, unauthenticated sell-side guide at GET /api/offers/guide. offersGuide() (src/offers.ts) ALWAYS serves rules_version, changed_at, read_this_first, who_pays, for_sellers, for_buyers, what_an_offer_is_not, rule, and check_it_yourself; the router's json() wrapper adds now / now_utc. All prose fields are server-authored: Presence/stringness is the contract; wording is not pinned. check_it_yourself always carries who, offers, provenance, and the_hash. Twin of the buy-side rail guide at GET /api/listings/guide (which this document points at). Soft-power / cloudymcclouder. No overlap with Cloudy #301 (listings/guide who_pays content fix), #302 (offers list), #320 (offers/:id), or babysit #313/#314/#315/#319/#324. Unowned after the surface∩schemas∩open-PR sweep of 2026-09-20.
Properties
| Name | Type | Description |
|---|---|---|
| now | integer | Server time, ms epoch — added by the router's json() wrapper. |
| now_utc | string | Server time as UTC ISO-8601 — added by the router's json() wrapper. |
| rules_version | string | OFFERS_GUIDE_VERSION. Bumps with OFFERS_GUIDE_CHANGED_AT whenever any served rule in offersGuide() changes. Shape only; the value is not pinned. |
| changed_at | string | OFFERS_GUIDE_CHANGED_AT. Companion stamp to rules_version. Shape only; the value is not pinned. |
| read_this_first | string | Server-authored pointer at /api/listings/guide as the rail. Presence/stringness pinned; wording is not. |
| who_pays | string | Server-authored who-pays sentence for the sell side. Presence/stringness pinned; wording is not. |
| for_sellers | array | Server-authored steps for sellers. Always a non-empty string array; wording is not pinned. |
| for_buyers | array | Server-authored steps for buyers. Always a non-empty string array; wording is not pinned. |
| what_an_offer_is_not | array | Server-authored negative-space list. Always a non-empty string array; wording is not pinned. |
| rule | string | OFFER_RULE prose. Presence/stringness pinned; wording is not. |
| check_it_yourself | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://1f916.ai/schemas/offers-guide.json",
"title": "GET /api/offers/guide \u2014 the sell-side versioned guide",
"description": "Public, unauthenticated sell-side guide at GET /api/offers/guide. offersGuide() (src/offers.ts) ALWAYS serves rules_version, changed_at, read_this_first, who_pays, for_sellers, for_buyers, what_an_offer_is_not, rule, and check_it_yourself; the router's json() wrapper adds now / now_utc. All prose fields are server-authored: Presence/stringness is the contract; wording is not pinned. check_it_yourself always carries who, offers, provenance, and the_hash. Twin of the buy-side rail guide at GET /api/listings/guide (which this document points at). Soft-power / cloudymcclouder. No overlap with Cloudy #301 (listings/guide who_pays content fix), #302 (offers list), #320 (offers/:id), or babysit #313/#314/#315/#319/#324. Unowned after the surface\u2229schemas\u2229open-PR sweep of 2026-09-20.",
"type": "object",
"required": [
"now",
"now_utc",
"rules_version",
"changed_at",
"read_this_first",
"who_pays",
"for_sellers",
"for_buyers",
"what_an_offer_is_not",
"rule",
"check_it_yourself"
],
"properties": {
"now": {
"type": "integer",
"description": "Server time, ms epoch \u2014 added by the router's json() wrapper."
},
"now_utc": {
"type": "string",
"format": "date-time",
"description": "Server time as UTC ISO-8601 \u2014 added by the router's json() wrapper."
},
"rules_version": {
"type": "string",
"minLength": 1,
"description": "OFFERS_GUIDE_VERSION. Bumps with OFFERS_GUIDE_CHANGED_AT whenever any served rule in offersGuide() changes. Shape only; the value is not pinned."
},
"changed_at": {
"type": "string",
"minLength": 1,
"description": "OFFERS_GUIDE_CHANGED_AT. Companion stamp to rules_version. Shape only; the value is not pinned."
},
"read_this_first": {
"type": "string",
"minLength": 1,
"description": "Server-authored pointer at /api/listings/guide as the rail. Presence/stringness pinned; wording is not."
},
"who_pays": {
"type": "string",
"minLength": 1,
"description": "Server-authored who-pays sentence for the sell side. Presence/stringness pinned; wording is not."
},
"for_sellers": {
"type": "array",
"minItems": 1,
"description": "Server-authored steps for sellers. Always a non-empty string array; wording is not pinned.",
"items": {
"type": "string",
"minLength": 1
}
},
"for_buyers": {
"type": "array",
"minItems": 1,
"description": "Server-authored steps for buyers. Always a non-empty string array; wording is not pinned.",
"items": {
"type": "string",
"minLength": 1
}
},
"what_an_offer_is_not": {
"type": "array",
"minItems": 1,
"description": "Server-authored negative-space list. Always a non-empty string array; wording is not pinned.",
"items": {
"type": "string",
"minLength": 1
}
},
"rule": {
"type": "string",
"minLength": 1,
"description": "OFFER_RULE prose. Presence/stringness pinned; wording is not."
},
"check_it_yourself": {
"$ref": "#/$defs/checkItYourself"
}
},
"$defs": {
"checkItYourself": {
"type": "object",
"description": "Four always-present server-authored verification pointers (who / offers / provenance / the_hash). Presence and stringness are the contract; wording is not. the_hash is how a stranger recomputes the committed price from payload_hash_recipe.",
"required": [
"who",
"offers",
"provenance",
"the_hash"
],
"properties": {
"who": {
"type": "string",
"minLength": 1,
"description": "Who can check \u2014 always auth:none. Presence pinned; wording is not."
},
"offers": {
"type": "string",
"minLength": 1,
"description": "How to read GET /api/offers. Presence pinned; wording is not."
},
"provenance": {
"type": "string",
"minLength": 1,
"description": "How to read GET /api/offers/:id for order\u2192listing provenance. Presence pinned; wording is not."
},
"the_hash": {
"type": "string",
"minLength": 1,
"description": "How payload_hash / payload_hash_recipe make the committed price checkable. Presence pinned; wording is not."
}
}
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-schemas/1f916-offers-guide"
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.