{"openapi":"3.1.0","info":{"title":"Route Tools API","version":"1.0.0","description":"One API for every agent tool — routed to the cheapest, fastest, or best provider with automatic failover. Get a key at https://route.tools/dashboard."},"servers":[{"url":"https://api.route.tools"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"rt_live_... API key"}}},"paths":{"/v1/tools":{"get":{"summary":"Catalog: categories, providers, prices, availability","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Catalog"}}}},"/v1/tools/search":{"post":{"summary":"Web search (Serper, Brave, You.com, Exa)","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","maxLength":2000},"max_results":{"type":"integer","minimum":1,"maximum":100,"default":10},"freshness":{"type":"string","enum":["day","week","month","year"]},"country":{"type":"string","minLength":2,"maxLength":2},"routing":{"type":"object","properties":{"sort":{"type":"string","enum":["price","latency","quality"],"default":"price"},"providers":{"type":"array","items":{"type":"string"}},"fallbacks":{"type":"boolean","default":true}}}},"required":["query"]}}}},"responses":{"200":{"description":"Routed result","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"category":{"type":"string"},"provider":{"type":"string","description":"Provider that served the call"},"result":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"url":{"type":"string"},"snippet":{"type":"string"},"published_at":{"type":"string"}}}}}},"usage":{"type":"object","properties":{"price":{"type":"number","description":"USD charged for this call"},"latency_ms":{"type":"integer"},"units":{"type":"number"}}},"routing":{"type":"object","properties":{"sort":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}},"402":{"description":"Out of credits","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}},"502":{"description":"All providers failed (never billed)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}}}}},"/v1/tools/scrape":{"post":{"summary":"Scrape a URL to markdown/html/text (Jina, Spider, Firecrawl)","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"format":{"type":"string","enum":["markdown","html","text"],"default":"markdown"},"render_js":{"type":"boolean","default":false},"routing":{"type":"object","properties":{"sort":{"type":"string","enum":["price","latency","quality"],"default":"price"},"providers":{"type":"array","items":{"type":"string"}},"fallbacks":{"type":"boolean","default":true}}}},"required":["url"]}}}},"responses":{"200":{"description":"Routed result","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"category":{"type":"string"},"provider":{"type":"string","description":"Provider that served the call"},"result":{"type":"object","properties":{"url":{"type":"string"},"format":{"type":"string"},"content":{"type":"string"},"title":{"type":"string"}}},"usage":{"type":"object","properties":{"price":{"type":"number","description":"USD charged for this call"},"latency_ms":{"type":"integer"},"units":{"type":"number"}}},"routing":{"type":"object","properties":{"sort":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}},"402":{"description":"Out of credits","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}},"502":{"description":"All providers failed (never billed)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}}}}},"/v1/tools/parse":{"post":{"summary":"Parse a document to markdown (Mistral OCR, LlamaParse, Reducto)","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"document_url":{"type":"string","format":"uri"},"mode":{"type":"string","enum":["fast","quality"],"default":"fast"},"routing":{"type":"object","properties":{"sort":{"type":"string","enum":["price","latency","quality"],"default":"price"},"providers":{"type":"array","items":{"type":"string"}},"fallbacks":{"type":"boolean","default":true}}}},"required":["document_url"]}}}},"responses":{"200":{"description":"Routed result","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"category":{"type":"string"},"provider":{"type":"string","description":"Provider that served the call"},"result":{"type":"object","properties":{"markdown":{"type":"string"},"pages":{"type":"array","items":{"type":"object"}},"page_count":{"type":"integer"}}},"usage":{"type":"object","properties":{"price":{"type":"number","description":"USD charged for this call"},"latency_ms":{"type":"integer"},"units":{"type":"number"}}},"routing":{"type":"object","properties":{"sort":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}},"402":{"description":"Out of credits","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}},"502":{"description":"All providers failed (never billed)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}}}}},"/v1/tools/image":{"post":{"summary":"Generate images (fal.ai, Replicate, OpenAI)","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string"},"model":{"type":"string","enum":["flux-dev","flux-pro","gpt-image"],"default":"flux-dev"},"size":{"type":"string","enum":["1024x1024","1024x1536","1536x1024"],"default":"1024x1024"},"n":{"type":"integer","minimum":1,"maximum":4,"default":1},"routing":{"type":"object","properties":{"sort":{"type":"string","enum":["price","latency","quality"],"default":"price"},"providers":{"type":"array","items":{"type":"string"}},"fallbacks":{"type":"boolean","default":true}}}},"required":["prompt"]}}}},"responses":{"200":{"description":"Routed result","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"category":{"type":"string"},"provider":{"type":"string","description":"Provider that served the call"},"result":{"type":"object","properties":{"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"}}}},"model":{"type":"string"}}},"usage":{"type":"object","properties":{"price":{"type":"number","description":"USD charged for this call"},"latency_ms":{"type":"integer"},"units":{"type":"number"}}},"routing":{"type":"object","properties":{"sort":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}},"402":{"description":"Out of credits","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}},"502":{"description":"All providers failed (never billed)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}}}}},"/v1/tools/code":{"post":{"summary":"Execute code in a sandbox (E2B, Daytona)","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"language":{"type":"string","enum":["python","javascript"],"default":"python"},"code":{"type":"string"},"timeout_seconds":{"type":"integer","minimum":1,"maximum":300,"default":60},"routing":{"type":"object","properties":{"sort":{"type":"string","enum":["price","latency","quality"],"default":"price"},"providers":{"type":"array","items":{"type":"string"}},"fallbacks":{"type":"boolean","default":true}}}},"required":["code"]}}}},"responses":{"200":{"description":"Routed result","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"category":{"type":"string"},"provider":{"type":"string","description":"Provider that served the call"},"result":{"type":"object","properties":{"stdout":{"type":"string"},"stderr":{"type":"string"},"exit_code":{"type":"integer"},"duration_ms":{"type":"integer"}}},"usage":{"type":"object","properties":{"price":{"type":"number","description":"USD charged for this call"},"latency_ms":{"type":"integer"},"units":{"type":"number"}}},"routing":{"type":"object","properties":{"sort":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}},"402":{"description":"Out of credits","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}},"502":{"description":"All providers failed (never billed)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"attempted":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["ok","error","timeout","rate_limited","skipped"]},"latency_ms":{"type":"integer"},"error":{"type":"string"}}}}}}}}}}}}}},"/v1/key":{"get":{"summary":"Balance and key info","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Key info"}}}},"/v1/usage":{"get":{"summary":"Usage aggregates and recent calls","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Usage"}}}},"/status":{"get":{"summary":"Public live provider status (no auth)","responses":{"200":{"description":"Per-provider latency/error stats"}}}}}}