API Reference
Complete reference for all OmniRoute API endpoints.
Table of Contents
Chat Completions
POST /v1/chat/completions
Authorization: Bearer your-api-key
Content-Type: application/json
{
"model": "cc/claude-opus-4-6",
"messages": [
{"role": "user", "content": "Write a function to..."}
],
"stream": true
}
Custom Headers
| Header |
Direction |
Description |
X-OmniRoute-No-Cache |
Request |
Set to true to bypass cache |
X-OmniRoute-Progress |
Request |
Set to true for progress events |
Idempotency-Key |
Request |
Dedup key (5s window) |
X-Request-Id |
Request |
Alternative dedup key |
X-OmniRoute-Cache |
Response |
HIT or MISS (non-streaming) |
X-OmniRoute-Idempotent |
Response |
true if deduplicated |
X-OmniRoute-Progress |
Response |
enabled if progress tracking on |
Embeddings
POST /v1/embeddings
Authorization: Bearer your-api-key
Content-Type: application/json
{
"model": "nebius/Qwen/Qwen3-Embedding-8B",
"input": "The food was delicious"
}
Available providers: Nebius, OpenAI, Mistral, Together AI, Fireworks, NVIDIA.
GET /v1/embeddings
Image Generation
POST /v1/images/generations
Authorization: Bearer your-api-key
Content-Type: application/json
{
"model": "openai/dall-e-3",
"prompt": "A beautiful sunset over mountains",
"size": "1024x1024"
}
Available providers: OpenAI (DALL-E), xAI (Grok Image), Together AI (FLUX), Fireworks AI.
GET /v1/images/generations
List Models
GET /v1/models
Authorization: Bearer your-api-key
→ Returns all chat, embedding, and image models + combos in OpenAI format
Compatibility Endpoints
| Method |
Path |
Format |
| POST |
/v1/chat/completions |
OpenAI |
| POST |
/v1/messages |
Anthropic |
| POST |
/v1/responses |
OpenAI Responses |
| POST |
/v1/embeddings |
OpenAI |
| POST |
/v1/images/generations |
OpenAI |
| GET |
/v1/models |
OpenAI |
| POST |
/v1/messages/count_tokens |
Anthropic |
| GET |
/v1beta/models |
Gemini |
| POST |
/v1beta/models/{...path} |
Gemini generateContent |
| POST |
/v1/api/chat |
Ollama |
Dedicated Provider Routes
POST /v1/providers/{provider}/chat/completions
POST /v1/providers/{provider}/embeddings
POST /v1/providers/{provider}/images/generations
The provider prefix is auto-added if missing. Mismatched models return 400.
Semantic Cache
GET /api/cache
DELETE /api/cache
Response example:
{
"semanticCache": {
"memorySize": 42,
"memoryMaxSize": 500,
"dbSize": 128,
"hitRate": 0.65
},
"idempotency": {
"activeKeys": 3,
"windowMs": 5000
}
}
Dashboard & Management
Authentication
| Endpoint |
Method |
Description |
/api/auth/login |
POST |
Login |
/api/auth/logout |
POST |
Logout |
/api/settings/require-login |
GET/PUT |
Toggle login required |
Provider Management
| Endpoint |
Method |
Description |
/api/providers |
GET/POST |
List / create providers |
/api/providers/[id] |
GET/PUT/DELETE |
Manage a provider |
/api/providers/[id]/test |
POST |
Test provider connection |
/api/providers/[id]/models |
GET |
List provider models |
/api/providers/validate |
POST |
Validate provider config |
/api/provider-nodes* |
Various |
Provider node management |
/api/provider-models |
GET/POST/DELETE |
Custom models |
OAuth Flows
| Endpoint |
Method |
Description |
/api/oauth/[provider]/[action] |
Various |
Provider-specific OAuth |
Routing & Config
| Endpoint |
Method |
Description |
/api/models/alias |
GET/POST |
Model aliases |
/api/models/catalog |
GET |
All models by provider + type |
/api/combos* |
Various |
Combo management |
/api/keys* |
Various |
API key management |
/api/pricing |
GET |
Model pricing |
Usage & Analytics
| Endpoint |
Method |
Description |
/api/usage/history |
GET |
Usage history |
/api/usage/logs |
GET |
Usage logs |
/api/usage/request-logs |
GET |
Request-level logs |
/api/usage/[connectionId] |
GET |
Per-connection usage |
Settings
| Endpoint |
Method |
Description |
/api/settings |
GET/PUT |
General settings |
/api/settings/proxy |
GET/PUT |
Network proxy config |
/api/settings/proxy/test |
POST |
Test proxy connection |
/api/settings/ip-filter |
GET/PUT |
IP allowlist/blocklist |
/api/settings/thinking-budget |
GET/PUT |
Reasoning token budget |
/api/settings/system-prompt |
GET/PUT |
Global system prompt |
Monitoring
| Endpoint |
Method |
Description |
/api/sessions |
GET |
Active session tracking |
/api/rate-limits |
GET |
Per-account rate limits |
/api/monitoring/health |
GET |
Health check |
/api/cache |
GET/DELETE |
Cache stats / clear |
Backup & Export/Import
| Endpoint |
Method |
Description |
/api/db-backups |
GET |
List available backups |
/api/db-backups |
PUT |
Create a manual backup |
/api/db-backups |
POST |
Restore from a specific backup |
/api/db-backups/export |
GET |
Download database as .sqlite file |
/api/db-backups/import |
POST |
Upload .sqlite file to replace database |
/api/db-backups/exportAll |
GET |
Download full backup as .tar.gz archive |
Cloud Sync
| Endpoint |
Method |
Description |
/api/sync/cloud |
Various |
Cloud sync operations |
/api/sync/initialize |
POST |
Initialize sync |
/api/cloud/* |
Various |
Cloud management |
CLI Tools
| Endpoint |
Method |
Description |
/api/cli-tools/claude-settings |
GET |
Claude CLI status |
/api/cli-tools/codex-settings |
GET |
Codex CLI status |
/api/cli-tools/droid-settings |
GET |
Droid CLI status |
/api/cli-tools/openclaw-settings |
GET |
OpenClaw CLI status |
/api/cli-tools/runtime/[toolId] |
GET |
Generic CLI runtime |
CLI responses include: installed, runnable, command, commandPath, runtimeMode, reason.
Resilience & Rate Limits
| Endpoint |
Method |
Description |
/api/resilience |
GET/PUT |
Get/update resilience profiles |
/api/resilience/reset |
POST |
Reset circuit breakers |
/api/rate-limits |
GET |
Per-account rate limit status |
/api/rate-limit |
GET |
Global rate limit configuration |
Evals
| Endpoint |
Method |
Description |
/api/evals |
GET/POST |
List eval suites / run evaluation |
Policies
| Endpoint |
Method |
Description |
/api/policies |
GET/POST/DELETE |
Manage routing policies |
Compliance
| Endpoint |
Method |
Description |
/api/compliance/audit-log |
GET |
Compliance audit log (last N) |
v1beta (Gemini-Compatible)
| Endpoint |
Method |
Description |
/v1beta/models |
GET |
List models in Gemini format |
/v1beta/models/{...path} |
POST |
Gemini generateContent endpoint |
These endpoints mirror Gemini's API format for clients that expect native Gemini SDK compatibility.
Internal / System APIs
| Endpoint |
Method |
Description |
/api/init |
GET |
Application initialization check (used on first run) |
/api/tags |
GET |
Ollama-compatible model tags (for Ollama clients) |
/api/restart |
POST |
Trigger graceful server restart |
/api/shutdown |
POST |
Trigger graceful server shutdown |
Note: These endpoints are used internally by the system or for Ollama client compatibility. They are not typically called by end users.
Audio Transcription
POST /v1/audio/transcriptions
Authorization: Bearer your-api-key
Content-Type: multipart/form-data
Transcribe audio files using Deepgram or AssemblyAI.
Request:
curl -X POST http://localhost:20128/v1/audio/transcriptions \
-H "Authorization: Bearer your-api-key" \
-F "file=@recording.mp3" \
-F "model=deepgram/nova-3"
Response:
{
"text": "Hello, this is the transcribed audio content.",
"task": "transcribe",
"language": "en",
"duration": 12.5
}
Supported providers: deepgram/nova-3, assemblyai/best.
Supported formats: mp3, wav, m4a, flac, ogg, webm.
Ollama Compatibility
For clients that use Ollama's API format:
POST /v1/api/chat
GET /api/tags
Requests are automatically translated between Ollama and internal formats.
Telemetry
GET /api/telemetry/summary
Response:
{
"providers": {
"claudeCode": { "p50": 245, "p95": 890, "p99": 1200, "count": 150 },
"github": { "p50": 180, "p95": 620, "p99": 950, "count": 320 }
}
}
Budget
GET /api/usage/budget
POST /api/usage/budget
Content-Type: application/json
{
"keyId": "key-123",
"limit": 50.00,
"period": "monthly"
}
Model Availability
GET /api/models/availability
POST /api/models/availability
Content-Type: application/json
{
"model": "claude-sonnet-4-5-20250929"
}
Request Processing
- Client sends request to
/v1/*
- Route handler calls
handleChat, handleEmbedding, handleAudioTranscription, or handleImageGeneration
- Model is resolved (direct provider/model or alias/combo)
- Credentials selected from local DB with account availability filtering
- For chat:
handleChatCore — format detection, translation, cache check, idempotency check
- Provider executor sends upstream request
- Response translated back to client format (chat) or returned as-is (embeddings/images/audio)
- Usage/logging recorded
- Fallback applies on errors according to combo rules
Full architecture reference: ARCHITECTURE.md
Authentication
- Dashboard routes (
/dashboard/*) use auth_token cookie
- Login uses saved password hash; fallback to
INITIAL_PASSWORD
requireLogin toggleable via /api/settings/require-login
/v1/* routes optionally require Bearer API key when REQUIRE_API_KEY=true