{"demo":true,"note":"Free fixed-input sample of real output. The paid route accepts your own input: /api/x402-check ($0.01 per call, x402 USDC on Base, no signup or API key).","paid_endpoint":"https://horizonpulse.dev/api/x402-check","price":"$0.01","fixed_input":"url=https://horizonpulse.dev/api/pulse (fixed)","sample_status":200,"sample":{"source":"x402-check","priced":{"amountUsd":"$0.01","amountAtomic":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"base","payTo":"0x5b32c973596078a967562ca652761404f19be0e9"},"asOf":"2026-10-01T02:33:43.626Z","ok":true,"target":"https://horizonpulse.dev/api/pulse","finalUrl":"https://horizonpulse.dev/api/pulse","method":"GET","httpStatus":402,"isX402":true,"x402Version":2,"challengeSource":"header","resource":{"url":"https://horizonpulse.dev/api/pulse","description":"BTC/ETH/SOL spot prices with momentum, overall sentiment, and signal from CoinGecko","mimeType":"application/json"},"accepts":[{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","assetLabel":"USDC (Base)","amountAtomic":"5000","amountUsd":"$0.005","payTo":"0x5b32c973596078a967562ca652761404f19be0e9","payToType":"eoa","maxTimeoutSeconds":300}],"discovery":{"present":true,"method":"GET","hasInputSchema":true,"hasOutputExample":true},"checks":[{"id":"status_402","level":"pass","message":"Unpaid request returned HTTP 402."},{"id":"challenge","level":"pass","message":"x402 challenge parsed from PAYMENT-REQUIRED header."},{"id":"version","level":"pass","message":"x402 v2."},{"id":"payto_type","level":"info","message":"payTo 0x5b32c973596078a967562ca652761404f19be0e9 is an EOA: one private key controls every payment. Keep that key backed up; if it is lost, funds sent there are unrecoverable."},{"id":"discovery","level":"pass","message":"Discovery metadata present (method GET)."}],"summary":{"pass":4,"warn":0,"fail":0},"elapsedMs":258,"methodology":{"request":"One unpaid request with the given method (GET default; POST sends the caller's JSON body, up to 8KB, or '{}' if none). A body implies POST. Redirects follow browser rules: 301/302/303 turn a POST into a GET without the body; 307/308 re-send the POST and body to the new target, which is SSRF-checked like every hop. If no method was given and GET returns 405, one retry with POST is made and reported (skipped when a redirect already turned a POST into a GET). No payment header is ever sent; nothing is signed or paid.","parsing":"x402 v2: base64 JSON in the PAYMENT-REQUIRED header (falls back to JSON body). x402 v1: JSON body with x402Version 1 and accepts[].maxAmountRequired.","payToType":"eth_getCode on Base (eip155:8453 / 'base') and Ethereum (eip155:1 / 'ethereum') via public RPCs. Empty code = EOA (a single private key controls funds). Other networks: not checked.","limits":"SSRF-safe (private/local targets blocked at every redirect hop), 3 redirects, 8s timeout, 64KB body cap.","billing":"Any HTTP answer from the target is a completed report and is billed, including 4xx/5xx answers (e.g. 'returned HTTP 500, not 402' is the finding). Not billed: missing/bad url, bad method, invalid or oversized body, blocked private/local host, DNS failure, connection failure, timeout, or too many redirects; those return 400/502/504 and settlement is skipped.","notAdvice":"Checks describe the challenge as served. Indexing hints are based on Horizon Pulse's own experience with CDP discovery, not a CDP guarantee."}}}