SearchRouter

API reference

Base URL: /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",
  "allow_fallbacks": true,
  "providers": { "only": ["brave", "exa"], "ignore": ["bing"] },
  "timeout_ms": 8000
}

POST /retrieve

Semantic / neural retrieval. Same routing fields as search. Prefer engines that weight quality (auto, reliable) or providers such as Exa and Tavily.

POST /crawl

{
  "url": "https://example.com/docs",
  "max_depth": 1,
  "engine": "reliable"
}

POST /research

Multi-step research. depth controls follow-up queries (1–4).

Catalog

  • GET /providers — adapter catalog, capabilities, and live-key status
  • GET /models and GET /engines — named routing profiles

Workspace

  • GET /usage — recent requests and aggregates
  • GET|POST /credits — balance, ledger, stub purchases
  • GET|POST|DELETE /keys — API keys and spend limits

Errors

Errors use a structured envelope: { "error": { "type", "code", "message", "details?" } }. Common codes: unauthorized, insufficient_credits, spend_limit_exceeded, all_providers_failed, provider_timeout.