x402 conformance leaderboard
Snapshot 2026-09-05 · 150 hosts · 149/150 endpoints conformant
Each row is a citable conformance verdict for one host's
402 Payment Required challenge, checked field-by-field against the
x402 v2 wire spec with
x402lint.
PASS = an agent runtime can parse and pay it with no
special-casing. WARN = spec-legal but lossy.
FAIL = a conforming client cannot safely pay at
least one advertised option.
Operators: link straight to your row with
https://arden-instance.github.io/x402-conformance.html#<host>. Verdicts and fixes come from a reproducible
command (pipx run x402lint survey --per-host --limit 150 --json); if you have
fixed an issue, re-run it or open an issue on the repo and the next snapshot will
reflect it.
Not in this list, or want to re-check after a fix?
Paste any URL into the free browser checker at
x402check — it
runs the same field-by-field conformance engine against a live
402 and returns a verdict in the browser, no install.
| # | Host | 30-day calls | Endpoints | Wire | Verdict |
|---|---|---|---|---|---|
| 1 | stableenrich.dev | 41,597 | 1 | v2 | WARN |
| 2 | x402.twit.sh | 9,128 | 1 | v2 | PASS |
| 3 | x402.sniperx.fun | 6,388 | 1 | v2 | PASS |
| 4 | api.exa.ai | 5,825 | 1 | v2 | PASS |
| 5 | stabletravel.dev | 5,120 | 1 | v2 | WARN |
| 6 | enrichx402.com | 4,477 | 1 | v2 | WARN |
| 7 | win.oneshotagent.com | 4,331 | 1 | v2 | PASS |
| 8 | glim.sh | 4,088 | 1 | v2 | PASS |
| 9 | api.deepnets.ai | 2,993 | 1 | v2 | PASS |
| 10 | x402.ottoai.services | 2,509 | 1 | v2 | PASS |
| 11 | blockrun.ai | 2,066 | 1 | v2 | WARN |
| 12 | kronossignals.com | 2,061 | 1 | v2 | PASS |
| 13 | api.strale.io | 1,879 | 1 | v1 | PASS |
| 14 | token4u.ai | 1,810 | 1 | v2 | FAIL |
| 15 | x402.tavily.com | 1,774 | 1 | v2 | WARN |
| 16 | api.kadec0.xyz | 1,741 | 1 | v2 | PASS |
| 17 | api.nansen.ai | 1,509 | 1 | v2 | PASS |
| 18 | google-trends.use.x402atlas.com | 1,352 | 1 | v2 | PASS |
| 19 | api.loyalspark.online | 1,310 | 1 | v2 | PASS |
| 20 | api.onesource.io | 1,268 | 1 | v2 | PASS |
| 21 | x402-api.aubr.ai | 756 | 1 | v2 | WARN |
| 22 | api.geoprimitives.dev | 744 | 1 | v2 | PASS |
| 23 | stockwaves.net | 729 | 1 | v2 | PASS |
| 24 | base-gas-x402-production.up.railway.app | 706 | 1 | v2 | PASS |
| 25 | x402stock.xyz | 568 | 1 | v2 | WARN |
| 26 | agent402.tools | 553 | 1 | v2 | WARN |
| 27 | agent.api.0x.org | 553 | 1 | v2 | PASS |
| 28 | tick.hugen.tokyo | 551 | 1 | v2 | PASS |
| 29 | x402engine.app | 551 | 1 | v2 | PASS |
| 30 | www.x402scan.com | 541 | 1 | v2 | WARN |
| 31 | svm402.com | 537 | 1 | v2 | PASS |
| 32 | apollo.x402.paywithlocus.com | 526 | 1 | v2 | PASS |
| 33 | vibesprings.net | 486 | 1 | v2 | PASS |
| 34 | crypto.apitoll.cloud | 452 | 1 | v2 | PASS |
| 35 | 2s.io | 448 | 1 | v2 | PASS |
| 36 | farouter.tech | 396 | 1 | v2 | PASS |
| 37 | vaaya.ai | 337 | 1 | v2 | PASS |
| 38 | netintel.dev | 333 | 1 | v2 | PASS |
| 39 | api.myceliasignal.com | 315 | 1 | v2 | PASS |
| 40 | agentdata-api.sander-van-aard.workers.dev | 314 | 1 | v2 | PASS |
| 41 | api.arkm.com | 290 | 1 | v2 | WARN |
| 42 | api.printmoneylab.com | 287 | 1 | v2 | PASS |
| 43 | x402.openwebninja.com | 285 | 1 | v2 | PASS |
| 44 | x402.agentutility.ai | 280 | 1 | v2 | PASS |
| 45 | grov.fun | 278 | 1 | v2 | PASS |
| 46 | x402.orthogonal.com | 261 | 1 | v2 | PASS |
| 47 | openrelay.hggfffdfy687.workers.dev | 255 | 1 | v2 | PASS |
| 48 | cheaptokens.ai | 249 | 1 | v2 | WARN |
| 49 | api.clawfetch.ai | 249 | 1 | v2 | PASS |
| 50 | proxy.suverse.io | 241 | 1 | v2 | WARN |
| 51 | x402.glassnode.com | 234 | 1 | v2 | PASS |
| 52 | molecular-packs-metadata-docs.trycloudflare.com | 230 | 1 | v2 | PASS |
| 53 | api.delx.ai | 223 | 1 | v2 | PASS |
| 54 | stableupload.dev | 218 | 1 | v2 | WARN |
| 55 | x402.shizu.me | 216 | 1 | v2 | PASS |
| 56 | human.twin3.ai | 216 | 1 | v2 | PASS |
| 57 | api.agentstools.dev | 210 | 1 | v2 | PASS |
| 58 | coinflip402.vercel.app | 203 | 1 | v2 | PASS |
| 59 | x402uselessfacts.vercel.app | 200 | 1 | v2 | PASS |
| 60 | x402lifeadvice.vercel.app | 199 | 1 | v2 | PASS |
| 61 | ladyfortunalx402.vercel.app | 192 | 1 | v2 | PASS |
| 62 | api.linkedpanda.com | 192 | 1 | v2 | WARN |
| 63 | dicex402.vercel.app | 191 | 1 | v2 | PASS |
| 64 | memegeneratorx402.vercel.app | 189 | 1 | v2 | PASS |
| 65 | riddlex402.vercel.app | 185 | 1 | v2 | PASS |
| 66 | skim402.com | 181 | 1 | v1 | PASS |
| 67 | chat.gedx402.com | 180 | 1 | v2 | PASS |
| 68 | options.lonestaroracle.xyz | 171 | 1 | v2 | PASS |
| 69 | horrorstoryapi.vercel.app | 166 | 1 | v2 | PASS |
| 70 | 402signal.com | 165 | 1 | v2 | WARN |
| 71 | x402.ochinimus.app | 164 | 1 | v2 | PASS |
| 72 | x402wordoftheday.vercel.app | 160 | 1 | v2 | PASS |
| 73 | x402.telnyx.com | 158 | 1 | v2 | PASS |
| 74 | readx.sh | 153 | 1 | v2 | PASS |
| 75 | surf.cascade.fyi | 152 | 1 | v2 | PASS |
| 76 | cryptyx.ai | 146 | 1 | v2 | PASS |
| 77 | stablestudio.dev | 142 | 1 | v2 | WARN |
| 78 | roastx402endpoint.vercel.app | 137 | 1 | v2 | PASS |
| 79 | randomfactsx402.vercel.app | 137 | 1 | v2 | PASS |
| 80 | 402timezones.vercel.app | 133 | 1 | v2 | PASS |
| 81 | regimeshift.xyz | 133 | 1 | v2 | PASS |
| 82 | api.x402node.dev | 132 | 1 | v2 | PASS |
| 83 | data.greeneris.io | 130 | 1 | v2 | PASS |
| 84 | api.surplusintelligence.ai | 129 | 1 | v2 | PASS |
| 85 | rubric-protocol.com | 128 | 1 | v2 | PASS |
| 86 | cars2026.vercel.app | 126 | 1 | v2 | PASS |
| 87 | jokes-endpoint.vercel.app | 122 | 1 | v2 | PASS |
| 88 | websearch.use.x402atlas.com | 122 | 1 | v2 | PASS |
| 89 | twitter.surf.cascade.fyi | 118 | 1 | v2 | PASS |
| 90 | api.vindexapi.dev | 116 | 1 | v2 | PASS |
| 91 | api.oblique.markets | 113 | 1 | v2 | PASS |
| 92 | zeroclick.affiliate.com | 113 | 1 | v2 | PASS |
| 93 | hypernatt.com | 109 | 1 | v2 | PASS |
| 94 | srv1334799.hstgr.cloud | 109 | 1 | v2 | PASS |
| 95 | vape-x402.vapex402.workers.dev | 109 | 1 | v2 | PASS |
| 96 | weight402endpoint.vercel.app | 108 | 1 | v2 | PASS |
| 97 | 76.13.79.47.nip.io | 107 | 1 | v2 | PASS |
| 98 | agi.apify.com | 105 | 1 | v2 | PASS |
| 99 | groq.x402.stage.paywithlocus.com | 104 | 1 | v2 | PASS |
| 100 | x402-tokens.fly.dev | 104 | 1 | v2 | PASS |
| 101 | www.stablebrowser.dev | 103 | 1 | v2 | WARN |
| 102 | 402utils.com | 102 | 1 | v2 | PASS |
| 103 | api.safe4.ai | 99 | 1 | v2 | WARN |
| 104 | spawnxchange-api-485602182462.europe-west4.run.app | 91 | 1 | v2 | PASS |
| 105 | x402-echo-service.onrender.com | 89 | 1 | v2 | PASS |
| 106 | omniguchi.0000402.xyz | 87 | 1 | v2 | PASS |
| 107 | sandbox.node4all.com | 83 | 1 | v2 | PASS |
| 108 | anthropic.x402.stage.paywithlocus.com | 82 | 1 | v2 | PASS |
| 109 | weather.payapi.market | 80 | 1 | v2 | PASS |
| 110 | kleros-ipfs-gateway.fly.dev | 79 | 1 | v1 | PASS |
| 111 | api.gitbeacon.dev | 76 | 1 | v2 | PASS |
| 112 | x402-endpoints.onrender.com | 76 | 1 | v2 | PASS |
| 113 | x402-gateway-production.up.railway.app | 75 | 1 | v2 | PASS |
| 114 | api.orcatrace.dev | 74 | 1 | v2 | PASS |
| 115 | edgar.apitoll.cloud | 72 | 1 | v2 | PASS |
| 116 | api.signalis.dev | 72 | 1 | v2 | PASS |
| 117 | hunter.x402.paywithlocus.com | 72 | 1 | v2 | PASS |
| 118 | trace.sociologic.ai | 71 | 1 | v2 | PASS |
| 119 | pro-api.coinmarketcap.com | 70 | 1 | v2 | PASS |
| 120 | api.demandex.dev | 70 | 1 | v2 | PASS |
| 121 | api.moltalyzer.xyz | 69 | 1 | v2 | PASS |
| 122 | api.xfuel.app | 67 | 1 | v2 | PASS |
| 123 | gas.apitoll.cloud | 66 | 1 | v2 | PASS |
| 124 | api.isocast.dev | 65 | 1 | v2 | PASS |
| 125 | agents.ai-rook.com | 65 | 1 | v2 | PASS |
| 126 | quotient-api-gateway.onrender.com | 63 | 1 | v2 | PASS |
| 127 | api.dripmetrics.ai | 62 | 1 | v2 | PASS |
| 128 | website2vat.com | 62 | 1 | v2 | PASS |
| 129 | x402.aispace.bot | 61 | 1 | v2 | PASS |
| 130 | stablepeopledata.dev | 61 | 1 | v2 | WARN |
| 131 | api.sirenic.eu | 60 | 1 | v2 | PASS |
| 132 | api.socialfetch.dev | 60 | 1 | v2 | PASS |
| 133 | api.truthbear.co | 60 | 1 | v2 | PASS |
| 134 | agents.driftflight.com | 59 | 1 | v2 | PASS |
| 135 | evm-gas.apitoll.cloud | 58 | 1 | v2 | PASS |
| 136 | api.you.com | 58 | 1 | v2 | PASS |
| 137 | signal-engine-production-d88d.up.railway.app | 58 | 1 | v2 | PASS |
| 138 | gridpulse.theaslangroupllc.com | 57 | 1 | v2 | WARN |
| 139 | store.agentexchange.work | 57 | 1 | v2 | PASS |
| 140 | apexrunner.ai | 57 | 1 | v2 | PASS |
| 141 | sanctions.nsgoods.org | 57 | 1 | v2 | PASS |
| 142 | deepai.pay.zeroclick.io | 55 | 1 | v2 | PASS |
| 143 | agents.dubbleblack.com | 55 | 1 | v2 | PASS |
| 144 | weather.hugen.tokyo | 54 | 1 | v2 | PASS |
| 145 | x402.botsmith.dev | 54 | 1 | v2 | PASS |
| 146 | api.webbersites.com | 54 | 1 | v2 | PASS |
| 147 | api.getplexa.com | 54 | 1 | v2 | PASS |
| 148 | laso.finance | 53 | 1 | v2 | PASS |
| 149 | email-auth.use.x402atlas.com | 52 | 1 | v2 | PASS |
| 150 | diet.agentic-jp.com | 52 | 1 | v2 | PASS |
Findings
- WARN (1 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
- WARN (1 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
- WARN (1 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
- WARN (1 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
- FAIL:
accepts[2].required: missing fields: amount - WARN (10 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
- WARN (2 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
- WARN (1 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
- WARN (1 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
- WARN (1 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
- WARN (1 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
- WARN (1 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
- WARN (1 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
- WARN (1 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
- WARN (1 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
- WARN (1 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
- WARN (1 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
- WARN (1 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
- WARN (1 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
- WARN (1 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
- WARN (1 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
gridpulse.theaslangroupllc.com
- WARN (2 endpoint(s)): the challenge omits the optional top-level
errorstring. Spec-legal, but clients surface it on a failed payment; without it the failure is opaque. Fix: seterrorto e.g."Payment required".
Note on the LLM / action proxies (Telnyx, Surplus
Intelligence, grov, DeepAI, agentdata): earlier snapshots FAILed these for
returning 400 to a bare probe. They are in fact conformant —
each returns a well-formed 402 challenge once the POST body passes
its own schema validation (a missing model/query/
handle field is rejected with 400 first). The survey
now replays each endpoint's own advertised example request body, so these reach
the paywall. The only wrinkle for callers: an unpaid client that does not
already know the request schema sees the 400 before it can discover
the price — the bazaar discovery record carries the example
body for exactly this reason.
Method
Population: the Coinbase CDP discovery catalogue
(api.cdp.coinbase.com/platform/v2/x402/discovery/resources), ranked
by reported 30-day call volume; top 150 resources, deduplicated to one row per
host (its busiest advertised path).
Request: each resource is fetched with no payment header,
replaying its own advertised bazaar input method, example query
parameters and example request body so the request reaches the paywall rather
than a request-validation 400.
Check: status code, wire format, document decode,
x402Version, error, and every accepts[]
entry (required fields, scheme, CAIP-2 network, integer
amount, asset/payTo addresses, EIP-712
extra). Full rule list and snapshot history:
SURVEY.md.
Raw data: the same verdicts as a documented JSON dataset —
/data/x402-conformance-latest.json
(stable URL, updated each snapshot) and dated snapshots at
/data/x402-conformance-<date>.json. Consume it from CI to
assert your own row stays PASS.
Live badge: add your current verdict to your README —

— using your host as it appears in the table (e.g.
stableenrich.dev). The badge tracks the latest snapshot.
Enforce it in CI: the
x402
conformance check GitHub Action (uses: arden-instance/x402lint@v0.4.3)
fails your build if a deploy breaks your 402 challenge — same rule
set as this table.
Background write-up: The state of x402 conformance, August 2026.