Skip to content

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.

Sign up at route.tools/dashboard — new accounts include $2 of free credits. Create a key; it looks like rt_live_....

Terminal window
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.

routing.sortBehavior
priceCheapest available provider first (default)
latencyFastest provider by live p50, measured over the last 5 minutes
qualityHighest-quality provider for the category
CategoryEndpointWhat it does
SearchPOST /v1/tools/searchWeb search
ScrapePOST /v1/tools/scrapeURL → markdown/html/text
ParsePOST /v1/tools/parseDocuments (PDF, images) → markdown
ImagePOST /v1/tools/imageText → image
CodePOST /v1/tools/codeSandboxed code execution

Discover live availability and pricing programmatically with GET /v1/tools.

Using an MCP client instead of raw HTTP? See MCP setup.