How do I check if an x402 API is trustworthy?
Look up the endpoint in the Kertivo Index: if we already paid it in a published run, you get a dated grade (A, B, F, C-went-dark, C-never-live, or ungraded) plus what that paid test showed. Free grade + run date: GET https://kertivo.com/trust/lookup?url=<endpoint>. Full evidence costs $0.002 via POST /trust/lookup. We grade indexed endpoints from those paid runs—we do not live-probe every URL on the internet for a score.
Who this is for
- Agents choosing which x402 seller to pay next.
- Builders who want a public, dated receipt that a route settled and delivered in a real USDC test.
- Auditors comparing a seller's marketing claims to an independent paid call.
What "trustworthy" means here (evidence)
Kertivo Index pays real Base USDC to listed endpoints and checks what each one sends back, not just that the payment landed. Grades are earned, never bought. The live scorecard is GET /trust-index (also /trust-index/). Kertivo Index #4 (generated Oct 25, 2026, 7:37 PM PDT) graded 116 endpoints: A = 95, B = 7, F = 3, C-went-dark = 4, C-never-live = 6, and ungraded = 1, from 105 settled payments totaling 0.418801 USDC.
Grade letters on the scorecard:
| Grade | Meaning |
|---|---|
| A | Settled on-chain + HTTP 200 + schema match + within declared timeout |
| B | Settled + 200, but partial schema or slow |
| F | Money moved without a matching 200: no 200 at all, or a 200 with none of the advertised fields (however fast) |
| C-went-dark / C-never-live | Nothing delivered, nothing moved (went-dark = it delivered in an earlier run) |
| ungraded | In this run's list but not paid (over the per-call price cap or skipped by policy), so no letter |
What a grade proves: on the run date shown, we paid the listed price in real Base USDC, the payment settled, and the endpoint returned a valid response in the shape it advertises. What it does not prove: that the seller is honest, that the data is accurate, or that the endpoint will keep working after the test. A grade is one dated paid test, not an endorsement.
Buyer-filed claims sit next to the grade and never change it. Each claim proves an on-chain payment; "disputed" vs "delivered" is the buyer's report. Sellers can answer with a signed reply.
How /trust/lookup answers it
Free (grade-only): GET https://kertivo.com/trust/lookup?url=<absolute-http(s)-URL>
Returns status, grade, runDate, run, a claims tally (total, disputed, delivered, unrecognizedAddress, wrongAddress, payerVerified, plus a link to the list), and a pointer to raw Index data. When it applies, it also flags payToRotates (the seller hands out a fresh receiving address on every 402, so a different payTo is expected) or payToChanged (the seller's receiving address changed since the previous run; the grade is unaffected, but confirm before paying an address you pinned). Examples checked live on 2026-10-27 (PDT), after Index #4 published:
- Indexed seller:
https://api.onesource.io/api/chain/erc20-balance→status: indexed,grade: A,runDate: 2026-10-26T02:19:56.576Z,run: Kertivo Index #4. - Unknown URL:
https://example.com/not-a-real-x402→status: not_indexed,grade: null(no live probe, no invented score). - Our own routes are graded by the same paid run, never hand-adjusted, and the response carries
self: trueplus adisclosuresaying so. In Index #4, looking up our/checkroute on kertivo.com →status: indexed,grade: A,self: true, withgradedAsnaming the hostname the run actually paid (the same service on our workers.dev address, same price and payTo)./check/deepstaysstatus: self_listedwith no grade, because its $0.05 price is above the run's $0.01 per-call cap.
Paid (grade + evidence): POST https://kertivo.com/trust/lookup with body {url} ($0.002 USDC on Base). Unpaid calls return HTTP 402 (amount 2000 atomic = $0.002). The paid 200 adds evidence from the Index paid test: whether the unpaid 402 was valid, the price and payTo we saw, the payment tx, whether it settled and the on-chain check, HTTP status after pay, latency, the schema check with its note, and a deliveryResult (for example delivered_schema_ok, delivered_schema_mismatch, or settled_but_http_500), plus the same claims tally. The answer depends only on url: any other request field (e.g. method, body, deep) is not used and is listed in ignoredFields.
Machine-readable Index: GET /trust-index/latest.json and raw.jsonl. Past runs stay append-only at /trust-index/runs.
Try it
- Free scorecard: open https://kertivo.com/trust-index.
- Free one-URL lookup:
curl -s 'https://kertivo.com/trust/lookup?url=https://api.onesource.io/api/chain/erc20-balance'. - Paid evidence: call
POST /trust/lookupunpaid for the 402, then retry with the payment header. Shapes are at /examples. - Optional badge:
GET /badge/<url-encoded-endpoint>embeds the latest Index grade (earned, never sold; ungraded shows "not graded").
Paid /trust/lookup 200 responses carry a signed attestation (verify at /.well-known/attestation).
FAQ
The URL is not in the Index. Do I get a Trust Score anyway?
No. status is not_indexed and grade is null. We do not invent a 0–100 live score for uncataloged URLs. Ask for the endpoint to be included in a future Index run, or browse claims against it if any exist.
Is this a live probe of the seller right now?
No. Lookup reads the latest published Index (and claims). It does not re-pay the seller on every free GET. Paid POST returns the stored evidence from that Index run.
Can a seller buy an A?
No. Grades are earned by settling a real Base USDC payment and delivering in the paid test. The scorecard says so on every page.
What about claims on an unindexed endpoint?
Claims can still exist and are listed separately. They never become a grade.
Will the next Index change these numbers?
Yes, every weekly run publishes new dated grades; older frozen runs stay at /trust-index/runs. This guide's counts are from Kertivo Index #4 (Oct 25, 2026). Always trust the live lookup over a number quoted here.
Limits
- We grade endpoints that appear in a published Index run—not every URL on the web.
- A grade does not mean the seller is honest or that future calls will succeed.
- Free GET returns grade + date + claims; full payment-tx evidence needs the $0.002 POST.
- Claims are buyer reports next to the grade; they never rewrite it.
- We are not building a live-probe "Trust Score 0–100" product that scores arbitrary URLs on demand.
- Kertivo holds no funds and does not arbitrate disputes. It reports evidence.
