API

API reference

Base URL: https://www.searchrouter.dev/api/v1. Authenticate every request with Authorization: Bearer sk-....

POST /search

Unified web search.

{
  "query": "string",
  "num_results": 8,
  "engine": "auto | cheap | fresh | fast | reliable",
  "sort": "price | latency | throughput | quality | freshness",
  "allow_fallbacks": true,
  "providers": {
    "only": ["brave", "exa"],
    "ignore": ["tavily"],
    "order": ["serper", "brave", "you", "linkup", "exa"]
  },
  "timeout_ms": 8000
}

Response

{
  "id": "req_...",
  "object": "search.result",
  "data": [...],
  "routing": { "provider", "engine", "reason", "scores", "attempts" },
  "usage": { "credits": 0.65, "balance": 9449.35, "cost": 0.00065 }
}

POST /retrieve · /crawl · /research

Same routing fields. Crawl takes url. Research takes depth (1–4).

Catalog + workspace

  • GET /providers — catalog, capabilities, auto-route flag
  • GET /models and GET /engines
  • GET /usage — activity; ?request_id= for a trace
  • GET /credits · GET|POST|DELETE /keys

Errors

Envelope: { "error": { "type", "code", "message", "details?" } }. 429 includes Retry-After and X-RateLimit-Limit / Remaining / Reset. Vendor payloads and COGS are never returned.