{"openapi":"3.1.0","info":{"title":"JsonRecon — Schema Extraction API","version":"1.0.0","description":"SEO schema.org JSON-LD extraction and suggestion service. Extracts or builds validated structured data from any URL. Supports 200+ schema types. Paid per-request via API Key or the x402 protocol (USDC on Base). Fast-path extraction for Google Patents and 30+ academic publishers at zero LLM cost.","contact":{"url":"https://jsonrecon.com"}},"servers":[{"url":"https://jsonrecon.com"}],"paths":{"/extract":{"get":{"operationId":"extractSchema","summary":"Full AI-powered extraction ($0.01 USDC, non-refundable)","description":"Scrapes any URL, applies AI to extract validated schema.org JSON-LD. Returns one of 200+ specific schema types. Pass target URL and options as query parameters. Requires x402 payment-signature header or API key. Payments are non-refundable. Known-difficult domains are auto-rejected before payment. Call GET /check?url=TARGET first for free assessment.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","format":"uri"},"description":"URL to extract structured data from"},{"name":"schema_type","in":"query","required":false,"schema":{"type":"string","default":"auto"},"description":"Schema.org type to extract, or \"auto\" for detection"},{"name":"suggest","in":"query","required":false,"schema":{"type":"boolean","default":false},"description":"When true, AI suggests the optimal schema type for the page"}],"responses":{"200":{"description":"Extraction successful","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","description":"Schema.org JSON-LD structured data"},"schema_type":{"type":"string"},"source":{"type":"string"},"confidence":{"type":"string","enum":["high","medium","low"]},"extraction_ms":{"type":"number"},"cached":{"type":"boolean"}}}}}},"400":{"description":"Bad request — missing or invalid URL, DNS rebinding attempt, or domain blocked before payment"},"402":{"description":"Payment required — decode the base64 payment-required response header, sign a Permit2 payload, and resend with a payment-signature header. Payment is non-refundable once settled."},"422":{"description":"Unprocessable — target URL returned 404 (dead link), 5xx (server error), or extraction failed after payment. Payment is non-refundable."}}},"post":{"operationId":"extractSchemaPost","summary":"Full AI-powered extraction via POST ($0.01 USDC, non-refundable)","description":"Same as GET /extract but accepts parameters in JSON body. Backward-compatible for API key users.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"URL to extract structured data from"},"schema_type":{"type":"string","default":"auto","description":"Schema.org type to extract, or \"auto\" for detection"},"suggest":{"type":"boolean","default":false,"description":"When true, AI suggests the optimal schema type"}}}}}},"responses":{"200":{"description":"Extraction successful"},"400":{"description":"Bad request"},"402":{"description":"Payment required"},"422":{"description":"Unprocessable — dead link or extraction failed"}}}},"/extract/lite":{"get":{"operationId":"extractSchemaLite","summary":"Lightweight extraction — existing JSON-LD only ($0.005 USDC)","description":"Returns existing JSON-LD markup from a page without AI processing. Fast and deterministic. Falls back to WebPage if no markup found. Pass target URL as query parameter.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","format":"uri"},"description":"URL to extract existing JSON-LD from"},{"name":"schema_type","in":"query","required":false,"schema":{"type":"string","default":"auto"},"description":"Schema.org type hint (optional)"}],"responses":{"200":{"description":"Extraction successful","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","description":"Schema.org JSON-LD structured data"},"schema_type":{"type":"string"},"source":{"type":"string"},"confidence":{"type":"string","enum":["high","medium","low"]},"extraction_ms":{"type":"number"},"cached":{"type":"boolean"}}}}}},"400":{"description":"Bad request — missing or invalid URL"},"402":{"description":"Payment required"},"422":{"description":"Unprocessable — dead link or extraction failed"}}},"post":{"operationId":"extractSchemaLitePost","summary":"Lightweight extraction via POST ($0.005 USDC)","description":"Same as GET /extract/lite but accepts parameters in JSON body.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri"},"schema_type":{"type":"string","default":"auto"}}}}}},"responses":{"200":{"description":"Extraction successful"},"400":{"description":"Bad request"},"402":{"description":"Payment required"},"422":{"description":"Unprocessable — dead link or extraction failed"}}}},"/check":{"get":{"operationId":"preflightCheck","summary":"Free pre-flight URL assessment","description":"Check a URL before paying for extraction. Returns difficulty rating, expected schema type, and known issues. Always call this first on unknown domains.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","format":"uri"},"description":"URL to assess"}],"responses":{"200":{"description":"Preflight check result with difficulty, expected schema type, and any known issues"},"400":{"description":"Missing or invalid URL parameter"}}}},"/health":{"get":{"operationId":"healthCheck","summary":"Service health status (free)","responses":{"200":{"description":"Service is healthy"},"503":{"description":"Service degraded"}}}},"/.well-known/x402":{"get":{"operationId":"paymentDiscovery","summary":"x402 payment metadata and service discovery (free)","responses":{"200":{"description":"Payment metadata including pricing, supported networks, and schema types"}}}}},"x-x402":{"paymentProtocol":"x402-v2","currency":"USDC","networks":["base"],"discoveryEndpoint":"/.well-known/x402"}}