Treść z repozytorium z zachowaniem nagłówków, przykładów, kodu, tabel, linków i obrazów.
<!-- generated by src/lib/agentSkills/generator.ts; manual edits will be overwritten -->
Overview
The core OpenAI-compatible inference endpoints: chat completions, embeddings, images, audio (TTS/STT), moderations, rerank, and the Responses API. The primary integration surface for AI agents.
Authentication
All requests require a valid Bearer token or session cookie. Obtain a token via POST /api/auth/login or configure REQUIRE_API_KEY=false for local development.
Endpoints
POST /api/v1/session-leases
Acquire, inspect, renew, or release an exclusive managed connection lease
Requires an API key with lease:exclusive and an explicit non-empty allowedConnections policy. The opaque owner is bound to the authenticated API key; the lease owns an eligible connection, not a provider or model. Managed inference requests present the owner and exact generation headers. Temporary foreign occupancy returns 429 WAITING_FOR_CAPACITY with Retry-After. Acquire, renew, and release retain their connection-free response shapes. The explicit status action is owner-, key-, and generation-fenced and returns only privacy-safe display metadata for an active binding.
curl -X POST https://localhost:20128/api/v1/session-leases \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/search
List search providers
Lists configured search providers and their supported search types.
curl https://localhost:20128/api/v1/search \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/search
Run a unified search
Searches the web, news, or X through a configured provider. Set provider to xquik-search to use Xquik for X search. The aliases xquik and xquik_search resolve to the same provider. AnySearch (anysearch-search, aliases anysearch / anysearch_search) provides free fallback-only web search.
curl -X POST https://localhost:20128/api/v1/search \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/chat/completions
Create chat completion
OpenAI-compatible chat completions endpoint. Routes to configured providers.
curl -X POST https://localhost:20128/api/v1/chat/completions \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/ws
Chat completion over WebSocket (handshake + upgrade)
OpenAI-compatible chat over a WebSocket connection. GET with ?handshake=1 returns the connection descriptor (auth path, message protocol and live-event channels) as JSON; a plain GET without an Upgrade returns 426 Upgrade Required. After upgrading, the client exchanges JSON frames — {type:"request", id, payload:{model, messages}} to start a completion and {type:"cancel", id} to abort it. A separate live channel (default port LIVE_WS_PORT=20129, path /live) streams dashboard events on the requests, combo and credentials topics with a 15s heartbeat. Requires an API key.
curl https://localhost:20128/api/v1/ws \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/providers/{provider}/chat/completions
Create chat completion (provider-specific)
Routes to a specific provider by name.
curl -X POST https://localhost:20128/api/v1/providers/{provider}/chat/completions \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/api/chat
Ollama-compatible chat endpoint
Provides compatibility with Ollama's /api/chat format.
curl -X POST https://localhost:20128/api/v1/api/chat \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/messages
Create message (Anthropic-compatible)
Anthropic Messages API endpoint. Routes to Claude providers.
curl -X POST https://localhost:20128/api/v1/messages \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/messages/count_tokens
Count tokens for a message
curl -X POST https://localhost:20128/api/v1/messages/count_tokens \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/responses
Create response (OpenAI Responses API)
OpenAI Responses API endpoint.
curl -X POST https://localhost:20128/api/v1/responses \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/embeddings
Create embeddings
curl -X POST https://localhost:20128/api/v1/embeddings \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/multimodal-embeddings
List embedding models (Jina multimodal-embeddings alias)
curl https://localhost:20128/api/v1/multimodal-embeddings \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/multimodal-embeddings
Create embeddings (Jina multimodal-embeddings alias)
Same handler as POST /api/v1/embeddings. Provided so Jina-compatible clients that call /v1/multimodal-embeddings do not receive HTTP 404 unknown_route.
curl -X POST https://localhost:20128/api/v1/multimodal-embeddings \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/providers/{provider}/embeddings
Create embeddings (provider-specific)
curl -X POST https://localhost:20128/api/v1/providers/{provider}/embeddings \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/images/generations
Generate images
curl -X POST https://localhost:20128/api/v1/images/generations \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/providers/{provider}/images/generations
Generate images (provider-specific)
curl -X POST https://localhost:20128/api/v1/providers/{provider}/images/generations \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/audio/speech
Generate speech audio
Text-to-speech endpoint. Routes to configured TTS providers.
curl -X POST https://localhost:20128/api/v1/audio/speech \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/audio/transcriptions
Transcribe audio
Audio-to-text transcription endpoint.
curl -X POST https://localhost:20128/api/v1/audio/transcriptions \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/moderations
Create moderation
Content moderation endpoint. Routes to configured moderation providers.
curl -X POST https://localhost:20128/api/v1/moderations \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/rerank
Rerank documents
Document reranking endpoint.
curl -X POST https://localhost:20128/api/v1/rerank \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1
API v1 root endpoint
Returns basic API info and status.
curl https://localhost:20128/api/v1 \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/providers/{provider}/models
List models for a specific provider
Returns only models for the selected provider with provider prefix removed from each model id.
curl https://localhost:20128/api/v1/providers/{provider}/models \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/management/proxy-subscriptions
List proxy subscriptions
Lists all operator-supplied proxy subscription links. Also starts the background auto-refresh scheduler (idempotent) so enabled subscriptions stay in sync. Credentials embedded in url are redacted in the response.
curl https://localhost:20128/api/v1/management/proxy-subscriptions \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/management/proxy-subscriptions
Create a proxy subscription
Creates a subscription record. If mode is rule, at least one entry in ruleProviders is required. updateIntervalMinutes defaults to 60 and enabled defaults to false when omitted or not exactly true.
curl -X POST https://localhost:20128/api/v1/management/proxy-subscriptions \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/management/proxy-subscriptions/{id}
Get a proxy subscription
curl https://localhost:20128/api/v1/management/proxy-subscriptions/{id} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"PATCH /api/v1/management/proxy-subscriptions/{id}
Update a proxy subscription
Partial update — only fields present in the body are changed (name/url/mode/ruleProviders/localCoreEndpoint/updateIntervalMinutes/enabled).
curl -X PATCH https://localhost:20128/api/v1/management/proxy-subscriptions/{id} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'DELETE /api/v1/management/proxy-subscriptions/{id}
Delete a proxy subscription
Removes the subscription record and unbinds/drops its synced proxy_registry rows.
curl -X DELETE https://localhost:20128/api/v1/management/proxy-subscriptions/{id} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/management/proxy-subscriptions/{id}/nodes
Get a subscription's last-parsed node summary
Returns the last-parsed node list without re-fetching the (possibly slow) subscription URL.
curl https://localhost:20128/api/v1/management/proxy-subscriptions/{id}/nodes \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/management/proxy-subscriptions/{id}/refresh
Refresh a proxy subscription
Re-fetches and re-parses the subscription URL, syncs its nodes into proxy_registry, and (re)binds the pool.
curl -X POST https://localhost:20128/api/v1/management/proxy-subscriptions/{id}/refresh \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/ocr
Document OCR
Multi-provider document OCR endpoint (Mistral OCR–compatible request and response shape). Accepts a JSON body referencing a document/image and returns extracted text. model selects the provider via a provider/model prefix (e.g. mistral/mistral-ocr-latest, azure-document-intelligence/prebuilt-read, vertex-deepseek-ocr/deepseek-ocr-maas); a bare model id (e.g. mistral-ocr-latest) resolves to its registered provider, and an omitted model defaults to Mistral. Azure Document Intelligence is asynchronous upstream — the handler polls the returned operation until it succeeds or fails before responding, so this endpoint can take longer to return for that provider. Success responses carry the X-OmniRoute-* cost-telemetry headers.
curl -X POST https://localhost:20128/api/v1/ocr \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/audio/translations
Translate audio to English
OpenAI Whisper–compatible audio translation (multipart/form-data). Unlike /api/v1/audio/transcriptions, output is always English regardless of the source language. Success responses carry the X-OmniRoute-* cost-telemetry headers.
curl -X POST https://localhost:20128/api/v1/audio/translations \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/voices
List ElevenLabs voices
Proxies GET https://api.elevenlabs.io/v1/voices using the stored elevenlabs provider credentials (the caller never sends xi-api-key). The incoming query string is forwarded unchanged.
curl https://localhost:20128/api/v1/voices \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/speech-to-text
ElevenLabs speech-to-text
Streams the request body to POST https://api.elevenlabs.io/v1/speech-to-text using the stored elevenlabs provider credentials. content-type and accept are forwarded; the upstream body is relayed unchanged.
curl -X POST https://localhost:20128/api/v1/speech-to-text \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/text-to-speech/{voiceId}
ElevenLabs text-to-speech
Streams the request body to POST https://api.elevenlabs.io/v1/text-to-speech/{voiceId} using the stored elevenlabs provider credentials. voiceId must match ^[A-Za-z0-9_-]+$ or the request is rejected with 400 before any upstream call.
curl -X POST https://localhost:20128/api/v1/text-to-speech/{voiceId} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/explain/routing
Routing explainability snapshot
Returns the most recent routing events (bounded in-memory ring buffer) plus the per-provider/model quality snapshot from open-sse/services/routing. Routing metadata only — never prompts, bodies, headers or credentials. Auth mirrors /api/v1/combos: a valid Bearer API key or a dashboard session; with REQUIRE_API_KEY=false anonymous reads are allowed.
curl https://localhost:20128/api/v1/explain/routing \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/providers/suggested-models
Suggested media models
Read-only server-side proxy to the public HuggingFace Hub models search API, used by the dashboard to suggest models for a media provider kind without exposing an HF token client-side. Never accepts or returns credentials.
curl https://localhost:20128/api/v1/providers/suggested-models \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/provider-plugin-manifest
Provider plugin manifest
Returns the manifest describing installed provider plugins.
curl https://localhost:20128/api/v1/provider-plugin-manifest \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/{omnirouteCatchAll}
GET <omnirouteCatchAll>
curl https://localhost:20128/api/v1/{omnirouteCatchAll} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/{omnirouteCatchAll}
POST <omnirouteCatchAll>
curl -X POST https://localhost:20128/api/v1/{omnirouteCatchAll} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'PUT /api/v1/{omnirouteCatchAll}
PUT <omnirouteCatchAll>
curl -X PUT https://localhost:20128/api/v1/{omnirouteCatchAll} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'PATCH /api/v1/{omnirouteCatchAll}
PATCH <omnirouteCatchAll>
curl -X PATCH https://localhost:20128/api/v1/{omnirouteCatchAll} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'DELETE /api/v1/{omnirouteCatchAll}
DELETE <omnirouteCatchAll>
curl -X DELETE https://localhost:20128/api/v1/{omnirouteCatchAll} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/accounts/{id}/limits
GET accounts › <id> › limits
curl https://localhost:20128/api/v1/accounts/{id}/limits \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"PUT /api/v1/accounts/{id}/limits
PUT accounts › <id> › limits
curl -X PUT https://localhost:20128/api/v1/accounts/{id}/limits \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/agents/credentials
GET agents › credentials
curl https://localhost:20128/api/v1/agents/credentials \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/agents/credentials
POST agents › credentials
curl -X POST https://localhost:20128/api/v1/agents/credentials \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/agents/health
GET agents › health
curl https://localhost:20128/api/v1/agents/health \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/agents/tasks
GET agents › tasks
curl https://localhost:20128/api/v1/agents/tasks \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/agents/tasks
POST agents › tasks
curl -X POST https://localhost:20128/api/v1/agents/tasks \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'DELETE /api/v1/agents/tasks
DELETE agents › tasks
curl -X DELETE https://localhost:20128/api/v1/agents/tasks \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/agents/tasks/{id}
GET agents › tasks › <id>
curl https://localhost:20128/api/v1/agents/tasks/{id} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/agents/tasks/{id}
POST agents › tasks › <id>
curl -X POST https://localhost:20128/api/v1/agents/tasks/{id} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'DELETE /api/v1/agents/tasks/{id}
DELETE agents › tasks › <id>
curl -X DELETE https://localhost:20128/api/v1/agents/tasks/{id} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/antigravity
POST antigravity
curl -X POST https://localhost:20128/api/v1/antigravity \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/auto-combo/{channel}/candidates
GET auto combo › <channel> › candidates
curl https://localhost:20128/api/v1/auto-combo/{channel}/candidates \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/batches
GET batches
curl https://localhost:20128/api/v1/batches \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/batches
POST batches
curl -X POST https://localhost:20128/api/v1/batches \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/batches/{id}
GET batches › <id>
curl https://localhost:20128/api/v1/batches/{id} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"DELETE /api/v1/batches/{id}
DELETE batches › <id>
curl -X DELETE https://localhost:20128/api/v1/batches/{id} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/batches/{id}/cancel
POST batches › <id> › cancel
curl -X POST https://localhost:20128/api/v1/batches/{id}/cancel \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'DELETE /api/v1/batches/delete-completed
DELETE batches › delete completed
curl -X DELETE https://localhost:20128/api/v1/batches/delete-completed \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/classify
POST classify
curl -X POST https://localhost:20128/api/v1/classify \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/combos
GET combos
curl https://localhost:20128/api/v1/combos \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/completions
POST completions
curl -X POST https://localhost:20128/api/v1/completions \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/files
GET files
curl https://localhost:20128/api/v1/files \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/files
POST files
curl -X POST https://localhost:20128/api/v1/files \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/files/{id}
GET files › <id>
curl https://localhost:20128/api/v1/files/{id} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"DELETE /api/v1/files/{id}
DELETE files › <id>
curl -X DELETE https://localhost:20128/api/v1/files/{id} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/files/{id}/content
GET files › <id> › content
curl https://localhost:20128/api/v1/files/{id}/content \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/images/edits
POST images › edits
curl -X POST https://localhost:20128/api/v1/images/edits \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/images/upscale
GET images › upscale
curl https://localhost:20128/api/v1/images/upscale \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/images/upscale
POST images › upscale
curl -X POST https://localhost:20128/api/v1/images/upscale \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/issues/report
POST issues › report
curl -X POST https://localhost:20128/api/v1/issues/report \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/management/proxies
GET management › proxies
curl https://localhost:20128/api/v1/management/proxies \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/management/proxies
POST management › proxies
curl -X POST https://localhost:20128/api/v1/management/proxies \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'PATCH /api/v1/management/proxies
PATCH management › proxies
curl -X PATCH https://localhost:20128/api/v1/management/proxies \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'DELETE /api/v1/management/proxies
DELETE management › proxies
curl -X DELETE https://localhost:20128/api/v1/management/proxies \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/management/proxies/assignments
GET management › proxies › assignments
curl https://localhost:20128/api/v1/management/proxies/assignments \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"PUT /api/v1/management/proxies/assignments
PUT management › proxies › assignments
curl -X PUT https://localhost:20128/api/v1/management/proxies/assignments \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'PUT /api/v1/management/proxies/bulk-assign
PUT management › proxies › bulk assign
curl -X PUT https://localhost:20128/api/v1/management/proxies/bulk-assign \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/management/proxies/health
GET management › proxies › health
curl https://localhost:20128/api/v1/management/proxies/health \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/me/status
GET me › status
curl https://localhost:20128/api/v1/me/status \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/muse-code/models
GET muse code › models
curl https://localhost:20128/api/v1/muse-code/models \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/music/generations
GET music › generations
curl https://localhost:20128/api/v1/music/generations \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/music/generations
POST music › generations
curl -X POST https://localhost:20128/api/v1/music/generations \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/providers/{provider}/limits
GET providers › <provider> › limits
curl https://localhost:20128/api/v1/providers/{provider}/limits \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"PUT /api/v1/providers/{provider}/limits
PUT providers › <provider> › limits
curl -X PUT https://localhost:20128/api/v1/providers/{provider}/limits \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/quotas/check
GET quotas › check
curl https://localhost:20128/api/v1/quotas/check \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/registered-keys
GET registered keys
curl https://localhost:20128/api/v1/registered-keys \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/registered-keys
POST registered keys
curl -X POST https://localhost:20128/api/v1/registered-keys \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/registered-keys/{id}
GET registered keys › <id>
curl https://localhost:20128/api/v1/registered-keys/{id} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"DELETE /api/v1/registered-keys/{id}
DELETE registered keys › <id>
curl -X DELETE https://localhost:20128/api/v1/registered-keys/{id} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/registered-keys/{id}/revoke
POST registered keys › <id> › revoke
curl -X POST https://localhost:20128/api/v1/registered-keys/{id}/revoke \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/relay/chat/completions
POST relay › chat › completions
curl -X POST https://localhost:20128/api/v1/relay/chat/completions \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/relay/chat/completions/bifrost
POST relay › chat › completions › bifrost
curl -X POST https://localhost:20128/api/v1/relay/chat/completions/bifrost \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/responses/{path}
POST responses › <path>
curl -X POST https://localhost:20128/api/v1/responses/{path} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/search/analytics
GET search › analytics
curl https://localhost:20128/api/v1/search/analytics \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/segment
POST segment
curl -X POST https://localhost:20128/api/v1/segment \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/video-bridge/drilldown
GET video bridge › drilldown
curl https://localhost:20128/api/v1/video-bridge/drilldown \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"DELETE /api/v1/video-bridge/drilldown
DELETE video bridge › drilldown
curl -X DELETE https://localhost:20128/api/v1/video-bridge/drilldown \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/videos/generations
GET videos › generations
curl https://localhost:20128/api/v1/videos/generations \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/videos/generations
POST videos › generations
curl -X POST https://localhost:20128/api/v1/videos/generations \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/vscode/{token}
GET vscode › <token>
curl https://localhost:20128/api/v1/vscode/{token} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/vscode/{token}/api/chat
POST vscode › <token> › api › chat
curl -X POST https://localhost:20128/api/v1/vscode/{token}/api/chat \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/vscode/{token}/api/show
POST vscode › <token> › api › show
curl -X POST https://localhost:20128/api/v1/vscode/{token}/api/show \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/vscode/{token}/api/tags
GET vscode › <token> › api › tags
curl https://localhost:20128/api/v1/vscode/{token}/api/tags \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/vscode/{token}/api/version
GET vscode › <token> › api › version
curl https://localhost:20128/api/v1/vscode/{token}/api/version \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/vscode/{token}/chat/completions
POST vscode › <token> › chat › completions
curl -X POST https://localhost:20128/api/v1/vscode/{token}/chat/completions \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/vscode/{token}/combos
GET vscode › <token> › combos
curl https://localhost:20128/api/v1/vscode/{token}/combos \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/vscode/{token}/models
GET vscode › <token> › models
curl https://localhost:20128/api/v1/vscode/{token}/models \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/vscode/{token}/responses
POST vscode › <token> › responses
curl -X POST https://localhost:20128/api/v1/vscode/{token}/responses \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/vscode/{token}/v1/chat/completions
POST vscode › <token> › v1 › chat › completions
curl -X POST https://localhost:20128/api/v1/vscode/{token}/v1/chat/completions \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/vscode/{token}/v1/models
GET vscode › <token> › v1 › models
curl https://localhost:20128/api/v1/vscode/{token}/v1/models \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/vscode/combos/{token}/{{slug}}
GET vscode › combos › <token> › <{slug>}
curl https://localhost:20128/api/v1/vscode/combos/{token}/{{slug}} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/vscode/combos/{token}/{{slug}}
POST vscode › combos › <token> › <{slug>}
curl -X POST https://localhost:20128/api/v1/vscode/combos/{token}/{{slug}} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/vscode/raw/{token}
GET vscode › raw › <token>
curl https://localhost:20128/api/v1/vscode/raw/{token} \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/vscode/raw/{token}/api/chat
POST vscode › raw › <token> › api › chat
curl -X POST https://localhost:20128/api/v1/vscode/raw/{token}/api/chat \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/vscode/raw/{token}/api/show
POST vscode › raw › <token> › api › show
curl -X POST https://localhost:20128/api/v1/vscode/raw/{token}/api/show \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/vscode/raw/{token}/api/tags
GET vscode › raw › <token> › api › tags
curl https://localhost:20128/api/v1/vscode/raw/{token}/api/tags \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/vscode/raw/{token}/api/version
GET vscode › raw › <token> › api › version
curl https://localhost:20128/api/v1/vscode/raw/{token}/api/version \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/vscode/raw/{token}/chat/completions
POST vscode › raw › <token> › chat › completions
curl -X POST https://localhost:20128/api/v1/vscode/raw/{token}/chat/completions \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/vscode/raw/{token}/combos
GET vscode › raw › <token> › combos
curl https://localhost:20128/api/v1/vscode/raw/{token}/combos \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"GET /api/v1/vscode/raw/{token}/models
GET vscode › raw › <token> › models
curl https://localhost:20128/api/v1/vscode/raw/{token}/models \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/vscode/raw/{token}/responses
POST vscode › raw › <token> › responses
curl -X POST https://localhost:20128/api/v1/vscode/raw/{token}/responses \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'POST /api/v1/vscode/raw/{token}/v1/chat/completions
POST vscode › raw › <token> › v1 › chat › completions
curl -X POST https://localhost:20128/api/v1/vscode/raw/{token}/v1/chat/completions \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'GET /api/v1/vscode/raw/{token}/v1/models
GET vscode › raw › <token> › v1 › models
curl https://localhost:20128/api/v1/vscode/raw/{token}/v1/models \
-H "Authorization: Bearer $OMNIROUTE_TOKEN"POST /api/v1/web/fetch
POST web › fetch
curl -X POST https://localhost:20128/api/v1/web/fetch \
-H "Authorization: Bearer $OMNIROUTE_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'Payloads
See the full OpenAPI specification at GET /api/openapi/spec or docs/openapi.yaml for detailed request/response schemas.
<!-- skill:custom-start --> <!-- Aggregated from: omniroute-chat, omniroute-image, omniroute-tts, omniroute-stt, omniroute-embeddings, omniroute-web-search, omniroute-web-fetch -->
Chat completions
Requires OMNIROUTE_URL and OMNIROUTE_KEY. See entry-point SKILL for setup.
Endpoints
POST $OMNIROUTE_URL/v1/chat/completions— OpenAI formatPOST $OMNIROUTE_URL/v1/messages— Anthropic Messages formatPOST $OMNIROUTE_URL/v1/responses— OpenAI Responses API
Discover
curl $OMNIROUTE_URL/v1/models | jq '.data[].id'Combos (e.g. auto, cost-optimized, subscription) auto-fallback through multiple providers.
OpenAI format example
curl -X POST $OMNIROUTE_URL/v1/chat/completions \
-H "Authorization: Bearer $OMNIROUTE_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-opus-4-7",
"messages": [{"role": "user", "content": "Refactor this function"}],
"stream": true
}'Anthropic format example
curl -X POST $OMNIROUTE_URL/v1/messages \
-H "Authorization: Bearer $OMNIROUTE_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-opus-4-7",
"max_tokens": 4096,
"messages": [{"role": "user", "content": "Hi"}]
}'Tool use
Supports OpenAI tools array and Anthropic tools block. Tool results auto-compressed via RTK (47 filters: git-diff, grep, test-jest, terraform-plan, docker-logs, etc.) — 20-40% token savings. Disable per-request with X-Omniroute-Rtk: off header.
Reasoning / thinking
Anthropic extended thinking and OpenAI Responses reasoning blocks are forwarded verbatim. Cached automatically via reasoning cache.
Errors
401→ invalid API key400 invalid_model→ model not in registry; check/v1/models503 circuit_open→ provider circuit breaker tripped; retry later or use combo429 rate_limited→ honorRetry-After; consider using a combo for auto-fallback
Image generation
Requires OMNIROUTE_URL and OMNIROUTE_KEY. See entry-point SKILL for setup.
Endpoints
POST $OMNIROUTE_URL/v1/images/generations— Text-to-imagePOST $OMNIROUTE_URL/v1/images/edits— Image edit (mask)POST $OMNIROUTE_URL/v1/images/variations— Variations
Discover
curl $OMNIROUTE_URL/v1/models/image | jq '.data[]'Returns { id, owned_by, sizes:[...], capabilities:[...] } per model.
Generate example
curl -X POST $OMNIROUTE_URL/v1/images/generations \
-H "Authorization: Bearer $OMNIROUTE_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "dall-e-3",
"prompt": "a red bicycle on a wet street, photoreal",
"n": 1,
"size": "1024x1024",
"response_format": "b64_json"
}'Response: { created, data: [{ url? or b64_json, revised_prompt }] }
Errors
400 invalid_size→ not supported by this model; check/v1/models/image400 content_policy_violation→ blocked by provider safety503→ provider unavailable; try another model in/v1/models/image
Text-to-speech
Requires OMNIROUTE_URL and OMNIROUTE_KEY. See entry-point SKILL for setup.
Endpoint
POST $OMNIROUTE_URL/v1/audio/speech— returns binary audio (mp3/opus/wav/flac)
Discover
curl $OMNIROUTE_URL/v1/models/tts | jq '.data[]'Each entry includes voices:[...] for the available voice names per provider.
Example
curl -X POST $OMNIROUTE_URL/v1/audio/speech \
-H "Authorization: Bearer $OMNIROUTE_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-1",
"input": "Hello from OmniRoute.",
"voice": "alloy",
"response_format": "mp3"
}' --output speech.mp3Voices
Voice names vary by provider. Check /v1/models/tts — each entry has voices:[...]. Common OpenAI voices: alloy, echo, fable, onyx, nova, shimmer.
Errors
400 invalid_voice→ voice not supported by this model400 input_too_long→ input exceeds model character limit503→ provider unavailable; try another model in/v1/models/tts
Speech-to-text
Requires OMNIROUTE_URL and OMNIROUTE_KEY. See entry-point SKILL for setup.
Endpoints
POST $OMNIROUTE_URL/v1/audio/transcriptions— multipart upload, returns textPOST $OMNIROUTE_URL/v1/audio/translations— transcribe + translate to English
Discover
curl $OMNIROUTE_URL/v1/models/stt | jq '.data[]'Example
curl -X POST $OMNIROUTE_URL/v1/audio/transcriptions \
-H "Authorization: Bearer $OMNIROUTE_KEY" \
-F "file=@audio.mp3" \
-F "model=whisper-1" \
-F "response_format=verbose_json"Response: { text, language, duration, segments?:[{ start, end, text }] }
Supported formats
Audio: mp3, mp4, mpeg, mpga, m4a, wav, webm. Response formats: json, text, srt, verbose_json, vtt.
Errors
400 invalid_file_format→ unsupported audio format400 file_too_large→ exceeds provider limit (usually 25MB)503→ provider unavailable; try another model in/v1/models/stt
Embeddings
Requires OMNIROUTE_URL and OMNIROUTE_KEY. See entry-point SKILL for setup.
Endpoint
POST $OMNIROUTE_URL/v1/embeddings
Discover
curl $OMNIROUTE_URL/v1/models/embedding | jq '.data[]'Each entry: { id, owned_by, dimensions, max_input_tokens }.
Example
curl -X POST $OMNIROUTE_URL/v1/embeddings \
-H "Authorization: Bearer $OMNIROUTE_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "text-embedding-3-large",
"input": ["first text", "second text"],
"encoding_format": "float"
}'Response: { data:[{ embedding:[...], index }], usage:{ prompt_tokens, total_tokens } }
Batch input
input accepts a string or array of strings (up to provider batch limit, typically 2048 items).
Errors
400 input_too_long→ input exceedsmax_input_tokensfor this model400 invalid_encoding_format→ usefloatorbase64503→ provider unavailable; try another model in/v1/models/embedding
Web search
Requires OMNIROUTE_URL and OMNIROUTE_KEY. See entry-point SKILL for setup.
Endpoint
POST $OMNIROUTE_URL/v1/web/search— unified search format
Discover
curl $OMNIROUTE_URL/v1/models/web | jq '.data[] | select(.kind == "webSearch")'Example
curl -X POST $OMNIROUTE_URL/v1/web/search \
-H "Authorization: Bearer $OMNIROUTE_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "tavily/search",
"query": "OmniRoute github latest release",
"max_results": 5,
"include_answer": true
}'Response: { answer?, results:[{ url, title, content, score }] }
Parameters
| Field | Type | Description |
|---|---|---|
model | string | Provider model from /v1/models/web |
query | string | Search query |
max_results | number | Max results (default: 5) |
include_answer | boolean | Include AI-synthesized answer |
search_depth | string | basic or advanced (Tavily) |
Errors
400 query_too_long→ shorten the search query503→ provider unavailable; try another model in/v1/models/web
Web fetch
Requires OMNIROUTE_URL and OMNIROUTE_KEY. See entry-point SKILL for setup.
Endpoint
POST $OMNIROUTE_URL/v1/web/fetch
Discover
curl $OMNIROUTE_URL/v1/models/web | jq '.data[] | select(.kind == "webFetch")'Example
curl -X POST $OMNIROUTE_URL/v1/web/fetch \
-H "Authorization: Bearer $OMNIROUTE_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jina/reader",
"url": "https://anthropic.com",
"format": "markdown"
}'Response: { url, title, markdown, links?:[...], images?:[...] }
Parameters
| Field | Type | Description |
|---|---|---|
model | string | Provider from /v1/models/web (e.g. jina/reader, firecrawl/scrape) |
url | string | URL to fetch |
format | string | markdown (default), html, text |
Errors
400 invalid_url→ URL must be http/https403 blocked→ provider blocked by target site; try a different model503→ provider unavailable; try another model in/v1/models/web
<!-- skill:custom-end -->

