API Reference (Norsk)
September 23, 2026 · View on GitHub
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇨🇿 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 · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇨🇿 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 · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Kjernereferanse for OmniRoute API. Den dekker den offentlige /v1-overflaten og de mest brukte administrasjonsendepunktene; de maskinlesbare docs/openapi.yaml og rutetreet under src/app/api/ er de uttømmende kildene.
Innholdsfortegnelse
- Chat-fullføringer
- Eksklusive administrerte sesjonsleier
- Innebygginger
- Bildegenerering
- Dokument-OCR
- Liste modeller
- Leverandørplugin-manifest
- Kompatibilitetsendepunkter
- Filer API
- Batcher API
- Søk API
- WebSocket-strømming
- Kvoter og problemrapportering
- Semantisk hurtigbuffer
- Dashbord og administrasjon
- Kombinasjonsadministrasjon
- Webhooks
- Registrerte nøkler (automatisk administrasjon)
- Agentprotokoll
- Administrasjonsproxyer
- Robusthet (utvidet)
- Ferdigheter
- Minne
- MCP-server
- A2A-server
- Sky, evalueringer og vurdering
- Forespørselsbehandling
- Autentisering
Chat-fullføringer
POST /v1/chat/completions
Authorization: Bearer your-api-key
Content-Type: application/json
{
"model": "cc/claude-opus-4-6",
"messages": [
{"role": "user", "content": "Write a function to..."}
],
"stream": true
}
Egendefinerte headere
| Header | Retning | Beskrivelse |
|---|---|---|
X-OmniRoute-No-Cache | Forespørsel | Sett til true for å omgå hurtigbufferen |
x-omniroute-no-memory | Forespørsel | Sett til true for å hoppe over minne- + ferdighetsinjeksjon for denne forespørselen (speiler ingen hurtigbuffer; unngår token-/kostnadsoverhead per kall) |
X-OmniRoute-Progress | Forespørsel | Sett til true for fremdriftshendelser |
X-Session-Id | Forespørsel | Sticky sesjonsnøkkel for ekstern sesjonsaffinitet |
x_session_id | Forespørsel | Understrek-variant aksepteres også (direkte HTTP) |
X-OmniRoute-Session-Id | Forespørsel | Anroper-levert sesjons-/samtalekode (mater også minne). Når til stede, lagres den ordrett til call_logs.session_tag for kostnadsattribusjon per sesjon (#8249) – aldri syntetisert når fraværende |
Idempotency-Key | Forespørsel | Dedup-nøkkel (5s vindu) |
X-Request-Id | Forespørsel | Alternativ dedup-nøkkel |
X-OmniRoute-Cache | Svar | HIT eller MISS (ikke-strømming) |
X-OmniRoute-Idempotent | Svar | true hvis duplisert |
X-OmniRoute-Progress | Svar | enabled hvis fremdriftssporing er på |
X-OmniRoute-Session-Id | Svar | Effektiv sesjons-ID brukt av OmniRoute |
X-OmniRoute-Request-Id | Svar | Forespørselskorrelasjons-ID (når kjent) |
X-OmniRoute-Version | Svar | OmniRoute byggeversjon (alltid til stede) |
X-OmniRoute-Cost-Saved | Svar | USD hurtigbufferen unngikk ved en HIT (kun hurtigbuffer-treff) |
X-OmniRoute-Decision | Svar | Ruting-spor: strategy=<name>; provider=<alias>; latency_ms=<n> (<name> er kombinasjonsstrategien, eller single for en ikke-kombinasjonsforespørsel) – alltid til stede på fullføringssvar |
Nginx-merknad: hvis du er avhengig av understrek-headere (for eksempel
x_session_id), aktiverunderscores_in_headers on;.
Kostnadstelemetri-headere: ikke-strømmende suksessresponser inneholder også
X-OmniRoute-*kostnadstelemetri-settet —X-OmniRoute-Response-Cost(USD, fast 10 desimaler;0.0000000000for gratis/upriset),X-OmniRoute-Tokens-In/X-OmniRoute-Tokens-Out,X-OmniRoute-Model,X-OmniRoute-Provider,X-OmniRoute-Latency-Ms,X-OmniRoute-Cache-Hit, ogX-OmniRoute-Fallback-Attempts(kun når > 0), plussX-OmniRoute-Request-IdogX-OmniRoute-Version. Disse sendes ut av chat-fullføringer,/v1/responses,/v1/messages, og medieendepunktene —/v1/embeddings,/v1/images/generations,/v1/audio/speech,/v1/audio/transcriptions,/v1/rerank,/v1/videos/generations,/v1/music/generations, og/v1/moderations(koster alltid0). Mediekostnad beregnes per modalitet (per bilde, per sekund, per tegn, per søkeenhet) når prising er tilgjengelig, ellers0(fail-open).
Cache-treff kostnadssemantikk: ved et semantisk cache-treff (
X-OmniRoute-Cache-Hit: true) gjøres ingen oppstrømsanrop, såX-OmniRoute-Response-Coster0.0000000000(den inkrementelle kostnaden for å levere treffet). Den opprinnelige/ville-ha-vært-kostnaden rapporteres separat iX-OmniRoute-Cost-Saved. Faktureringsforbrukere bør summereX-OmniRoute-Response-Cost(treff koster ingenting); cache-analyse kan aggregereX-OmniRoute-Cost-Saved.
Eksklusive administrerte sesjonsleaser
Eksklusiv administrert sesjonsleasing er en valgfri, klientnøytral rutingskontrakt: én aktiv eier holder én kvalifisert OmniRoute-tilkobling. Den leaser ikke en modell, krever ikke OAuth, identifiserer ikke en bestemt klient, eller krever en bestemt leverandør.
Den autentiserende API-nøkkelen må ha omfang lease:exclusive og en eksplisitt ikke-tom
allowedConnections-liste. Databasemutasjonsgrensen håndhever begge feltene sammen ved nøkkelopprettelse
og delvise oppdateringer.
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"}
Vellykkede anskaffelses-, fornyelses- og frigjøringsresponser viser tidsstempler, state, og den eksakte positive
generation, men aldri den valgte tilkoblingen eller legitimasjonen. Fornyelse og frigjøring angir
generasjonen i JSON-teksten:
{ "action": "renew", "generation": 1 }
{ "action": "release", "generation": 1, "reason": "OWNER_EXIT" }
En aktiv leaseeier kan eksplisitt be om personvernvennlige visningsmetadata for sin nåværende binding:
{ "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"
}
}
Denne valgfri statushandlingen er avgrenset av den ugjennomsiktige eieren, autentisert administrert API-nøkkel, og eksakt
aktiv generasjon i én databasetransaksjon. displayName er kun det trimmede konfigurerte
tilkoblingsnavnet; det er null når det ikke finnes et sikkert konfigurert navn. OmniRoute erstatter aldri en
e-post eller generert kontoidentitet. Leverandørverdien er en ikke-sensitiv visningsetikett og aldri
en generert kompatibel-leverandøridentifikator. Legitimasjon, tokens, informasjonskapsler, rå tilkoblings- eller API-nøkkel-ID-er,
eier-hashes, avgrensningshemmeligheter og interne rutingsdata er ekskludert.
Feil nøkkel, feil eier, utdatert generasjon, manglende, utløpte, frigitte og ugyldige oppslag returnerer alle
den samme 409 LEASE_FENCE_STALE-feilen uten tilkoblingsmetadata. En klient som mottok kapasitets-venteresponsen har ingen aktiv binding å inspisere. Når ruting overfører en aktiv lease,
forblir den samme generasjonen gyldig, og status returnerer atomisk den nye bindingen, aldri den gamle.
Eksisterende klienter forblir uendret fordi anskaffelses-, fornyelses-, frigjørings- og ventende responser beholder
sine tidligere former.
Denne serverkontrakten endrer ikke standard OpenAI Codex /status. Standard Codex rapporterer for øyeblikket sin
modellleverandør og innebygde autentiserings-/kontostatus, men gjengir ikke vilkårlige tilpassede
leverandørkontometadata; en senere klientintegrasjon må kalle denne handlingen og bestemme hvordan
connection.displayName skal vises.
Hver administrerte inferensforespørsel leverer deretter begge kontrollhodene:
X-OmniRoute-Lease-Owner: vlo_<43-base64url-characters>
X-OmniRoute-Lease-Generation: 1
Den eksakte eieren, generasjonen, aktive tilkoblingen og autentiserte API-nøkkelen er avgrenset umiddelbart før hvert støttet oppstrømsforsøk. Å gjenta eier og generasjon med en annen nøkkel mislykkes selv når den nøkkelen tillater den samme tilkoblingen. Rå eiere blir ikke lagret, logget, beholdt i forespørselssnapshotet, eller videresendt oppstrøms.
Midlertidig strid returnerer HTTP 429 med Retry-After og:
{
"state": "WAITING_FOR_CAPACITY",
"error": { "type": "lease_error", "code": "LEASE_CAPACITY_UNAVAILABLE" },
"reason": "NO_FREE_ELIGIBLE_CONNECTION",
"retryAfter": 30
}
Denne responsen betyr bare at det vanlige kvalifiserte settet var ikke-tomt og hver ledige kandidat var holdt av en fremmed aktiv lease. Ikke-støttede modeller/leverandører, policy-mismatch, nedkjøling, kvote, helse og andre vanlige kvalifikasjonsfeil beholder sine eksisterende OmniRoute-responser.
x-omniroute-compression
Per-forespørselsoverstyring av komprimeringsplanen. Høyest presedens – slår rutingskombinasjonsoverstyringen, den aktive profilen, autoutløseren og panelstandard. Verdier:
| Verdi | Effekt |
|---|---|
off | Ingen komprimering for denne forespørselen. |
default | Den panelavledede standardprofilen (ignorerer den aktive profilen). Tapsgivende motorer er slått av. |
safe | Kun deduplisering og mellomromsfalding. |
allow-lossy | Behold operatørplanen for denne forespørselen, inkludert sammendrag og stilomskrivinger. |
engine:<id> | En enkelt motor når aktivert, f.eks. engine:rtk. Per-forespørsel opt-in for den motoren. |
<combo> | En navngitt kombinasjon, matchet etter navn (ikke-sensitiv for store/små bokstaver) først, deretter etter ID. |
Merknader:
- Ukjente verdier ignoreres (forespørselen avvises aldri); oppløsningen faller tilbake til den normale operatørpresedensen.
- Hvis flere kombinasjoner deler et navn, send kombinasjons-ID-en for et deterministisk treff.
- En kombinasjon hvis navn er
offellerdefaultkan ikke velges etter navn (disse nøkkelordene tolkes først); referer til en slik kombinasjon med dens ID. - Hovedkomprimeringsbryteren er en hard port: når komprimering er globalt deaktivert, kan denne overskriften ikke aktivere den.
Den anvendte planen gjentas i responsheaderen:
X-OmniRoute-Compression: <mode>; source=<source>
hvor <source> er en 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": "The food was delicious"
}
Tilgjengelige leverandører: Nebius, OpenAI, Mistral, Together AI, Fireworks, NVIDIA, OpenRouter, Jina AI.
Katalog-ID-er er provider/model (eksempel: jina-ai/jina-embeddings-v5-omni-small). Bare Jina-modell-ID-er som vises i registeret (for eksempel jina-embeddings-v5-text-small, jina-reranker-v3.5) løses også. Jina embed/rerank/classify/segment bruker først dashboard jina-ai-legitimasjon; JINA_AI_API_KEY er en fallback bare når ingen dashboard-nøkkel eksisterer. jina-reader-kortet er kun Reader / r.jina.ai (POST /v1/web/fetch) og leverer aldri embeddings eller rerank.
Registermodeller som annonserer multimodal støtte aksepterer også opptil 32 leverandørnøytrale strukturerte
elementer. Medieelementtyper er text, image, audio, video og document. Deres mediekilde
er enten {"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,
og familiealiaset jina-ai/jina-embeddings-v5-omni → omni-small) aksepterer også Jinas native
EmbeddingsV5Request-dokumenter og videresender dem intakte til https://api.jina.ai/v1/embeddings:
{
"model": "jina-ai/jina-embeddings-v5-omni-small",
"task": "retrieval.query",
"normalized": true,
"input": [
{ "text": "a red bicycle" },
{ "image": "https://example.com/bike.png" },
{
"content": [{ "text": "caption" }, { "image": "data:image/png;base64,..." }]
}
]
}
Native { image | audio | video | pdf }-verdier kan være en offentlig HTTPS-URL, en data:-URI, eller rå
base64. OmniRoute strengifiserer ikke disse objektene eller henter native bilde-URL-er – Jina henter
offentlige medier selv. Ekstra Jina-felt (task, normalized, truncate, embedding_type)
videresendes. Tekst-eneste Jina SKU-er avviser fortsatt ikke-tekstdokumenter.
Sikkerhets- og transportgrenser:
- Eksterne medie-URL-er må være offentlige HTTPS. Kanoniske
{type,source:url}-elementer hentes på serversiden (omdirigeringsrevalidering, tidsavbrudd, størrelsesbegrensninger, offentlig DNS, tilkoblingspinning) og innlines før leverandørkallet. Jina-native{image:"https://..."}-elementer videresendes som de er etter samme offentlig-HTTPS-sjekk; Jina henter URL-en. - Innebygd base64-media er begrenset til 8 MiB dekodet per element og 16 MiB dekodet over hele forespørselen.
Leverandøroversettelse (kanoniske elementer videresendes aldri uendret):
- Jina multimodale modeller: hvert toppnivåelement blir ett modalitetsnøkkelobjekt
(
text/image/audio/video/pdf) ved hjelp av data-URI-er for innebygd media; én vektor per toppnivåelement. - Gemini Embedding 2-familien: én toppnivåmatrise blir en enkelt native
models/{model}:embedContent-forespørsel medcontent.parts(textellerinline_data). - Ukjente/dynamiske modeller uten eksplisitt modalitetsmetadata avviser strukturert input med HTTP 400.
{
"model": "jina-ai/jina-embeddings-v5-omni-small",
"input": [
{ "type": "text", "text": "A red bicycle" },
{
"type": "image",
"source": { "type": "url", "url": "https://example.com/bicycle.png" }
}
],
"dimensions": 512,
"encoding_format": "float"
}
Ikke-støttede modell-/modalitetskombinasjoner returnerer HTTP 400 i stedet for å tvinge elementet. Ikke-input utvidelsesfelt på eldre streng-/tokenforespørsler fortsetter å passere uendret.
# List all embedding models
GET /v1/embeddings
Bildegenerering
POST /v1/images/generations
Authorization: Bearer your-api-key
Content-Type: application/json
{
"model": "openai/gpt-image-2",
"prompt": "A beautiful sunset over mountains",
"size": "1024x1024"
}
Tilgjengelige leverandører: OpenAI (GPT Image 2), xAI (Grok Image), Together AI (FLUX), Fireworks AI, Nebius (FLUX), Hyperbolic, NanoBanana, OpenRouter, SD WebUI (lokal), ComfyUI (lokal).
# List alle bildemodeller
GET /v1/images/generations
Dokument-OCR
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 velger OCR-leverandøren via et provider/model-prefiks; en ren modell-ID (f.eks.
mistral-ocr-latest) løses til sin registrerte leverandør, og en utelatt model bruker som standard
Mistral (mistral-ocr-latest). Registrerte leverandører (open-sse/config/ocrRegistry.ts):
| Leverandør-ID | Modell-ID | model-verdi | Merknader |
|---|---|---|---|
mistral | mistral-ocr-latest | mistral/mistral-ocr-latest (eller bare mistral-ocr-latest) | Synkron – svaret returneres direkte fra det enkelte oppstrømskallet. |
azure-document-intelligence | prebuilt-read | azure-document-intelligence/prebuilt-read | Asynkron oppstrøm (analyze + polling) – se nedenfor. |
vertex-deepseek-ocr | deepseek-ocr-maas | vertex-deepseek-ocr/deepseek-ocr-maas | Synkron, via Vertex AI sin openapi/chat/completions partner-endepunkt – se nedenfor for autentisering/URL. |
Alle tre leverandørene svarer i samme Mistral-formede kropp:
{
"pages": [{ "index": 0, "markdown": "# Extracted text..." }],
"model": "mistral-ocr-latest",
"usage_info": { "pages_processed": 1 }
}
Azure Document Intelligence polling-flyt
Azure Document Intelligence sin analyze-API er asynkron: den første forespørselen returnerer en
Operation-Location-header i stedet for en kropp, og resultatet må polles for. Håndtereren
(open-sse/handlers/ocr.ts) poller den URL-en hvert sekund i opptil 30 forsøk, feiler raskt (fortsetter
ikke å polle) ved et ikke-ok poll-svar eller en "failed"-status, og returnerer 504 hvis
operasjonen fortsatt kjører etter at forsøksbudsjettet er brukt opp. Det endelige Azure-svaret er
normalisert til samme pages/markdown-form som brukes av Mistral før det returneres til
anroperen, slik at klientkoden ikke trenger å spesialbehandle leverandøren.
Vertex AI DeepSeek OCR autentisering og endepunktsoppløsning
vertex-deepseek-ocr gjenbruker den samme Vertex AI-autentiseringen OmniRoute allerede støtter for
chat/bilde-trafikk (open-sse/executors/vertex.ts): tilkoblingens API-nøkkel er enten en
Service Account JSON-legitimasjon (utvekslet for et kortvarig OAuth-tilgangstoken via JWT-bearer-
flyten) eller et allerede preget OAuth-tilgangstoken brukt som det er. Oppstrøms endepunkt-URL er Vertex'
generiske openapi/chat/completions partner-endepunkt, bygget fra tilkoblingens prosjekt og
region – en eksplisitt providerSpecificData.project/providerSpecificData.region vinner alltid;
ellers er prosjektet avledet fra Service Account JSON sin project_id og regionen
standardiseres til us-central1. Begge oppløsningene skjer i open-sse/handlers/ocr.ts
(resolveVertexOcrAccessToken, resolveVertexOcrBaseUrl), konsumert av
src/app/api/v1/ocr/route.ts før den sendes til handleOcr.
Liste modeller
GET /v1/models
Authorization: Bearer your-api-key
→ Returnerer alle chat-, embedding- og bildemodeller + kombinasjoner i OpenAI-format
Modell-ID-prefikser (?prefix=)
De fleste modeller annonseres under et leverandørprefiks. Hvilket prefiks du får, styres av
MODELS_CATALOG_PREFIX_MODE-funksjonsflagget, og kan overstyres per forespørsel med en
spørringsparameter – nyttig for en klient som ønsker en ren liste uten å endre den serveromfattende
innstillingen for alle andre:
GET /v1/models?prefix=alias # én ID per modell – det korte alias-prefikset
GET /v1/models?prefix=dual # begge former (serverstandard)
GET /v1/models?prefix=canonical # kun det fulle leverandør-ID-prefikset
| Modus | Sender ut | Merknader |
|---|---|---|
dual | cc/claude-sonnet-4-6 og claude/claude-sonnet-4-6 | Standard. Begge ID-ene ruter til samme modell; beholdt slik at klientkonfigurasjoner som hardkodet en av formene, fortsetter å fungere. Dobler omtrent katalogen. |
alias | cc/claude-sonnet-4-6 | Én oppføring per modell. Leverandører uten et distinkt alias sender fortsatt ut sin oppføring, så ingenting går tapt. |
canonical | claude/claude-sonnet-4-6 | Én oppføring per modell under det fulle leverandør-ID-prefikset. Leverandører uten et distinkt alias (f.eks. antigravity/…, agy/…) sender ut sin enkelt-ID her også, så ingenting går tapt. |
Et dual-modus speil kan også gjenkjennes uten spørringsparameteren: det har et parent-felt
som peker til den primære ID-en.
Klienter som gjengir en modellvelger, bør be om ?prefix=alias – dette er hva
OmniCopilot VS Code-utvidelsen gjør.
Modeller uten "tenkning"-variant
For Claude-modeller med tenkeevne annonserer /v1/models også en uten-tenkning-variant hvis ID er prefikset med claude-3-omniroute-no-thinking/:
claude-3-omniroute-no-thinking/<provider>/<model>
Ved å velge denne ID-en (f.eks. i en Claude Code-konfigurasjon som alltid legger ved en thinking-blokk) løses den tilbake til den virkelige <provider>/<model> med resonnement undertrykt – thinking:{type:"disabled"} på /v1/messages-stien, eller reasoning/reasoning_effort-feltene fjernet på /v1/chat/completions-stien. Varianten er kun oppført for Claude-familie-modeller som støtter tenkning og respekterer disabled (så f.eks. adaptive-only-modeller som avviser disabled er ekskludert). Operatører kan tvinge varianten på eller av per modell via ModelSpec.noThinkingAlias.
Manifest for leverandørplugin
GET /api/v1/provider-plugin-manifest
Returnerer det JSON-sikre manifestet for leverandørplugin som brukes av Bifrost, CLIProxyAPI og fremtidige sidecar-rutere. Svaret genereres fra TypeScript-leverandørregisteret og ekskluderer bevisst OAuth-klienthemmeligheter, kjøretidsmiljøoppløsning, utførerfunksjoner, forespørselshoder og kontodata.
Bruk dette endepunktet når en sidecar kjører utenfor prosessen og ikke kan importere open-sse/config/providerPluginManifestRegistry.ts direkte.
Kompatibilitetsendepunkter
| Metode | Bane | Format |
|---|---|---|
| POST | /v1/chat/completions | OpenAI |
| POST | /v1/messages | Anthropic |
| POST | /v1/responses | OpenAI-svar |
| POST | /v1/embeddings | OpenAI |
| POST | /v1/images/generations | OpenAI-bilder |
| POST | /v1/images/edits | OpenAI-bilder (rediger/inpaint) |
| POST | /v1/videos/generations | OpenAI-stil videogenerering |
| POST | /v1/music/generations | OpenAI-stil musikkgenerering |
| POST | /v1/audio/transcriptions | OpenAI-lyd (STT) |
| POST | /v1/audio/speech | OpenAI TTS (returnerer lydkropp) |
| POST | /v1/rerank | Cohere/Voyage-stil rerank |
| POST | /v1/classify | Jina klassifiser (api.jina.ai) |
| POST | /v1/segment | Jina segmenterer (segment.jina.ai) |
| POST | /v1/moderations | OpenAI-modereringer |
| 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}/ | OpenAI katalogalias |
| GET | /api/v1/vscode/{token}/models | OpenAI modellalias |
| POST | /api/v1/vscode/{token}/chat/completions | OpenAI tokenisert alias |
| POST | /api/v1/vscode/{token}/responses | OpenAI-svar tokenisert alias |
| POST | /api/v1/vscode/{token}/api/chat | Ollama tokenisert alias |
| GET | /api/v1/vscode/{token}/api/tags | Ollama tags tokenisert alias |
Alle POST-ruter følger samme form: Bearer your-api-key + Zod-validert JSON-kropp (v1RerankSchema, v1ModerationSchema, v1AudioSpeechSchema, osv., se src/shared/validation/schemas.ts). 4xx returneres ved skjemafeil.
For klienter som ikke kan legge ved Authorization: Bearer ..., aksepterer OmniRoute også API-nøkler i URL-en via enten spørrestrengkompatibilitet (?token=..., ?apiKey=..., ?api_key=..., ?key=...) eller de dedikerte /api/v1/vscode/{token}/... endepunktene dokumentert nedenfor.
# Rerank (skyregisterleverandør, eller en OpenAI-kompatibel leverandørnode som "<prefix>/<model>")
POST /v1/rerank { "model": "jina-ai/jina-reranker-v3.5", "query": "...", "documents": ["..."] }
# Jina klassifiser (Foundation API-legitimasjon)
POST /v1/classify { "model": "jina-embeddings-v5-text-small", "input": ["..."], "labels": ["a", "b"] }
# Jina segmenterer
POST /v1/segment { "content": "...", "return_chunks": true }
# Jina søk (s.jina.ai; leverandøralias: jina-search, jina-ai, jina)
POST /v1/search { "query": "...", "provider": "jina-search" }
# Modereringer
POST /v1/moderations { "model": "omni-moderation-latest", "input": "..." }
# TTS — returnerer audio/mpeg (eller ønsket format) kropp
POST /v1/audio/speech { "model": "openai/tts-1", "input": "Hello", "voice": "alloy" }
# Bilde redigering (multipart)
POST /v1/images/edits -F image=@input.png -F prompt="..." -F mask=@mask.png
# Video / musikkgenerering (leverandør-prefiksert modell-ID)
POST /v1/videos/generations { "model": "runway/gen-3", "prompt": "..." }
POST /v1/music/generations { "model": "suno/v3.5", "prompt": "..." }
Rerank-leverandørnoder:
POST /v1/rerankruter også til OpenAI-kompatible leverandørnoder (oMLX, vLLM, Infinity, TEI bak en gateway, …) adressert som<node-prefix>/<model>. Loopback-noder (localhost,127.0.0.1,172.16.0.0/12) er alltid kvalifiserte. Noder på en hvilken som helst annen vert — en LAN-boks eller Tailscale-peer — er kvalifiserte kun når operatøren aktivererRERANK_REMOTE_PROVIDER_NODESfunksjonsflagget og nodens base-URL passerer leverandørens utgående URL-policy (OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS/OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS); sky-metadata-verter rutes aldri til. Minne-motorens rerank-trinn kaller denne ruten over loopback, så den samme regelen styrerrerankProviderModeli minneinnstillingene.Lokale serverformer: noden kalles på
<base>/v1/rerankog, ved 404, på<base>/rerank(Infinity, TEI). Oppstrøms-kroppen inneholder både Cohere/OpenAI-stavemåten (documents,return_documents) og TEI-stavemåten (texts,return_text), og oppstrøms-svaret normaliseres til Cohere-konvolutten: TEIs bare[{index, score, text}],{results: [{index, score}]}fra tynne gateways, og Voyage-stil{data: [...]}kommer alle tilbake til klienten som{results: [{index, relevance_score, document?}]}, sortert etter poengsum og begrenset tiltop_n.
Oppdagelse av leverandørnoder: Modeller på en OpenAI-kompatibel leverandørnode vises i
GET /v1/modelsunder nodeprefikset. Rader som ikke inneholder endepunktmetadata (typisk for lokale/v1/models-oppføringer) arver nodensapiType, slik at modellene til enembeddings-node ertype: "embedding"og enrerank-nodes modeller ertype: "rerank"i stedet for å standardisere til chat; en eksplisittsupportedEndpointspå en synkronisert eller manuelt lagt til rad har fortsatt forrang.
Dedikerte leverandørruter
POST /v1/providers/{provider}/chat/completions
POST /v1/providers/{provider}/embeddings
POST /v1/providers/{provider}/images/generations
Leverandørprefikset legges automatisk til hvis det mangler. Modeller som ikke stemmer overens returnerer 400.
Filer API
OpenAI-kompatibelt filendepunkt for batch-inn/utdata og opplasting av filer med spesifikt formål.
| Metode | Sti | Beskrivelse |
|---|---|---|
| POST | /v1/files | Last opp en fil (multipart: file, purpose, expires_after[anchor], expires_after[seconds]) — maks 512 MiB |
| GET | /v1/files | List filer for den autentiserte API-nøkkelen |
| GET | /v1/files/[id] | Hent en fils metadata |
| DELETE | /v1/files/[id] | Slett en fil |
| GET | /v1/files/[id]/content | Strøm den rå filkroppen tilbake |
Autentisering: Bearer API-nøkkel — filer er begrenset per API-nøkkel via getApiKeyRequestScope. En nøkkel ser, laster ned og sletter kun sine egne filer; en dashbord-sesjon uten nøkkel leser hele instansen; en fil uten eier (anonym eller dashbord-sesjon opplasting) nektes tilgang for alle ikke-sesjonsanropere. GET /v1/files avviser en anonym anroper — og en presentert nøkkel som ikke løses — med 401 selv når REQUIRE_API_KEY=false, i stedet for å liste alle leietakeres filer (GHSA-m3hp-hq9g-fpmv, GHSA-2jm2-mpx8-6523).
Batcher API
OpenAI-kompatibel batchbehandling.
| Metode | Sti | Beskrivelse |
|---|---|---|
| POST | /v1/batches | Opprett batch — kropp validert av v1BatchCreateSchema (input_file_id, endpoint, completion_window) |
| GET | /v1/batches | List batcher |
| GET | /v1/batches/[id] | Hent batchstatus + request_counts |
| DELETE | /v1/batches/[id] | Slett en fullført/mislykket batch |
| POST | /v1/batches/[id]/cancel | Avbryt en pågående batch |
Autentisering: Bearer API-nøkkel. Batcher er begrenset per API-nøkkel under den samme treveisregelen som filer: kun egen nøkkel, dashbord-sesjon instans-bredt, null-eier poster nektes tilgang for alle ikke-sesjonsanropere (hent, slett, avbryt, og input_file_id-sjekken ved opprettelse). GET /v1/batches avviser en anonym anroper med 401 selv når REQUIRE_API_KEY=false.
Søke-API
Abstraksjon for web-/søkeleverandører (Tavily, Brave, Exa, Serper, osv.).
| Metode | Sti | Beskrivelse |
|---|---|---|
| GET | /v1/search | List opp konfigurerte søkeleverandører + funksjonalitet |
| POST | /v1/search | Kjør en søkeforespørsel — kropp validert av v1SearchSchema, støtter hurtigbufring/sammenføyning |
| GET | /v1/search/analytics | Statistikk for treff/ventetid/hurtigbuffer per leverandør |
Autentisering: Bearer API-nøkkel (extractApiKey + isValidApiKey). Søkepolicy håndheves via enforceApiKeyPolicy.
Web Hent-API
Hent innhold fra en URL via en konfigurert web-hent-leverandør (Firecrawl, Jina Reader, Tavily Extract, TinyFish Fetch, Nimble Extract).
| Metode | Sti | Beskrivelse |
|---|---|---|
| POST | /v1/web/fetch | Hent/skrap en URL — kropp validert av v1WebFetchSchema |
Autentisering: Bearer API-nøkkel (extractApiKey + isValidApiKey). Policy håndheves via enforceApiKeyPolicy.
Kvoteklar tilbakefall (#8297): når ingen eksplisitt provider er gitt, gjennomgås puljen (firecrawl → jina-reader → tavily-search → tinyfish → nimble-search) i en fast prioritetsrekkefølge (fyll-først) — en hastighetsbegrenset-men-konfigurert leverandør hoppes over i stedet for å kortslutte forespørselen, og en gjenforsøkbar/kvote oppstrømsfeil (HTTP 429 alltid; 402/403 for Firecrawl/Tavily/TinyFish kvotebaserte gratislag — ikke for Jina Reader, og aldri for en enkel 400 dårlig forespørsel) faller gjennom til neste ukrediterte leverandør ved forespørselstidspunktet. Når hver leverandør i puljen er utmattet, returnerer endepunktet en enkelt 429 (med en Retry-After-header) i stedet for den forrige generiske 400. Når en eksplisitt provider blir forespurt, er det ingen stille tilbakefall — en hastighetsbegrenset eller feilende eksplisitt leverandør viser sin egen feil (429 hvis hastighetsbegrenset, ellers oppstrømsstatusen).
WebSocket Strømming
GET /v1/ws?handshake=1
Validerer et WebSocket-oppgraderingshåndtrykk og returnerer eksempelmeldinger for trådprotokollen (request, cancel). Faktiske WS-rammer håndteres av den medfølgende WS-serveren utenfor Next.js-rutetabellen.
Autentisering: Bearer API-nøkkel under håndtrykket.
Responses API over WebSocket (kun codex)
# Samme vert:port som HTTP API-et (standard 20128); oppgrader tilkoblingen:
wscat -c "ws://localhost:20128/v1/responses?api_key=<OMNIROUTE_API_KEY>"
# (eller: -H "Authorization: Bearer <OMNIROUTE_API_KEY>")
# Første ramme MÅ være response.create:
{ "type": "response.create", "model": "gpt-5.5", "input": [ { "role": "user", "content": "hi" } ] }
En Responses-API-over-WebSocket-proxy er koblet eksklusivt til codex (ChatGPT-backend). Den lytter på samme port som API-et/dashbordet på stiene /v1/responses, /responses og /api/v1/responses. Ved den første response.create-rammen autentiserer + forbereder den via den interne codex-responses-ws-broen, velger en codex OAuth-tilkobling, og tunnelerer til wss://chatgpt.com/backend-api/codex/responses via wreq-js-transporten. Ikke-codex-modeller avvises (codex_ws_provider_required). For kvotedelingsruting bruk model: "qtSd/<group>/codex/<model>". Implementert i app/server-ws.mjs + scripts/dev/responses-ws-proxy.mjs + src/app/api/internal/codex-responses-ws/route.ts.
Autentisering: Bearer API-nøkkel under håndtrykket. Den medfølgende HTTP-serveren (server-ws.mjs) må være det aktive inngangspunktet (det er den som standard når app/server-ws.mjs eksisterer).
Modell-ID: bruk den rene ChatGPT-ID-en (ingen codex/-prefiks)
OpenAI Codex CLI validerer modellnavnet på klientsiden når supports_websockets = true og avviser leverandør-prefiksede ID-er som codex/gpt-5.5 (The 'codex/gpt-5.5' model is not supported when using Codex with a ChatGPT account). Send den rene ID-en (f.eks. gpt-5.5). OmniRoutes bro er kun for codex, så den løser en ren ID på nytt som en codex-modell (resolveCodexWsModelInfo) før den tunnelerer oppstrøms — selv om en ren gpt-5.5 ellers ville rutet til en annen leverandør over HTTP.
Konfigurere OpenAI Codex CLI
Pek Codex CLI mot OmniRoute ved å legge til en tilpasset leverandør med WebSocket-støtte i ~/.codex/config.toml (bruk en separat CODEX_HOME for å unngå å endre en eksisterende konfigurasjon):
model = "gpt-5.5" # ren ID — IKKE "codex/gpt-5.5"
model_provider = "omniroute"
[model_providers.omniroute]
name = "OmniRoute (WS)"
base_url = "http://localhost:20128/v1" # ingen avsluttende skråstrek; WS-URL-en er avledet (bruk https/wss i produksjon)
wire_api = "responses" # eneste støttede verdi siden februar 2026
supports_websockets = true # aktiverer Responses-over-WS-transporten
env_key = "OMNIROUTE_API_KEY" # inneholder OmniRoute API-nøkkelen (Bearer)
export OMNIROUTE_API_KEY=sk-... # en OmniRoute API-nøkkel (hvilken som helst nøkkel hvis REQUIRE_API_KEY=false)
codex exec "Responda apenas: PONG"
CLI-en oppgraderer base_url + /responses til en WebSocket, og OmniRoute tunnelerer den til den valgte codex OAuth-tilkoblingen. Validert ende-til-ende mot den lokale serveren: ChatGPT returnerer codex.rate_limits + response.created og strømmer fullføringen.
Kvoter og rapportering av problemer
| Metode | Sti | Beskrivelse |
|---|---|---|
| GET | /v1/quotas/check | Forhåndsvalidere kvote for en provider + accountId før utstedelse av en registrert nøkkel |
| POST | /v1/issues/report | Rapporter en kvote-/nøkkelutstedelsesfeil til GitHub (krever GITHUB_ISSUES_REPO + token) |
Autentisering: Bearer API-nøkkel (isAuthenticated).
Selvbetjent bruk (/api/usage/om-usage)
Enhver API-nøkkel kan lese sin egen bruk og kvoter – ingen administrasjonsautentisering. Dette er endepunktet en klient (CLI, OmniCopilot-panelet) bruker for å vise en nøkkelinnehaver deres forbruk.
# Tekstformat (den historiske kontrakten – ren tekst for en terminal)
curl -H "Authorization: Bearer <your-api-key>" \
http://localhost:20128/api/usage/om-usage
# Strukturert format – hva et brukergrensesnitt forbruker
curl -H "Authorization: Bearer <your-api-key>" \
"http://localhost:20128/api/usage/om-usage?format=json"
Nøkkelen må ha allowUsageCommand aktivert (deaktivert som standard – dashbordets API-nøkkelbehandler veksler den per nøkkel). Uten den svarer endepunktet med 403.
?format=json returnerer en diskriminert form slik at en anroper aldri leser et datafelt fra et avslag. Ved suksess:
{
"allowed": true,
// kun til stede når nøkkelen har valgt å bruke forbruksgrenser per nøkkel (daglig/ukentlig USD):
"personal": {
"dailySpentUsd": 1.25,
"dailyLimitUsd": 5,
"dailyResetAtIso": "…",
"weeklySpentUsd": 8,
"weeklyLimitUsd": 20,
"weeklyResetAtIso": "…" /* … */,
},
// øyeblikksbilde av valgt leverandørkvote, eller null når ingenting er bufret ennå:
"provider": {
"connectionId": "…",
"provider": "claude",
"plan": "…",
"quotas": {/* … */},
},
// øyeblikksbilde av hver tilkobling, slik at et brukergrensesnitt kan vise flere leverandører side om side:
"providers": [
{ "connectionId": "…", "provider": "claude" /* … */ },
{ "provider": "codex" /* … */ },
],
}
Ved avslag (401 ugyldig nøkkel / 403 ikke tillatt) returnerer samme rute { "allowed": false, "error": { "message": "…" } } — en tilstedeværende, men tom personal/provider (nøkkel tillatt, ingenting lært ennå) er en annen tilstand enn et avslag, og kun JSON-formatet skiller dem.
Autentisering: anroperens egen Bearer API-nøkkel, validert med isValidApiKey — dette er ikke administrasjonsgrensesnittet (/api/keys/…), som forblir bak requireManagementAuth.
Semantisk hurtigbuffer
# Hent hurtigbufferstatistikk
GET /api/cache/stats
# Tøm alle hurtigbuffere
DELETE /api/cache/stats
Eksempel på respons:
{
"semanticCache": {
"memorySize": 42,
"memoryMaxSize": 500,
"dbSize": 128,
"hitRate": 0.65
},
"idempotency": {
"activeKeys": 3,
"windowMs": 5000
}
}
Latenspåvirkning
Et semantisk hurtigbuffer-TREFF serverer responsen fra hurtigbufferen uten et oppstrømsanrop, så den rapporterte X-OmniRoute-Response-Latency er nær null (uavhengig av den opprinnelige oppstrømslatensen). Latenssensitive klienter (benchmarking, p50/p99-overvåking) bør sjekke X-OmniRoute-Cache-Latency responsheaderen:
| Verdi | Betydning |
|---|---|
synthetic | Respons servert fra hurtigbuffer; latens er ikke reell oppstrømstid |
| (fraværende) | Respons fra reelt oppstrømsanrop |
Hurtigbufferomgåelse per nøkkel
API-nøkler kan velge bort lesing fra semantisk hurtigbuffer via cacheDefaultMode:
| Verdi | Oppførsel |
|---|---|
legacy | Normal hurtigbuffer-oppførsel (standard) |
bypass | Hopp over hurtigbuffersøk helt; treff alltid oppstrøms |
Angis ved nøkkelopprettelse (POST /api/keys) eller oppdatering (PATCH /api/keys/[id]):
{ "cacheDefaultMode": "bypass" }
Omgåelse per forespørsel
Enhver forespørsel kan omgå hurtigbufferen uavhengig av nøkkelinnstillinger:
X-OmniRoute-No-Cache: true
Dashboard og administrasjon
Administrasjonsruter (/api/* unntatt offentlig auth/login) er ikke autorisert av vanlige inferens API-nøkler. Legitimasjonsfamilier, omfang og curl-eksempler: Administrasjonsautentisering.
Autentisering
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/auth/login | POST | Logg inn |
/api/auth/logout | POST | Logg ut |
/api/settings/require-login | GET/PUT | Veksle påkrevd innlogging |
Leverandøradministrasjon
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/providers | GET/POST | Liste / opprett leverandører |
/api/providers/[id] | GET/PUT/DELETE | Administrer en leverandør |
/api/providers/[id]/test | POST | Test leverandørforbindelse |
/api/providers/[id]/models | GET | List leverandørmodeller |
/api/providers/validate | POST | Validere leverandørkonfigurasjon |
/api/providers/bulk | POST | Legg til API-nøkler i bulk for ÉN leverandør |
/api/providers/import | POST | Importer en heterogen leverandørLISTE fra en parset CSV/JSON-fil (#6836); delvise feilresultater per rad |
/api/provider-nodes* | Various | Administrasjon av leverandørnoder |
/api/provider-models | GET/POST/PATCH/DELETE | Egendefinerte modeller (legg til, oppdater, skjul/vis, slett) |
OAuth-flyter
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/oauth/[provider]/[action] | Various | Leverandørspesifikk OAuth |
Ruteføring og konfigurasjon
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/models/alias | GET/POST | Modellaliaser |
/api/models/catalog | GET | Alle modeller etter leverandør + type |
/api/combos* | Various | Kombinasjonsadministrasjon |
/api/keys* | Various | API-nøkkeladministrasjon |
/api/pricing | GET | Modellpriser |
Bruk og analyse
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/usage/history | GET | Brukshistorikk |
/api/usage/logs | GET | Brukslogger |
/api/usage/request-logs | GET | Logger på forespørselsnivå |
/api/usage/[connectionId] | GET | Bruk per tilkobling |
/api/usage/token-limits | GET/POST/DELETE | Token-grensebudsjetter per API-nøkkel |
/api/usage/model-latency-stats | GET | Rullerende aggregering av latens per leverandør/modell (avg/p50/p95/p99, success rate); filtre: windowHours/minSamples/maxRows/provider/model (#6873) |
/api/usage/cache-health | GET | Helsestatus for hurtigbuffer for prompter over call_logs — skrive-/leseforhold, p50/p90/p99 skrive-størrelsesfordeling, konsentrasjon av tunge skrivinger, splitt per modell, og en healthy/degraded/thrash/no-data-vurdering; spørringsparametere range (1h|24h|7d|30d, standard 24h) og valgfri model (#8827) |
Innstillinger
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/settings | GET/PUT/PATCH | Generelle innstillinger |
/api/settings/proxy | GET/PUT | Nettverksproxy-konfigurasjon |
/api/settings/proxy/test | POST | Test proxy-tilkobling |
/api/settings/ip-filter | GET/PUT | IP-tillatelsesliste/blokkeringsliste |
/api/settings/thinking-budget | GET/PUT | Tenke-/resonnerings-forespørsel omskrivingsmodus (passthrough / auto-strip / custom / adaptive). Uavhengig av komprimering. Se THINKING_BUDGET.md. |
/api/settings/system-prompt | GET/PUT | Global systemprompt |
/api/settings/compression | GET/PUT | Global komprimeringskonfigurasjon |
/api/settings/purge-request-history | POST | Slett forespørselsloggrader og lokale call-log-artefakter |
Kontekst og komprimering
| Endpoint | Method | Description |
|---|---|---|
/api/compression/preview | POST | Forhåndsvis av/lett/standard/aggressiv/ultra/RTK/stablet komprimering |
/api/compression/language-packs | GET | List tilgjengelige Caveman språkpakker |
/api/compression/rules | GET | List Caveman regelmetadata |
/api/context/caveman/config | GET/PUT | Caveman-spesifikke innstillinger alias |
/api/context/rtk/config | GET/PUT | RTK-spesifikke innstillinger, inkludert egendefinerte filtre og oppbevaring av rådatautdata |
/api/context/rtk/filters | GET | RTK filterkatalog og diagnostikk for egendefinerte filtre |
/api/context/rtk/test | POST | Kjør RTK forhåndsvisning/test mot en tekstnyttelast |
/api/context/rtk/raw-output/[id] | GET | Les oppbevart redigert rådatautdata etter peker-ID |
/api/context/combos | GET/POST | Komprimeringskombinasjonsliste/opprett |
/api/context/combos/[id] | GET/PUT/DELETE | Komprimeringskombinasjonsdetaljer/oppdater/slett |
/api/context/combos/[id]/assignments | GET/PUT | Tilordne komprimeringskombinasjoner til rutingskombinasjoner |
/api/context/analytics | GET | Komprimeringsanalyse alias |
Overvåking
| Endpoint | Method | Description |
|---|---|---|
/api/sessions | GET | Sporing av aktive sesjoner |
/api/rate-limits | GET | Hastighetsbegrensninger per konto |
/api/monitoring/health | GET | Helsetilstandssjekk + leverandørsammendrag (catalogCount, configuredCount, activeCount, monitoredCount). Administrasjonsvisningen inkluderer credentialHealth: probe-cache skalarer, failedConnections når failed>0, og staleDbNonOkCount (SQLite sticky test_status, ikke måleren). Se MONITORING_GUIDE.md. |
/api/cache/stats | GET/DELETE | Cache-statistikk / tøm |
/api/modality-bridge/stats | GET | In-memory attempts, suksesser/bridged, feil, cache-treff, totalLatencyMs, latencySamples, prøve-denominert averageLatencyMs, og tid for siste bruk (tilbakestilles ved omstart; administrasjonsautentisering) |
/api/modality-bridge/video/runtime | GET | Streng trusted-loopback sjekk før administrasjonsautentisering/probe; renset FFmpeg/ffprobe tilgjengelighet og versjoner (ingen lagring) |
/api/modality-bridge/video/extract | POST | Intern autentisert trusted-loopback byte-megler; 50 MiB inndata, begrenset kø/32 MiB utdata, 503 kapasitet, 499 frakobling, 504 frist; ikke en offentlig opplastings-API |
Sikkerhetskopiering og eksport/import
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/db-backups | GET | List tilgjengelige sikkerhetskopier |
/api/db-backups | PUT | Opprett en manuell sikkerhetskopi |
/api/db-backups | POST | Gjenopprett fra en spesifikk sikkerhetskopi |
/api/db-backups/export | GET | Last ned database som .sqlite-fil |
/api/db-backups/import | POST | Last opp .sqlite-fil for å erstatte databasen |
/api/db-backups/exportAll | GET | Last ned full sikkerhetskopi som .tar.gz-arkiv |
Skysynkronisering
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/sync/cloud | Various | Skysynkroniseringsoperasjoner |
/api/sync/initialize | POST | Initialiser synkronisering |
/api/cloud/* | Various | Skyadministrasjon |
Tunneler
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/tunnels/cloudflared | GET | Les Cloudflare Quick Tunnel installasjons-/kjøretidsstatus for dashbordet |
/api/tunnels/cloudflared | POST | Aktiver eller deaktiver Cloudflare Quick Tunnel (action=enable/disable) |
/api/tunnels/ngrok | GET | Les ngrok Tunnel kjøretidsstatus for dashbordet |
/api/tunnels/ngrok | POST | Aktiver eller deaktiver ngrok Tunnel (action=enable/disable) |
CLI-verktøy
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/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-kjøretid |
CLI-svar inkluderer: installed, runnable, command, commandPath, runtimeMode, reason.
ACP-agenter
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/acp/agents | GET | List alle oppdagede agenter (innebygde + tilpassede) med status |
/api/acp/agents | POST | Legg til tilpasset agent eller oppdater deteksjonsbuffer |
/api/acp/agents | DELETE | Fjern en tilpasset agent med id spørringsparameter |
GET-svar inkluderer agents[] (id, name, binary, version, installed, protocol, isCustom) og summary (total, installed, notFound, builtIn, custom).
Robusthet og hastighetsbegrensninger
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/resilience | GET/PATCH | Hent/oppdater forespørselskø, tilkoblingsnedkjøling, leverandørbryter og ventetidsinnstillinger |
/api/resilience/reset | POST | Tilbakestill leverandørens strømbrytere |
/api/resilience/model-cooldowns | GET | List aktive per-(leverandør, tilkobling, modell) utestengelser, sortert etter gjenværende tid |
/api/resilience/model-cooldowns | DELETE | Fjern en modellutestengelse — kropp {provider, model} eller {all: true} for å slette alt |
/api/rate-limits | GET | Hastighetsbegrensningsstatus per konto |
/api/rate-limit | GET | Global hastighetsbegrensningskonfigurasjon |
Alle fire
/api/resilience/*-rutene krever administrasjonsautentisering (requireManagementAuth). Se Resilience (utvidet) for en fullstendig oversikt over leverandørbryter kontra tilkoblingsnedkjøling kontra modellutestengelse.
Evalueringer
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/evals | GET/POST | List evalueringssuiter / kjør evaluering |
Policyer
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/policies | GET/POST/DELETE | Administrer rutingpolicyer |
Samsvar
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/compliance/audit-log | GET | Samsvarsrevisjonslogg (siste N) |
v1beta (Gemini-kompatibel)
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/v1beta/models | GET | List modeller i Gemini-format |
/v1beta/models/{...path} | POST | Gemini generateContent-endepunkt |
Disse endepunktene speiler Geminis API-format for klienter som forventer native Gemini SDK-kompatibilitet.
Interne / System-APIer
| Endpoint | Method | Description |
|---|---|---|
/api/init | GET | Sjekk av applikasjonsinitialisering (brukes ved første kjøring) |
/api/tags | GET | Ollama-kompatible modell-tagger (for Ollama-klienter) |
/api/restart | POST | Utløser grasiøs serveromstart |
/api/shutdown | POST | Utløser grasiøs servernedstengning |
/api/system/env/repair | POST | Reparer OAuth-leverandørens miljøvariabler |
Merk: Disse endepunktene brukes internt av systemet eller for Ollama-klientkompatibilitet. De kalles vanligvis ikke av sluttbrukere.
Reparasjon av OAuth-miljøvariabler (v3.6.1+)
POST /api/system/env/repair
Content-Type: application/json
{
"provider": "claude-code"
}
Reparerer manglende eller korrupte OAuth-miljøvariabler for en spesifikk leverandør. Returnerer:
{
"success": true,
"repaired": ["CLAUDE_CODE_OAUTH_CLIENT_ID", "CLAUDE_CODE_OAUTH_CLIENT_SECRET"],
"backupPath": "/home/user/.omniroute/backups/env-repair-2026-04-11.bak"
}
Lydtranskripsjon
POST /v1/audio/transcriptions
Authorization: Bearer your-api-key
Content-Type: multipart/form-data
Transkriber lydfiler ved hjelp av en hvilken som helst konfigurert STT-leverandør. Det første banesegmentet velger den native leverandøren (openai/…, deepgram/…). Gateways som re-eksporterer en annen leverandørs modell bruker en kvalifisert ID (openrouter/deepgram/nova-3).
Forespørsel:
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
}
Eksempel på modell-ID-er: openai/whisper-1 (krever en OpenAI-nøkkel),
openrouter/deepgram/nova-3 (krever en OpenRouter-nøkkel),
deepgram/nova-3 (krever en native Deepgram-nøkkel). En ren
deepgram/nova-3-forespørsel bruker ikke OpenRouter.
Støttede formater: mp3, wav, m4a, flac, ogg, webm.
Ollama-kompatibilitet
For klienter som bruker Ollamas API-format:
# Chat-endepunkt (Ollama-format)
POST /v1/api/chat
# Modelloversikt (Ollama-format)
GET /api/tags
Forespørsler oversettes automatisk mellom Ollama og interne formater.
Tokeniserte VS Code / Hodeløse Aliases
Bruk disse aliasene når en integrasjon ikke kan injisere en Authorization-header og trenger API-nøkkelen innebygd i basis-URL-en.
# OpenAI-stil katalogalias
GET /api/v1/vscode/{token}/
GET /api/v1/vscode/{token}/models
# OpenAI-stil chat-aliaser
POST /api/v1/vscode/{token}/chat/completions
POST /api/v1/vscode/{token}/responses
# Ollama-stil aliaser
POST /api/v1/vscode/{token}/api/chat
GET /api/v1/vscode/{token}/api/tags
Eksempel:
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"}]}'
Merknader:
- De tokeniserte aliasene gjenbruker de samme håndtererne som
/v1/*og/api/tags; svarstrukturene forblir identiske. - Foretrekk
Authorization: Bearer ...når klienten støtter egendefinerte headere. - URL-baserte tokens kan vises i reverse-proxy-logger, nettleserhistorikk og telemetri utenfor OmniRoute. Behandle dem som et kompatibilitetsalternativ, ikke standard autentiseringsmodus.
Telemetri
# Hent telemetrioversikt for latens (p50/p95/p99 per leverandø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 }
}
}
Budsjett
# Hent budsjettstatus for alle API-nøkler
GET /api/usage/budget
# Angi eller oppdater et budsjett
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"
}
Skjemanotater (
setBudgetSchema):apiKeyIder påkrevd; minst én avdailyLimitUsd,weeklyLimitUsdellermonthlyLimitUsdmå være større enn null. Valgfrie felt:warningThreshold(0–1),resetInterval(daily|weekly|monthly),resetTime(HH:MM). Det eldre{keyId, limit, period}-formatet returnerer400 Bad Request.
Tokengrenser
Per-API-nøkkel token-budsjetter (forskjellig fra det USD-baserte budsjettet ovenfor). Håndheves direkte i forespørselsbanen: når en nøkkels nåværende vindusbruk når grensen, avvises forespørsler med 429 Too Many Requests. Grenser kan omfatte en spesifikk model, en provider, eller anvendes globalt på tvers av nøkkelen; når flere grenser samsvarer med en forespørsel, vinner den mest restriktive.
# List token-grenser for en nøkkel (inkluderer live vindusbruk)
GET /api/usage/token-limits?apiKeyId=key-123
# Opprett eller oppdater en token-grense
POST /api/usage/token-limits
Content-Type: application/json
{
"apiKeyId": "key-123",
"scopeType": "model",
"scopeValue": "openai/gpt-4o",
"tokenLimit": 1000000,
"resetInterval": "monthly",
"enabled": true
}
# Slett en token-grense etter id
DELETE /api/usage/token-limits?id=tl-abc
Skjemanotater (
setTokenLimitSchema):apiKeyIdogscopeType(model|provider|global) er påkrevd.scopeValueer påkrevd med mindrescopeTypeerglobal(f.eks. en modell-id formodel-omfang, en leverandør-id forprovider-omfang).tokenLimitmå være et positivt heltall (konvertert fra streng). Valgfritt:id(utelat for å opprette, oppgi for å oppdatere),resetInterval(daily|weekly|monthly, standardmonthly),resetTime(HH:MM),enabled(standardtrue).GET-svar beriker hver grense medtokensUsed,remaining,windowStart,periodStartAtognextResetAt. Dette er et administrasjonsklasse-endepunkt (autentisering håndheves sentralt av authz-pipelinen).
Forespørselsbehandling
- Klient sender forespørsel til
/v1/* - Rutebehandler kaller
handleChat,handleEmbedding,handleAudioTranscriptionellerhandleImageGeneration - Modell blir løst (direkte leverandør/modell eller alias/kombo)
- Legitimasjon velges fra lokal DB med kontotilgjengelighetsfiltrering
- For chat:
handleChatCoresjekker semantisk/signatur-cache og løser kombo-komprimeringsinnstillinger - Proaktiv komprimering kjører før leverandøroversettelse når aktivert (
lite, Caveman, RTK, eller stablet) - Leverandøreksekutor sender oppstrøms forespørsel
- Svar oversettes tilbake til klientformat (chat) eller returneres som det er (embeddings/bilder/lyd)
- Bruk, komprimeringsanalyse og forespørselslogger registreres
- Tilbakefall anvendes ved feil i henhold til kombo-regler
Full arkitekturreferanse: ARCHITECTURE.md
Kombo-administrasjon
Høyere-nivå ruting-komboer (allerede oppsummert under /api/combos*) kan også mappes 1:1 fra et modell-id-mønster, noe som tillater transparent omdirigering av en OpenAI-stil modell-id til en kombo.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/model-combo-mappings | List alle modell→kombo-mappinger |
| POST | /api/model-combo-mappings | Opprett mapping — body: {pattern, comboId, priority?, enabled?, description?} |
| GET | /api/model-combo-mappings/[id] | Hent en enkelt mapping |
| PUT | /api/model-combo-mappings/[id] | Oppdater felt i en eksisterende mapping |
| DELETE | /api/model-combo-mappings/[id] | Fjern en mapping |
Autentisering: management session/API key (requireManagementAuth).
Webhooks
Utgående webhook-abonnementer for OmniRoute-hendelser (forespørsel fullført, kvote oppbrukt, nøkkelrotasjon, osv.).
| Metode | Sti | Beskrivelse |
|---|---|---|
| GET | /api/webhooks | List webhooks (hemmeligheter er maskert til <prefix>...) |
| POST | /api/webhooks | Opprett webhook — kropp: {url, events?: ["*"], secret?, description?} |
| GET | /api/webhooks/[id] | Hent en webhook |
| PUT | /api/webhooks/[id] | Oppdater url/hendelser/hemmelighet/beskrivelse |
| DELETE | /api/webhooks/[id] | Fjern en webhook |
| POST | /api/webhooks/[id]/test | Send en testnyttelast til webhook-URL-en og returner leveringsstatus |
Autentisering: administrasjonsøkt/API-nøkkel (requireManagementAuth).
Registrerte nøkler (autobehandling)
Brukes av delsystemet for automatisk nøkkelbehandling for å utstede og rotere API-nøkler mot en underliggende leverandør/konto, med daglige/timebaserte kvoter.
| Metode | Sti | Beskrivelse |
|---|---|---|
| GET | /api/v1/registered-keys | List registrerte nøkler (kun maskert prefiks) |
| POST | /api/v1/registered-keys | Utsted en ny registrert nøkkel — kropp: {name, provider?, accountId?, idempotencyKey?, expiresAt?, dailyBudget?, hourlyBudget?}. Returnerer den rå nøkkelen én gang. Returnerer 429 ved kvotefrafall. |
| GET | /api/v1/registered-keys/[id] | Hent en registrert nøkkels metadata (ingen rådata) |
| DELETE | /api/v1/registered-keys/[id] | Tilbakekall en registrert nøkkel |
| POST | /api/v1/registered-keys/[id]/revoke | Eksplisitt tilbakekallingsendepunkt (samme effekt som DELETE) |
Autentisering: Bearer API-nøkkel (isAuthenticated). Se også /v1/quotas/check og /v1/issues/report.
Agentprotokoll
Skyagentoppgaver (Claude Code, Codex Cloud, OpenHands, osv.) utført eksternt på vegne av OmniRoute-brukere.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/v1/agents/tasks | List oppgaver – valgfritt ?provider=, ?status=, ?limit= (1–500, standard 50) |
| POST | /api/v1/agents/tasks | Opprett oppgave – kropp validert av CreateCloudAgentTaskSchema (providerId, prompt, source, options?). Returnerer 201 med oppgavekonvolutt |
| DELETE | /api/v1/agents/tasks?id=... | Slett en oppgave |
| GET | /api/v1/agents/tasks/[id] | Les oppgave – synkront oppdaterer status fra den oppstrøms skyagenten når en external_id er satt |
| POST | /api/v1/agents/tasks/[id] | Diskriminert handling: {action: "approve"}, {action: "message", message}, eller {action: "cancel"} |
| DELETE | /api/v1/agents/tasks/[id] | Slett en spesifikk oppgave etter ID |
Autentisering: Administrasjonsautentisering kreves for hver metode (
requireCloudAgentManagementAuth). Før v3.8.0 var disse uautentiserte – se commit588a0333for den brytende endringen.
# Opprett en Claude Code skyoppgave
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":"..."}}'
Administrasjonsproxyer
Utgående HTTP(S)/SOCKS-proxyer som kan tildeles leverandører, kontoer eller globalt.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/v1/management/proxies | List proxyer (med ?id= returnerer én; med ?id=&where_used=1 returnerer tildelingsgrafen) |
| POST | /api/v1/management/proxies | Opprett proxy – kropp validert av createProxyRegistrySchema |
| PATCH | /api/v1/management/proxies | Oppdater proxy – kropp validert av updateProxyRegistrySchema (krever id) |
| DELETE | /api/v1/management/proxies?id=...&force=1 | Slett proxy (bruk force=1 for å løsne tildelinger) |
| GET | /api/v1/management/proxies/assignments | List tildelinger – kan filtreres etter proxy_id, scope, scope_id; send resolve_connection_id=<id> for å løse den aktive proxyen for en tilkobling |
| PUT | /api/v1/management/proxies/assignments | Tildel – kropp validert av proxyAssignmentSchema ({scope, scopeId?, proxyId?}). Tømmer dispatcher-bufferen |
| PUT | /api/v1/management/proxies/bulk-assign | Massetildel – kropp validert av bulkProxyAssignmentSchema ({scope, scopeIds[], proxyId?}) |
| GET | /api/v1/management/proxies/health?hours=24 | Aggregert proxyhelse (antall suksesser/feil, ventetid) over et tidsvindu |
Autentisering: Administrasjonssesjon/API-nøkkel på hver rute (requireManagementAuth).
Oppgavebeskrivelsens
POST /api/v1/management/proxies/[id]/assignmentsogPOST /api/v1/management/proxies/[id]/healthbetjenes av de flate/assignmentsog/healthrutene vist ovenfor – det er ingen underliggende ruter per ID i kodebasen.
Robusthet (utvidet)
OmniRoute eksponerer tre uavhengige midlertidige feilmekanismer; administrasjonsendepunktene nedenfor lar operatører lese og overstyre dem:
| Omfang | Tilstandslagring | Les | Tilbakestill / tøm |
|---|---|---|---|
| Leverandørbryter | domain_circuit_breakers + i-minne | /api/monitoring/health | POST /api/resilience/reset |
| Tilkoblingsnedkjøling | rateLimitedUntil på leverandørtilkoblinger | /api/rate-limits, /api/providers/[id] | (aktiveres lat; tømmes via leverandør PUT) |
| Modellås | Modelltilgjengelighetsregister i minnet | GET /api/resilience/model-cooldowns | DELETE /api/resilience/model-cooldowns |
PATCH /api/resilience aksepterer overstyringer av leverandørbrytere under providerBreaker.oauth og providerBreaker.apikey. Hver profil støtter degradationThreshold, failureThreshold og resetTimeoutMs; de samme feltene er eksponert i Dashboard → Settings → Resilience.
# Tøm en enkelt modellås
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"}'
# Tøm alle låser
curl -X DELETE http://localhost:20128/api/resilience/model-cooldowns \
-H "Cookie: auth_token=..." \
-d '{"all":true}'
Full konseptuell referanse og standardverdier for brytere: se CLAUDE.md → "Resilience Runtime State".
Ferdigheter
Ferdighetsrammeverk for å utvide OmniRoute med tilpassede kjørbare håndterere, pluss markedsplassintegrasjoner.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/skills | List installerte ferdigheter — kan filtreres med ?q=, ?mode=on|off|auto, ?source=skillsmp|skillssh|local, paginert |
| GET | /api/skills/[id] | Hent én ferdighet |
| PUT | /api/skills/[id] | Oppdater ferdighet (navn, beskrivelse, modus, skjema, håndterer, tagger) |
| DELETE | /api/skills/[id] | Avinstaller en ferdighet |
| POST | /api/skills/install | Installer en ferdighet fra et rått manifest — body: {name, version, description, schema:{input, output}, handlerCode, apiKeyId?} |
| GET | /api/skills/executions | List nylige ferdighetsutførelser (revisjonsspor med inndata/utdata/varighet) |
| GET | /api/skills/marketplace?q=... | Søk/populær liste fra SkillsMP-markedsplassen (krever skillsmpApiKey-innstilling) |
| POST | /api/skills/marketplace/install | Installer en ferdighet etter ID fra SkillsMP |
| GET | /api/skills/skillssh?q=&limit= | Søk i skills.sh-registeret |
| POST | /api/skills/skillssh/install | Installer en ferdighet etter ID fra skills.sh |
Autentisering: administrasjonsøkt/API-nøkkel. Markedsplass-søkeruter aksepterer enten administrasjonsautentisering eller en Bearer API-nøkkel (isAuthenticated).
Minne
Vedvarende samtale-/faktuelt minnelager, avgrenset per API-nøkkel / sesjon.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/memory | Liste over minner — ?apiKeyId=, ?type=, ?sessionId=, ?q=, med offset/limit eller page/limit paginering |
| POST | /api/memory | Opprett minne — kropp validert av Zod: {content, key, type?, sessionId?, apiKeyId?, metadata?, expiresAt?} |
| GET | /api/memory/[id] | Hent ett minne |
| DELETE | /api/memory/[id] | Slett et minne |
| GET | /api/memory/health | Minnesystemets helse (DB-tilkobling, embeddings-backend, vektorindeksstatus) |
Autentisering: administrasjonssesjon/API-nøkkel (requireManagementAuth). type enum: FACTUAL, EPISODIC, SEMANTIC, PROCEDURAL (se MemoryType i src/lib/memory/types.ts).
MCP-server
OmniRoute leveres med en innebygd Model Context Protocol-server med 3 transportmekanismer (stdio, SSE, streamable-http) og avgrensede verktøy. Dashboard-endepunktene nedenfor leser status-/revisjonsdata og proxyer HTTP-transportmekanismene.
| Metode | Bane | Beskrivelse |
| ------ | ---------------------- | ------------------------------------------------------------------------------------------------ | -------------------- |
| GET | /api/mcp/status | Heartbeat, transport, online-status, siste kall, toppverktøy, 24-timers suksessrate |
| GET | /api/mcp/tools | Liste over MCP-verktøy med name, description, scopes, phase, auditLevel, sourceEndpoints |
| GET | /api/mcp/sse | Åpne SSE-strøm for SSE-transporten (returnerer 503 hvis MCP er deaktivert eller transporten ikke samsvarer) |
| POST | /api/mcp/sse | Send JSON-RPC-ramme på SSE-transporten |
| GET | /api/mcp/stream | Åpne SSE-siden av Streamable HTTP-transporten (server-initierte meldinger) |
| POST | /api/mcp/stream | Send JSON-RPC-ramme på Streamable HTTP-transporten |
| DELETE | /api/mcp/stream | Avslutt en Streamable HTTP-sesjon |
| GET | /api/mcp/audit | Spørre revisjonslogg — ?limit=, ?offset=, ?tool=, ?success=true | false, ?apiKeyId= |
| GET | /api/mcp/audit/stats | Aggregerte revisjonsstatistikker (totaler, suksessrate, gjennomsnittlig varighet, toppverktøy) |
Autentisering: sse/stream-transportmekanismene respekterer MCP-spesifikk autentisering (Bearer API-nøkkel med mcp-scope); status/tools/audit*-rutene er lesbare fra dashbordet (ingen ekstra autentisering kreves utover å nå dashbordverten).
Begge HTTP-transportmekanismene er begrenset av
settings.mcpEnabledogsettings.mcpTransport— et transportuoverensstemmelse returnerer400, en deaktivert MCP-tilstand returnerer503.
A2A-server
OmniRoute eksponerer et A2A (Agent-to-Agent) JSON-RPC 2.0-endepunkt pluss en REST-wrapper for inspeksjon/dashbordbruk.
JSON-RPC
POST /a2a
Authorization: Bearer your-api-key # valgfritt med mindre OMNIROUTE_API_KEY er satt
Content-Type: application/json
{
"jsonrpc": "2.0",
"id": 1,
"method": "message/send",
"params": {
"skill": "smart-routing",
"messages": [{"role": "user", "content": "Route this coding task"}]
}
}
Støttede metoder (alle begrenset av settings.a2aEnabled):
| Metode | Beskrivelse |
|---|---|
message/send | Synkron ferdighetsutførelse; returnerer {task, artifacts, metadata} |
message/stream | Strømmende SSE-utførelse av det samme ferdighetssettet |
tasks/get | Hent en oppgave etter taskId |
tasks/cancel | Avbryt en oppgave etter taskId |
Innebygde ferdigheter: smart-routing, quota-management, provider-discovery, cost-analysis, health-report.
Agentkort
GET /.well-known/agent.json
Returnerer det offentlige A2A-agentkortet (navn, beskrivelse, kapasiteter, ferdighetskatalog, autentiseringsskjema) – hurtigbufret offentlig i 1 time. Ingen autentisering kreves.
REST-hjelpere
| Metode | Sti | Beskrivelse |
|---|---|---|
| GET | /api/a2a/status | A2A aktivert + oppgavestatistikk + hurtigbufret agentkortoversikt |
| GET | /api/a2a/tasks | List oppgaver — ?state=submitted|working|completed|failed|cancelled, ?skill=, ?limit= (≤200), ?offset= |
| POST | /api/a2a/tasks | (Ikke implementert som en REST-hjelper — opprett via JSON-RPC message/send) |
| GET | /api/a2a/tasks/[id] | Hent én oppgave |
| POST | /api/a2a/tasks/[id]/cancel | Avbryt en oppgave |
Autentisering: REST-hjelperne kjører uten administrasjonsautentisering (dashbord-lesbar); JSON-RPC /a2a-ruten bruker Bearer OMNIROUTE_API_KEY hvis konfigurert.
Sky, evalueringer og vurderinger
| Metode | Sti | Beskrivelse |
|---|---|---|
| POST | /api/cloud/auth | Verifiser en Bearer-nøkkel og returner maskerte leverandørforbindelser + modellaliaser for skysynkroniseringsklienter |
| POST | /api/cloud/credentials/update | Oppdater krypterte legitimasjoner for en sky-synkronisert leverandør |
| POST | /api/cloud/model/resolve | Løs opp en logisk modell-ID til en konkret leverandør/modell ved hjelp av den lokale rutingtabellen |
| GET | /api/cloud/models/alias | List modellaliaser som eksponeres for skysynkronisering |
| GET | /api/assess | Les de nyeste vurderingskategoriseringene (per-leverandør/modell) |
| POST | /api/assess | Kjør en vurdering — body: {scope: {type:"all"} | {type:"provider", providerId} | {type:"model", modelId}, trigger?} |
| GET | /api/evals | List innebygde evalueringssuiter + nyeste kjøringer |
| POST | /api/evals | Utløs en evalueringskjøring |
| POST | /api/evals/suites | Opprett en tilpasset evalueringssuite — body validert av evalSuiteSaveSchema |
| GET | /api/evals/suites/[id] | Hent en tilpasset evalueringssuite |
Autentisering: /api/cloud/auth validerer en Bearer-nøkkel direkte; de andre /api/cloud/*, /api/evals/* og /api/assess-rutene krever administrasjonsøkt/API-nøkkel. /api/assess POST bruker validateBody med et diskriminert-union scope-skjema.
ACP (Agentklientprotokoll) Administrasjon
som underprosesser. Disse endepunktene administrerer deteksjon av ACP-agenter og registrering av egendefinerte agenter.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/acp/agents | Vis alle kjente CLI-agenter (innebygde + egendefinerte) med installasjonsstatus, versjon, binærfil |
| POST | /api/acp/agents | Registrer en egendefinert ACP-agent eller oppdater hurtigbuffer — body: {id, name, binary, versionCommand, providerAlias, spawnArgs, protocol} eller {action: "refresh"} |
| DELETE | /api/acp/agents | Fjern en egendefinert ACP-agent — spørringsparameter: ?id=<agentId> |
Eksempel på respons (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: Krever administrasjonsøkt (dashboard auth_token cookie) eller en API-nøkkel med administrasjonsomfang.
Se ACP Framework for fullstendige detaljer.
Analyse og Observerbarhet
Sanntidsanalyse-endepunkter for overvåking av ruting, komprimering og leverandørdiversitet. Disse driver /dashboard/analytics/*-sidene.
Analyser for automatisk ruting
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/analytics/auto-routing | Aggregerte statistikker for automatisk ruting: totale kall, strategifordeling, nivåfordeling, topp leverandører |
| GET | /api/analytics/auto-routing?days=7 | Tidsvindu-basert statistikk (standard 24t) |
Eksempel på respons:
{
"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 }
]
}
Komprimeringsanalyse
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/analytics/compression | Aggregerte komprimeringsstatistikker: sparte tokens, besparelse i %, modusfordeling, motorbruk |
Eksempel på respons:
{
"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
}
}
Sporing av leverandørdiversitet
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/analytics/diversity | Shannon-entropi-basert diversitetssporing: forhindrer enkeltpunkter for feil ved å måle leverandørspredning |
Eksempel på respons:
{
"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 står for 40 % av trafikken — vurder å diversifisere"]
}
Autentisering: Krever administrasjonsøkt eller en API-nøkkel med administrasjonsomfang.
Administratoroperasjoner
Endepunkter kun for administratorer for operasjonell styring.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/admin/concurrency | Les gjeldende samtidighetgrenser (globalt + per-leverandør) |
| POST | /api/admin/concurrency | Oppdater samtidighetgrenser — body: {global?: number, perProvider?: Record<string, number>} |
Autentisering: Krever administrasjonsøkt med administratoromfang.
Administrasjon av CLI-verktøy
Administrer CLI-verktøy som integreres med OmniRoute (antigravity, commandCode, devin-cli, osv.). Se Leverandørreferanse for hele listen.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/cli-tools/all-statuses | Status for alle CLI-verktøy (installert, versjon, sist sett) |
| GET | /api/cli-tools/status | Detaljert status for ett CLI-verktøy (?tool= spørring) |
| POST | /api/cli-tools/apply | Skriv et verktøys genererte konfigurasjon (dryRun forhåndsviser; 422 + containerEphemeralTarget når containerisert; migration noterer en eldre Codex YAML) |
| GET | /api/cli-tools/backups | List opp sikkerhetskopier av CLI-verktøykonfigurasjoner |
| POST | /api/cli-tools/backups | Opprett en sikkerhetskopi av alle CLI-verktøykonfigurasjoner |
| POST | /api/cli-tools/backups | Gjenopprett: samme endepunkt med {tool, backupId} i body gjenoppretter den sikkerhetskopien |
| GET | /api/cli-tools/antigravity-mitm | Antigravity MITM proxy-status ("antigravity-mitm" CLI-verktøyet) |
| POST | /api/cli-tools/antigravity-mitm/alias | Konfigurer antigravity-mitm aliaser |
Autentisering: Krever administrasjonsøkt.
Agentferdigheter
Administrer AI-agentferdigheter (ligner på OpenAIs tilpassede GPT-er, men for agenter).
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/agent-skills | List opp alle agentferdigheter (innebygde + tilpassede) |
| GET | /api/agent-skills/[id] | Hent en spesifikk agentferdighet |
| POST | /api/agent-skills | Opprett en tilpasset agentferdighet — body: {name, description, prompt, model?, temperature?} |
| PUT | /api/agent-skills/[id] | Oppdater en tilpasset agentferdighet |
| DELETE | /api/agent-skills/[id] | Slett en tilpasset agentferdighet |
| GET | /api/agent-skills/[id]/raw | Hent rå prompt + metadata (ingen utførelse) |
| POST | /api/agent-skills/generate | AI-generer en ny ferdighet fra en naturlig språkbeskrivelse |
Autentisering: Krever administrasjonsøkt eller API-nøkkel med administrasjonsomfang.
Cache-administrasjon
Administrer den semantiske cachen og resonneringscachen.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/cache | Cache-oversikt: totalt antall oppføringer, treffrate, størrelse på disk |
| GET | /api/cache/entries | List opp bufret oppføringer (med paginering) |
| DELETE | /api/cache/entries | Slett cache-oppføringer (filtrer etter spørringsparametere) |
| GET | /api/cache/stats | Detaljert cache-statistikk (per-leverandør, per-modell) |
| GET | /api/cache/reasoning | Resonneringscache-status (for resonneringsgjenspill) |
| DELETE | /api/cache/reasoning | Tøm resonneringscache — spørringsparametere: ?toolCallId=<id> (enkelt) eller ?provider=<p> eller ingen parametere (alle) |
Autentisering: Krever administrasjonsøkt.
Minnesystem
Administrer vedvarende minne (FTS5 + vektorinnleiringer).
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/memory | List opp minneoppføringer (filtrer etter omfang, type, søkeforespørsel) |
| POST | /api/memory | Opprett en ny minneoppføring — body: {scope, type, content, metadata?} |
| GET | /api/memory/[id] | Hent en spesifikk minneoppføring |
| PUT | /api/memory/[id] | Oppdater en minneoppføring |
| DELETE | /api/memory/[id] | Slett en minneoppføring |
| GET | /api/memory?q= | Søk i minne (FTS5 + vektor) — statistikk er inkludert i samme respons |
Autentisering: Krever administrasjonsøkt eller API-nøkkel med administrasjonsomfang.
Webhooks
Administrer webhook-abonnementer for hendelser.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/webhooks | List opp alle webhook-abonnementer |
| POST | /api/webhooks | Opprett et webhook-abonnement — body: {url, events[], secret?, active?} |
| GET | /api/webhooks/[id] | Hent et spesifikt webhook-abonnement |
| PUT | /api/webhooks/[id] | Oppdater et webhook-abonnement |
| DELETE | /api/webhooks/[id] | Slett et webhook-abonnement |
| GET | /api/webhooks/[id]/deliveries | List opp leveringshistorikk for en webhook (suksess-/feillogg) |
| POST | /api/webhooks/[id]/test | Send en testhendelse til en webhook |
Autentisering: Krever administrasjonsøkt.
Se Webhooks-rammeverk for fullstendige hendelsestyper.
Ferdighetsrammeverk
Administrer ferdigheter (rammeverket for agentiske utvidelser).
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/skills | List opp alle installerte ferdigheter (innebygde + egendefinerte) |
| POST | /api/skills/install | Installer en ferdighet fra en lokal bane eller URL |
| DELETE | /api/skills/[id] | Avinstaller en ferdighet |
| PUT | /api/skills/[id] | Aktiver eller deaktiver en ferdighet — body: {enabled?: boolean, mode?: "on" | "off" | "auto"} |
| POST | /api/skills/executions | Utfør en ferdighet — body: {skillName, apiKeyId, input?, sessionId?} |
| GET | /api/skills/executions | List opp utførelseshistorikk for alle ferdigheter (filtrer med ?apiKeyId=) |
Autentisering: Krever administrasjonsøkt eller API-nøkkel med administrasjonsomfang.
Se Ferdighetsrammeverk for fullstendige detaljer.
Plugins
Administrer OmniRoute-plugins (tredjepartsutvidelser).
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/plugins | List opp installerte plugins |
| POST | /api/plugins/marketplace/install | Installer en plugin fra markedsplassen |
| DELETE | /api/plugins/[name] | Avinstaller en plugin |
| POST | /api/plugins/[name]/activate | Aktiver en plugin |
| POST | /api/plugins/[name]/deactivate | Deaktiver en plugin |
| GET | /api/plugins/[name]/config | Hent plugin-konfigurasjon |
| PUT | /api/plugins/[name]/config | Oppdater plugin-konfigurasjon |
Autentisering: Krever administrasjonsøkt.
Se Plugins-rammeverk for fullstendige detaljer.
Skyggeruting
Skygge / A-B-sammenligning av leverandører er ikke en frittstående REST-flate — det konfigureres via kombinasjonsruting (se Auto-Combo). Sammenligningsmetrikker per kombinasjon leveres av GET /api/combos/metrics.
Sikkerhetsbarrierer
Inspiser kjøretids-sikkerhetsbarrierene (PII-deteksjon, prompt injection-deteksjon, visjonsbrobygging). Sikkerhetsbarrierer kjører på hver forespørsel; per-kall opt-out er via x-omniroute-disabled-guardrails forespørselshodet — det er ingen vedvarende aktiver/deaktiver-flate.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/guardrails | List opp de registrerte sikkerhetsbarrierene og deres status (navn / aktivert / prioritet) |
| POST | /api/guardrails/test | Tørrkjør pre-kall-pipelinen over et eksempelinput — body: {input, disabledGuardrails?} |
Autentisering: Krever administrasjonsøkt.
Se Sikkerhet > Sikkerhetsbarrierer for fullstendige detaljer.
Autentisering
Se Administrasjonsautentisering for de fire
legitimasjonsfamiliene (dashboard-sesjon, lokal CLI-token, oma_live_… Access
Token, manage-scoped API-nøkkel) og hvordan de skiller seg fra inferensnøkler.
- Dashboard-ruter (
/dashboard/*) brukerauth_token-cookie - Pålogging bruker lagret passord-hash; faller tilbake til
INITIAL_PASSWORD requireLoginkan veksles via/api/settings/require-login/v1/*-ruter krever valgfritt Bearer API-nøkkel nårREQUIRE_API_KEY=true- "management token" / "management-scoped API key" i denne referansen betyr en av familiene i den guiden – ikke en udefinert ekstra hemmelig type
Brytende endring (v3.8.0) –
/api/v1/agents/tasks/*og endepunktene for nedkjølingshåndtering krever nå administrasjonsautentisering (dashboardauth_token-cookie eller en management-scoped API-nøkkel). Klienter som tidligere kalte disse rutene uautentisert vil motta401 Unauthorized. Se commit588a0333(fix(auth): require management auth for agent and cooldown APIs).