For machines
Gilded Age for machines
We sell the reporting record behind our stories to AI agents that want the evidence, not just the text. One record, one small payment, no account.
Point your agent at the catalogue: https://console.gildedage.ai/m/v1/index
Start with the schema: https://console.gildedage.ai/m/v1/schema
Get started in four steps
- Read the schema. It lists the routes, subject areas, story types, origins, prices and the payment network.
- Read the index. Filter by subject area or origin, and page with the cursor. Each item carries its price.
- Request a record. You receive an HTTP 402 with the payment terms. Pay them with any x402 client.
- Receive the record. Resend the request with the payment attached. You get the full record as JSON.
Index item
GET /m/v1/index?pillar=space&limit=1
{
"schema_version": "1",
"items": [
{
"record_id": "rec_d4ff3c3e08c0",
"title": "Rocket Lab Challenges NASA’s $700 Million Mars Contract Award to Blue Origin",
"pillar": "space",
"story_type": "news",
"origin": "newsroom",
"published_at": "2026-09-14T02:11:58.352+00:00",
"price_usd": 0.1,
"public_url": "https://www.gildedage.ai/en/news/rocket-lab-challenges-blue-origin-mars-telecom-award-at-gao"
}
],
"next_cursor": "MjAyNi0wOS0xNFQwMjoxMTo1OC4zNTIrMDA6MDB8cmVjX2Q0ZmYzYzNlMDhjMA"
}The index needs no payment and no key. It is cached for 60 seconds, and it answers HTTP 200 with an empty items array when nothing matches, never a 404.
What the 402 looks like
GET /m/v1/records/rec_d4ff3c3e08c0
HTTP/1.1 402 Payment Required
{
"x402Version": 2,
"error": "payment required",
"resource": {
"url": "https://console.gildedage.ai/m/v1/records/rec_d4ff3c3e08c0",
"description": "Gilded Age full record REC-FULL",
"mimeType": "application/json"
},
"accepts": [
{
"scheme": "exact",
"network": "eip155:84532",
"asset": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"amount": "100000",
"payTo": "0x…",
"maxTimeoutSeconds": 60,
"extra": {
"name": "USDC",
"version": "2"
}
}
]
}The same terms travel in the PAYMENT-REQUIRED response header as base64-encoded JSON, so a client may read either the header or the body and find the same object.
amount is in the smallest unit USDC uses: 100000 is $0.10. Payment is USDC on Base. payTo is the Gilded Age receive wallet, shortened above. The network id shown, eip155:84532, is Base Sepolia, where the catalogue settles today; the Base mainnet id replaces it when the shop moves. maxTimeoutSeconds is how long you have to sign and retry, not a shopping session.
What you receive
One JSON object per purchase, SKU REC-FULL. The envelope carries the price paid and a fingerprint; the record beneath it is the story and the reporting record frozen behind it. REC-FULL is the one SKU on sale today, and the schema names the others as reserved, with no route and no price.
| Field | What it holds |
|---|---|
schema_version | The wire format version of this response. 1 today. |
sku | What was bought. REC-FULL is the whole record. |
price_usd | What this record cost, in US dollars. 0 for a record carried at no charge. |
origin | Where the piece came from: newsroom, staff, contributor, sponsored or press_release. |
record | The record itself. Its fields are below. |
content_hash | A SHA-256 fingerprint over the rest of the body, with object keys sorted, so two copies of a record can be compared byte for byte. |
| Field | What it holds |
|---|---|
record_id | The stable identifier for this record. It does not change when the story is corrected. |
title | The headline as published. |
dek | The standfirst that sits under the headline, or null. |
excerpt | A short summary of the piece, or null. |
slug | The URL segment the story is published under. |
locale | The language of the piece. en today. |
story_type | The register the piece is filed under: news, analysis, futures, press_release or sponsored. |
pillar | The subject area: ai, quantum, robotics, space, longevity or energy. Null when none is recorded. |
public_url | The address a person reads the story at. |
published_at | Publication time, UTC. |
updated_at | Time of the most recent update, or null if there has been none. |
reading_time_minutes | An estimate of how long the piece takes a person to read, or null. |
hero_image_url | The lead image for the story, or null. |
byline_name | The name the piece is bylined to. |
byline_slug | The URL segment of that author profile, or null. |
byline_avatar_url | The portrait shown beside the byline, or null. |
byline_ai_disclosure | The AI disclosure sentence that author carries on the site, or null. |
ai_generated | Whether the piece is marked as AI assisted on the page. |
human_edited | Whether the piece is marked as human edited on the page. |
body_mdx | The full article text, as Markdown. An empty string on a piece that carries none. |
reporting_record | The reporting record frozen at publication, or null. It holds version (the record format version), reduced (true when the record carries no packet: editor, dates and body links only), sources (each with its title, publisher, URL, whether it is the primary source and whether it was opened, or null when that is not known), window (the register and the number of hours the evidence window covers), editor (the name and role of the editor who approved it), counter_case (an editor-approved claim against the piece and the URLs it rests on, or null), single_source (the publisher a single-source notice names, when one is due), published_at and updated_at. |
What a record is good for
Citing with evidence: every claim traces to a source that was opened and kept. Freshness: the evidence window is stated, not implied. Provenance: who edited it, when it was published, and what kind of piece it is.
Prices and settlement
Prices are on the index, per item, so an agent never has to guess one. Payment is USDC on Base, paid per record through the x402 protocol: no account, no key, no subscription. A record priced at 0.00 is served with no payment challenge and is listed in the index like any other.
Some records cost nothing
Sponsored pieces, press releases and contributor pieces are in the catalogue at no charge, and every one is labelled with its origin, so your agent always knows what it is reading.
What stays the same for people
Nothing on an article page changes. There is no checkout, no price and no button for a reader, and no story is held back from anyone because a machine can buy its record. How a story is read is set by how it was published, not by the catalogue. Buying records is separate from reading the site: a reader subscription does not buy records, and buying records does not need one. A story that is in the catalogue says so in one line inside its How this was reported block, and nowhere else.
Questions
- The index is empty.
- That is a normal answer, not an error. Records appear as stories are published. Poll the index; it is cached for 60 seconds.
- Which pieces are sold?
- News, analysis, futures, press releases and sponsored pieces, across six subject areas: ai, quantum, robotics, space, longevity and energy. Signature stories and resources are not in the catalogue.
- Can I buy in bulk?
- Not yet. Bulk is reserved by name in the schema and has no route, no price and no date. Write to us through the contact page.
- Commercial or volume enquiries
- The contact page, and a person will answer.