Worked examples for every paid route
Last updated: 2026-10-17
AttestPage charges per call, in USDC on Base (eip155:8453), over x402 v2. Each section below shows one paid call from start to finish: the request, the 402 offer, the paid retry and a shortened result.
Every route takes the same payment steps:
- Send the request with no payment. A valid request gets
402 Payment Required, with the offer in thePAYMENT-REQUIREDheader. Bad requests are refused with 400 before any payment, and are never charged. - Check the offer: the network is
eip155:8453, andamountis in USDC base units (6 decimals: the offer for verify/quote is10000, which is US$0.01). - Sign the offer and send the same request again with the
PAYMENT-SIGNATUREheader. - The
200answer carries aPAYMENT-RESPONSEheader with the transaction, the payer and the network.
A client library does steps 2 to 4 for you. The full plain-fetch version is in the plain-fetch example. A free trial is also on every route: send Quoteproof-Trial: 1 with no payment (10 calls a day per IP, batches of up to 5 items; through the srv.us address without a payer id, callers share 10 a day).
Shown below: the 402 body, abbreviated. The offer's accepts entry for every route has the same shape:
{ "scheme": "exact", "network": "eip155:8453", "amount": "10000", "asset": "USDC contract on Base", "payTo": "the service address in the offer", "maxTimeoutSeconds": 120 }
Contact and terms: see terms. Prices are listed in pricing.json.
---
POST /v1/verify/quote
Price: US$0.01 per call. Checks that a quote appears word for word on a web page, before an agent cites it.
Request:
curl -X POST https://<service>/v1/verify/quote -H 'content-type: application/json' -d '{
"url": "https://www.iana.org/help/example-domains",
"quote": "These domains may be used as illustrative examples in documents",
"match": "fuzzy"
}'
402 response: status 402, error code payment_required, message "This route costs US$0.01 via x402". The offer in PAYMENT-REQUIRED lists amount 10000.
Paid retry: the same body with PAYMENT-SIGNATURE. Status 200, PAYMENT-RESPONSE gives the transaction.
Paid-run example (shortened):
{
"result": { "match": "exact", "score": 1, "start": 171, "end": 234, "context": "...These domains may be used as illustrative examples in documents without prior coordination with us...", "occurrences": 1 },
"page": { "http_status": 200, "content_kind": "real", "title": "Example Domains" },
"advice": "The page loaded and looks like real content.",
"receipt": "<signed receipt>", "tier": "paid", "rail": "x402", "network": "eip155:8453"
}
Use it before citing a page, so a misquote is caught before a user sees it. Check the receipt again for free with POST /v1/receipt/verify.
---
POST /v1/verify/citations
Price: US$0.10 per call, up to 10 quote and URL pairs. Checks every citation in an answer in one call.
Request:
curl -X POST https://<service>/v1/verify/citations -H 'content-type: application/json' -d '{
"citations": [
{ "url": "https://www.iana.org/help/example-domains", "quote": "These domains may be used as illustrative examples in documents" },
{ "url": "https://www.iana.org/domains/reserved", "quote": "IANA-managed Reserved Domains" }
],
"match": "fuzzy"
}'
402 response: status 402, payment_required, amount 100000 (US$0.10).
Paid retry: same body with PAYMENT-SIGNATURE. Status 200.
Paid-run example (shortened):
{
"results": [
{ "url": "https://www.iana.org/help/example-domains", "page": 0, "http_status": 200, "content_kind": "real", "match": "exact", "score": 1, "start": 171, "end": 234 },
{ "url": "https://www.iana.org/domains/reserved", "page": 1, "http_status": 200, "content_kind": "real", "match": "exact", "score": 1 }
],
"summary": { "exact": 2, "fuzzy": 0, "none": 0, "failed": 0 },
"receipt": "<signed receipt>", "tier": "paid", "rail": "x402", "network": "eip155:8453"
}
Use it before giving an answer that cites web pages. Each none tells you which quote to fix.
---
POST /v1/verify/quotes
Price: US$0.02 per call, one page and up to 20 quotes. Cheaper than verify/quote for three or more quotes from the same page.
Request:
curl -X POST https://<service>/v1/verify/quotes -H 'content-type: application/json' -d '{
"url": "https://www.iana.org/help/example-domains",
"quotes": [
"These domains may be used as illustrative examples in documents",
"without prior coordination with us"
],
"match": "fuzzy"
}'
402 response: status 402, payment_required, amount 20000 (US$0.02).
Paid retry: same body with PAYMENT-SIGNATURE. Status 200.
Paid-run example (shortened):
{
"results": [
{ "match": "exact", "score": 1, "start": 171, "end": 234, "occurrences": 1 },
{ "match": "exact", "score": 1 }
],
"page": { "http_status": 200, "content_kind": "real", "title": "Example Domains" },
"summary": { "exact": 2, "fuzzy": 0, "none": 0, "failed": 0 },
"receipt": "<signed receipt>", "tier": "paid", "rail": "x402", "network": "eip155:8453"
}
Use it when one page is quoted several times in an answer.
---
POST /v1/verify/document
Price: US$0.10 per call. Checks every quote in a finished document, with its link, against the live page.
Request:
curl -X POST https://<service>/v1/verify/document -H 'content-type: application/json' -d '{
"document": "The IANA page says \"These domains may be used as illustrative examples in documents\" ([IANA](https://www.iana.org/help/example-domains)).",
"format": "markdown",
"match": "fuzzy",
"part": 0
}'
402 response: status 402, payment_required, amount 100000 (US$0.10).
Paid retry: same body with PAYMENT-SIGNATURE. Status 200.
Paid-run example (shortened):
{
"document_sha256": "…",
"extractor": "doc-v1",
"part": 0, "parts": 1, "pairs_total": 1,
"results": [
{ "pair": 0, "quote": "These domains may be used as illustrative examples in documents", "url": "https://www.iana.org/help/example-domains", "doc_start": 20, "doc_end": 83, "http_status": 200, "content_kind": "real", "match": "exact", "score": 1 }
],
"summary": { "exact": 1, "fuzzy": 0, "none": 0, "failed": 0 },
"receipt": "<signed receipt>", "tier": "paid", "rail": "x402", "network": "eip155:8453"
}
Use it before sending a finished report that quotes web pages. Long documents come in parts, set with part.
---
POST /v1/verify/text-quote
Price: US$0.005 per call. Checks a quote against text the agent already holds, with no page fetch.
Request:
curl -X POST https://<service>/v1/verify/text-quote -H 'content-type: application/json' -d '{
"text": "Refunds are paid within 14 days of purchase, to the card that was used.",
"quote": "refunds are paid within 14 days",
"match": "fuzzy",
"case_sensitive": false
}'
402 response: status 402, payment_required, amount 5000 (US$0.005).
Paid retry: same body with PAYMENT-SIGNATURE. Status 200.
Paid-run example (shortened):
{
"result": { "match": "exact", "score": 1, "start": 0, "end": 31, "context": "Refunds are paid within 14 days of purchase, to the card that was used.", "occurrences": 1, "normalised_sha256": "945b89fa…" },
"injection_flags": [],
"advice": "The supplied text contains this quote. This says nothing about where the text came from.",
"receipt": "<signed receipt>", "tier": "paid", "rail": "x402", "network": "eip155:8453"
}
Use it for text a file, tool or document gave you, when you have no URL to check.
---
POST /v1/fetch
Price: US$0.002 per URL. Returns a page as clean text, with a verdict on what came back.
Request:
curl -X POST https://<service>/v1/fetch -H 'content-type: application/json' -d '{
"url": "https://www.iana.org/help/example-domains",
"return_text": true
}'
402 response: status 402, payment_required, amount 2000 (US$0.002). A urls batch of up to 10 is priced per URL.
Paid retry: same body with PAYMENT-SIGNATURE. Status 200.
Paid-run example (shortened):
{
"page": { "requested_url": "https://www.iana.org/help/example-domains", "final_url": "https://www.iana.org/help/example-domains", "http_status": 200, "content_type": "text/html", "content_kind": "real", "title": "Example Domains", "content_sha256": "…", "raw_sha256": "…", "retrieved_at": "2026-10-17T09:31:09.693Z" },
"text": "Domains\n\nProtocols\n\nNumbers\n\nAbout\n\nInstructions and Guides\n\nExample Domains\n\nA number of domains such as …",
"text_chars": 1277, "text_truncated": false,
"injection_flags": [],
"advice": "The page loaded and looks like real content.",
"receipt": "<signed receipt>", "tier": "paid", "rail": "x402", "network": "eip155:8453"
}
Use it to read a page the agent needs as text, or to keep a notarised copy of it with content_sha256. Check content_kind before you trust the text: a bot wall or JavaScript shell is not the page.
---
POST /v1/recheck
Price: US$0.003 per call. Checks whether a page an agent read earlier has changed, from an earlier receipt.
Request (receipt is the one from an earlier fetch of the same page):
curl -X POST https://<service>/v1/recheck -H 'content-type: application/json' -d '{
"receipt": "<receipt from an earlier fetch>",
"return_text": false
}'
402 response: status 402, payment_required, amount 3000 (US$0.003).
Paid retry: same body with PAYMENT-SIGNATURE. Status 200.
Paid-run example (shortened):
{
"change": "unchanged",
"changed": false,
"differences": [],
"baseline": { "source": "receipt", "kind": "fetch", "receipt_sha256": "e931f5b9…" },
"page": { "http_status": 200, "content_kind": "real", "content_sha256": "…" },
"advice": "The page's text is the same as in the baseline (byte for byte on the clean text). Markup or other bytes may still have moved; see differences.",
"receipt": "<signed receipt>", "tier": "paid", "rail": "x402", "network": "eip155:8453"
}
Use it before relying on a page again, to show that it still says what it said.
---
POST /v1/check/links
Price: US$0.005 per call, up to 10 URLs. Gives a verdict for each link before an agent gives it to a user.
Request:
curl -X POST https://<service>/v1/check/links -H 'content-type: application/json' -d '{
"urls": ["https://www.iana.org/help/example-domains", "https://www.iana.org/domains/reserved"]
}'
402 response: status 402, payment_required, amount 5000 (US$0.005).
Paid retry: same body with PAYMENT-SIGNATURE. Status 200.
Paid-run example (shortened):
{
"results": [
{ "url": "https://www.iana.org/help/example-domains", "final_url": "https://www.iana.org/help/example-domains", "http_status": 200, "redirects": [], "content_kind": "real", "title": "Example Domains", "verdict": "ok" },
{ "url": "https://www.iana.org/domains/reserved", "final_url": "https://www.iana.org/domains/reserved", "http_status": 200, "redirects": [], "content_kind": "real", "title": "IANA-managed Reserved Domains", "verdict": "ok" }
],
"receipt": "<signed receipt>", "tier": "paid", "rail": "x402", "network": "eip155:8453"
}
Each link gets a verdict: ok, broken, moved or unknown. Use it before giving users links or citations.
---
POST /v1/check/packages
Price: US$0.005 per call, up to 10 names. Checks that a package an LLM suggested really exists, on npm, PyPI or crates.io.
Request:
curl -X POST https://<service>/v1/check/packages -H 'content-type: application/json' -d '{
"packages": [
{ "ecosystem": "npm", "name": "left-pad" },
{ "ecosystem": "pypi", "name": "requests" },
{ "ecosystem": "crates", "name": "serde" },
{ "ecosystem": "npm", "name": "lodash", "version": "4.17.20" }
]
}'
402 response: status 402, payment_required, amount 5000 (US$0.005).
Paid retry: same body with PAYMENT-SIGNATURE. Status 200.
Paid-run example (shortened):
{
"results": [
{ "ecosystem": "npm", "name": "left-pad", "exists": true, "status": "found", "registry_name": "left-pad", "latest_version": "1.3.0", "description": "String left pad", "license": "WTFPL" },
{ "ecosystem": "pypi", "name": "requests", "exists": true, "status": "found", "registry_name": "requests", "latest_version": "2.34.2", "description": "Python HTTP for Humans.", "license": "Apache-2.0" },
{ "ecosystem": "crates", "name": "serde", "exists": true, "status": "found", "registry_name": "serde", "latest_version": "1.0.229", "license": "MIT" },
{ "ecosystem": "npm", "name": "lodash", "exists": true, "status": "found", "registry_name": "lodash", "latest_version": "4.18.1", "license": "MIT" }
],
"note": "exists means the registry listed this name when we looked. It is not a security verdict: the package may still be malicious, unmaintained or not the one you meant; description and licence are the publisher's.",
"receipt": "<signed receipt>", "tier": "paid", "rail": "x402", "network": "eip155:8453"
}
Use it before installing or recommending a package. exists: true means the name is listed; it is not a review of the package code.
---
POST /v1/attest
Price: US$0.002 per call. Timestamps a SHA-256 hash with a signed receipt, so you can show later that a file or answer existed unchanged at that time.
Request:
curl -X POST https://<service>/v1/attest -H 'content-type: application/json' -d '{
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"note": "delivery of report v3 to order 77",
"idempotency_key": "order-77-delivery"
}'
402 response: status 402, payment_required, amount 2000 (US$0.002). idempotency_key is for x402 payments only: a retry with the same key and hash gets the same receipt, paid once.
Paid retry: same body with PAYMENT-SIGNATURE. Status 200.
Paid-run example (shortened):
{
"attestation": {
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"note_sha256": "270938cd…",
"seq": 1,
"issued_at": "2026-10-17T09:30:10.953Z",
"idempotency_key": "order-77-delivery",
"first_seen": true
},
"receipt": "<signed receipt>", "tier": "paid", "rail": "x402", "network": "eip155:8453"
}
Use it for a delivery, a report or any file that needs a timestamp. The receipt shows that this hash was sent by the stated time. It does not show who made the file.
---
Next steps
- Check any receipt for free with
POST /v1/receipt/verifyand{"receipt": "<receipt>"}. - Prices and request limits: pricing.json. Error codes: the
error.codein each response. - Contact and terms: see terms.