Quickstart
Route Tools is one API for every agent tool. You send a normalized request to
https://api.route.tools/v1/tools/{category}; we route it to the cheapest, fastest, or
best provider for that category and return a normalized response — with automatic
failover if a provider errors, times out, or rate-limits.
1. Get an API key
Section titled “1. Get an API key”Sign up at route.tools/dashboard — new accounts include
$2 of free credits. Create a key; it looks like rt_live_....
2. Make a call
Section titled “2. Make a call”curl https://api.route.tools/v1/tools/search \ -H "Authorization: Bearer rt_live_..." \ -H "Content-Type: application/json" \ -d '{ "query": "cloudflare durable objects pricing", "max_results": 5, "routing": { "sort": "price" } }'{ "id": "req_01...", "category": "search", "provider": "serper", "result": { "results": [ { "title": "...", "url": "https://...", "snippet": "..." } ] }, "usage": { "price": 0.0012, "latency_ms": 642, "units": 1 }, "routing": { "sort": "price", "attempted": [{ "provider": "serper", "status": "ok", "latency_ms": 642 }] }}The routing.attempted array shows exactly which providers were tried, in order — if the
first choice failed, you’ll see the failover chain.
3. Pick a routing dimension
Section titled “3. Pick a routing dimension”routing.sort | Behavior |
|---|---|
price | Cheapest available provider first (default) |
latency | Fastest provider by live p50, measured over the last 5 minutes |
quality | Highest-quality provider for the category |
Tool categories
Section titled “Tool categories”| Category | Endpoint | What it does |
|---|---|---|
| Search | POST /v1/tools/search | Web search |
| Scrape | POST /v1/tools/scrape | URL → markdown/html/text |
| Parse | POST /v1/tools/parse | Documents (PDF, images) → markdown |
| Image | POST /v1/tools/image | Text → image |
| Code | POST /v1/tools/code | Sandboxed code execution |
Discover live availability and pricing programmatically with GET /v1/tools.
Using an MCP client instead of raw HTTP? See MCP setup.