{"openapi":"3.1.0","info":{"title":"TerraDeed Scrape API","description":"x402-powered web data extraction for AI agents. Three endpoints: clean LLM-ready markdown (/scrape), structured JSON from any URL (/extract), and UK commercial property intelligence with government data enrichment (/extract/property). No accounts, no subscriptions — pay per call with USDC on Base mainnet.","version":"0.8.2"},"paths":{"/scrape":{"post":{"summary":"Scrape","operationId":"scrape_scrape_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScrapeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/extract/property":{"post":{"summary":"Extract Property","description":"Extract structured commercial property data from a listing URL.\nFixed schema — no fields parameter needed. Returns normalised property\nintelligence with confidence scores per field.","operationId":"extract_property_extract_property_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PropertyExtractRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/extract":{"post":{"summary":"Extract","operationId":"extract_extract_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health","description":"Health check endpoint","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/":{"get":{"summary":"Root","description":"Root endpoint - redirects to docs","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/llms.txt":{"get":{"summary":"Llms Txt","description":"LLM-readable API description for agent discovery","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/llms.txt":{"get":{"summary":"Well Known Llms Txt","description":"LLM-readable API description for agent discovery (well-known path)","operationId":"well_known_llms_txt__well_known_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/keys":{"post":{"summary":"Create Key","description":"Create a new API key (admin only)","operationId":"create_key_admin_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/admin/keys/{key_prefix}":{"get":{"summary":"Get Key Status","description":"Get API key status (admin only)","operationId":"get_key_status_admin_keys__key_prefix__get","parameters":[{"name":"key_prefix","in":"path","required":true,"schema":{"type":"string","title":"Key Prefix"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}}},"components":{"schemas":{"CreateKeyRequest":{"properties":{"credits":{"type":"integer","title":"Credits","default":100},"rate_limit":{"type":"integer","title":"Rate Limit","default":60}},"type":"object","title":"CreateKeyRequest"},"ExtractRequest":{"properties":{"url":{"type":"string","title":"Url"},"fields":{"items":{"type":"string"},"type":"array","title":"Fields"},"js_render":{"type":"boolean","title":"Js Render","default":false}},"type":"object","required":["url","fields"],"title":"ExtractRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PropertyExtractRequest":{"properties":{"url":{"type":"string","title":"Url"},"js_render":{"type":"boolean","title":"Js Render","default":true}},"type":"object","required":["url"],"title":"PropertyExtractRequest"},"ScrapeRequest":{"properties":{"url":{"type":"string","title":"Url"},"js_render":{"type":"boolean","title":"Js Render","default":false}},"type":"object","required":["url"],"title":"ScrapeRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}