{"openapi":"3.1.0","info":{"title":"FetchRelay API","version":"1.2.0","description":"Reliable web extraction with HTTP-first browser fallback."},"servers":[{"url":"https://fetchrelay.com"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Create a FetchRelay key in Account. Required for saved jobs, monitors, search, and MCP."}}},"paths":{"/api/scrape":{"post":{"summary":"Scrape one URL","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri"},"formats":{"type":"array","items":{"type":"string","enum":["markdown","html","rawHtml","text","links","images","screenshot","product","branding"]}},"mode":{"type":"string","enum":["auto","http","browser"],"default":"auto"},"browserProvider":{"type":"string","enum":["local","managed"],"description":"Managed browser requires a configured provider."},"proxy":{"type":"string","enum":["none","residential"],"description":"Residential requires an eligible managed-browser plan."},"onlyMainContent":{"type":"boolean","default":true},"waitFor":{"type":"integer","minimum":0,"maximum":10000},"timeout":{"type":"integer","minimum":3000,"maximum":55000},"maxAge":{"type":"integer","minimum":0,"maximum":86400000},"mobile":{"type":"boolean"},"redactPII":{"type":"boolean"},"previousHash":{"type":"string"},"headers":{"type":"object","additionalProperties":{"type":"string"}},"extract":{"type":"object","additionalProperties":true},"actions":{"type":"array","maxItems":20,"items":{"type":"object"}}}}}}},"responses":{"200":{"description":"Extracted document"}}}},"/api/batch":{"post":{"summary":"Scrape 20 URLs synchronously or 1000 asynchronously","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["urls"],"properties":{"formats":{"type":"array","items":{"type":"string","enum":["markdown","html","rawHtml","text","links","images","screenshot","product","branding"]}},"mode":{"type":"string","enum":["auto","http","browser"],"default":"auto"},"browserProvider":{"type":"string","enum":["local","managed"],"description":"Managed browser requires a configured provider."},"proxy":{"type":"string","enum":["none","residential"],"description":"Residential requires an eligible managed-browser plan."},"onlyMainContent":{"type":"boolean","default":true},"waitFor":{"type":"integer","minimum":0,"maximum":10000},"timeout":{"type":"integer","minimum":3000,"maximum":55000},"maxAge":{"type":"integer","minimum":0,"maximum":86400000},"mobile":{"type":"boolean"},"redactPII":{"type":"boolean"},"previousHash":{"type":"string"},"headers":{"type":"object","additionalProperties":{"type":"string"}},"extract":{"type":"object","additionalProperties":true},"actions":{"type":"array","maxItems":20,"items":{"type":"object"}},"urls":{"type":"array","minItems":1,"maxItems":1000,"items":{"type":"string","format":"uri"}},"async":{"type":"boolean","default":false}}}}}},"responses":{"200":{"description":"Batch result"},"202":{"description":"Saved batch job; follow statusUrl"}}}},"/api/crawl":{"post":{"summary":"Crawl a website synchronously or asynchronously","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri"},"formats":{"type":"array","items":{"type":"string","enum":["markdown","html","rawHtml","text","links","images","screenshot","product","branding"]}},"mode":{"type":"string","enum":["auto","http","browser"],"default":"auto"},"browserProvider":{"type":"string","enum":["local","managed"],"description":"Managed browser requires a configured provider."},"proxy":{"type":"string","enum":["none","residential"],"description":"Residential requires an eligible managed-browser plan."},"onlyMainContent":{"type":"boolean","default":true},"waitFor":{"type":"integer","minimum":0,"maximum":10000},"timeout":{"type":"integer","minimum":3000,"maximum":55000},"maxAge":{"type":"integer","minimum":0,"maximum":86400000},"mobile":{"type":"boolean"},"redactPII":{"type":"boolean"},"previousHash":{"type":"string"},"headers":{"type":"object","additionalProperties":{"type":"string"}},"extract":{"type":"object","additionalProperties":true},"actions":{"type":"array","maxItems":20,"items":{"type":"object"}},"async":{"type":"boolean","default":false},"limit":{"type":"integer","minimum":1,"maximum":1000,"description":"Synchronous maximum 100; asynchronous maximum 1000."},"maxDepth":{"type":"integer","minimum":0,"maximum":10},"sitemap":{"type":"string","enum":["include","skip","only"]},"includePaths":{"type":"array","items":{"type":"string"}},"excludePaths":{"type":"array","items":{"type":"string"}},"allowSubdomains":{"type":"boolean"},"allowExternalLinks":{"type":"boolean"},"webhook":{"type":"string","format":"uri"}}}}}},"responses":{"200":{"description":"Synchronous result"},"202":{"description":"Queued crawl job"}}}},"/api/crawl/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"summary":"Get crawl status","responses":{"200":{"description":"Crawl job"}}},"delete":{"summary":"Cancel a crawl","responses":{"200":{"description":"Cancelled job"}}}},"/api/crawl/{id}/results":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"summary":"Download partial or completed crawl results","parameters":[{"name":"format","in":"query","schema":{"type":"string","enum":["json","jsonl","csv"],"default":"json"}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"default":0}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":1000,"default":100}}],"responses":{"200":{"description":"Dataset download; X-Total-Count and X-Crawl-Status describe progress."}}}},"/api/mcp":{"post":{"summary":"MCP Streamable HTTP endpoint","responses":{"200":{"description":"MCP JSON-RPC response"},"202":{"description":"Notification accepted"}}}},"/api/search":{"post":{"summary":"Search the web and optionally extract results","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","maxLength":500},"limit":{"type":"integer","minimum":1,"maximum":10,"default":5},"scrape":{"type":"boolean","default":false},"includeDomains":{"type":"array","items":{"type":"string"},"maxItems":10},"excludeDomains":{"type":"array","items":{"type":"string"},"maxItems":10},"scrapeOptions":{"type":"object"}}}}}},"responses":{"200":{"description":"Ranked results and optional per-URL extraction"},"503":{"description":"Search provider not configured"}}}},"/api/monitors":{"get":{"summary":"List your saved monitors","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Monitor list"}}},"post":{"summary":"Create a scheduled page monitor","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url","name"],"properties":{"url":{"type":"string","format":"uri"},"formats":{"type":"array","items":{"type":"string","enum":["markdown","html","rawHtml","text","links","images","screenshot","product","branding"]}},"mode":{"type":"string","enum":["auto","http","browser"],"default":"auto"},"browserProvider":{"type":"string","enum":["local","managed"],"description":"Managed browser requires a configured provider."},"proxy":{"type":"string","enum":["none","residential"],"description":"Residential requires an eligible managed-browser plan."},"onlyMainContent":{"type":"boolean","default":true},"waitFor":{"type":"integer","minimum":0,"maximum":10000},"timeout":{"type":"integer","minimum":3000,"maximum":55000},"maxAge":{"type":"integer","minimum":0,"maximum":86400000},"mobile":{"type":"boolean"},"redactPII":{"type":"boolean"},"previousHash":{"type":"string"},"headers":{"type":"object","additionalProperties":{"type":"string"}},"extract":{"type":"object","additionalProperties":true},"actions":{"type":"array","maxItems":20,"items":{"type":"object"}},"name":{"type":"string"},"intervalMinutes":{"type":"integer","minimum":60,"maximum":10080,"default":1440},"webhook":{"type":"string","format":"uri"}}}}}},"responses":{"201":{"description":"Created; first baseline queued"}}}},"/api/monitors/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"summary":"Get your monitor and last 30 checks","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Monitor, history and diffs"}}},"patch":{"summary":"Pause/resume, or request a check","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"action":{"type":"string","enum":["run"]}}}}}},"responses":{"200":{"description":"Updated monitor"}}},"delete":{"summary":"Delete your monitor and history","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Deleted"}}}},"/api/map":{"post":{"summary":"Discover URLs from sitemaps and page links","responses":{"200":{"description":"URL map"}}}}}}