CtrlK
BlogDocsLog inGet started
Tessl Logo

omni-inference

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.

48

Quality

51%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./skills/omni-inference/SKILL.md
SKILL.md
Quality
Evals
Security

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

curl https://localhost:20128/api/v1/{omnirouteCatchAll} \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"

POST /api/v1/{omnirouteCatchAll}

POST

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

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

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

curl -X DELETE https://localhost:20128/api/v1/{omnirouteCatchAll} \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"

GET /api/v1/accounts/{id}/limits

GET accounts › › limits

curl https://localhost:20128/api/v1/accounts/{id}/limits \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"

PUT /api/v1/accounts/{id}/limits

PUT accounts › › 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 ›

curl https://localhost:20128/api/v1/agents/tasks/{id} \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"

POST /api/v1/agents/tasks/{id}

POST agents › tasks ›

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 ›

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 › › 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 ›

curl https://localhost:20128/api/v1/batches/{id} \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"

DELETE /api/v1/batches/{id}

DELETE batches ›

curl -X DELETE https://localhost:20128/api/v1/batches/{id} \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"

POST /api/v1/batches/{id}/cancel

POST batches › › 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 ›

curl https://localhost:20128/api/v1/files/{id} \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"

DELETE /api/v1/files/{id}

DELETE files ›

curl -X DELETE https://localhost:20128/api/v1/files/{id} \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"

GET /api/v1/files/{id}/content

GET files › › 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 › › limits

curl https://localhost:20128/api/v1/providers/{provider}/limits \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"

PUT /api/v1/providers/{provider}/limits

PUT providers › › 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 ›

curl https://localhost:20128/api/v1/registered-keys/{id} \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"

DELETE /api/v1/registered-keys/{id}

DELETE registered keys ›

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 › › 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 ›

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 ›

curl https://localhost:20128/api/v1/vscode/{token} \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"

POST /api/v1/vscode/{token}/api/chat

POST vscode › › 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 › › 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 › › 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 › › 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 › › 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 › › combos

curl https://localhost:20128/api/v1/vscode/{token}/combos \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"

GET /api/v1/vscode/{token}/models

GET vscode › › models

curl https://localhost:20128/api/v1/vscode/{token}/models \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"

POST /api/v1/vscode/{token}/responses

POST vscode › › 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 › › 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 › › 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 › › <{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 › › <{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 ›

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 › › 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 › › 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 › › 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 › › 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 › › 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 › › 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 › › 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 › › 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 › › 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 › › 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.

Chat completions

Requires OMNIROUTE_URL and OMNIROUTE_KEY. See entry-point SKILL for setup.

Endpoints

  • POST $OMNIROUTE_URL/v1/chat/completions — OpenAI format
  • POST $OMNIROUTE_URL/v1/messages — Anthropic Messages format
  • POST $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 key
  • 400 invalid_model → model not in registry; check /v1/models
  • 503 circuit_open → provider circuit breaker tripped; retry later or use combo
  • 429 rate_limited → honor Retry-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-image
  • POST $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/image
  • 400 content_policy_violation → blocked by provider safety
  • 503 → 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.mp3

Voices

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 model
  • 400 input_too_long → input exceeds model character limit
  • 503 → 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 text
  • POST $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 format
  • 400 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 exceeds max_input_tokens for this model
  • 400 invalid_encoding_format → use float or base64
  • 503 → 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

FieldTypeDescription
modelstringProvider model from /v1/models/web
querystringSearch query
max_resultsnumberMax results (default: 5)
include_answerbooleanInclude AI-synthesized answer
search_depthstringbasic or advanced (Tavily)

Errors

  • 400 query_too_long → shorten the search query
  • 503 → 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

FieldTypeDescription
modelstringProvider from /v1/models/web (e.g. jina/reader, firecrawl/scrape)
urlstringURL to fetch
formatstringmarkdown (default), html, text

Errors

  • 400 invalid_url → URL must be http/https
  • 403 blocked → provider blocked by target site; try a different model
  • 503 → provider unavailable; try another model in /v1/models/web
Repository
diegosouzapw/OmniRoute
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.