1,104 mirrors rewritten over five passes of run-translation on the 22-source core set: the 14 sources edited since their translation, the 322 mirrors that were still English copies, and the frontmatter the old extractor leaked into the newer locales' bodies. The pipeline now caches per-`## `-section hashes and retranslates only changed sections, never reuses a section that is still English, rebuilds English-copy / leaked mirrors even when the source is unchanged, merges the state on save (parallel runs), and the drift gate (scoped to the core set) is blocking. Final audit: 0 stale, 0 English copies, 0 leaked frontmatter across 1,430 core mirrors. ⚠️ base-red inherited: #12732
122 KiB
API Reference (Svenska)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
🌐 Språk: 🇺🇸 English | 🇪🇹 አማርኛ | 🇸🇦 العربية | 🇦🇿 Azərbaycan dili | 🇧🇬 Български | 🇧🇩 বাংলা | 🇨🇿 Čeština | 🇩🇰 Dansk | 🇩🇪 Deutsch | 🇬🇷 Ελληνικά | 🇪🇸 Español | 🇪🇪 Eesti | 🇮🇷 فارسی | 🇫🇮 Suomi | 🇫🇷 Français | 🇮🇪 Gaeilge | 🇮🇳 ગુજરાતી | 🇳🇬 Hausa | 🇮🇱 עברית | 🇮🇳 हिन्दी | 🇭🇷 Hrvatski | 🇭🇺 Magyar | 🇦🇲 Հայերեն | 🇮🇩 Bahasa Indonesia | 🇳🇬 Igbo | 🇮🇹 Italiano | 🇯🇵 日本語 | 🇬🇪 ქართული | 🇰🇭 ខ្មែរ | 🇮🇳 ಕನ್ನಡ | 🇰🇷 한국어 | 🇱🇹 Lietuvių | 🇱🇻 Latviešu | 🇮🇳 മലയാളം | 🇮🇳 मराठी | 🇲🇾 Bahasa Melayu | 🇲🇹 Malti | 🇲🇲 မြန်မာ | 🇳🇵 नेपाली | 🇳🇱 Nederlands | 🇳🇴 Norsk | 🇮🇳 ଓଡ଼ିଆ | 🇮🇳 ਪੰਜਾਬੀ | 🇵🇭 Filipino | 🇵🇱 Polski | 🇵🇹 Português (Portugal) | 🇧🇷 Português (Brasil) | 🇷🇴 Română | 🇷🇺 Русский | 🇱🇰 සිංහල | 🇸🇰 Slovenčina | 🇸🇮 Slovenščina | 🇷🇸 Српски | 🇸🇪 Svenska | 🇰🇪 Kiswahili | 🇮🇳 தமிழ் | 🇮🇳 తెలుగు | 🇹🇭 ไทย | 🇹🇷 Türkçe | 🇺🇦 Українська | 🇵🇰 اردو | 🇺🇿 Oʻzbekcha | 🇻🇳 Tiếng Việt | 🇳🇬 Yorùbá | 🇨🇳 中文 (简体) | 🇹🇼 中文 (繁體)
Grundläggande referens för OmniRoute-API:et. Den omfattar det publika /v1-gränssnittet och de mest använda hanteringsendpoints; den maskinläsbara docs/openapi.yaml och routeträdet under src/app/api/ är de fullständiga källorna.
Innehållsförteckning
- Chattkompletteringar
- Exklusiva hanterade sessionslån
- Inbäddningar
- Bildgenerering
- Dokument-OCR
- Lista modeller
- Manifest för leverantörsplugin
- Kompatibilitetsslutpunkter
- Fil-API
- Batch-API
- Sök-API
- WebSocket-strömning
- Kvoter och problemrapportering
- Semantisk cache
- Instrumentpanel och hantering
- Kombinationshantering
- Webhooks
- Registrerade nycklar (automatisk hantering)
- Agentprotokoll
- Hanteringsproxyservrar
- Feltålighet (utökad)
- Färdigheter
- Minne
- MCP-server
- A2A-server
- Moln, utvärderingar och bedömning
- Bearbetning av begäranden
- Autentisering
Chattkompletteringar
POST /v1/chat/completions
Authorization: Bearer your-api-key
Content-Type: application/json
{
"model": "cc/claude-opus-4-6",
"messages": [
{"role": "user", "content": "Skriv en funktion för att..."}
],
"stream": true
}
Anpassade headers
| Header | Riktning | Beskrivning |
|---|---|---|
X-OmniRoute-No-Cache |
Begäran | Ange true för att kringgå cachen |
x-omniroute-no-memory |
Begäran | Ange true för att hoppa över injicering av minne och färdigheter för denna begäran (motsvarar ingen cache och undviker extra token-/kostnadsbelastning per anrop) |
X-OmniRoute-Progress |
Begäran | Ange true för förloppshändelser |
X-Session-Id |
Begäran | Beständig sessionsnyckel för extern sessionsaffinitet |
x_session_id |
Begäran | Varianten med understreck accepteras också (direkt HTTP) |
X-OmniRoute-Session-Id |
Begäran | Sessions-/konversationstagg som tillhandahålls av anroparen (används även av minnet). När den finns sparas den ordagrant i call_logs.session_tag för kostnadsfördelning per session (#8249) — skapas aldrig om den saknas |
Idempotency-Key |
Begäran | Nyckel för deduplicering (5 s-fönster) |
X-Request-Id |
Begäran | Alternativ nyckel för deduplicering |
X-OmniRoute-Cache |
Svar | HIT eller MISS (icke-strömmande) |
X-OmniRoute-Idempotent |
Svar | true om deduplicerad |
X-OmniRoute-Progress |
Svar | enabled om förloppsspårning är aktiverad |
X-OmniRoute-Session-Id |
Svar | Effektivt sessions-ID som används av OmniRoute |
X-OmniRoute-Request-Id |
Svar | Korrelations-ID för begäran (när det är känt) |
X-OmniRoute-Version |
Svar | OmniRoutes byggversion (alltid tillgänglig) |
X-OmniRoute-Cost-Saved |
Svar | USD som sparades genom cachen vid en HIT (endast cacheträffar) |
X-OmniRoute-Decision |
Svar | Routningsspårning: strategy=<name>; provider=<alias>; latency_ms=<n> (<name> är kombinationsstrategin, eller single för en begäran utan kombination) — finns alltid i kompletteringssvar |
Nginx-anmärkning: om du är beroende av headers med understreck (till exempel
x_session_id) aktiverar duunderscores_in_headers on;.
Telemetrihuvuden för kostnad: lyckade svar utan strömning innehåller även uppsättningen
X-OmniRoute-*för kostnadstelemetri —X-OmniRoute-Response-Cost(USD, exakt 10 decimaler;0.0000000000för kostnadsfria/ej prissatta anrop),X-OmniRoute-Tokens-In/X-OmniRoute-Tokens-Out,X-OmniRoute-Model,X-OmniRoute-Provider,X-OmniRoute-Latency-Ms,X-OmniRoute-Cache-HitochX-OmniRoute-Fallback-Attempts(endast när > 0), samtX-OmniRoute-Request-IdochX-OmniRoute-Version. Dessa genereras av chattkompletteringar,/v1/responses,/v1/messages, och medieslutpunkterna —/v1/embeddings,/v1/images/generations,/v1/audio/speech,/v1/audio/transcriptions,/v1/rerank,/v1/videos/generations,/v1/music/generationsoch/v1/moderations(kostar alltid0). Mediekostnaden beräknas per modalitet (per bild, per sekund, per tecken, per sökenhet) när prisuppgifter finns tillgängliga, annars0(fail-open).
Kostnadssemantik vid cacheträff: vid en TRÄFF i den semantiska cachen (
X-OmniRoute-Cache-Hit: true) görs inget anrop till uppströmsleverantören, såX-OmniRoute-Response-Costär0.0000000000(den inkrementella kostnaden för att leverera träffen). Den ursprungliga kostnaden/kostnaden som annars skulle ha uppstått rapporteras separat iX-OmniRoute-Cost-Saved. Faktureringssystem bör summeraX-OmniRoute-Response-Cost(träffar kostar ingenting); cacheanalyser kan aggregeraX-OmniRoute-Cost-Saved.
Exklusiva hanterade sessionslån
Exklusiv utlåning av hanterade sessioner är ett valfritt, klientneutralt routningsavtal: en aktiv ägare innehar en behörig OmniRoute-anslutning. Det innebär inte att en modell lånas, kräver inte OAuth, identifierar inte en specifik klient och kräver inte en specifik leverantör.
API-nyckeln som används för autentisering måste ha omfånget lease:exclusive och en uttrycklig,
icke-tom lista allowedConnections. Databasens mutationsgräns framtvingar båda fälten tillsammans
när nycklar skapas och vid partiella uppdateringar.
POST /api/v1/session-leases
Authorization: Bearer <managed-api-key>
Content-Type: application/json
X-OmniRoute-Lease-Owner: vlo_<43-base64url-characters>
{"action":"acquire","model":"glm/glm-4.6"}
Lyckade svar för anskaffning, förnyelse och frigöring visar tidsstämplar, state och det exakta
positiva värdet för generation, men aldrig den valda anslutningen eller autentiseringsuppgifterna.
Vid förnyelse och frigöring anges generationen i JSON-kroppen:
{ "action": "renew", "generation": 1 }
{ "action": "release", "generation": 1, "reason": "OWNER_EXIT" }
En aktiv låneägare kan uttryckligen begära integritetssäkra visningsmetadata för sin aktuella bindning:
{ "action": "status", "generation": 1 }
{
"state": "ACTIVE",
"generation": 1,
"acquiredAt": "2026-08-28T12:00:00.000Z",
"renewedAt": "2026-08-28T12:00:30.000Z",
"expiresAt": "2026-08-28T12:02:30.000Z",
"connection": {
"displayName": "Primary Codex",
"provider": "codex"
}
}
Den här valfria statusåtgärden skyddas av den ogenomskinliga ägaren, den autentiserade hanterade
API-nyckeln och den exakta aktiva generationen i en enda databastransaktion. displayName är endast
det trimmade konfigurerade anslutningsnamnet; det är null när det inte finns något säkert
konfigurerat namn. OmniRoute ersätter det aldrig med en e-postadress eller genererad kontoidentitet.
Leverantörsvärdet är en icke-känslig visningsetikett och aldrig en genererad identifierare för en
kompatibel leverantör. Autentiseringsuppgifter, tokens, cookies, råa anslutnings- eller
API-nyckel-id:n, ägarhashar, avgränsningshemligheter och interna routningsdata undantas.
Uppslagningar med fel nyckel, fel ägare, inaktuell generation eller en bindning som saknas, har
upphört, har frigjorts eller har ogiltigförklarats returnerar alla samma fel 409 LEASE_FENCE_STALE
utan anslutningsmetadata. En klient som har fått svaret om väntan på kapacitet har ingen aktiv
bindning att inspektera. När routningen flyttar ett aktivt lån förblir samma generation giltig och
status returnerar atomärt den nya bindningen, aldrig den gamla. Befintliga klienter förblir
oförändrade eftersom svaren för anskaffning, förnyelse, frigöring och väntan behåller sina tidigare
format.
Det här serveravtalet ändrar inte vanliga OpenAI Codex /status. Vanliga Codex rapporterar för
närvarande sin modellleverantör och sitt inbyggda autentiserings-/kontotillstånd, men återger inte
godtyckliga kontometadata för anpassade leverantörer. En framtida klientintegration måste anropa
den här åtgärden och avgöra hur connection.displayName ska visas.
Varje hanterad inferensbegäran skickar därefter båda kontrollhuvudena:
X-OmniRoute-Lease-Owner: vlo_<43-base64url-characters>
X-OmniRoute-Lease-Generation: 1
Den exakta ägaren, generationen, aktiva anslutningen och autentiserade API-nyckeln avgränsas omedelbart före varje uppströmsförsök som stöds. Återanvändning av ägare och generation med en annan nyckel misslyckas även när den nyckeln tillåter samma anslutning. Råa ägarvärden sparas inte, loggas inte, behålls inte i ögonblicksbilden av begäran och vidarebefordras inte uppströms.
Tillfällig konkurrens om resurser returnerar HTTP 429 med Retry-After och:
{
"state": "WAITING_FOR_CAPACITY",
"error": { "type": "lease_error", "code": "LEASE_CAPACITY_UNAVAILABLE" },
"reason": "NO_FREE_ELIGIBLE_CONNECTION",
"retryAfter": 30
}
Det här svaret innebär endast att den ordinarie uppsättningen behöriga anslutningar inte var tom och att varje ledig kandidat innehades av ett främmande aktivt lån. Modeller/leverantörer som inte stöds, policyavvikelser, väntetid, kvot, hälsa och andra vanliga behörighetsfel behåller sina befintliga OmniRoute-svar.
x-omniroute-compression
Åsidosättning av komprimeringsplanen per begäran. Högsta prioritet — åsidosätter routningskombinationens åsidosättning, den aktiva profilen, automatisk utlösning och panelens standardvärde. Värden:
| Värde | Effekt |
|---|---|
off |
Ingen komprimering för den här begäran. |
default |
Standardprofilen som härleds från panelen (ignorerar den aktiva profilen). |
engine:<id> |
En enskild motor när den är aktiverad, t.ex. engine:rtk. |
<combo> |
En namngiven kombination, som först matchas efter namn (skiftlägesokänsligt) och därefter efter id. |
Anmärkningar:
- Okända värden ignoreras (begäran avvisas aldrig); matchningen fortsätter enligt den normala prioritetsordningen.
- Om flera kombinationer har samma namn anger du kombinationens id för en deterministisk matchning.
- En kombination vars namn är
offellerdefaultkan inte väljas efter namn (dessa nyckelord tolkas först); referera till en sådan kombination med dess id. - Huvudreglaget för komprimering är en absolut spärr: när komprimering är globalt inaktiverad kan det här huvudet inte aktivera den.
Den tillämpade planen återges i svarshuvudet:
X-OmniRoute-Compression: <mode>; source=<source>
där <source> är något av request-header, routing-override, active-profile, auto-trigger, default eller off.
Embeddings
POST /v1/embeddings
Authorization: Bearer your-api-key
Content-Type: application/json
{
"model": "nebius/Qwen/Qwen3-Embedding-8B",
"input": "Maten var utsökt"
}
Tillgängliga leverantörer: Nebius, OpenAI, Mistral, Together AI, Fireworks, NVIDIA, OpenRouter, Jina AI.
Katalog-id:n är provider/model (exempel: jina-ai/jina-embeddings-v5-omni-small). Enkla Jina-modell-id:n som förekommer i registret (till exempel jina-embeddings-v5-text-small, jina-reranker-v3.5) matchas också. Jinas embed/rerank/classify/segment använder först autentiseringsuppgifterna för jina-ai från kontrollpanelen; JINA_AI_API_KEY används endast som reserv när det inte finns någon nyckel i kontrollpanelen. Kortet jina-reader är endast avsett för Reader / r.jina.ai (POST /v1/web/fetch) och tillhandahåller aldrig embeddings eller rerank.
Registermodeller som anger stöd för multimodalitet accepterar även upp till 32 leverantörsneutrala strukturerade
objekt. Medieobjekttyperna är text, image, audio, video och document. Deras medie-source
är antingen {"type":"url","url":"https://..."} eller
{"type":"base64","data":"...","media_type":"..."}.
Jina v5 Omni (jina-ai/jina-embeddings-v5-omni-small, jina-ai/jina-embeddings-v5-omni-nano
och familjealiaset jina-ai/jina-embeddings-v5-omni → omni-small) accepterar även Jinas egna
EmbeddingsV5Request-dokument och vidarebefordrar dem oförändrade till https://api.jina.ai/v1/embeddings:
{
"model": "jina-ai/jina-embeddings-v5-omni-small",
"task": "retrieval.query",
"normalized": true,
"input": [
{ "text": "en röd cykel" },
{ "image": "https://example.com/bike.png" },
{
"content": [{ "text": "bildtext" }, { "image": "data:image/png;base64,..." }]
}
]
}
Egna { image | audio | video | pdf }-värden kan vara en offentlig HTTPS-URL, en data:-URI eller rå
base64. OmniRoute konverterar inte dessa objekt till strängar och hämtar inte egna bild-URL:er – Jina hämtar
offentliga medier självt. Ytterligare Jina-fält (task, normalized, truncate, embedding_type)
vidarebefordras. Jina-SKU:er som endast stöder text avvisar fortfarande dokument som inte är text.
Säkerhets- och transportgränser:
- URL:er till externa medier måste vara offentliga HTTPS-URL:er. Kanoniska
{type,source:url}-objekt hämtas på serversidan (förnyad validering av omdirigeringar, tidsgräns, storleksgränser, offentlig DNS, anslutningslåsning) och infogas före leverantörsanropet. Jinas egna{image:"https://..."}-objekt vidarebefordras oförändrade efter samma kontroll av offentlig HTTPS; Jina hämtar URL:en. - Infogade base64-medier är begränsade till 8 MiB avkodad data per objekt och 16 MiB avkodad data för hela begäran.
Leverantörsöversättning (kanoniska objekt vidarebefordras aldrig oförändrade):
- Jinas multimodala modeller: varje objekt på högsta nivån blir ett modalitetsnycklat objekt
(
text/image/audio/video/pdf) som använder data-URI:er för infogade medier; en vektor per objekt på högsta nivån. - Gemini Embedding 2-familjen: en array på högsta nivån blir en enda intern
models/{model}:embedContent-begäran medcontent.parts(textellerinline_data). - Okända/dynamiska modeller utan uttryckliga modalitetsmetadata avvisar strukturerade indata med HTTP 400.
{
"model": "jina-ai/jina-embeddings-v5-omni-small",
"input": [
{ "type": "text", "text": "En röd cykel" },
{
"type": "image",
"source": { "type": "url", "url": "https://example.com/bicycle.png" }
}
],
"dimensions": 512,
"encoding_format": "float"
}
Modell-/modalitetskombinationer som inte stöds returnerar HTTP 400 i stället för att konvertera objektet. Utökningsfält som inte är indata i äldre sträng-/tokenbegäranden fortsätter att skickas vidare oförändrade.
# Lista alla embedding-modeller
GET /v1/embeddings
Bildgenerering
POST /v1/images/generations
Authorization: Bearer your-api-key
Content-Type: application/json
{
"model": "openai/gpt-image-2",
"prompt": "En vacker solnedgång över berg",
"size": "1024x1024"
}
Tillgängliga leverantörer: OpenAI (GPT Image 2), xAI (Grok Image), Together AI (FLUX), Fireworks AI, Nebius (FLUX), Hyperbolic, NanoBanana, OpenRouter, SD WebUI (lokal), ComfyUI (lokal).
# Lista alla bildmodeller
GET /v1/images/generations
OCR för dokument
POST /v1/ocr
Authorization: Bearer your-api-key
Content-Type: application/json
{
"model": "mistral/mistral-ocr-latest",
"document": {
"type": "document_url",
"document_url": "https://example.com/invoice.pdf"
}
}
model väljer OCR-leverantör via prefixet provider/model. Ett modell-id utan prefix (t.ex.
mistral-ocr-latest) matchas mot dess registrerade leverantör, och om model utelämnas används
Mistral (mistral-ocr-latest) som standard. Registrerade leverantörer (open-sse/config/ocrRegistry.ts):
| Leverantörs-id | Modell-id | model-värde |
Kommentarer |
|---|---|---|---|
mistral |
mistral-ocr-latest |
mistral/mistral-ocr-latest (eller bara mistral-ocr-latest) |
Synkron — svaret returneras direkt från det enda anropet till uppströmsleverantören. |
azure-document-intelligence |
prebuilt-read |
azure-document-intelligence/prebuilt-read |
Asynkron uppströmsleverantör (analyze + polling) — se nedan. |
vertex-deepseek-ocr |
deepseek-ocr-maas |
vertex-deepseek-ocr/deepseek-ocr-maas |
Synkron, via Vertex AI:s partner-endpoint openapi/chat/completions — se nedan för autentisering/webbadress. |
Alla tre leverantörerna svarar med samma Mistral-formaterade innehåll:
{
"pages": [{ "index": 0, "markdown": "# Extraherad text..." }],
"model": "mistral-ocr-latest",
"usage_info": { "pages_processed": 1 }
}
Pollingflöde för Azure Document Intelligence
Azure Document Intelligences analyze-API är asynkront: den ursprungliga begäran returnerar ett
Operation-Location-huvud i stället för ett svarsinnehåll, och resultatet måste hämtas genom polling. Hanteraren
(open-sse/handlers/ocr.ts) frågar denna webbadress varje sekund i upp till 30 försök, avbryter omedelbart (fortsätter
inte att fråga) vid ett pollingsvar som inte är ok eller vid statusen "failed", och returnerar 504 om
åtgärden fortfarande körs efter att antalet tillåtna försök har förbrukats. Det slutliga Azure-svaret
normaliseras till samma pages-/markdown-format som används av Mistral innan det returneras till
anroparen, så klientkoden behöver inte specialhantera leverantören.
Autentisering och endpoint-matchning för Vertex AI DeepSeek OCR
vertex-deepseek-ocr återanvänder samma Vertex AI-autentisering som OmniRoute redan stöder för
chatt-/bildtrafik (open-sse/executors/vertex.ts): anslutningens API-nyckel är antingen autentiseringsuppgifter
i Service Account JSON-format (som byts ut mot en kortlivad OAuth-åtkomsttoken via JWT Bearer-flödet)
eller en redan utfärdad OAuth-åtkomsttoken som används i befintligt skick. Webbadressen till uppströms-endpointen är Vertex generiska
partner-endpoint openapi/chat/completions, som skapas utifrån anslutningens projekt och
region — ett explicit providerSpecificData.project/providerSpecificData.region har alltid företräde;
annars härleds projektet från Service Account JSON-objektets project_id och regionens
standardvärde är us-central1. Båda matchningarna sker i open-sse/handlers/ocr.ts
(resolveVertexOcrAccessToken, resolveVertexOcrBaseUrl) och används av
src/app/api/v1/ocr/route.ts innan anropet skickas vidare till handleOcr.
Lista modeller
GET /v1/models
Authorization: Bearer your-api-key
→ Returnerar alla chatt-, inbäddnings- och bildmodeller samt kombinationer i OpenAI-format
Prefix för modell-id:n (?prefix=)
De flesta modeller presenteras under ett leverantörsprefix. Vilket prefix du får styrs av funktionsflaggan
MODELS_CATALOG_PREFIX_MODE och kan åsidosättas per begäran med en
frågeparameter – praktiskt för en klient som vill ha en ren lista utan att ändra den serverövergripande
inställningen för alla andra:
GET /v1/models?prefix=alias # ett id per modell – det korta aliasprefixet
GET /v1/models?prefix=dual # båda formerna (serverns standardvärde)
GET /v1/models?prefix=canonical # endast det fullständiga leverantörs-id-prefixet
| Läge | Returnerar | Anmärkningar |
|---|---|---|
dual |
cc/claude-sonnet-4-6 och claude/claude-sonnet-4-6 |
Standard. Båda id:n dirigeras till samma modell. Detta behålls så att klientkonfigurationer som hårdkodat någon av formerna fortsätter att fungera. Katalogen blir ungefär dubbelt så stor. |
alias |
cc/claude-sonnet-4-6 |
En post per modell. Leverantörer utan ett separat alias returnerar fortfarande sin post, så inget går förlorat. |
canonical |
claude/claude-sonnet-4-6 |
En post per modell under det fullständiga leverantörs-id-prefixet. Leverantörer utan ett separat alias (t.ex. antigravity/…, agy/…) returnerar även här sitt enda id, så inget går förlorat. |
En spegling i läget dual kan även identifieras utan frågeparametern: den innehåller ett parent-fält
som pekar på det primära id:t.
Klienter som visar en modellväljare bör begära ?prefix=alias – det är vad
OmniCopilot-tillägget för VS Code gör.
Modellvarianter utan tänkande
För Claude-modeller med stöd för tänkande presenterar /v1/models även en variant utan tänkande, vars id har prefixet claude-3-omniroute-no-thinking/:
claude-3-omniroute-no-thinking/<provider>/<model>
Om detta id väljs (t.ex. i en Claude Code-konfiguration som alltid bifogar ett thinking-block) matchas det tillbaka till den verkliga modellen <provider>/<model> med resonemang inaktiverat – thinking:{type:"disabled"} för sökvägen /v1/messages, eller med fälten reasoning/reasoning_effort borttagna för sökvägen /v1/chat/completions. Varianten listas endast för modeller i Claude-familjen som stöder tänkande och respekterar disabled (så t.ex. modeller som endast stöder adaptivt läge och avvisar disabled undantas). Operatörer kan tvinga varianten att vara aktiverad eller inaktiverad per modell via ModelSpec.noThinkingAlias.
Manifest för leverantörsplugin
GET /api/v1/provider-plugin-manifest
Returnerar det JSON-säkra manifestet för leverantörsplugin som används av Bifrost, CLIProxyAPI och framtida sidovagnsroutrar. Svaret genereras från TypeScript-registret för leverantörer och utelämnar avsiktligt OAuth-klienthemligheter, matchning mot exekveringsmiljön, exekveringsfunktioner, förfrågningshuvuden och kontodata.
Använd den här slutpunkten när en sidovagn körs utanför processen och inte kan importera open-sse/config/providerPluginManifestRegistry.ts direkt.
Kompatibilitetsslutpunkter
| Metod | Sökväg | Format |
|---|---|---|
| POST | /v1/chat/completions |
OpenAI |
| POST | /v1/messages |
Anthropic |
| POST | /v1/responses |
OpenAI Responses |
| POST | /v1/embeddings |
OpenAI |
| POST | /v1/images/generations |
OpenAI Images |
| POST | /v1/images/edits |
OpenAI Images (redigering/inpainting) |
| POST | /v1/videos/generations |
Videogenerering i OpenAI-stil |
| POST | /v1/music/generations |
Musikgenerering i OpenAI-stil |
| POST | /v1/audio/transcriptions |
OpenAI Audio (tal till text) |
| POST | /v1/audio/speech |
OpenAI TTS (returnerar ljudinnehåll) |
| POST | /v1/rerank |
Omrankning i Cohere/Voyage-stil |
| POST | /v1/classify |
Jina-klassificering (api.jina.ai) |
| POST | /v1/segment |
Jina-segmenterare (segment.jina.ai) |
| POST | /v1/moderations |
OpenAI Moderations |
| 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 |
| GET | /api/v1/vscode/{token}/ |
Alias för OpenAI-katalog |
| GET | /api/v1/vscode/{token}/models |
Alias för OpenAI-modeller |
| POST | /api/v1/vscode/{token}/chat/completions |
Tokeniserad OpenAI-alias |
| POST | /api/v1/vscode/{token}/responses |
Tokeniserad alias för OpenAI Responses |
| POST | /api/v1/vscode/{token}/api/chat |
Tokeniserad Ollama-alias |
| GET | /api/v1/vscode/{token}/api/tags |
Tokeniserad alias för Ollama-taggar |
Alla POST-rutter följer samma struktur: Bearer your-api-key + Zod-validerad JSON-brödtext (v1RerankSchema, v1ModerationSchema, v1AudioSpeechSchema osv., se src/shared/validation/schemas.ts). 4xx returneras vid schemafel.
För klienter som inte kan bifoga Authorization: Bearer ... accepterar OmniRoute även API-nycklar i URL:en, antingen via kompatibla frågesträngar (?token=..., ?apiKey=..., ?api_key=..., ?key=...) eller via de särskilda slutpunkterna /api/v1/vscode/{token}/... som dokumenteras nedan.
# Omrankning
POST /v1/rerank { "model": "jina-ai/jina-reranker-v3.5", "query": "...", "documents": ["..."] }
# Jina-klassificering (autentiseringsuppgifter för Foundation API)
POST /v1/classify { "model": "jina-embeddings-v5-text-small", "input": ["..."], "labels": ["a", "b"] }
# Jina-segmenterare
POST /v1/segment { "content": "...", "return_chunks": true }
# Jina-sökning (s.jina.ai; leverantörsalias: jina-search, jina-ai, jina)
POST /v1/search { "query": "...", "provider": "jina-search" }
# Modereringar
POST /v1/moderations { "model": "omni-moderation-latest", "input": "..." }
# TTS — returnerar audio/mpeg-innehåll (eller begärt format)
POST /v1/audio/speech { "model": "openai/tts-1", "input": "Hello", "voice": "alloy" }
# Bildredigering (multipart)
POST /v1/images/edits -F image=@input.png -F prompt="..." -F mask=@mask.png
# Video-/musikgenerering (modell-id med leverantörsprefix)
POST /v1/videos/generations { "model": "runway/gen-3", "prompt": "..." }
POST /v1/music/generations { "model": "suno/v3.5", "prompt": "..." }
Särskilda leverantörsrutter
POST /v1/providers/{provider}/chat/completions
POST /v1/providers/{provider}/embeddings
POST /v1/providers/{provider}/images/generations
Leverantörsprefixet läggs till automatiskt om det saknas. Modeller som inte matchar returnerar 400.
Files API
OpenAI-kompatibel filslutpunkt för batchindata/-utdata och filuppladdningar med angivet syfte.
| Metod | Sökväg | Beskrivning |
|---|---|---|
| POST | /v1/files |
Ladda upp en fil (multipart: file, purpose, expires_after[anchor], expires_after[seconds]) — högst 512 MiB |
| GET | /v1/files |
Lista filer för den autentiserade API-nyckeln |
| GET | /v1/files/[id] |
Hämta en fils metadata |
| DELETE | /v1/files/[id] |
Ta bort en fil |
| GET | /v1/files/[id]/content |
Strömma tillbaka filens rådata |
Autentisering: Bearer-API-nyckel — filer avgränsas per API-nyckel via getApiKeyRequestScope. En nyckel
kan endast se, ladda ned och ta bort sina egna filer; en instrumentpanelssession utan nyckel kan läsa
hela instansen; en fil utan ägare (anonym uppladdning eller uppladdning via instrumentpanelssession) nekas för alla
anropare utan session. GET /v1/files avvisar en anonym anropare — och en angiven nyckel som inte
kan matchas — med 401 även när REQUIRE_API_KEY=false, i stället för att lista alla klienters
filer (GHSA-m3hp-hq9g-fpmv, GHSA-2jm2-mpx8-6523).
Batches API
OpenAI-kompatibel batchbearbetning.
| Metod | Sökväg | Beskrivning |
|---|---|---|
| POST | /v1/batches |
Skapa batch — kroppen valideras av v1BatchCreateSchema (input_file_id, endpoint, completion_window) |
| GET | /v1/batches |
Lista batcher |
| GET | /v1/batches/[id] |
Hämta batchstatus + request_counts |
| DELETE | /v1/batches/[id] |
Ta bort en slutförd/misslyckad batch |
| POST | /v1/batches/[id]/cancel |
Avbryt en pågående batch |
Autentisering: Bearer-API-nyckel. Batchar avgränsas per API-nyckel enligt samma tredelade regel som
filer: endast den egna nyckeln, instrumentpanelssession för hela instansen, poster utan ägare nekas för alla
anropare utan session (hämtning, borttagning, avbrytning samt kontrollen av input_file_id vid skapande).
GET /v1/batches avvisar en anonym anropare med 401 även när REQUIRE_API_KEY=false.
Sök-API
Abstraktion för webb-/sökleverantörer (Tavily, Brave, Exa, Serper osv.).
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /v1/search |
Lista konfigurerade sökleverantörer + funktioner |
| POST | /v1/search |
Kör en sökfråga — brödtexten valideras av v1SearchSchema, stöder cachelagring/sammanslagning |
| GET | /v1/search/analytics |
Statistik per leverantör för träffar/latens/cache |
Autentisering: Bearer-API-nyckel (extractApiKey + isValidApiKey). Sökpolicyn tillämpas via enforceApiKeyPolicy.
API för webbhämtning
Extrahera innehåll från en URL via en konfigurerad leverantör för webbhämtning (Firecrawl, Jina Reader, Tavily Extract, TinyFish Fetch, Nimble Extract).
| Metod | Sökväg | Beskrivning |
|---|---|---|
| POST | /v1/web/fetch |
Hämta/skrapa en URL — brödtexten valideras av v1WebFetchSchema |
Autentisering: Bearer-API-nyckel (extractApiKey + isValidApiKey). Policyn tillämpas via enforceApiKeyPolicy.
Kvotmedveten reservlösning (#8297): när ingen uttrycklig provider anges, gås poolen
(firecrawl → jina-reader → tavily-search → tinyfish → nimble-search) igenom
i fast
prioritetsordning (fyll den första först) — en hastighetsbegränsad men konfigurerad leverantör hoppas över
i stället för att begäran avbryts, och ett omprövningsbart fel eller kvotfel uppströms
(HTTP 429 alltid; 402/403 för kvotbaserade kostnadsfria nivåer hos Firecrawl/Tavily/TinyFish —
inte för Jina Reader, och aldrig för en vanlig felaktig 400-begäran) går vidare till nästa
ännu oprövade leverantör med autentiseringsuppgifter vid tidpunkten för begäran. När samtliga leverantörer i
poolen är uttömda returnerar slutpunkten ett enda 429 (med ett Retry-After-
huvud) i stället för det tidigare generiska 400. När en uttrycklig provider
begärs sker ingen tyst reservväxling — en hastighetsbegränsad eller felande uttrycklig
leverantör visar sitt eget fel (429 vid hastighetsbegränsning, annars statusen
från uppströmskällan).
WebSocket-strömning
GET /v1/ws?handshake=1
Validerar en WebSocket-uppgraderingshandskakning och returnerar exempelmeddelandena för kommunikationsprotokollet (request, cancel). Faktiska WS-ramar hanteras av den medföljande WS-servern utanför Next.js-routningstabellen.
Autentisering: Bearer-API-nyckel under handskakningen.
Responses API över WebSocket (endast codex)
# Samma värd:port som HTTP-API:t (standard 20128); uppgradera anslutningen:
wscat -c "ws://localhost:20128/v1/responses?api_key=<OMNIROUTE_API_KEY>"
# (eller: -H "Authorization: Bearer <OMNIROUTE_API_KEY>")
# Den första ramen MÅSTE vara response.create:
{ "type": "response.create", "model": "gpt-5.5", "input": [ { "role": "user", "content": "hi" } ] }
En proxy för Responses-API-over-WebSocket är kopplad uteslutande till codex (ChatGPT-
serverdelen). Den lyssnar på samma port som API:t/instrumentpanelen på sökvägarna /v1/responses,
/responses och /api/v1/responses. Vid den första response.create-ramen
autentiserar och förbereder den via den interna bryggan codex-responses-ws, väljer en
codex OAuth-anslutning och tunnlar till wss://chatgpt.com/backend-api/codex/responses
via transporten wreq-js. Modeller som inte är codex avvisas (codex_ws_provider_required).
För kvotdelningsroutning, använd model: "qtSd/<group>/codex/<model>". Implementerat i
app/server-ws.mjs + scripts/dev/responses-ws-proxy.mjs + src/app/api/internal/codex-responses-ws/route.ts.
Autentisering: Bearer-API-nyckel under handskakningen. Den medföljande HTTP-servern (server-ws.mjs)
måste vara den aktiva startpunkten (vilket den är som standard när app/server-ws.mjs finns).
Modell-id: använd det rena ChatGPT-id:t (utan prefixet codex/)
OpenAI Codex CLI validerar modellnamnet på klientsidan när
supports_websockets = true och avvisar id:n med leverantörsprefix såsom
codex/gpt-5.5 (The 'codex/gpt-5.5' model is not supported when using Codex with a ChatGPT account). Skicka det rena id:t (t.ex. gpt-5.5). OmniRoutes brygga är
endast avsedd för codex, så den matchar om ett rent id som en codex-modell
(resolveCodexWsModelInfo) innan den tunnlar uppströms — även om ett rent
gpt-5.5 annars skulle routas till en annan leverantör över HTTP.
Konfigurera OpenAI Codex CLI
Rikta Codex CLI mot OmniRoute genom att lägga till en anpassad leverantör med WebSocket-
stöd i ~/.codex/config.toml (använd en separat CODEX_HOME för att undvika att ändra
en befintlig konfiguration):
model = "gpt-5.5" # rent id — INTE "codex/gpt-5.5"
model_provider = "omniroute"
[model_providers.omniroute]
name = "OmniRoute (WS)"
base_url = "http://localhost:20128/v1" # inget avslutande snedstreck; WS-URL:en härleds (använd https/wss i produktion)
wire_api = "responses" # enda värdet som stöds sedan februari 2026
supports_websockets = true # aktiverar Responses-over-WS-transporten
env_key = "OMNIROUTE_API_KEY" # innehåller OmniRoute-API-nyckeln (Bearer)
export OMNIROUTE_API_KEY=sk-... # en OmniRoute-API-nyckel (valfri nyckel om REQUIRE_API_KEY=false)
codex exec "Responda apenas: PONG"
CLI:t uppgraderar base_url + /responses till en WebSocket och OmniRoute tunnlar den
till den valda codex OAuth-anslutningen. Validerat från början till slut mot den lokala
servern: ChatGPT returnerar codex.rate_limits + response.created och strömmar
slutförandet.
Kvoter och problemrapportering
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /v1/quotas/check |
Förhandsvalidera kvoten för en provider + accountId innan en registrerad nyckel utfärdas |
| POST | /v1/issues/report |
Rapportera ett fel vid kvot-/nyckelutfärdande till GitHub (kräver GITHUB_ISSUES_REPO + token) |
Autentisering: Bearer-API-nyckel (isAuthenticated).
Användning med självbetjäning (/api/usage/om-usage)
Alla API-nycklar kan läsa sin egen användning och sina egna kvoter — ingen administratörsautentisering krävs. Detta är den ändpunkt som en klient (CLI, OmniCopilot-panelen) använder för att visa en nyckelinnehavare dennes kostnader.
# Textformat (det historiska kontraktet — oformaterad text för en terminal)
curl -H "Authorization: Bearer <your-api-key>" \
http://localhost:20128/api/usage/om-usage
# Strukturerat format — det som ett användargränssnitt använder
curl -H "Authorization: Bearer <your-api-key>" \
"http://localhost:20128/api/usage/om-usage?format=json"
Nyckeln måste ha allowUsageCommand aktiverat (inaktiverat som standard — kontrollpanelens hanterare för API-nycklar växlar detta per nyckel). Utan det svarar ändpunkten med 403.
?format=json returnerar en diskriminerad struktur så att en anropare aldrig läser ett datafält från ett
avslag. Vid lyckat anrop:
{
"allowed": true,
// finns endast när nyckeln har valt användningsgränser per nyckel (USD per dag/vecka):
"personal": {
"dailySpentUsd": 1.25,
"dailyLimitUsd": 5,
"dailyResetAtIso": "…",
"weeklySpentUsd": 8,
"weeklyLimitUsd": 20,
"weeklyResetAtIso": "…" /* … */,
},
// ögonblicksbilden av den valda leverantörskvoten, eller null när inget har cachelagrats ännu:
"provider": {
"connectionId": "…",
"provider": "claude",
"plan": "…",
"quotas": {/* … */},
},
// ögonblicksbilder för alla anslutningar, så att ett användargränssnitt kan visa flera leverantörer sida vid sida:
"providers": [
{ "connectionId": "…", "provider": "claude" /* … */ },
{ "provider": "codex" /* … */ },
],
}
Vid avslag (401 felaktig nyckel / 403 inte tillåtet) returnerar samma rutt
{ "allowed": false, "error": { "message": "…" } } — ett befintligt men tomt personal/provider
(nyckeln är tillåten, men inget har hämtats ännu) är ett annat tillstånd än ett avslag, och endast JSON-formatet
skiljer dem åt.
Autentisering: anroparens egen Bearer-API-nyckel, validerad med isValidApiKey — detta är inte
administrationsgränssnittet (/api/keys/…), som förblir skyddat av requireManagementAuth.
Semantisk cache
# Hämta cachestatistik
GET /api/cache/stats
# Rensa alla cachar
DELETE /api/cache/stats
Exempel på svar:
{
"semanticCache": {
"memorySize": 42,
"memoryMaxSize": 500,
"dbSize": 128,
"hitRate": 0.65
},
"idempotency": {
"activeKeys": 3,
"windowMs": 5000
}
}
Påverkan på latens
En TRÄFF i den semantiska cachen levererar svaret från cachen utan ett uppströmsanrop, så den rapporterade X-OmniRoute-Response-Latency är nära noll
(oavsett den ursprungliga uppströmslatensen). Latenskänsliga klienter
(prestandamätning, p50/p99-övervakning) bör kontrollera svarshuvudet
X-OmniRoute-Cache-Latency:
| Värde | Betydelse |
|---|---|
synthetic |
Svaret levererades från cachen; latensen är inte verklig uppströmstid |
| (saknas) | Svar från ett verkligt uppströmsanrop |
Förbigång av cache per nyckel
API-nycklar kan välja bort läsningar från den semantiska cachen via cacheDefaultMode:
| Värde | Beteende |
|---|---|
legacy |
Normalt cachebeteende (standard) |
bypass |
Hoppa över cacheuppslagningen helt; anropa alltid uppströms |
Ange vid skapande av nyckel (POST /api/keys) eller uppdatering (PATCH /api/keys/[id]):
{ "cacheDefaultMode": "bypass" }
Förbigång per begäran
Alla begäranden kan kringgå cachen oavsett nyckelinställningar:
X-OmniRoute-No-Cache: true
Instrumentpanel och hantering
Hanteringsvägar (/api/* förutom offentlig autentisering/inloggning) auktoriseras inte med
vanliga API-nycklar för inferens. Information om autentiseringsuppgifter, behörighetsomfattningar och curl-exempel:
Autentisering för hantering.
Autentisering
| Slutpunkt | Metod | Beskrivning |
|---|---|---|
/api/auth/login |
POST | Logga in |
/api/auth/logout |
POST | Logga ut |
/api/settings/require-login |
GET/PUT | Växla krav på inloggning |
Leverantörshantering
| Slutpunkt | Metod | Beskrivning |
|---|---|---|
/api/providers |
GET/POST | Lista/skapa leverantörer |
/api/providers/[id] |
GET/PUT/DELETE | Hantera en leverantör |
/api/providers/[id]/test |
POST | Testa leverantörsanslutningen |
/api/providers/[id]/models |
GET | Lista leverantörens modeller |
/api/providers/validate |
POST | Validera leverantörskonfigurationen |
/api/providers/bulk |
POST | Lägg till flera API-nycklar samtidigt för EN leverantör |
/api/providers/import |
POST | Importera en heterogen LISTA över leverantörer från en parsad CSV-/JSON-fil (#6836); resultat med partiella fel per rad |
/api/provider-nodes* |
Diverse | Hantering av leverantörsnoder |
/api/provider-models |
GET/POST/PATCH/DELETE | Anpassade modeller (lägg till, uppdatera, dölj/visa, ta bort) |
OAuth-flöden
| Slutpunkt | Metod | Beskrivning |
|---|---|---|
/api/oauth/[provider]/[action] |
Diverse | Leverantörsspecifik OAuth |
Routning och konfiguration
| Slutpunkt | Metod | Beskrivning |
|---|---|---|
/api/models/alias |
GET/POST | Modellalias |
/api/models/catalog |
GET | Alla modeller efter leverantör + typ |
/api/combos* |
Diverse | Kombinationshantering |
/api/keys* |
Diverse | Hantering av API-nycklar |
/api/pricing |
GET | Modellprissättning |
Användning och analys
| Slutpunkt | Metod | Beskrivning |
|---|---|---|
/api/usage/history |
GET | Användningshistorik |
/api/usage/logs |
GET | Användningsloggar |
/api/usage/request-logs |
GET | Loggar på begärandenivå |
/api/usage/[connectionId] |
GET | Användning per anslutning |
/api/usage/token-limits |
GET/POST/DELETE | Budgetar för tokengränser per API-nyckel |
/api/usage/model-latency-stats |
GET | Löpande latensaggregat per leverantör/modell (genomsnitt/p50/p95/p99, lyckandefrekvens); filter: windowHours/minSamples/maxRows/provider/model (#6873) |
/api/usage/cache-health |
GET | Sammanfattning av promptcachehälsa över call_logs — skriv-/läsförhållande, p50/p90/p99-fördelning av skrivstorlek, koncentration av omfattande skrivningar, uppdelning per modell samt bedömningen healthy/degraded/thrash/no-data; frågeparametrarna range (1h|24h|7d|30d, standardvärde 24h) och valfria model (#8827) |
Inställningar
| Slutpunkt | Metod | Beskrivning |
|---|---|---|
/api/settings |
GET/PUT/PATCH | Allmänna inställningar |
/api/settings/proxy |
GET/PUT | Konfiguration av nätverksproxy |
/api/settings/proxy/test |
POST | Testa proxyanslutningen |
/api/settings/ip-filter |
GET/PUT | Lista över tillåtna/blockerade IP-adresser |
/api/settings/thinking-budget |
GET/PUT | Omskrivningsläge för begäranden avseende tanke-/resoneringsbudget (oförändrad vidarebefordran / automatisk borttagning / anpassat / adaptivt). Oberoende av komprimering. Se THINKING_BUDGET.md. |
/api/settings/system-prompt |
GET/PUT | Global systemprompt |
/api/settings/compression |
GET/PUT | Global komprimeringskonfiguration |
/api/settings/purge-request-history |
POST | Rensa rader i begärandeloggen och lokala anropsloggar |
Kontext och komprimering
| Ändpunkt | Metod | Beskrivning |
|---|---|---|
/api/compression/preview |
POST | Förhandsgranska av/lätt/standard/aggressiv/ultra/RTK/staplad komprimering |
/api/compression/language-packs |
GET | Lista tillgängliga Caveman-språkpaket |
/api/compression/rules |
GET | Lista metadata för Caveman-regler |
/api/context/caveman/config |
GET/PUT | Alias för Caveman-specifika inställningar |
/api/context/rtk/config |
GET/PUT | RTK-specifika inställningar, inklusive anpassade filter och lagring av råutdata |
/api/context/rtk/filters |
GET | RTK-filterkatalog och diagnostik för anpassade filter |
/api/context/rtk/test |
POST | Kör RTK-förhandsgranskning/-test mot en textnyttolast |
/api/context/rtk/raw-output/[id] |
GET | Läs lagrade maskerade råutdata via pekar-id |
/api/context/combos |
GET/POST | Lista/skapa komprimeringskombinationer |
/api/context/combos/[id] |
GET/PUT/DELETE | Detaljer/uppdatering/borttagning för komprimeringskombination |
/api/context/combos/[id]/assignments |
GET/PUT | Tilldela komprimeringskombinationer till routningskombinationer |
/api/context/analytics |
GET | Alias för komprimeringsanalys |
Övervakning
| Ändpunkt | Metod | Beskrivning |
|---|---|---|
/api/sessions |
GET | Spårning av aktiva sessioner |
/api/rate-limits |
GET | Hastighetsgränser per konto |
/api/monitoring/health |
GET | Hälsokontroll + leverantörssammanfattning (catalogCount, configuredCount, activeCount, monitoredCount). Administrationsvyn inkluderar credentialHealth: skalärvärden för probcachen, failedConnections när failed>0 och staleDbNonOkCount (beständigt test_status i SQLite, inte mätvärdet). Se MONITORING_GUIDE.md. |
/api/cache/stats |
GET/DELETE | Cachestatistik/rensa |
/api/modality-bridge/stats |
GET | Minneslagrade attempts, lyckade försök/bridged, misslyckanden, cacheträffar, totalLatencyMs, latencySamples, samplingsbaserad averageLatencyMs och tidpunkt för senaste användning (återställs vid omstart; administratörsautentisering) |
/api/modality-bridge/video/runtime |
GET | Strikt kontroll av betrodd loopback före administratörsautentisering/prob; sanerad information om tillgänglighet och versioner för FFmpeg/ffprobe (no-store) |
/api/modality-bridge/video/extract |
POST | Intern autentiserad byteförmedlare via betrodd loopback; 50 MiB indata, begränsad kö/32 MiB utdata, 503 vid kapacitetsbrist, 499 vid frånkoppling, 504 vid överskriden tidsgräns; inte ett offentligt API för uppladdning |
Säkerhetskopiering och export/import
| Slutpunkt | Metod | Beskrivning |
|---|---|---|
/api/db-backups |
GET | Lista tillgängliga säkerhetskopior |
/api/db-backups |
PUT | Skapa en manuell säkerhetskopia |
/api/db-backups |
POST | Återställ från en specifik säkerhetskopia |
/api/db-backups/export |
GET | Ladda ned databasen som en .sqlite-fil |
/api/db-backups/import |
POST | Ladda upp en .sqlite-fil för att ersätta databasen |
/api/db-backups/exportAll |
GET | Ladda ned en fullständig säkerhetskopia som ett .tar.gz-arkiv |
Molnsynkronisering
| Slutpunkt | Metod | Beskrivning |
|---|---|---|
/api/sync/cloud |
Varierande | Åtgärder för molnsynkronisering |
/api/sync/initialize |
POST | Initiera synkronisering |
/api/cloud/* |
Varierande | Molnhantering |
Tunnlar
| Slutpunkt | Metod | Beskrivning |
|---|---|---|
/api/tunnels/cloudflared |
GET | Läs installations-/körningsstatus för Cloudflare Quick Tunnel på instrumentpanelen |
/api/tunnels/cloudflared |
POST | Aktivera eller inaktivera Cloudflare Quick Tunnel (action=enable/disable) |
/api/tunnels/ngrok |
GET | Läs körningsstatus för ngrok Tunnel på instrumentpanelen |
/api/tunnels/ngrok |
POST | Aktivera eller inaktivera ngrok Tunnel (action=enable/disable) |
CLI-verktyg
| Slutpunkt | Metod | Beskrivning |
|---|---|---|
/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 | Generisk CLI-körningsmiljö |
CLI-svar innehåller: installed, runnable, command, commandPath, runtimeMode, reason.
ACP-agenter
| Slutpunkt | Metod | Beskrivning |
|---|---|---|
/api/acp/agents |
GET | Lista alla identifierade agenter (inbyggda + anpassade) med status |
/api/acp/agents |
POST | Lägg till en anpassad agent eller uppdatera identifieringscachen |
/api/acp/agents |
DELETE | Ta bort en anpassad agent via frågeparametern id |
GET-svaret innehåller agents[] (id, namn, binärfil, version, installerad, protokoll, är anpassad) och summary (totalt, installerade, hittades inte, inbyggda, anpassade).
Motståndskraft och hastighetsgränser
| Slutpunkt | Metod | Beskrivning |
|---|---|---|
/api/resilience |
GET/PATCH | Hämta/uppdatera inställningar för begärandekö, anslutningspaus, leverantörsbrytare och väntetid |
/api/resilience/reset |
POST | Återställ leverantörernas kretsbrytare |
/api/resilience/model-cooldowns |
GET | Lista aktiva spärrar per (leverantör, anslutning, modell), sorterade efter återstående tid |
/api/resilience/model-cooldowns |
DELETE | Rensa en modellspärr — brödtext {provider, model} eller {all: true} för att rensa allt |
/api/rate-limits |
GET | Status för hastighetsgräns per konto |
/api/rate-limit |
GET | Global konfiguration av hastighetsgräns |
Alla fyra
/api/resilience/*-vägar kräver hanteringsautentisering (requireManagementAuth). Se Motståndskraft (utökad) för en fullständig genomgång av leverantörsbrytare kontra anslutningspaus kontra modellspärr.
Utvärderingar
| Slutpunkt | Metod | Beskrivning |
|---|---|---|
/api/evals |
GET/POST | Lista utvärderingssviter/kör utvärdering |
Policyer
| Slutpunkt | Metod | Beskrivning |
|---|---|---|
/api/policies |
GET/POST/DELETE | Hantera routningspolicyer |
Efterlevnad
| Slutpunkt | Metod | Beskrivning |
|---|---|---|
/api/compliance/audit-log |
GET | Granskningslogg för efterlevnad (senaste N) |
v1beta (Gemini-kompatibelt)
| Slutpunkt | Metod | Beskrivning |
|---|---|---|
/v1beta/models |
GET | Lista modeller i Gemini-format |
/v1beta/models/{...path} |
POST | Gemini-slutpunkt för generateContent |
Dessa slutpunkter speglar Geminis API-format för klienter som förväntar sig kompatibilitet med Geminis inbyggda SDK.
Interna API:er/system-API:er
| Ändpunkt | Metod | Beskrivning |
|---|---|---|
/api/init |
GET | Kontroll av programinitiering (används vid första körningen) |
/api/tags |
GET | Ollama-kompatibla modelltaggar (för Ollama-klienter) |
/api/restart |
POST | Utlös en kontrollerad omstart av servern |
/api/shutdown |
POST | Utlös en kontrollerad avstängning av servern |
/api/system/env/repair |
POST | Reparera miljövariabler för OAuth-leverantörer |
Obs! Dessa ändpunkter används internt av systemet eller för kompatibilitet med Ollama-klienter. De anropas vanligtvis inte av slutanvändare.
Reparation av OAuth-miljövariabler (v3.6.1+)
POST /api/system/env/repair
Content-Type: application/json
{
"provider": "claude-code"
}
Reparerar saknade eller skadade OAuth-miljövariabler för en specifik leverantör. Returnerar:
{
"success": true,
"repaired": ["CLAUDE_CODE_OAUTH_CLIENT_ID", "CLAUDE_CODE_OAUTH_CLIENT_SECRET"],
"backupPath": "/home/user/.omniroute/backups/env-repair-2026-04-11.bak"
}
Ljudtranskribering
POST /v1/audio/transcriptions
Authorization: Bearer your-api-key
Content-Type: multipart/form-data
Transkribera ljudfiler med valfri konfigurerad STT-leverantör. Det första
sökvägssegmentet väljer den ursprungliga leverantören (openai/…, deepgram/…). Gatewayer som
vidareexporterar en annan leverantörs modell använder ett kvalificerat id
(openrouter/deepgram/nova-3).
Begäran:
curl -X POST http://localhost:20128/v1/audio/transcriptions \
-H "Authorization: Bearer your-api-key" \
-F "file=@recording.mp3" \
-F "model=openai/whisper-1"
Svar:
{
"text": "Hello, this is the transcribed audio content.",
"task": "transcribe",
"language": "en",
"duration": 12.5
}
Exempel på modell-id:n: openai/whisper-1 (kräver en OpenAI-nyckel),
openrouter/deepgram/nova-3 (kräver en OpenRouter-nyckel),
deepgram/nova-3 (kräver en ursprunglig Deepgram-nyckel). En begäran med enbart
deepgram/nova-3 använder inte OpenRouter.
Format som stöds: mp3, wav, m4a, flac, ogg, webm.
Ollama-kompatibilitet
För klienter som använder Ollamas API-format:
# Chattändpunkt (Ollama-format)
POST /v1/api/chat
# Modellista (Ollama-format)
GET /api/tags
Begäranden översätts automatiskt mellan Ollama-format och interna format.
Tokeniserade VS Code-alias utan headers
Använd dessa alias när en integration inte kan infoga en Authorization-header och API-nyckeln måste bäddas in i bas-URL:en.
# Katalogalias i OpenAI-stil
GET /api/v1/vscode/{token}/
GET /api/v1/vscode/{token}/models
# Chattalias i OpenAI-stil
POST /api/v1/vscode/{token}/chat/completions
POST /api/v1/vscode/{token}/responses
# Alias i Ollama-stil
POST /api/v1/vscode/{token}/api/chat
GET /api/v1/vscode/{token}/api/tags
Exempel:
curl https://your-host.example/api/v1/vscode/YOUR_API_KEY/models
curl -X POST https://your-host.example/api/v1/vscode/YOUR_API_KEY/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"hello"}]}'
Anmärkningar:
- De tokeniserade aliasen återanvänder samma hanterare som
/v1/*och/api/tags; svarsformaten förblir identiska. - Föredra
Authorization: Bearer ...när klienten stöder anpassade headers. - URL-baserade token kan förekomma i loggar från omvända proxyservrar, webbläsarhistorik och telemetri utanför OmniRoute. Behandla dem som ett kompatibilitetsalternativ, inte som standardmetod för autentisering.
Telemetri
# Hämta sammanfattning av latenstelemetri (p50/p95/p99 per leverantör)
GET /api/telemetry/summary
Svar:
{
"providers": {
"claudeCode": { "p50": 245, "p95": 890, "p99": 1200, "count": 150 },
"github": { "p50": 180, "p95": 620, "p99": 950, "count": 320 }
}
}
Budget
# Hämta budgetstatus för alla API-nycklar
GET /api/usage/budget
# Ange eller uppdatera en budget
POST /api/usage/budget
Content-Type: application/json
{
"apiKeyId": "key-123",
"dailyLimitUsd": 5.00,
"weeklyLimitUsd": 30.00,
"monthlyLimitUsd": 100.00,
"warningThreshold": 0.8,
"resetInterval": "monthly"
}
Schemaanmärkningar (
setBudgetSchema):apiKeyIdkrävs; minst ett avdailyLimitUsd,weeklyLimitUsdellermonthlyLimitUsdmåste vara större än noll. Valfria fält:warningThreshold(0–1),resetInterval(daily|weekly|monthly),resetTime(HH:MM). Det äldre formatet{keyId, limit, period}returnerar400 Bad Request.
Tokengränser
Tokenbudgetar per API-nyckel (separata från den USD-baserade budgeten ovan). Tillämpas direkt i begäransflödet: när en nyckels användning i det aktuella fönstret når gränsen avvisas begäranden med 429 Too Many Requests. Gränser kan avgränsas till en specifik model, en provider eller tillämpas globalt för hela nyckeln. När flera gränser matchar en begäran gäller den mest restriktiva.
# Lista en nyckels tokengränser (inkluderar aktuell användning i fönstret)
GET /api/usage/token-limits?apiKeyId=key-123
# Skapa eller uppdatera en tokengräns
POST /api/usage/token-limits
Content-Type: application/json
{
"apiKeyId": "key-123",
"scopeType": "model",
"scopeValue": "openai/gpt-4o",
"tokenLimit": 1000000,
"resetInterval": "monthly",
"enabled": true
}
# Ta bort en tokengräns efter id
DELETE /api/usage/token-limits?id=tl-abc
Schemaanteckningar (
setTokenLimitSchema):apiKeyIdochscopeType(model|provider|global) är obligatoriska.scopeValueär obligatoriskt om intescopeTypeärglobal(t.ex. ett modell-id för omfattningenmodel, ett leverantörs-id för omfattningenprovider).tokenLimitmåste vara ett positivt heltal (konverteras från en sträng). Valfritt:id(utelämna för att skapa, ange för att uppdatera),resetInterval(daily|weekly|monthly, standardvärdemonthly),resetTime(HH:MM),enabled(standardvärdetrue).GET-svar utökar varje gräns medtokensUsed,remaining,windowStart,periodStartAtochnextResetAt. Detta är en endpoint av hanteringsklass (autentisering tillämpas centralt av authz-pipelinen).
Bearbetning av begäranden
- Klienten skickar en begäran till
/v1/* - Route-hanteraren anropar
handleChat,handleEmbedding,handleAudioTranscriptionellerhandleImageGeneration - Modellen matchas (direkt leverantör/modell eller alias/kombination)
- Autentiseringsuppgifter väljs från den lokala databasen med filtrering efter kontotillgänglighet
- För chatt:
handleChatCorekontrollerar semantisk cache/signaturcache och matchar kombinationens komprimeringsinställningar - Proaktiv komprimering körs före leverantörsöversättningen när den är aktiverad (
lite, Caveman, RTK eller staplad) - Leverantörsexekveraren skickar begäran uppströms
- Svaret översätts tillbaka till klientformatet (chatt) eller returneras i befintligt skick (inbäddningar/bilder/ljud)
- Användning, komprimeringsanalys och begärandeloggar registreras
- Reservlösning tillämpas vid fel enligt kombinationsreglerna
Fullständig arkitekturreferens: ARCHITECTURE.md
Kombinationshantering
Kombinationer för routning på högre nivå (redan sammanfattade under /api/combos*) kan även mappas 1:1 från ett mönster för modell-id, vilket möjliggör transparent omdirigering av ett modell-id i OpenAI-stil till en kombination.
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/model-combo-mappings |
Lista alla mappningar från modell till kombination |
| POST | /api/model-combo-mappings |
Skapa mappning — body: {pattern, comboId, priority?, enabled?, description?} |
| GET | /api/model-combo-mappings/[id] |
Hämta en enskild mappning |
| PUT | /api/model-combo-mappings/[id] |
Uppdatera fält i en befintlig mappning |
| DELETE | /api/model-combo-mappings/[id] |
Ta bort en mappning |
Autentisering: hanteringssession/API-nyckel (requireManagementAuth).
Webhooks
Utgående webhook-prenumerationer för OmniRoute-händelser (slutförda begäranden, förbrukad kvot, nyckelrotation osv.).
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/webhooks |
Lista webhooks (hemligheter maskeras som <prefix>...) |
| POST | /api/webhooks |
Skapa webhook — body: {url, events?: ["*"], secret?, description?} |
| GET | /api/webhooks/[id] |
Hämta en webhook |
| PUT | /api/webhooks/[id] |
Uppdatera url/events/secret/description |
| DELETE | /api/webhooks/[id] |
Ta bort en webhook |
| POST | /api/webhooks/[id]/test |
Skicka en testpayload till webhook-URL:en och returnera leveransstatus |
Autentisering: hanteringssession/API-nyckel (requireManagementAuth).
Registrerade nycklar (automatisk hantering)
Används av undersystemet för automatisk nyckelhantering för att utfärda och rotera API-nycklar hos en bakomliggande leverantör/ett bakomliggande konto, med dagliga/timvisa kvoter.
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/v1/registered-keys |
Lista registrerade nycklar (endast maskerat prefix) |
| POST | /api/v1/registered-keys |
Utfärda en ny registrerad nyckel — body: {name, provider?, accountId?, idempotencyKey?, expiresAt?, dailyBudget?, hourlyBudget?}. Returnerar den råa nyckeln en gång. Returnerar 429 om kvoten nekar begäran. |
| GET | /api/v1/registered-keys/[id] |
Hämta metadata för en registrerad nyckel (inget råmaterial) |
| DELETE | /api/v1/registered-keys/[id] |
Återkalla en registrerad nyckel |
| POST | /api/v1/registered-keys/[id]/revoke |
Explicit slutpunkt för återkallning (samma effekt som DELETE) |
Autentisering: Bearer-API-nyckel (isAuthenticated). Se även /v1/quotas/check och /v1/issues/report.
Agentprotokoll
Molnagentuppgifter (Claude Code, Codex Cloud, OpenHands osv.) som körs på distans åt OmniRoute-användare.
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/v1/agents/tasks |
Lista uppgifter — valfria ?provider=, ?status=, ?limit= (1–500, standardvärde 50) |
| POST | /api/v1/agents/tasks |
Skapa uppgift — innehållet valideras av CreateCloudAgentTaskSchema (providerId, prompt, source, options?). Returnerar 201 med uppgiftsomslag |
| DELETE | /api/v1/agents/tasks?id=... |
Ta bort en uppgift |
| GET | /api/v1/agents/tasks/[id] |
Läs uppgift — uppdaterar synkront statusen från den externa molnagenten när ett external_id har angetts |
| POST | /api/v1/agents/tasks/[id] |
Diskriminerad åtgärd: {action: "approve"}, {action: "message", message} eller {action: "cancel"} |
| DELETE | /api/v1/agents/tasks/[id] |
Ta bort en specifik uppgift efter id |
Autentisering: hanteringsautentisering krävs för varje metod (
requireCloudAgentManagementAuth). Före v3.8.0 var dessa oautentiserade — se commit588a0333för den inkompatibla ändringen.
# Skapa en Claude Code-molnuppgift
curl -X POST http://localhost:20128/api/v1/agents/tasks \
-H "Authorization: Bearer your-management-key" \
-H "Content-Type: application/json" \
-d '{"providerId":"claude-code-cloud","prompt":"Fix the failing test","source":{"repo":"...","branch":"..."}}'
Hanteringsproxyservrar
Utgående HTTP(S)/SOCKS-proxyservrar som kan tilldelas leverantörer, konton eller globalt.
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/v1/management/proxies |
Lista proxyservrar (med ?id= returneras en; med ?id=&where_used=1 returneras tilldelningsgrafen) |
| POST | /api/v1/management/proxies |
Skapa proxyserver — innehållet valideras av createProxyRegistrySchema |
| PATCH | /api/v1/management/proxies |
Uppdatera proxyserver — innehållet valideras av updateProxyRegistrySchema (kräver id) |
| DELETE | /api/v1/management/proxies?id=...&force=1 |
Ta bort proxyserver (använd force=1 för att koppla bort tilldelningar) |
| GET | /api/v1/management/proxies/assignments |
Lista tilldelningar — kan filtreras efter proxy_id, scope, scope_id; ange resolve_connection_id=<id> för att fastställa den aktiva proxyservern för en anslutning |
| PUT | /api/v1/management/proxies/assignments |
Tilldela — innehållet valideras av proxyAssignmentSchema ({scope, scopeId?, proxyId?}). Rensar dispatcher-cachen |
| PUT | /api/v1/management/proxies/bulk-assign |
Masstilldela — innehållet valideras av bulkProxyAssignmentSchema ({scope, scopeIds[], proxyId?}) |
| GET | /api/v1/management/proxies/health?hours=24 |
Sammanställd proxyhälsa (antal lyckade/misslyckade anrop, latens) under ett tidsintervall |
Autentisering: hanteringssession/API-nyckel krävs för varje rutt (requireManagementAuth).
Uppgiftsbeskrivningens
POST /api/v1/management/proxies/[id]/assignmentsochPOST /api/v1/management/proxies/[id]/healthhanteras av de platta rutterna/assignmentsoch/healthsom visas ovan — det finns inga underordnade rutter per id i kodbasen.
Resiliens (utökad)
OmniRoute tillhandahåller tre oberoende mekanismer för tillfälliga fel. Hanteringsslutpunkterna nedan gör det möjligt för operatörer att läsa och åsidosätta dem:
| Omfattning | Tillståndslagring | Läs | Återställ / rensa |
|---|---|---|---|
| Leverantörsbrytare | domain_circuit_breakers + i minnet |
/api/monitoring/health |
POST /api/resilience/reset |
| Anslutningens väntetid | rateLimitedUntil för leverantörsanslutningar |
/api/rate-limits, /api/providers/[id] |
(återaktiveras vid behov; rensa via leverantörens PUT) |
| Modellspärr | Minnesbaserat register över modelltillgänglighet | GET /api/resilience/model-cooldowns |
DELETE /api/resilience/model-cooldowns |
PATCH /api/resilience accepterar åsidosättningar av leverantörsbrytaren under providerBreaker.oauth och providerBreaker.apikey. Varje profil stöder degradationThreshold, failureThreshold och resetTimeoutMs; samma fält finns i Instrumentpanel → Inställningar → Resiliens.
# Rensa en enskild modellspärr
curl -X DELETE http://localhost:20128/api/resilience/model-cooldowns \
-H "Cookie: auth_token=..." \
-H "Content-Type: application/json" \
-d '{"provider":"openai","model":"gpt-4o-mini"}'
# Rensa alla spärrar
curl -X DELETE http://localhost:20128/api/resilience/model-cooldowns \
-H "Cookie: auth_token=..." \
-d '{"all":true}'
Fullständig konceptuell referens och standardvärden för brytare: se CLAUDE.md → "Resiliensens körtidstillstånd".
Färdigheter
Ramverk för att utöka OmniRoute med anpassade körbara hanterare samt marknadsplatsintegrationer.
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/skills |
Lista installerade färdigheter — kan filtreras med ?q=, ?mode=on|off|auto, ?source=skillsmp|skillssh|local, sidindelad |
| GET | /api/skills/[id] |
Hämta en färdighet |
| PUT | /api/skills/[id] |
Uppdatera en färdighet (namn, beskrivning, läge, schema, hanterare, taggar) |
| DELETE | /api/skills/[id] |
Avinstallera en färdighet |
| POST | /api/skills/install |
Installera en färdighet från ett råmanifest — body: {name, version, description, schema:{input, output}, handlerCode, apiKeyId?} |
| GET | /api/skills/executions |
Lista de senaste färdighetskörningarna (granskningslogg med indata/utdata/varaktighet) |
| GET | /api/skills/marketplace?q=... |
Sökning/populär lista från marknadsplatsen SkillsMP (kräver inställningen skillsmpApiKey) |
| POST | /api/skills/marketplace/install |
Installera en färdighet via id från SkillsMP |
| GET | /api/skills/skillssh?q=&limit= |
Sök i registret skills.sh |
| POST | /api/skills/skillssh/install |
Installera en färdighet via id från skills.sh |
Autentisering: hanteringssession/API-nyckel. Sökvägar för marknadsplatssökning accepterar antingen hanteringsautentisering eller en Bearer-API-nyckel (isAuthenticated).
Minne
Beständigt minne för konversationer/fakta, avgränsat per API-nyckel/session.
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/memory |
Lista minnen — ?apiKeyId=, ?type=, ?sessionId=, ?q=, med sidnumrering via offset/limit eller page/limit |
| POST | /api/memory |
Skapa minne — brödtext validerad av Zod: {content, key, type?, sessionId?, apiKeyId?, metadata?, expiresAt?} |
| GET | /api/memory/[id] |
Hämta ett minne |
| DELETE | /api/memory/[id] |
Ta bort ett minne |
| GET | /api/memory/health |
Minnesundersystemets hälsa (databasanslutning, backend för inbäddningar, status för vektorindex) |
Autentisering: hanteringssession/API-nyckel (requireManagementAuth). Enum för type: FACTUAL, EPISODIC, SEMANTIC, PROCEDURAL (se MemoryType i src/lib/memory/types.ts).
MCP-server
OmniRoute levereras med en inbäddad Model Context Protocol-server med 3 transporter (stdio, SSE, streamable-http) och verktyg med avgränsade behörigheter. Kontrollpanelens slutpunkter nedan läser status-/granskningsdata och fungerar som proxy för HTTP-transporterna.
| Metod | Sökväg | Beskrivning | |
|---|---|---|---|
| GET | /api/mcp/status |
Hjärtslag, transport, onlinestatus, senaste anrop, vanligaste verktyg, lyckandefrekvens under 24 timmar | |
| GET | /api/mcp/tools |
Lista över MCP-verktyg med name, description, scopes, phase, auditLevel, sourceEndpoints |
|
| GET | /api/mcp/sse |
Öppna SSE-ström för SSE-transporten (returnerar 503 om MCP är inaktiverat eller transporten inte matchar) |
|
| POST | /api/mcp/sse |
Skicka JSON-RPC-ram via SSE-transporten | |
| GET | /api/mcp/stream |
Öppna SSE-sidan av Streamable HTTP-transporten (serverinitierade meddelanden) | |
| POST | /api/mcp/stream |
Skicka JSON-RPC-ram via Streamable HTTP-transporten | |
| DELETE | /api/mcp/stream |
Avsluta en Streamable HTTP-session | |
| GET | /api/mcp/audit |
Fråga granskningsloggen — ?limit=, ?offset=, ?tool=, `?success=true |
false, ?apiKeyId=` |
| GET | /api/mcp/audit/stats |
Aggregerad granskningsstatistik (totalt antal, lyckandefrekvens, genomsnittlig varaktighet, vanligaste verktyg) |
Autentisering: transporterna sse/stream använder den MCP-specifika autentiseringsytan (Bearer-API-nyckel med omfånget mcp); vägarna status/tools/audit* kan läsas från kontrollpanelen (ingen ytterligare autentisering krävs utöver åtkomst till kontrollpanelens värd).
Båda HTTP-transporterna styrs av
settings.mcpEnabledochsettings.mcpTransport— en transport som inte matchar returnerar400, medan ett inaktiverat MCP-tillstånd returnerar503.
A2A-server
OmniRoute exponerar en A2A-slutpunkt (agent-till-agent) för JSON-RPC 2.0 samt ett REST-gränssnitt för inspektion och användning i kontrollpanelen.
JSON-RPC
POST /a2a
Authorization: Bearer your-api-key # valfritt om inte OMNIROUTE_API_KEY har angetts
Content-Type: application/json
{
"jsonrpc": "2.0",
"id": 1,
"method": "message/send",
"params": {
"skill": "smart-routing",
"messages": [{"role": "user", "content": "Route this coding task"}]
}
}
Metoder som stöds (samtliga styrs av settings.a2aEnabled):
| Metod | Beskrivning |
|---|---|
message/send |
Synkron körning av en färdighet; returnerar {task, artifacts, metadata} |
message/stream |
Strömmande SSE-körning av samma uppsättning färdigheter |
tasks/get |
Hämtar en uppgift via taskId |
tasks/cancel |
Avbryter en uppgift via taskId |
Inbyggda färdigheter: smart-routing, quota-management, provider-discovery, cost-analysis, health-report.
Agentkort
GET /.well-known/agent.json
Returnerar det offentliga A2A-agentkortet (namn, beskrivning, funktioner, färdighetskatalog och autentiseringsschema) — cachelagrat offentligt i 1 timme. Ingen autentisering krävs.
REST-hjälpfunktioner
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/a2a/status |
A2A-status + uppgiftsstatistik + sammanfattning av det cachelagrade agentkortet |
| GET | /api/a2a/tasks |
Listar uppgifter — ?state=submitted|working|completed|failed|cancelled, ?skill=, ?limit= (≤200), ?offset= |
| POST | /api/a2a/tasks |
(Inte implementerat som en REST-hjälpfunktion — skapa via JSON-RPC message/send) |
| GET | /api/a2a/tasks/[id] |
Hämtar en uppgift |
| POST | /api/a2a/tasks/[id]/cancel |
Avbryter en uppgift |
Autentisering: REST-hjälpfunktionerna körs utan administrationsautentisering (läsbara från kontrollpanelen); JSON-RPC-rutten /a2a använder Bearer OMNIROUTE_API_KEY om den är konfigurerad.
Moln, utvärderingar och bedömningar
| Metod | Sökväg | Beskrivning | ||
|---|---|---|---|---|
| POST | /api/cloud/auth |
Verifierar en Bearer-nyckel och returnerar maskerade leverantörsanslutningar + modellalias för molnsynkroniseringsklienter | ||
| POST | /api/cloud/credentials/update |
Uppdaterar krypterade autentiseringsuppgifter för en molnsynkroniserad leverantör | ||
| POST | /api/cloud/model/resolve |
Matchar ett logiskt modell-id mot en konkret leverantör/modell med hjälp av den lokala routningstabellen | ||
| GET | /api/cloud/models/alias |
Listar modellalias såsom de exponeras för molnsynkronisering | ||
| GET | /api/assess |
Läser de senaste bedömningskategoriseringarna (per leverantör/modell) | ||
| POST | /api/assess |
Kör en bedömning — brödtext: `{scope: {type:"all"} | {type:"provider", providerId} | {type:"model", modelId}, trigger?}` |
| GET | /api/evals |
Listar inbyggda utvärderingssviter + de senaste körningarna | ||
| POST | /api/evals |
Startar en utvärderingskörning | ||
| POST | /api/evals/suites |
Skapar en anpassad utvärderingssvit — brödtexten valideras av evalSuiteSaveSchema |
||
| GET | /api/evals/suites/[id] |
Hämtar en anpassad utvärderingssvit |
Autentisering: /api/cloud/auth validerar en Bearer-nyckel direkt; de övriga rutterna /api/cloud/*, /api/evals/* och /api/assess kräver en administrationssession/API-nyckel. POST för /api/assess använder validateBody med ett diskriminerat unionsschema för omfånget.
Hantering av ACP (Agent Client Protocol)
som underordnade processer. Dessa slutpunkter hanterar identifiering av ACP-agenter och registrering av anpassade agenter.
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/acp/agents |
Lista alla kända CLI-agenter (inbyggda + anpassade) med installationsstatus, version och binärfil |
| POST | /api/acp/agents |
Registrera en anpassad ACP-agent eller uppdatera cachen — body: {id, name, binary, versionCommand, providerAlias, spawnArgs, protocol} eller {action: "refresh"} |
| DELETE | /api/acp/agents |
Ta bort en anpassad ACP-agent — frågeparameter: ?id=<agentId> |
Exempel på svar (GET /api/acp/agents):
{
"agents": [
{
"id": "claude",
"name": "Claude Code CLI",
"binary": "claude",
"version": "1.0.45",
"installed": true,
"protocol": "stdio",
"providerAlias": "claude",
"isCustom": false
},
{
"id": "my-custom-cli",
"name": "My Custom CLI",
"installed": false,
"protocol": "stdio",
"providerAlias": "my-provider",
"isCustom": true
}
],
"cacheTtlMs": 60000,
"cacheAge": 1234
}
Autentisering: Kräver en hanteringssession (auth_token-cookien för kontrollpanelen) eller en API-nyckel med hanteringsbehörighet.
Se ACP-ramverket för fullständig information.
Analys och observerbarhet
Slutpunkter för realtidsanalys av dirigering, komprimering och leverantörsmångfald. Dessa används av sidorna under /dashboard/analytics/*.
Analys av automatisk dirigering
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/analytics/auto-routing |
Sammanställd statistik för automatisk dirigering: totalt antal anrop, strategifördelning, nivåfördelning och främsta leverantörer |
| GET | /api/analytics/auto-routing?days=7 |
Statistik för ett tidsintervall (standardvärde 24 h) |
Exempel på svar:
{
"window": "24h",
"totalCalls": 1234,
"strategyBreakdown": {
"rules": 800,
"cost": 200,
"latency": 150,
"sla-aware": 50,
"lkgp": 34
},
"tierBreakdown": {
"ultra": 100,
"pro": 500,
"standard": 400,
"free": 234
},
"topProviders": [
{ "provider": "openai", "calls": 500, "avgLatencyMs": 850 },
{ "provider": "anthropic", "calls": 300, "avgLatencyMs": 1200 }
]
}
Komprimeringsanalys
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/analytics/compression |
Sammanställd komprimeringsstatistik: sparade token, besparingsprocent, lägesfördelning och motoranvändning |
Exempel på svar:
{
"window": "24h",
"totalOriginalTokens": 5000000,
"totalCompressedTokens": 3500000,
"totalSavings": 1500000,
"savingsPct": 30.0,
"modeBreakdown": {
"lite": 400,
"standard": 600,
"aggressive": 100,
"ultra": 50,
"rtk": 84
},
"engineBreakdown": {
"caveman": 800,
"rtk": 434
}
}
Spårning av leverantörsmångfald
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/analytics/diversity |
Mångfaldsspårning baserad på Shannon-entropi: förhindrar enskilda felpunkter genom att mäta spridningen mellan leverantörer |
Exempel på svar:
{
"window": "24h",
"shannonEntropy": 2.45,
"maxEntropy": 3.17,
"diversityRatio": 0.77,
"providerUsage": {
"openai": 0.4,
"anthropic": 0.25,
"google": 0.2,
"kiro": 0.15
},
"warnings": ["OpenAI accounts for 40% of traffic — consider diversifying"]
}
Autentisering: Kräver en hanteringssession eller en API-nyckel med hanteringsbehörighet.
Administratörsåtgärder
Ändpunkter endast för administratörer för operativ hantering.
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/admin/concurrency |
Läs aktuella samtidighetsgränser (globalt + per leverantör) |
| POST | /api/admin/concurrency |
Uppdatera samtidighetsgränser — brödtext: {global?: number, perProvider?: Record<string, number>} |
Autentisering: Kräver en hanteringssession med administratörsbehörighet.
Hantering av CLI-verktyg
Hantera CLI-verktyg som integreras med OmniRoute (antigravity, chipotle, commandCode, devin-cli osv.). Se Leverantörsreferens för den fullständiga listan.
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/cli-tools/all-statuses |
Status för alla CLI-verktyg (installerat, version, senast sett) |
| GET | /api/cli-tools/status |
Detaljerad status för ett CLI-verktyg (?tool=-fråga) |
| POST | /api/cli-tools/apply |
Skriv ett verktygs genererade konfiguration (dryRun förhandsvisar; 422 + containerEphemeralTarget vid containerkörning; migration anger äldre Codex-YAML) |
| GET | /api/cli-tools/backups |
Lista säkerhetskopior av CLI-verktygens konfigurationer |
| POST | /api/cli-tools/backups |
Skapa en säkerhetskopia av alla CLI-verktygskonfigurationer |
| POST | /api/cli-tools/backups |
Återställ: samma ändpunkt med {tool, backupId} i brödtexten återställer den säkerhetskopian |
| GET | /api/cli-tools/antigravity-mitm |
Status för Antigravity MITM-proxyn (CLI-verktyget "antigravity-mitm") |
| POST | /api/cli-tools/antigravity-mitm/alias |
Konfigurera alias för antigravity-mitm |
Autentisering: Kräver en hanteringssession.
Agentfärdigheter
Hantera AI-agentfärdigheter (liknande OpenAI:s anpassade GPT:er, men för agenter).
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/agent-skills |
Lista alla agentfärdigheter (inbyggda + anpassade) |
| GET | /api/agent-skills/[id] |
Hämta en specifik agentfärdighet |
| POST | /api/agent-skills |
Skapa en anpassad agentfärdighet — brödtext: {name, description, prompt, model?, temperature?} |
| PUT | /api/agent-skills/[id] |
Uppdatera en anpassad agentfärdighet |
| DELETE | /api/agent-skills/[id] |
Ta bort en anpassad agentfärdighet |
| GET | /api/agent-skills/[id]/raw |
Hämta rå prompt + metadata (ingen körning) |
| POST | /api/agent-skills/generate |
AI-generera en ny färdighet från en beskrivning på naturligt språk |
Autentisering: Kräver en hanteringssession eller en API-nyckel med hanteringsbehörighet.
Cachehantering
Hantera den semantiska cachen och resonemangscachen.
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/cache |
Cacheöversikt: totalt antal poster, träfffrekvens, storlek på disk |
| GET | /api/cache/entries |
Lista cachade poster (med paginering) |
| DELETE | /api/cache/entries |
Ta bort cacheposter (filtrera efter frågeparametrar) |
| GET | /api/cache/stats |
Detaljerad cachestatistik (per leverantör, per modell) |
| GET | /api/cache/reasoning |
Status för resonemangscachen (för återuppspelning av resonemang) |
| DELETE | /api/cache/reasoning |
Rensa resonemangscachen — frågeparametrar: ?toolCallId=<id> (enskild), ?provider=<p> eller inga parametrar (alla) |
Autentisering: Kräver en hanteringssession.
Minnessystem
Hantera beständigt minne (FTS5 + vektorinbäddningar).
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/memory |
Lista minnesposter (filtrera efter omfång, typ och sökfråga) |
| POST | /api/memory |
Skapa en ny minnespost — body: {scope, type, content, metadata?} |
| GET | /api/memory/[id] |
Hämta en specifik minnespost |
| PUT | /api/memory/[id] |
Uppdatera en minnespost |
| DELETE | /api/memory/[id] |
Ta bort en minnespost |
| GET | /api/memory?q= |
Sök i minnet (FTS5 + vektor) — statistik inkluderas i samma svar |
Autentisering: Kräver en hanteringssession eller en API-nyckel med hanteringsomfång.
Webhooks
Hantera webhook-prenumerationer för händelser.
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/webhooks |
Lista alla webhook-prenumerationer |
| POST | /api/webhooks |
Skapa en webhook-prenumeration — body: {url, events[], secret?, active?} |
| GET | /api/webhooks/[id] |
Hämta en specifik webhook-prenumeration |
| PUT | /api/webhooks/[id] |
Uppdatera en webhook-prenumeration |
| DELETE | /api/webhooks/[id] |
Ta bort en webhook-prenumeration |
| GET | /api/webhooks/[id]/deliveries |
Lista leveranshistoriken för en webhook (logg över lyckade/misslyckade leveranser) |
| POST | /api/webhooks/[id]/test |
Skicka en testhändelse till en webhook |
Autentisering: Kräver en hanteringssession.
Se Webhooks-ramverket för en fullständig lista över händelsetyper.
Färdighetsramverk
Hantera färdigheter (ramverket för agentbaserade tillägg).
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/skills |
Lista alla installerade färdigheter (inbyggda + anpassade) |
| POST | /api/skills/install |
Installera en färdighet från en lokal sökväg eller URL |
| DELETE | /api/skills/[id] |
Avinstallera en färdighet |
| PUT | /api/skills/[id] |
Aktivera eller inaktivera en färdighet — body: {enabled?: boolean, mode?: "on" | "off" | "auto"} |
| POST | /api/skills/executions |
Kör en färdighet — body: {skillName, apiKeyId, input?, sessionId?} |
| GET | /api/skills/executions |
Lista körningshistorik för alla färdigheter (filtrera med ?apiKeyId=) |
Autentisering: Kräver en hanteringssession eller en API-nyckel med hanteringsbehörighet.
Se Färdighetsramverk för fullständig information.
Insticksprogram
Hantera OmniRoute-insticksprogram (tillägg från tredje part).
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/plugins |
Lista installerade insticksprogram |
| POST | /api/plugins/marketplace/install |
Installera ett insticksprogram från marknadsplatsen |
| DELETE | /api/plugins/[name] |
Avinstallera ett insticksprogram |
| POST | /api/plugins/[name]/activate |
Aktivera ett insticksprogram |
| POST | /api/plugins/[name]/deactivate |
Inaktivera ett insticksprogram |
| GET | /api/plugins/[name]/config |
Hämta insticksprogrammets konfiguration |
| PUT | /api/plugins/[name]/config |
Uppdatera insticksprogrammets konfiguration |
Autentisering: Kräver en hanteringssession.
Se Ramverk för insticksprogram för fullständig information.
Skuggdirigering
Skugg-/A-B-jämförelse av leverantörer är inte en fristående REST-yta — den konfigureras genom kombinationsdirigering (se Automatisk kombination). Jämförelsemått per kombination tillhandahålls av GET /api/combos/metrics.
Skyddsräcken
Inspektera skyddsräckena under körning (detektering av personligt identifierbar information, detektering av promptinjektion och sammankoppling för bildbehandling). Skyddsräckena körs för varje begäran; bortval per anrop görs via begärandehuvudet x-omniroute-disabled-guardrails — det finns ingen beständig yta för aktivering/inaktivering.
| Metod | Sökväg | Beskrivning |
|---|---|---|
| GET | /api/guardrails |
Lista de registrerade skyddsräckena och deras status (namn/aktiverad/prioritet) |
| POST | /api/guardrails/test |
Testkör pipelinen före anrop med exempelindata — body: {input, disabledGuardrails?} |
Autentisering: Kräver en hanteringssession.
Se Säkerhet > Skyddsräcken för fullständig information.
Autentisering
Se Autentisering för administration för de fyra
typerna av autentiseringsuppgifter (inloggningssession för kontrollpanelen, lokal CLI-token, oma_live_…-åtkomsttoken och API-nyckel med administrationsbehörighet) och hur de skiljer sig från inferensnycklar.
- Kontrollpanelsrutter (
/dashboard/*) använder cookienauth_token - Inloggning använder den sparade lösenordshashen, med
INITIAL_PASSWORDsom reserv requireLoginkan aktiveras eller inaktiveras via/api/settings/require-login/v1/*-rutter kan kräva en Bearer-API-nyckel närREQUIRE_API_KEY=true- ”administrationstoken”/”API-nyckel med administrationsbehörighet” i denna referens avser en av typerna i den guiden – inte någon odefinierad ytterligare typ av hemlighet
Bakåtinkompatibel ändring (v3.8.0) –
/api/v1/agents/tasks/*och slutpunkterna för cooldown-administration kräver nu administrationsautentisering (kontrollpanelensauth_token-cookie eller en API-nyckel med administrationsbehörighet). Klienter som tidigare anropade dessa rutter utan autentisering får nu svaret401 Unauthorized. Se commit588a0333(fix(auth): require management auth for agent and cooldown APIs).