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-providerinput_typenormalization./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:
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
}'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.