Quote an x402-paid API before you buy
Quote an x402-paid API before you buy: probes a third-party endpoint with one unpaid GET (no payment is ever sent) and decodes its payment requirements — x402 v2 base64 PAYMENT-REQUIRED header or v1 JSON body. Returns normalised prices (atomic amount, asset, network, payTo), description, resource URL and Bazaar discovery metadata. Non-402 targets return {isX402:false, status}. SSRF-checked, 1 redirect max, 8 s timeout.
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
GET https://staging.402utils.com/v1/x402-probe
| Category | Market data |
|---|---|
| Provider host | staging.402utils.com |
| Networks | eip155:84532 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 1 from 1 payers (the provider's figure, not ours) |
Our checks, last 30 days
We never call tools that send, buy, move money or file anything, not even without paying.
Example input (from the provider)
{
"method": "GET",
"queryParams": {
"url": "https://402utils.com/v1/rss-to-json"
},
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"description": "Query string only.",
"properties": {
"url": {
"description": "Public http(s) URL of the endpoint to probe (required).",
"format": "uri",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"properties": {
"description": {
"description": "Human description advertised by the target.",
"type": "string"
},
"discovery": {
"description": "Bazaar/discovery extension object, passed through verbatim when present.",
"type": "object"
},
"isX402": {
"description": "True when the target answered 402 with decodable x402 payment requirements.",
"type": "boolean"
},
"prices": {
"description": "One entry per accepts[] payment option; fields are copied only when advertised.",
"items": {
"properties": {
"amount": {
"description": "Price in atomic units of the asset (e.g. 6-decimal USDC).",
"type": "string"
},
"asset": {
"description": "Asset contract address or identifier.",
"type": "string"
},
"maxTimeoutSeconds": {
"type": "number"
},
"network": {
"description": "Network id, e.g. eip155:8453 (v2) or base-sepolia (v1).",
"type": "string"
},
"payTo": {
"type": "string"
},
"scheme": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"reason": {
"description": "Why isX402 is false despite an unusual (but definitive) response.",
"enum": [
"undecodable_402",
"too_many_redirects"
],
"type": "string"
},
"resource": {
"description": "Resource URL advertised in the payment payload.",
"type": "string"
},
"status": {
"description": "HTTP status the target answered with.",
"type": "integer"
},
"x402Version": {
"description": "x402 protocol version (2 = PAYMENT-REQUIRED header payload, 1 = 402 body payload).",
"type": "integer"
}
},
"required": [
"isX402",
"status"
],
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}