# Samples

Last updated: 2026-10-17

Each paid route has a free sample that runs the route's real code on a fixed demo page (for packages, a built-in demo copy of registry data) and returns the full response, signed with the example key. Samples make no outbound fetch, cost nothing and need no payment.

| Sample | Route it shows | Demo input |
|---|---|---|
| `GET /v1/sample/quote` | `POST /v1/verify/quote` | the quote "emissions fell 12% in 2025", fuzzy match |
| `GET /v1/sample/quote?match=passages` | `POST /v1/verify/quote` with `"match": "passages"` | the paraphrased claim "The agency reported a 12 percent drop in emissions during 2025": the 3 passages that share most of its words |
| `GET /v1/sample/citations` | `POST /v1/verify/citations` | three citations: one misformatted (fuzzy), one made up (none) and one on a missing page (404) |
| `GET /v1/sample/document` | `POST /v1/verify/document` | the citations sample's three pairs, written as a short document |
| `GET /v1/sample/document?format=html` | `POST /v1/verify/document` with `"format": "html"` | the same three pairs, written as HTML with `<a href>` links |
| `GET /v1/sample/fetch` | `POST /v1/fetch` | the demo page, with text |
| `GET /v1/sample/links` | `POST /v1/check/links` | the demo page and a missing page (404) |
| `GET /v1/sample/packages` | `POST /v1/check/packages` | left-pad (npm), requests (PyPI), serde (crates.io) and a missing npm name, from a built-in demo copy of registry data |
| `GET /v1/sample/attest` | `POST /v1/attest` | the SHA-256 of the demo page |
| `GET /v1/sample/quotes` | `POST /v1/verify/quotes` | three quotes on the demo page: one exact, one misformatted (fuzzy) and one made up (none) |
| `GET /v1/sample/textquote` | `POST /v1/verify/text-quote` | a sentence from the demo page, sent as text (no fetch), and a misformatted quote of it (fuzzy) |
| `GET /v1/sample/recheck` | `POST /v1/recheck` | the demo page's URL and its own `content_sha256`, so it reads unchanged |

The demo page itself is at [/v1/sample/page](https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/v1/sample/page). Its text is made up.

## What a sample returns

The same fields as the paid route, plus:

- `sample: true` and a `note`
- `input`: the demo request body used
- `tier: "sample"`, `rail: null`, `network: null`

The receipt is signed with the example key, whose kid ends in `#sample`. [POST /v1/receipt/verify](/docs/receipt-verify) and the [offline checker](/docs/verify-offline) accept it and report tier `sample`. A sample receipt says nothing about any page other than the demo page.

## Try it

```sh
curl https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/v1/sample/quote
curl "https://s2h6qt73jtzlgbgnnfacln2poq.srv.us/v1/sample/quote?match=passages"
```

`match` is read only by the quote sample: `fuzzy` (the default) or `passages`; any other value gets 400.
