SearchRouter Docs

One API, one key, one bill - routed across every search, retrieval, embedding, and reranking provider. SearchRouter is the OpenRouter for search.

SearchRouter is a normalization proxy for the search and retrieval ecosystem. You send requests in a single canonical schema; we pick a provider, translate your request to that provider's native API, call it with managed upstream keys (or your own, via BYOK), translate the response back, meter usage, and return a normalized result. Switch providers by changing one string.

The five primitives

Every search workload reduces to one of five capabilities, each with its own canonical schema:

  • /search - web, neural, and keyword search. A query in, a ranked list of results out. This is the schema that doesn't exist yet as a standard - we define it.
  • /embeddings - text → vectors. OpenAI-compatible canonical shape, with cross-provider input_type normalization.
  • /rerank - reorder documents by relevance to a query. Cohere-compatible shape.
  • /answer - search-grounded (RAG) answers with citations.
  • /extract - fetch and clean page content into markdown.

Your first request

Every call uses the same base URL and a Bearer key. Here's a neural search against Exa:

bash
curl https://searchrouter.ai/api/v1/search \
  -H "Authorization: Bearer $SR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "exa/neural",
    "query": "best vector databases for RAG 2026",
    "num_results": 10
  }'
No upstream keys? Demo mode returns realistic example payloads with zero provider credentials, so you can wire up the integration before bringing your own keys.

How it works

Model slugs follow the pattern provider/model[:variant] - e.g. exa/neural, openai/text-embedding-3-small, cohere/rerank-v3.5. Point your existing search and embeddings code at one base URL, set the model string, and you can route by price, latency, or quality with automatic failover when a provider goes down.

Explore the docs