# Inferrail Web Read > Read one public web page as clean markdown (title, main text, headings, lists, links), with word count, a content hash and a receipt. Pay only for a delivered page: a blocked, missing or failing page (target-site 403, 404, 5xx, timeout) costs nothing, and neither do refusals (robots.txt, non-public address, non-text, >2 MB). A retry from the same wallet never pays twice. POST https://inferrail-cost-gateway.onrender.com/read/v1/page with JSON {"url": "https://..."}. Or GET https://inferrail-cost-gateway.onrender.com/read/v1/page?url=...&request_id=... (same price and terms; use POST for URLs that carry secrets, since query strings can end up in logs). The first response is HTTP 402 (x402 v2, exact, $0.002 USDC on eip155:8453 to 0xA45140E99E9482a50BC3fA5F6000c02FAAB6F65E). Sign it and repeat the request with the PAYMENT-SIGNATURE header. HTTP 200 = delivered and paid; any error = not charged. Lost the response? Send the same url and request_id again from the same wallet within 10 minutes: you get the paid page back and the new signature is not settled (no second charge). Also payable with MPP on Tempo (chain 4217): the same 402 carries a WWW-Authenticate Payment challenge; repeat the request with Authorization: Payment . The transfer is broadcast only after the page is delivered. Errors: 422 {error: unsupported_url | non_public_address | dns_failed | disallowed_by_robots_txt | unsupported_content_type | too_large | too_many_redirects}, 502 {error: upstream_status | fetch_failed | timeout}.