HTTP Errors
401 Unauthorized
Cause: API key missing, malformed, or revoked.
Fix:
- Make sure you’re passing the key in the
Authorization: Bearer sk-routor-...header - Verify the key starts with
sk-routor-(not an OpenAI key) - Check that the key hasn’t been revoked in Dashboard → API Keys
- If you’re using a routing profile key, check Playground → Manage Profiles to confirm the profile still exists
402 Payment Required
Cause: Your credit balance is zero.
Fix: Top up in Dashboard → Billing → Add Credits.
There are no partial charges. Requests fail cleanly when credits run out - your app catches a 402, you top up, requests resume.
404 Not Found on the model
Cause: You passed a specific model name that Routor doesn’t proxy directly.
Fix: Use model: "auto" to let Routor pick, or check Supported Models for valid model strings.
422 Unprocessable Entity
Cause: Malformed request body - usually a missing messages field or invalid role.
Fix: Ensure every message has a role (user, assistant, or system) and a content string.
429 Rate Limited
Cause: You’ve hit a per-minute request limit (rare on the default plan).
Fix: Add exponential backoff in your client. If you consistently hit this, contact support.
503 Service Unavailable
Cause: All providers in the selected tier are currently failing.
Fix: This is extremely rare because of the fallback chain. Check Provider Health to see current status. If multiple providers are down simultaneously, wait a few minutes and retry. If the problem persists, contact support@routor.io.
Routing Issues
”My responses feel too generic / low quality”
Cause: The router is routing to a lighter tier than you expect. Fix: Create a routing profile with a higher tier floor. Go to Playground → Configure, set the tier floor to STANDARD or COMPLEX, and save. Use the profile’s API key for requests that need higher quality. You can also test a specific prompt in Playground → Test to see exactly which tier and model get selected.”My response is slow - slower than before”
Cause: The request was routed to a model with higher latency than your previous provider. Fix:- Check the
X-Routor-Modelheader in the response to see which model was selected - If a COMPLEX tier model was chosen for a simple request, the scorer may be miscalibrating on your prompt style
- Set a tier ceiling in your profile to cap at STANDARD and accept the quality trade-off
- Contact support with a sample prompt - we can investigate calibration issues
”Tool calling isn’t working”
Cause: The routed model doesn’t support tool calling, or you didn’t set the capability requirement. Fix:- Create a routing profile with Tool calling capability enabled
- Use the profile’s API key for requests that include
tools - Check Supported Models to confirm which models support tools
”Vision isn’t working - images are ignored”
Cause: The routed model doesn’t support vision inputs. Fix:- Create a routing profile with Vision capability enabled
- Pass image content in the
image_urlformat (OpenAI-compatible) - Without the capability set, Routor may route to a text-only model
SDK / Integration Issues
Error: baseURL must not end with a slash
Some SDK versions are strict about the base URL format.
Headers not appearing in response
X-Routor-* headers are only returned when Routor handles the routing. If you’re pointing at api.openai.com or a different endpoint, you won’t see them.
Verify your base_url (Python) or baseURL (Node.js) is set to https://api.routor.io/v1.
Streaming stops mid-response
This can happen if the provider terminates the stream early (rare). The fallback system handles full request failures but not mid-stream failures. If you encounter this regularly, contact support with the model name from theX-Routor-Model header.
Dashboard Issues
Credits show $0 but I just topped up
Payments via Razorpay are typically instant. If your balance doesn’t update within 2 minutes:- Hard-refresh the dashboard (Cmd+Shift+R / Ctrl+Shift+R)
- Check your email for a payment confirmation
- Contact support@routor.io with your payment ID
API key shows “Last used: Never” even after making requests
The “last used” timestamp updates every few minutes, not in real time. If it still shows “Never” after 10 minutes, verify you’re using the correct key prefix shown in the dashboard.Still stuck?
Open a GitHub issue or email support@routor.io with:- The error message and HTTP status code
- The
X-Routor-*headers from the response (if available) - A minimal reproduction (prompt + code snippet)