Verify and monitor a third-party x402 endpoint without paying it
Verify and monitor a third-party x402 endpoint without paying it. Probe the live 402 challenge and check conformance: price, payTo, network, scheme, schema and example quality, whether its own advertised input still reaches a challenge, and whether its description fits the facilitator limit that silently blocks settlement. Then get availability history and a field-level diff since the last observation. Optional recomputation against Base.
30000 (raw units)
price
2
calls / 30d
1
unique payers
2026-09-07
updated
Provider
www.tereno.xyz · discovered, not yet claimed by its owner
Payment (x402 accepts[])
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0xfbF218ACCBb0D57fc4E8fc3E2A885C910c4C9e94",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "30000",
"maxTimeoutSeconds": 300
}
]Output schema
{
"bazaar": {
"info": {
"input": {
"body": {
"method": "GET",
"resource": "https://www.tereno.xyz/api/v1/capabilities/chain.snapshot/invoke"
},
"bodyType": "json",
"method": "POST",
"type": "http"
},
"output": {
"example": {
"assurance": "conformant",
"capabilityId": "x402.endpoint.assurance",
"capabilityVersion": "2026-09-07",
"pricing": {
"currency": "USDC",
"pricePaidUsd": 0.03
},
"receiptUrl": "/api/v1/x402/assurance/reports/uuid",
"report": {
"challenge": {
"decodable": true,
"descriptionChars": 231,
"discoverable": true,
"hasInputSchema": true,
"hasOutputExample": true,
"network": "eip155:8453",
"payTo": "0x1111111111111111111111111111111111111111",
"priceUsd": 0.01,
"scheme": "exact"
},
"conformance": {
"checks": [
{
"detail": "the resource answered 402 Payment Required",
"id": "answers_402",
"ok": true,
"severity": "blocking"
}
],
"failed": 0,
"level": "conformant",
"passed": 14
},
"history": {
"availabilityPct": 100,
"changesSinceLast": [
{
"field": "priceUsd",
"from": "0.01",
"to": "0.02"
}
],
"observations": 3
},
"host": "example.com",
"limitations": [
"Tereno never paid this endpoint."
],
"method": "GET",
"reachability": {
"httpStatus": 402,
"latencyMs": 214,
"note": null,
"status": "ok"
},
"resource": "https://example.com/api/paid",
"verification": {
"claims": [],
"divergent": 0,
"level": "not_verifiable",
"matched": 0,
"note": "No recomputable claim was supplied."
}
}
},
"type": "json"
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"additionalProperties": false,
"properties": {
"body": {
"description": "JSON body to send with the probe, for POST resources.",
"type": "object"
},
"claims": {
"description": "What to recompute out of observedResponse. Supported kinds: erc20.symbol, erc20.decimals, erc20.totalSupply, erc20.balanceOf, native.balance, contract.hasCode, gas.priceGwei.",
"items": {
"properties": {
"address": {
"type": "string"
},
"kind": {
"enum": [
"erc20.symbol",
"erc20.decimals",
"erc20.totalSupply",
"erc20.balanceOf",
"native.balance",
"contract.hasCode",
"gas.priceGwei"
]
},
"owner": {
"type": "string"
},
"token": {
"type": "string"
},
"tolerancePct": {
"type": "number"
}
},
"required": [
"kind"
],
"type": "object"
},
"type": "array"
},
"method": {
"description": "How that endpoint is normally called. Defaults to GET.",
"enum": [
"GET",
"POST"
]
},
"observedResponse": {
"description": "A paid response you already hold from that endpoint. Supply it to have its claims recomputed against Base.",
"type": "object"
},
"query": {
"description": "Query parameters to send with the probe.",
"type": "object"
},
"resource": {
"description": "Absolute HTTPS URL of the x402 endpoint to measure.",
"type": "string"
}
},
"required": [
"resource"
],
"type": "object"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"properties": {
"assurance": {
"enum": [
"verified",
"conformant",
"not_verifiable",
"failing"
]
},
"capabilityId": {
"const": "x402.endpoint.assurance"
},
"pricing": {
"type": "object"
},
"report": {
"type": "object"
}
},
"required": [
"capabilityId",
"assurance",
"report",
"pricing"
],
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}
},
"builder-code": {
"info": {
"a": "bc_8kag0yoi"
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"a": {
"description": "App builder code",
"pattern": "^[a-z0-9_]{1,32}$",
"type": "string"
},
"s": {
"description": "Service builder codes",
"items": {
"pattern": "^[a-z0-9_]{1,32}$",
"type": "string"
},
"type": "array"
},
"w": {
"description": "Wallet builder code",
"pattern": "^[a-z0-9_]{1,32}$",
"type": "string"
}
},
"type": "object"
}
}
}Use it
curl
curl "https://www.tereno.xyz/api/v1/x402/assurance/invoke" # -> 402 Payment Required, accepts[] lists how to pay # retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const res = await fetch("https://www.tereno.xyz/api/v1/x402/assurance/invoke");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}Python
import httpx
res = httpx.get("https://www.tereno.xyz/api/v1/x402/assurance/invoke")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerMachine-readable
Everything on this page is also available as clean JSON at /resources/2470.json, and this resource appears in /discovery/resources and /discovery/search.