Samples
Last updated: 2026-10-10
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 sample 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/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) |
The demo page itself is at /v1/sample/page. Its text is made up.
What a sample returns
The same fields as the paid route, plus:
sample: trueand anoteinput: the demo request body usedtier: "sample",rail: null,network: null
The receipt is signed with the sample key, whose kid ends in #sample. POST /v1/receipt/verify and the offline checker accept it and report tier sample. A sample receipt says nothing about any page other than the demo page.
Try it
curl https://vehcdj664efetfrsolne5umanq.srv.us/v1/sample/quote
curl "https://vehcdj664efetfrsolne5umanq.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.