{"uid":"cap_JRkC1qmv-5eXD9lM9pwHn","slug":"x402-listing-drift-checker-57b6e295","name":"x402 Listing Drift Checker","description":"Does a catalogue listing still match what the origin serves? Calls the resource with no payment, reads the price, network and payTo out of the 402 the origin itself returns, and compares them with the price the catalogue advertises. The 402 is the authoritative statement; the catalogue is a cache of one. Also separates two failures no catalogue reports: an origin that is gone, and an origin that answers but whose response headers exceed the 16384-byte ceiling Node applies to all response headers combined -- live, indexed and impossible to pay from a Node client. Required: resource. Optional: advertised_price. Honest note: demand for this route is not measured; it exists because the defect it reports was measured on our own surface first.","url":"https://api402x.com/x402-listing-drift-check?utm_source=zero.xyz","method":"GET","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method"],"properties":{"type":{"type":"string","const":"http"},"method":{"enum":["GET"],"type":"string"},"queryParams":{"type":"object","required":["resource"],"properties":{"resource":{"type":"string","description":"REQUIRED. Absolute http(s) URL of the listed resource. Public hosts only."},"advertised_price":{"type":"string","description":"OPTIONAL. What the catalogue claims, e.g. \"$0.005\". Omit to just read the live terms."}}}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object","properties":{"live":{"type":"object","properties":{"pay_to":{"type":["string","null"]},"network":{"type":["string","null"]},"price_usd":{"type":["string","null"]},"latency_ms":{"type":"integer"},"http_status":{"type":["integer","null"]},"header_bytes":{"type":["integer","null"]}}},"detail":{"type":"string"},"status":{"enum":["matches","price_drift","dead","unbuyable_headers","not_x402","indeterminate"],"type":"string"},"resource":{"type":"string"},"actionable":{"type":"boolean"},"checked_at":{"type":"string"},"advertised_price_usd":{"type":["string","null"]}}}}}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.002","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"down","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.002/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.002","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.002","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_2ylR3ovlepzVaybmFvmQF","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.002","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Checks whether a catalogued x402 resource's live payment terms (price, network, payTo) match the advertised listing, and detects dead origins or oversized response headers that would prevent payment.","exampleAgentPrompt":"Can you check whether the x402 listing for https://api.example.com/data is still accurate — I think the catalogue says the price is $0.005 but I want to know what the origin is actually charging right now?","exampleUseCases":[{"title":"Stale catalogue price audit","prompt":"I have an x402 resource listed at $0.003 in my catalogue — can you hit https://api.someprovider.com/weather-data directly and tell me if the live 402 response still shows that price, or if there's drift?"},{"title":"Dead origin detection","prompt":"Can you check whether https://api.oldprovider.com/premium-feed is still alive and responding with a valid 402, or has that origin gone dark?"},{"title":"Unbuyable header size check","prompt":"Something's wrong paying for https://api.bigheaders.com/report from my Node client — can you check whether the origin's response headers are exceeding the 16 KB limit that would make it impossible to pay?"}],"resultDescription":"Returns a status field (one of: matches, price_drift, dead, unbuyable_headers, not_x402, indeterminate), the live payment terms read from the origin's actual 402 response (price_usd, network, pay_to), the advertised price for comparison, latency in ms, HTTP status code, header byte count, a checked_at timestamp, and an actionable boolean indicating whether the issue can be acted upon.","failureModes":["Resource URL is not publicly reachable — returns status 'dead'","Origin responds but is not an x402 endpoint — returns status 'not_x402'","Origin response headers exceed 16384 bytes — returns status 'unbuyable_headers'","Network error or timeout prevents a definitive answer — returns status 'indeterminate'","Missing required 'resource' query parameter — returns a 4xx validation error"],"whenToPreferThis":"Use this endpoint when you need to verify that a specific x402 resource's live payment terms match what a catalogue or index has recorded — especially before paying, before publishing a listing, or as part of a monitoring workflow. Prefer it over a generic HTTP probe because it parses x402 402-response headers specifically (price, network, payTo) and additionally catches the Node.js 16 KB header ceiling failure mode that generic health checks miss.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-12T22:28:46.713Z","isFirstParty":false,"canonicalSlug":"x402-listing-drift-checker-57b6e295"}