Payments
Last updated: 2026-10-10
Paid routes use x402 version 2. You pay per call in USDC; there is no account, key or sign-up.
Network
| Item | Value |
|---|---|
| Protocol | x402 v2, scheme exact |
| Network | Base Sepolia (eip155:84532), a test network |
| Asset | USDC |
| Facilitator | PayAI (facilitator.payai.network), with x402.org as the fallback |
Test USDC on Base Sepolia has no value.
Prices
| Route | Price per call |
|---|---|
POST /v1/verify/quote | US$0.01 |
POST /v1/verify/quotes | US$0.08 per call of 1 to 20 quotes on one page (less than one verify/quote call each from 9 quotes up) |
POST /v1/verify/citations | US$0.10 per batch |
POST /v1/verify/document | US$0.10 per part of up to 10 pairs |
POST /v1/fetch | US$0.002 |
POST /v1/check/links | US$0.005 per batch |
POST /v1/check/packages | US$0.005 per batch |
POST /v1/attest | US$0.002 |
Flow
- Send the request with no payment header.
- If the request is valid, you get
402 Payment Required. A request with an empty body (or{}) gets the same 402, so a directory or client can read the price before it has a real input; anything else that fails validation gets 400. ThePAYMENT-REQUIREDheader (base64 JSON) holds the offer: amount, asset, network, pay-to address and a description of the route. The body is a JSON error with codepayment_required. - Sign the offer with your wallet and send the same request again with the signed payment in the
PAYMENT-SIGNATUREheader. - We verify the payment with the facilitator, run the route, and settle the payment only if the route answers with a status below 400. A settled call carries a
PAYMENT-RESPONSEheader.
Any x402 v2 client library handles steps 2 and 3. The offer also carries Bazaar discovery data (input and output schemas).
When you are charged
- Never charged: a request that fails validation (400, before any 402; a paid retry is validated again before the payment is used), a blocked or disallowed URL, a host name that does not resolve, rate limits, refused payers, and any answer with status 400 or above.
- Charged: any answer below 400. This includes results about the target page that you may not like: a 404, a bot wall, a timeout. That result is what the call checks.
- Retries: if your payment carries a payment id (the x402
payment-identifierextension) and you resend the same request with the same id within one hour, you get the stored response again, markedidempotent-replayed: true, and are not charged twice. Reusing a payment id for a different request gets 409payment_id_conflict. - Settle failures: if a call ends in 502
settle_failed, resend the same request with the same payment id. If the payment went through on chain after all, you get the withheld result, markedpayment-redelivered: true, without paying again. If it did not, the same signed payment is settled at most once; a new signature for that id gets 409settle_pendinguntil the first one expires (seeRetry-After). This needs a payment id: without one, a charge that went through is recorded for reconciliation, and the result is not sent. Redelivery is a full-service feature: the edge server cannot match a resend across its instances. Here the withheld result is kept in memory for an hour (and at least until its payment has expired), so a server restart also loses it; a resend of the same signed payment is then still never charged twice.
Lightning (L402)
Lightning (L402) is not enabled on this server. The sats prices in pricing.json are for when it is.
Prepaid credits (Bitcoin signet)
Prepaid credit keys (Bitcoin signet) are not enabled on this server. Where they are on (full service only), this section explains how to buy and spend one.
Free trial
A free trial is on: send the header quoteproof-trial: 1 with a paid route and no payment, and the call runs without charge, 5 calls per IP address per UTC day and 200 a day across all callers. Trial receipts have tier "trial" and payment null. Over the limit you get 429 trial_exhausted with Retry-After. A trial call to verify/citations, verify/quotes or check/links covers at most 3 citations, quotes or URLs; a larger batch is not run as a trial but answered with the normal 402 offer, details.reason trial_too_large.
Sanctions screening
Paying addresses are checked against a public sanctions list. A listed address gets 403 payer_refused and its payment is not settled.
Receipts
A paid receipt records the payment: rail, network, asset, amount, paying address and payment id (for L402: the payment hash and preimage instead of an address and id). See How it works.