RouteShift exposes two compatibility surfaces and one admin surface:Documentation Index
Fetch the complete documentation index at: https://docs.axiomancer.io/llms.txt
Use this file to discover all available pages before exploring further.
| Surface | Base URL | Auth | Use for |
|---|---|---|---|
| OpenAI-compatible | https://proxy.routeshift.io/v1 | Authorization: Bearer sk-proxy-… | Chat, completions, embeddings, models. |
| Anthropic-compatible | https://proxy.routeshift.io/anthropic/v1 | x-api-key: sk-proxy-… | Anthropic Messages API. |
| Admin | https://api.routeshift.io/admin | Authorization: Bearer ROUTESHIFT_ADMIN_TOKEN | Mint keys, query usage, manage aliases. |
Virtual keys
All three surfaces accept the samesk-proxy-… virtual key, except the admin surface, which requires a separate admin token scoped to the workspace. Admin tokens are minted at Settings → API tokens and never expire automatically — rotate them on your own schedule.
ROUTESHIFT_ADMIN_TOKEN does not fall back to a virtual sk-proxy-… key. If you call an admin endpoint with a virtual key, RouteShift returns 401. This is deliberate — virtual keys should never carry workspace-admin scope.Rate limits
Each virtual key carries its own RPM and TPM caps (see Virtual API keys). When a cap is hit, RouteShift returns:Retry-After is in seconds and reflects when the bucket will have capacity again.
Errors
RouteShift mirrors the upstream provider’s error format whenever possible. Proxy-side errors carry anX-RouteShift-Reason header so you can distinguish proxy failures from upstream failures:
| Reason | Status | Meaning |
|---|---|---|
key_revoked | 401 | Virtual key was revoked. |
key_expired | 401 | Virtual key passed expires_at. |
model_not_allowed | 403 | Model isn’t in this key’s allowlist. |
rpm_exceeded | 429 | Per-key requests-per-minute cap hit. |
tpm_exceeded | 429 | Per-key tokens-per-minute cap hit. |
budget_exceeded | 429 | Monthly budget hit; resets at start of next UTC month. |
cost_ceiling_exceeded | 429 | Per-request cost ceiling hit during a fallback chain. |
no_provider_key | 503 | No provider key available for the resolved upstream. |
upstream_cooldown | 503 | All credentials for this provider are in cooldown. |