{"service":"webcap","description":"Capture any URL as PNG/JPEG/PDF (+ free OG metadata), paid per-request in USDC via x402 (HTTP 402).","paymentProtocol":"x402","x402Version":2,"paidEndpoints":[{"method":"POST","path":"/v1/x402/capture","body":{"url":"string (required)","format":"png|jpeg|pdf (optional)","options":"object (optional) — render tuning: viewport, deviceScaleFactor, isMobile, userAgent, proxy, waitFor, actions"},"priceUsdc":0.001,"atomicUnits":"1000","note":"screenshot artifact (base64) + free OG metadata"},{"method":"POST","path":"/v1/x402/extract","body":{"url":"string (required, or urls: string[] up to 50 for a batch)","schema":"string (optional) — natural-language description of the JSON to extract; uses a model when one is configured","options":"object (optional) — capture tuning per URL: proxy, waitFor, actions, viewport, timeoutMs, fullPage"},"priceUsdc":0.01,"atomicUnits":"10000","note":"structured content (title, headings, paragraphs, links, images) as JSON; one payment covers a batch"},{"method":"POST","path":"/v1/x402/audit","body":{"url":"string (required)"},"priceUsdc":0.002,"atomicUnits":"2000","note":"SEO basics + link/OG health in one call"},{"method":"POST","path":"/v1/x402/map-lite","body":{"url":"string (required)","maxUrls":"integer (optional, default 20, at most 50) — maximum URLs to return"},"priceUsdc":0.002,"atomicUnits":"2000","note":"site URL list via sitemap/robots plus a 1-hop same-host crawl in one call"},{"method":"POST","path":"/v1/x402/video","body":{"url":"string (required)","format":"mp4|webm (optional; compatibility field — recordings are always WebM/VP8, default webm)","durationMs":"integer (optional, default 5000, at most 30000) — recording duration in milliseconds","scrollSpeed":"integer (optional, default 800, at most 5000) — pixels scrolled per choreography step","scrollEasing":"linear|ease-in-out (optional, default linear)","options":"object (optional) — viewport forwarded to the recording context"},"priceUsdc":0.005,"atomicUnits":"5000","note":"scroll-capture a URL as a WebM/VP8 video in one call"},{"method":"POST","path":"/v1/x402/analyze","body":{"url":"string (required)","task":"classification|accessibility|layout|entities|sentiment (required)","context":"string (optional) — focus context for the analysis"},"priceUsdc":0.01,"atomicUnits":"10000","note":"AI-powered visual analysis of a page (model when configured, deterministic DOM fallback otherwise)"},{"method":"POST","path":"/v1/x402/analyze/batch","body":{"urls":"string[] (required, at most 10) — one payment covers the batch","task":"classification|accessibility|layout|entities|sentiment (required)","context":"string (optional)"},"priceUsdc":0.01,"atomicUnits":"10000","note":"batch AI analysis of up to 10 URLs under one payment"},{"method":"POST","path":"/v1/x402/watches/topup","body":{"watchId":"string (required)","runs":"100 (required; one pack)"},"priceUsdc":0.1,"atomicUnits":"100000","usdcMax":1,"note":"Pre-pay 100 scheduled monitor runs of an existing watch (capture-pack price shown; extract-pack is usdcMax; exact price quoted per watch via ?watchId=)"}],"price":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","network":"eip155:8453","payTo":"0xB25572D7317eb98EBb39c45Da40eAAEA2A56c25e","scheme":"exact"},"howToPay":"POST /v1/x402/capture, /v1/x402/extract, /v1/x402/audit, /v1/x402/map-lite, /v1/x402/video, /v1/x402/analyze, or /v1/x402/analyze/batch unpaid -> HTTP 402 with a base64 x402 v2 challenge (payment-required header) -> sign a gasless EIP-3009 transferWithAuthorization (from=your wallet, to=price.payTo, value=price.atomicUnits) -> retry with the PAYMENT-SIGNATURE header. The facilitator verifies + settles on-chain; USDC lands in the merchant wallet and the result is returned. Works with any x402 v2 client (@x402/axios) or scripts/x402-pay.ts (capture) / scripts/extract-pay.ts (extract). Free with no wallet: GET /v1/extract/preview?url=... (rate-limited), and the rolling per-IP allowance — an unpaid call to any paid path above runs the product free until that window is spent (X-Webcap-Allowance-* headers say where you stand).","facilitator":"https://api.cdp.coinbase.com/platform/v2/x402","freeEndpoints":[{"method":"GET","path":"/v1/og?url=...","note":"free OG metadata, no payment"},{"method":"GET","path":"/v1/extract/preview?url=...","note":"free bounded structured preview (rate-limited); the paid extract returns full text + images + batch + model"},{"method":"GET","path":"/v1/health","note":"liveness + chain"},{"method":"ANY","path":"/v1/x402/{capture,extract,audit,map-lite,video,analyze}","note":"rolling free allowance: inside the per-IP window an unpaid call runs the product free (see X-Webcap-Allowance-* response headers); once spent the same paths answer the x402 402 challenge. No wallet signature, no account."},{"method":"POST","path":"/v1/feedback","note":"free feedback for agents and humans: {message (8-4000 chars), category? (bug|suggestion|pricing|docs|integration|other), endpoint?}; no account, rate-limited 60/hr, payer hashed; human form at GET /feedback"}]}