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

  1. Read the schema. It lists the routes, subject areas, story types, origins, prices and the payment network.
  2. Read the index. Filter by subject area or origin, and page with the cursor. Each item carries its price.
  3. Request a record. You receive an HTTP 402 with the payment terms. Pay them with any x402 client.
  4. 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.

The envelope
FieldWhat it holds
schema_versionThe wire format version of this response. 1 today.
skuWhat was bought. REC-FULL is the whole record.
price_usdWhat this record cost, in US dollars. 0 for a record carried at no charge.
originWhere the piece came from: newsroom, staff, contributor, sponsored or press_release.
recordThe record itself. Its fields are below.
content_hashA 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.
record
FieldWhat it holds
record_idThe stable identifier for this record. It does not change when the story is corrected.
titleThe headline as published.
dekThe standfirst that sits under the headline, or null.
excerptA short summary of the piece, or null.
slugThe URL segment the story is published under.
localeThe language of the piece. en today.
story_typeThe register the piece is filed under: news, analysis, futures, press_release or sponsored.
pillarThe subject area: ai, quantum, robotics, space, longevity or energy. Null when none is recorded.
public_urlThe address a person reads the story at.
published_atPublication time, UTC.
updated_atTime of the most recent update, or null if there has been none.
reading_time_minutesAn estimate of how long the piece takes a person to read, or null.
hero_image_urlThe lead image for the story, or null.
byline_nameThe name the piece is bylined to.
byline_slugThe URL segment of that author profile, or null.
byline_avatar_urlThe portrait shown beside the byline, or null.
byline_ai_disclosureThe AI disclosure sentence that author carries on the site, or null.
ai_generatedWhether the piece is marked as AI assisted on the page.
human_editedWhether the piece is marked as human edited on the page.
body_mdxThe full article text, as Markdown. An empty string on a piece that carries none.
reporting_recordThe 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.

Contact us