Verification

Check an x402 endpoint's payment challenge shape (v1)

One probe, one moment: 402 status, parseable PAYMENT-REQUIRED header, signable accepts, testnet networks flagged. A shape check, never an uptime claim. Free, and metered — the RFC RateLimit fields ride every answer. Reports the Solana rail read as an advisory rather than folding it into the verdict, so a verdict recorded today means what one recorded in week 34 meant.

post/api/preflight/v1

Request

  • Base URL: https://scvd.store
  • URL: https://scvd.store/api/preflight/v1
  • Auth: none required

Request body

urlstring uri required

An https URL on a public host. Private, loopback, link-local and reserved-internal targets are refused, and so is this store's own hostname (a Worker cannot fetch itself).

Response

OK

versionstring required

The battery that scored this probe.

verdict'ready' | 'not_ready' | 'unreachable' | 'method_unresolved' required

ready = every structural check passed. not_ready = reachable but failed at least one. unreachable = the probe itself could not complete, which says nothing about their code — the detail says whose side the failure was on. method_unresolved = the door refused every HTTP method this probe sends (405/501), so NO check ran and nothing was observed about the challenge; it is a statement about our reach, never a finding against the endpoint, and it is deliberately not scorable as ready or not_ready.

reached_level'none' | 'L1' | 'L2' | 'L3a' required

The rung this probe reached before it stopped.

reached_level_meaningstring
network_failure'unlocalized'

Present only when reached_level is "none".

protocols_spokenstring[] required

Which protocols the 402 speaks, derived from its headers: x402 when PAYMENT-REQUIRED is present, mpp when a WWW-Authenticate: Payment challenge parses. The verdict keeps meaning x402-ready, permanently; read this for the union.

single_probe_notestring required

One moment. A passing preflight quoted as an uptime claim is a misquote, and this field is where the response says so. It also says when the reading took two requests rather than one, which happens only on a method refusal.

what_this_cannot_tell_youstring[] required
our_conflict_of_intereststring required

Published in the verdict itself rather than in a policy nobody fetches.

rate_limitobject
store_identityobject
this_is_not_advicestring

That the reading is an observation and the spending decision is the reader's, whose risk appetite they know better than this store does.

Changes

No recorded changes to this operation across all 1 revision of this API.