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
121 KiB
API Reference (Norsk)
🌐 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 · 🇮🇳 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
🌐 Språk: 🇺🇸 Engelsk | 🇪🇹 አማርኛ | 🇸🇦 العربية | 🇦🇿 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á | 🇨🇳 中文 (简体) | 🇹🇼 中文 (繁體)
Hovedreferanse for OmniRoute-API-et. Den dekker det offentlige /v1-grensesnittet og de mest brukte administrasjonsendepunktene. Den maskinlesbare docs/openapi.yaml og rutetreet under src/app/api/ er de uttømmende kildene.
Innholdsfortegnelse
- Chatfullføringer
- Eksklusive leieavtaler for administrerte økter
- Embeddings
- Bildegenerering
- Dokument-OCR
- Vis modeller
- Manifest for leverandørtillegg
- Kompatibilitetsendepunkter
- Fil-API
- Batch-API
- Søke-API
- WebSocket-strømming
- Rapportering av kvoter og problemer
- Semantisk hurtigbuffer
- Kontrollpanel 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
Chatfullfø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 injisering av minne og ferdigheter for denne forespørselen (tilsvarer ingen hurtigbuffer og unngår token-/kostnadsbelastningen per kall) |
X-OmniRoute-Progress |
Forespørsel | Sett til true for fremdriftshendelser |
X-Session-Id |
Forespørsel | Fast øktnøkkel for ekstern øktaffinitet |
x_session_id |
Forespørsel | Varianten med understrek godtas også (direkte HTTP) |
X-OmniRoute-Session-Id |
Forespørsel | Økt-/samtaleetikett angitt av anroperen (brukes også av minnet). Når den finnes, lagres den ordrett i call_logs.session_tag for kostnadstilordning per økt (#8249) – den genereres aldri når den mangler |
Idempotency-Key |
Forespørsel | Nøkkel for duplikatfjerning (5 s-vindu) |
X-Request-Id |
Forespørsel | Alternativ nøkkel for duplikatfjerning |
X-OmniRoute-Cache |
Svar | HIT eller MISS (uten strømming) |
X-OmniRoute-Idempotent |
Svar | true hvis duplikat er fjernet |
X-OmniRoute-Progress |
Svar | enabled hvis fremdriftssporing er aktivert |
X-OmniRoute-Session-Id |
Svar | Effektiv økt-ID brukt av OmniRoute |
X-OmniRoute-Request-Id |
Svar | Korrelasjons-ID for forespørselen (når kjent) |
X-OmniRoute-Version |
Svar | OmniRoute-byggversjon (alltid til stede) |
X-OmniRoute-Cost-Saved |
Svar | USD som ble spart av hurtigbufferen ved en HIT (bare hurtigbuffertreff) |
X-OmniRoute-Decision |
Svar | Rutingsspor: strategy=<name>; provider=<alias>; latency_ms=<n> (<name> er kombinasjonsstrategien, eller single for en forespørsel uten kombinasjon) – alltid til stede i fullføringssvar |
Nginx-merknad: Hvis du er avhengig av headere med understrek (for eksempel
x_session_id), aktiverunderscores_in_headers on;.
Kostnadstelemetri-headere: vellykkede svar uten strømming inneholder også kostnadstelemetrisettet
X-OmniRoute-*—X-OmniRoute-Response-Cost(USD, fast 10 desimaler;0.0000000000for gratis/ikke-prissatte kall),X-OmniRoute-Tokens-In/X-OmniRoute-Tokens-Out,X-OmniRoute-Model,X-OmniRoute-Provider,X-OmniRoute-Latency-Ms,X-OmniRoute-Cache-HitogX-OmniRoute-Fallback-Attempts(bare når > 0), samtX-OmniRoute-Request-IdogX-OmniRoute-Version. Disse returneres av chat-fullføringer,/v1/responses,/v1/messagesog medieendepunktene —/v1/embeddings,/v1/images/generations,/v1/audio/speech,/v1/audio/transcriptions,/v1/rerank,/v1/videos/generations,/v1/music/generationsog/v1/moderations(har alltid en kostnad på0). Mediekostnaden beregnes per modalitet (per bilde, per sekund, per tegn, per søkeenhet) når prisinformasjon er tilgjengelig, ellers0(fail-open).
Kostnadssemantikk ved cache-treff: Ved et TREFF i den semantiske cachen (
X-OmniRoute-Cache-Hit: true) foretas det ikke noe oppstrømskall, såX-OmniRoute-Response-Coster0.0000000000(den inkrementelle kostnaden ved å levere treffet). Den opprinnelige kostnaden/kostnaden som ellers ville påløpt, rapporteres separat iX-OmniRoute-Cost-Saved. Faktureringssystemer bør summereX-OmniRoute-Response-Cost(treff koster ingenting); cacheanalyse kan aggregereX-OmniRoute-Cost-Saved.
Eksklusive administrerte øktleieavtaler
Eksklusiv administrert øktleie er en valgfri, klientnøytral rutingskontrakt: Én aktiv eier har én kvalifisert OmniRoute-tilkobling. Den leier ikke en modell, krever ikke OAuth, identifiserer ikke en bestemt klient og krever ikke en bestemt leverandør.
API-nøkkelen som brukes til autentisering, må ha omfanget lease:exclusive og en eksplisitt, ikke-tom
allowedConnections-liste. Grensen for databasemutasjoner håndhever begge feltene sammen ved
opprettelse av nøkler 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 svar på innhenting, fornyelse og frigivelse viser tidsstempler, state og den eksakte positive
generation, men aldri den valgte tilkoblingen eller legitimasjonen. Ved fornyelse og frigivelse oppgis
generasjonen i JSON-innholdet:
{ "action": "renew", "generation": 1 }
{ "action": "release", "generation": 1, "reason": "OWNER_EXIT" }
En aktiv leieeier kan eksplisitt be om personvernsikre 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 valgfrie statushandlingen avgrenses av den ugjennomsiktige eieren, den autentiserte administrerte API-nøkkelen og den eksakte
aktive generasjonen i én databasetransaksjon. displayName er bare det konfigurerte
tilkoblingsnavnet uten innledende eller etterfølgende mellomrom; det er null når det ikke finnes noe sikkert konfigurert navn. OmniRoute erstatter aldri dette med
en e-postadresse eller generert kontoidentitet. Leverandørverdien er en ikke-sensitiv visningsetikett og aldri
en generert identifikator for en kompatibel leverandør. Legitimasjon, tokener, informasjonskapsler, rå tilkoblings- eller API-
nøkkel-ID-er, eierhashverdier, avgrensningshemmeligheter og interne rutingsdata er utelatt.
Oppslag med feil nøkkel, feil eier, foreldet generasjon, manglende, utløpte, frigitte eller ugyldiggjorte leieavtaler
returnerer alle den samme feilen 409 LEASE_FENCE_STALE uten tilkoblingsmetadata. En klient som mottok svaret om kapasitetsventing, har ingen aktiv binding å inspisere. Når rutingen endrer en aktiv leieavtale,
forblir den samme generasjonen gyldig, og status returnerer atomisk den nye bindingen, aldri den gamle.
Eksisterende klienter forblir uendret fordi svar ved innhenting, fornyelse, frigivelse og venting beholder
sine tidligere formater.
Denne serverkontrakten endrer ikke standardfunksjonen /status i OpenAI Codex. Standardversjonen av Codex rapporterer for øyeblikket
modellleverandøren og den innebygde autentiserings-/kontostatusen, men viser ikke vilkårlige egendefinerte
kontometadata for leverandører. En senere klientintegrasjon må kalle denne handlingen og avgjøre hvordan
connection.displayName skal vises.
Hver administrerte inferensforespørsel oppgir 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 avgrenses umiddelbart før hvert støttede oppstrømsforsøk. Gjenbruk av eier og generasjon med en annen nøkkel mislykkes selv når denne nøkkelen tillater den samme tilkoblingen. Rå eierverdier lagres ikke permanent, loggføres ikke, beholdes ikke i øyeblikksbildet av forespørselen og videresendes ikke oppstrøms.
Midlertidig konkurranse om kapasitet 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
}
Dette svaret betyr bare at det ordinære settet med kvalifiserte tilkoblinger ikke var tomt, og at hver ledige kandidat var reservert av en fremmed aktiv leieavtale. Modeller/leverandører som ikke støttes, manglende samsvar med policy, nedkjølingsperiode, kvote, helsetilstand og andre ordinære kvalifiseringsfeil beholder sine eksisterende OmniRoute-svar.
x-omniroute-compression
Overstyring av komprimeringsplanen per forespørsel. Høyeste prioritet — overstyrer rutingskombinasjonens overstyring, den aktive profilen, automatisk utløsning og panelets standardvalg. Verdier:
| Verdi | Effekt |
|---|---|
off |
Ingen komprimering for denne forespørselen. |
default |
Standardprofilen avledet fra panelet (ignorerer den aktive profilen). |
engine:<id> |
Én enkelt motor når den er aktivert, f.eks. engine:rtk. |
<combo> |
En navngitt kombinasjon, først funnet etter navn (uten skille mellom store og små bokstaver), deretter etter ID. |
Merknader:
- Ukjente verdier ignoreres (forespørselen avvises aldri); løsningen går videre til den normale operatorprioriteten.
- Hvis flere kombinasjoner har samme navn, angir du kombinasjonens id for et deterministisk treff.
- En kombinasjon med navnet
offellerdefaultkan ikke velges etter navn (disse nøkkelordene tolkes først); referer til en slik kombinasjon med dens ID. - Hovedbryteren for komprimering er en absolutt sperre: Når komprimering er deaktivert globalt, kan dette hodet ikke aktivere den.
Den anvendte planen returneres i svarhodet:
X-OmniRoute-Compression: <mode>; source=<source>
der <source> er én 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). Rene Jina-modell-ID-er som finnes i registeret (for eksempel jina-embeddings-v5-text-small, jina-reranker-v3.5), blir også gjenkjent. Jina embed/rerank/classify/segment bruker først jina-ai-legitimasjon fra kontrollpanelet; JINA_AI_API_KEY brukes bare som reserve når det ikke finnes noen nøkkel i kontrollpanelet. jina-reader-kortet er bare for Reader / r.jina.ai (POST /v1/web/fetch) og leverer aldri embeddings eller rerank.
Registermodeller som oppgir støtte for multimodalitet, godtar også opptil 32 leverandørnøytrale strukturerte elementer. Medieelementtypene er text, image, audio, video og document. Mediets source 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) godtar også Jinas egne EmbeddingsV5Request-dokumenter og videresender dem uendret 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,..." }]
}
]
}
Opprinnelige { image | audio | video | pdf }-verdier kan være en offentlig HTTPS-URL, en data:-URI eller rå base64. OmniRoute konverterer ikke disse objektene til strenger og henter heller ikke opprinnelige bilde-URL-er – Jina henter offentlige medier selv. Ekstra Jina-felter (task, normalized, truncate, embedding_type) videresendes. Jina-SKU-er som bare støtter tekst, avviser fortsatt dokumenter som ikke er tekst.
Sikkerhets- og transportgrenser:
- Eksterne medie-URL-er må bruke offentlig HTTPS. Kanoniske
{type,source:url}-elementer hentes på serversiden (ny validering etter omdirigering, tidsavbrudd, størrelsesgrenser, offentlig DNS og tilkoblingsbinding) og bygges inn før leverandørkallet. Jina-opprinnelige{image:"https://..."}-elementer videresendes som de er etter den samme kontrollen for offentlig HTTPS; Jina henter URL-en. - Innebygde base64-medier er begrenset til 8 MiB dekodet per element og 16 MiB dekodet totalt i forespørselen.
Leverandøroversettelse (kanoniske elementer videresendes aldri uendret):
- Multimodale Jina-modeller: Hvert element på toppnivå blir til ett objekt med modalitetsnøkkel (
text/image/audio/video/pdf), med data-URI-er for innebygde medier; én vektor per element på toppnivå. - Gemini Embedding 2-familien: Én matrise på toppnivå blir til én opprinnelig
models/{model}:embedContent-forespørsel medcontent.parts(textellerinline_data). - Ukjente/dynamiske modeller uten eksplisitte modalitetsmetadata avviser strukturerte inndata 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"
}
Modell-/modalitetskombinasjoner som ikke støttes, returnerer HTTP 400 i stedet for å konvertere elementet. Utvidelsesfelter utenfor input i eldre streng-/tokenforespørsler sendes fortsatt gjennom uendret.
# Vis alle embedding-modeller
GET /v1/embeddings
Bildegenerering
POST /v1/images/generations
Authorization: Bearer your-api-key
Content-Type: application/json
{
"model": "openai/gpt-image-2",
"prompt": "En vakker solnedgang over fjell",
"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).
# Vis alle bildemodeller
GET /v1/images/generations
OCR for dokumenter
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 prefikset provider/model. En modell-ID uten prefiks (f.eks.
mistral-ocr-latest) slås opp mot den registrerte leverandøren, og hvis model utelates, brukes
Mistral (mistral-ocr-latest) som standard. 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 ene oppstrømskallet. |
azure-document-intelligence |
prebuilt-read |
azure-document-intelligence/prebuilt-read |
Asynkron oppstrømstjeneste (analyze + polling) — se nedenfor. |
vertex-deepseek-ocr |
deepseek-ocr-maas |
vertex-deepseek-ocr/deepseek-ocr-maas |
Synkron, via Vertex AIs partnerendepunkt openapi/chat/completions — se nedenfor for autentisering/URL. |
Alle tre leverandørene svarer med samme Mistral-formaterte struktur:
{
"pages": [{ "index": 0, "markdown": "# Uthentet tekst..." }],
"model": "mistral-ocr-latest",
"usage_info": { "pages_processed": 1 }
}
Pollingsflyt for Azure Document Intelligence
Azure Document Intelligences analyze-API er asynkront: Den første forespørselen returnerer en
Operation-Location-header i stedet for en responskropp, og resultatet må hentes ved polling. Behandleren
(open-sse/handlers/ocr.ts) poller denne URL-en hvert sekund i opptil 30 forsøk, avbryter umiddelbart (fortsetter
ikke pollingen) ved et pollingssvar som ikke er ok, eller en "failed"-status, og returnerer 504 hvis
operasjonen fortsatt kjører etter at grensen for antall forsøk er nådd. Det endelige Azure-svaret
normaliseres til den samme pages/markdown-strukturen som brukes av Mistral, før det returneres til
kalleren. Klientkoden trenger derfor ikke å spesialbehandle leverandøren.
Autentisering og endepunktsoppløsning for Vertex AI DeepSeek OCR
vertex-deepseek-ocr gjenbruker den samme Vertex AI-autentiseringen som OmniRoute allerede støtter for
chat-/bildetrafikk (open-sse/executors/vertex.ts): Tilkoblingens API-nøkkel er enten en
Service Account JSON-legitimasjon (som utveksles mot et kortlivet OAuth-tilgangstoken via JWT bearer-
flyten) eller et allerede utstedt OAuth-tilgangstoken som brukes som det er. URL-en til oppstrømsendepunktet er Vertex'
generiske partnerendepunkt openapi/chat/completions, bygget fra tilkoblingens prosjekt og
region — en eksplisitt providerSpecificData.project/providerSpecificData.region har alltid forrang;
ellers utledes prosjektet fra Service Account JSON-feltet project_id, og regionen
settes som standard til us-central1. Begge oppslagene utføres i open-sse/handlers/ocr.ts
(resolveVertexOcrAccessToken, resolveVertexOcrBaseUrl) og brukes av
src/app/api/v1/ocr/route.ts før videresending til handleOcr.
Vis modeller
GET /v1/models
Authorization: Bearer your-api-key
→ Returnerer alle chat-, embedding- og bildemodeller samt kombinasjoner i OpenAI-format
Modell-ID-prefikser (?prefix=)
De fleste modeller publiseres under et leverandørprefiks. Hvilket prefiks du får, styres av
funksjonsflagget MODELS_CATALOG_PREFIX_MODE og kan overstyres per forespørsel med en
spørringsparameter — nyttig for en klient som ønsker en ryddig liste uten å endre innstillingen
på hele serveren for alle andre:
GET /v1/models?prefix=alias # én ID per modell — det korte aliasprefikset
GET /v1/models?prefix=dual # begge former (serverens standard)
GET /v1/models?prefix=canonical # bare hele leverandør-ID-prefikset
| Modus | Returnerer | Merknader |
|---|---|---|
dual |
cc/claude-sonnet-4-6 og claude/claude-sonnet-4-6 |
Standard. Begge ID-ene rutes til samme modell. Dette beholdes slik at klientkonfigurasjoner som har hardkodet én av formene, fortsatt fungerer. Omtrent dobler katalogen. |
alias |
cc/claude-sonnet-4-6 |
Én oppføring per modell. Leverandører uten et eget alias returnerer fortsatt oppføringen sin, så ingenting går tapt. |
canonical |
claude/claude-sonnet-4-6 |
Én oppføring per modell under hele leverandør-ID-prefikset. Leverandører uten et eget alias (f.eks. antigravity/…, agy/…) returnerer også sin eneste ID her, så ingenting går tapt. |
Et speil i dual-modus kan også gjenkjennes uten spørringsparameteren: Det har et parent-felt
som peker på den primære ID-en.
Klienter som viser en modellvelger, bør be om ?prefix=alias — dette er det
OmniCopilot-utvidelsen for VS Code gjør.
Modellvarianter uten tenkning
For Claude-modeller med støtte for tenkning publiserer /v1/models også en variant uten tenkning der ID-en har prefikset claude-3-omniroute-no-thinking/:
claude-3-omniroute-no-thinking/<provider>/<model>
Når denne ID-en velges (f.eks. i en Claude Code-konfigurasjon som alltid legger ved en thinking-blokk), løses den tilbake til den faktiske <provider>/<model> med resonnering deaktivert — thinking:{type:"disabled"} på /v1/messages-endepunktet, eller med feltene reasoning/reasoning_effort fjernet på /v1/chat/completions-endepunktet. Varianten oppføres bare for modeller i Claude-familien som støtter tenkning og respekterer disabled (derfor utelates f.eks. modeller som bare støtter adaptiv tenkning og avviser disabled). Operatører kan tvinge varianten på eller av per modell via ModelSpec.noThinkingAlias.
Manifest for leverandørtillegg
GET /api/v1/provider-plugin-manifest
Returnerer det JSON-kompatible manifestet for leverandørtillegg som brukes av Bifrost, CLIProxyAPI og fremtidige sidecar-rutere. Responsen genereres fra TypeScript-registeret for leverandører og utelater med hensikt OAuth-klienthemmeligheter, løsning av kjøretidsmiljø, eksekveringsfunksjoner, 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 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 |
Musikkgenerering i OpenAI-stil |
| POST | /v1/audio/transcriptions |
OpenAI Audio (tale til tekst) |
| POST | /v1/audio/speech |
OpenAI TTS (returnerer lydinnhold) |
| POST | /v1/rerank |
Omrangering i Cohere/Voyage-stil |
| POST | /v1/classify |
Jina-klassifisering (api.jina.ai) |
| POST | /v1/segment |
Jina-segmentering (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 for OpenAI-katalog |
| GET | /api/v1/vscode/{token}/models |
Alias for OpenAI-modeller |
| POST | /api/v1/vscode/{token}/chat/completions |
Tokenbasert OpenAI-alias |
| POST | /api/v1/vscode/{token}/responses |
Tokenbasert OpenAI Responses-alias |
| POST | /api/v1/vscode/{token}/api/chat |
Tokenbasert Ollama-alias |
| GET | /api/v1/vscode/{token}/api/tags |
Tokenbasert alias for Ollama-tagger |
Alle POST-ruter følger samme struktur: Bearer your-api-key + Zod-validert JSON-innhold (v1RerankSchema, v1ModerationSchema, v1AudioSpeechSchema osv., se src/shared/validation/schemas.ts). 4xx returneres ved skjemafeil.
For klienter som ikke kan legge ved Authorization: Bearer ..., godtar OmniRoute også API-nøkler i URL-en, enten via kompatible spørringsstrenger (?token=..., ?apiKey=..., ?api_key=..., ?key=...) eller de dedikerte /api/v1/vscode/{token}/...-endepunktene som er dokumentert nedenfor.
# Omrangering
POST /v1/rerank { "model": "jina-ai/jina-reranker-v3.5", "query": "...", "documents": ["..."] }
# Jina-klassifisering (legitimasjon for Foundation API)
POST /v1/classify { "model": "jina-embeddings-v5-text-small", "input": ["..."], "labels": ["a", "b"] }
# Jina-segmentering
POST /v1/segment { "content": "...", "return_chunks": true }
# Jina-søk (s.jina.ai; leverandøraliaser: jina-search, jina-ai, jina)
POST /v1/search { "query": "...", "provider": "jina-search" }
# Moderering
POST /v1/moderations { "model": "omni-moderation-latest", "input": "..." }
# TTS — returnerer audio/mpeg-innhold (eller forespurt format)
POST /v1/audio/speech { "model": "openai/tts-1", "input": "Hello", "voice": "alloy" }
# Bilderedigering (multipart)
POST /v1/images/edits -F image=@input.png -F prompt="..." -F mask=@mask.png
# Video-/musikkgenerering (modell-ID med leverandørprefiks)
POST /v1/videos/generations { "model": "runway/gen-3", "prompt": "..." }
POST /v1/music/generations { "model": "suno/v3.5", "prompt": "..." }
Dedikerte leverandørruter
POST /v1/providers/{provider}/chat/completions
POST /v1/providers/{provider}/embeddings
POST /v1/providers/{provider}/images/generations
Leverandørprefikset legges til automatisk hvis det mangler. Modeller som ikke samsvarer, returnerer 400.
Files API
OpenAI-kompatibelt filendepunkt for batch-inndata/-utdata og opplastinger med filformål.
| Metode | Bane | Beskrivelse |
|---|---|---|
| POST | /v1/files |
Last opp en fil (multipart: file, purpose, expires_after[anchor], expires_after[seconds]) — maks. 512 MiB |
| GET | /v1/files |
Vis filer for den autentiserte API-nøkkelen |
| GET | /v1/files/[id] |
Hent metadataene til en fil |
| DELETE | /v1/files/[id] |
Slett en fil |
| GET | /v1/files/[id]/content |
Strøm den rå filen tilbake |
Autentisering: Bearer-API-nøkkel — filer avgrenses per API-nøkkel via getApiKeyRequestScope. En nøkkel
kan bare se, laste ned og slette sine egne filer; en kontrollpaneløkt uten nøkkel kan lese hele
instansen; tilgang til en fil uten eier (anonym opplasting eller opplasting fra en kontrollpaneløkt) nektes for alle
kallere uten økt. GET /v1/files avviser en anonym innringer — og en oppgitt nøkkel som ikke
kan slås opp — med 401 selv når REQUIRE_API_KEY=false, i stedet for å vise filer fra alle
leietakere (GHSA-m3hp-hq9g-fpmv, GHSA-2jm2-mpx8-6523).
Batches API
OpenAI-kompatibel batchbehandling.
| Metode | Bane | Beskrivelse |
|---|---|---|
| POST | /v1/batches |
Opprett batch — innhold validert av v1BatchCreateSchema (input_file_id, endpoint, completion_window) |
| GET | /v1/batches |
Vis 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 avgrenses per API-nøkkel etter samme tredelte regel som
filer: bare egen nøkkel, kontrollpaneløkt for hele instansen, poster med null som eier nektes for alle
kallere uten økt (henting, sletting, avbryting og input_file_id-kontrollen ved opprettelse).
GET /v1/batches avviser en anonym innringer med 401 selv når REQUIRE_API_KEY=false.
Search API
Abstraksjon for nett-/søkeleverandører (Tavily, Brave, Exa, Serper osv.).
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /v1/search |
Vis konfigurerte søkeleverandører + funksjoner |
| POST | /v1/search |
Kjør et søk — brødteksten valideres av v1SearchSchema, støtter hurtigbufring/samordning |
| GET | /v1/search/analytics |
Treff-/latens-/hurtigbufferstatistikk per leverandør |
Autentisering: Bearer-API-nøkkel (extractApiKey + isValidApiKey). Søkepolicy håndheves via enforceApiKeyPolicy.
Web Fetch API
Trekk ut innhold fra en URL via en konfigurert leverandør for netthenting (Firecrawl, Jina Reader, Tavily Extract, TinyFish Fetch, Nimble Extract).
| Metode | Bane | Beskrivelse |
|---|---|---|
| POST | /v1/web/fetch |
Hent/skrap en URL — brødteksten valideres av v1WebFetchSchema |
Autentisering: Bearer-API-nøkkel (extractApiKey + isValidApiKey). Policy håndheves via enforceApiKeyPolicy.
Kvotebevisst reservevalg (#8297): Når ingen eksplisitt provider er angitt, blir puljen
(firecrawl → jina-reader → tavily-search → tinyfish → nimble-search)
gjennomgått i fast
prioritetsrekkefølge (fyll-først) — en leverandør som er konfigurert, men hastighetsbegrenset, hoppes over
i stedet for å avbryte forespørselen, og en oppstrømsfeil som kan forsøkes på nytt, eller en kvotefeil
(HTTP 429 alltid; 402/403 for kvotebaserte gratisnivåer hos Firecrawl/Tavily/TinyFish —
ikke for Jina Reader, og aldri for en vanlig 400-feilforespørsel) går videre til neste
uprisøvde leverandør med legitimasjon på forespørselstidspunktet. Når alle leverandører i
puljen er uttømt, returnerer endepunktet én enkelt 429 (med en Retry-After-
header) i stedet for den tidligere generiske 400. Når en eksplisitt provider er
forespurt, finnes det ingen stille reserve — en hastighetsbegrenset eller feilende eksplisitt
leverandør viser sin egen feil (429 ved hastighetsbegrensning, ellers oppstrøms-
statusen).
WebSocket-strømming
GET /v1/ws?handshake=1
Validerer et WebSocket-oppgraderingshåndtrykk og returnerer eksempelmeldingene 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 forbindelsen:
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 proxy for Responses API over WebSocket er koblet utelukkende til codex (ChatGPT-
bakenden). Den lytter på samme port som API-et/instrumentpanelet på banene /v1/responses,
/responses og /api/v1/responses. Ved den første response.create-rammen
autentiserer og klargjør den via den interne codex-responses-ws-broen, velger en
codex OAuth-forbindelse og oppretter en tunnel til wss://chatgpt.com/backend-api/codex/responses
via wreq-js-transporten. Modeller som ikke er codex, avvises (codex_ws_provider_required).
For kvotedelingsruting bruker du 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 startpunktet (som standard er den det når app/server-ws.mjs finnes).
Modell-ID: bruk den rene ChatGPT-ID-en (uten codex/-prefiks)
OpenAI Codex CLI validerer modellnavnet på klientsiden når
supports_websockets = true og avviser leverandørprefiksede 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 slår opp en ren ID på nytt som en codex-modell
(resolveCodexWsModelInfo) før den oppretter tunnelen oppstrøms — selv om en ren
gpt-5.5 ellers ville blitt rutet til en annen leverandør over HTTP.
Konfigurere OpenAI Codex CLI
Pek Codex CLI mot OmniRoute ved å legge til en egendefinert 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 avledes (bruk https/wss i produksjon)
wire_api = "responses" # eneste støttede verdi siden feb. 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 (vilkårlig nøkkel hvis REQUIRE_API_KEY=false)
codex exec "Responda apenas: PONG"
CLI-en oppgraderer base_url + /responses til en WebSocket, og OmniRoute oppretter en tunnel
til den valgte codex OAuth-forbindelsen. Validert ende-til-ende mot den lokale
serveren: ChatGPT returnerer codex.rate_limits + response.created og strømmer
fullføringen.
Kvoter og problemrapportering
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /v1/quotas/check |
Forhåndsvalider kvoten for en provider + accountId før en registrert nøkkel utstedes |
| POST | /v1/issues/report |
Rapporter en feil ved kvote-/nøkkelutstedelse 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 sine egne kvoter — ingen administrasjonsautentisering. Dette er endepunktet en klient (CLI, OmniCopilot-panelet) bruker for å vise en nøkkelinnehaver vedkommendes forbruk.
# Tekstformat (den historiske kontrakten — ren tekst for en terminal)
curl -H "Authorization: Bearer <din-api-nøkkel>" \
http://localhost:20128/api/usage/om-usage
# Strukturert format — det et brukergrensesnitt bruker
curl -H "Authorization: Bearer <din-api-nøkkel>" \
"http://localhost:20128/api/usage/om-usage?format=json"
Nøkkelen må ha allowUsageCommand aktivert (deaktivert som standard — instrumentbordets API-nøkkelbehandler
slår det av eller på per nøkkel). Uten dette svarer endepunktet med 403.
?format=json returnerer en diskriminert struktur, slik at en kallende part aldri leser et datafelt fra et
avslag. Ved suksess:
{
"allowed": true,
// finnes bare når nøkkelen har valgt bruksgrenser per nøkkel (daglig/ukentlig i USD):
"personal": {
"dailySpentUsd": 1.25,
"dailyLimitUsd": 5,
"dailyResetAtIso": "…",
"weeklySpentUsd": 8,
"weeklyLimitUsd": 20,
"weeklyResetAtIso": "…" /* … */,
},
// kvoteøyeblikksbildet for den valgte leverandøren, eller null når ingenting er bufret ennå:
"provider": {
"connectionId": "…",
"provider": "claude",
"plan": "…",
"quotas": {/* … */},
},
// øyeblikksbildet for 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 eksisterende, men tom personal/provider
(nøkkelen er tillatt, men ingenting er registrert ennå) er en annen tilstand enn et avslag, og bare JSON-formatet
skiller mellom dem.
Autentisering: den kallende partens egen Bearer-API-nøkkel, validert med isValidApiKey — dette er ikke
administrasjonsgrensesnittet (/api/keys/…), som fortsatt er beskyttet av requireManagementAuth.
Semantisk hurtigbuffer
# Hent statistikk for hurtigbufferen
GET /api/cache/stats
# Tøm alle hurtigbuffere
DELETE /api/cache/stats
Eksempel på svar:
{
"semanticCache": {
"memorySize": 42,
"memoryMaxSize": 500,
"dbSize": 128,
"hitRate": 0.65
},
"idempotency": {
"activeKeys": 3,
"windowMs": 5000
}
}
Innvirkning på ventetid
Et treff i den semantiske hurtigbufferen leverer svaret fra hurtigbufferen uten et oppstrømskall,
så den rapporterte X-OmniRoute-Response-Latency er nær null
(uavhengig av den opprinnelige oppstrømsventetiden). Ventetidssensitive klienter
(ytelsestesting, p50/p99-overvåking) bør kontrollere responsheaderen
X-OmniRoute-Cache-Latency:
| Verdi | Betydning |
|---|---|
synthetic |
Svaret ble levert fra hurtigbufferen; ventetiden er ikke reell oppstrømstid |
| (mangler) | Svar fra et reelt oppstrømskall |
Omgåelse av hurtigbuffer per nøkkel
API-nøkler kan velge bort lesing fra den semantiske hurtigbufferen via cacheDefaultMode:
| Verdi | Virkemåte |
|---|---|
legacy |
Normal hurtigbufferatferd (standard) |
bypass |
Hopp over oppslag i hurtigbufferen fullstendig; bruk alltid oppstrømstjenesten |
Angis når nøkkelen opprettes (POST /api/keys) eller oppdateres (PATCH /api/keys/[id]):
{ "cacheDefaultMode": "bypass" }
Omgåelse per forespørsel
Enhver forespørsel kan omgå hurtigbufferen uavhengig av nøkkelinnstillingene:
X-OmniRoute-No-Cache: true
Dashbord og administrasjon
Administrasjonsruter (/api/*, unntatt offentlig autentisering/pålogging) autoriseres ikke med
vanlige API-nøkler for inferens. Informasjon om legitimasjonstyper, 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 | Slå på/av krav om pålogging |
Leverandøradministrasjon
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/providers |
GET/POST | Vis / opprett leverandører |
/api/providers/[id] |
GET/PUT/DELETE | Administrer en leverandør |
/api/providers/[id]/test |
POST | Test leverandørtilkoblingen |
/api/providers/[id]/models |
GET | Vis leverandørmodeller |
/api/providers/validate |
POST | Valider leverandørkonfigurasjonen |
/api/providers/bulk |
POST | Legg til flere API-nøkler for ÉN leverandør |
/api/providers/import |
POST | Importer en heterogen leverandørLISTE fra en analysert CSV/JSON-fil (#6836); resultater med delvise feil per rad |
/api/provider-nodes* |
Diverse | 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] |
Diverse | Leverandørspesifikk OAuth |
Ruting og konfigurasjon
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/models/alias |
GET/POST | Modellaliaser |
/api/models/catalog |
GET | Alle modeller etter leverandør + type |
/api/combos* |
Diverse | Kombinasjonsadministrasjon |
/api/keys* |
Diverse | Administrasjon av API-nøkler |
/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 | Budsjetter for tokenbegrensning per API-nøkkel |
/api/usage/model-latency-stats |
GET | Løpende aggregert latenstid per leverandør/modell (gj.snitt/p50/p95/p99, suksessrate); filtre: windowHours/minSamples/maxRows/provider/model (#6873) |
/api/usage/cache-health |
GET | Sammendrag av tilstanden til prompt-hurtigbufferen basert på call_logs — skrive-/leseforhold, p50/p90/p99-fordeling av skrivestørrelse, konsentrasjon av omfattende skriving, fordeling per modell og en vurdering som healthy/degraded/thrash/no-data; 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 | Konfigurasjon av nettverksproxy |
/api/settings/proxy/test |
POST | Test proxytilkoblingen |
/api/settings/ip-filter |
GET/PUT | Tillatelses-/blokkeringsliste for IP-adresser |
/api/settings/thinking-budget |
GET/PUT | Omskrivingsmodus for forespørsler om tenkning/resonnering (uendret videreformidling / automatisk fjerning / egendefinert / adaptiv). 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 | Tøm rader i forespørselsloggen og lokale anropsloggartefakter |
Kontekst og komprimering
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/compression/preview |
POST | Forhåndsvis komprimering med off/lite/standard/aggressive/ultra/RTK/stacked |
/api/compression/language-packs |
GET | Vis tilgjengelige Caveman-språkpakker |
/api/compression/rules |
GET | Vis metadata for Caveman-regler |
/api/context/caveman/config |
GET/PUT | Alias for Caveman-spesifikke innstillinger |
/api/context/rtk/config |
GET/PUT | RTK-spesifikke innstillinger, inkludert egendefinerte filtre og oppbevaring av råutdata |
/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 oppbevarte, redigerte råutdata etter peker-ID |
/api/context/combos |
GET/POST | Vis/opprett komprimeringskombinasjoner |
/api/context/combos/[id] |
GET/PUT/DELETE | Detaljer/oppdatering/sletting av komprimeringskombinasjon |
/api/context/combos/[id]/assignments |
GET/PUT | Tilordne komprimeringskombinasjoner til rutingskombinasjoner |
/api/context/analytics |
GET | Alias for komprimeringsanalyse |
Overvåking
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/sessions |
GET | Sporing av aktive økter |
/api/rate-limits |
GET | Hastighetsgrenser per konto |
/api/monitoring/health |
GET | Helsesjekk og leverandørsammendrag (catalogCount, configuredCount, activeCount, monitoredCount). Administrasjonsvisningen inkluderer credentialHealth: skalærverdier fra probehurtigbufferen, failedConnections når failed>0, og staleDbNonOkCount (fastlåst test_status i SQLite, ikke måleren). Se MONITORING_GUIDE.md. |
/api/cache/stats |
GET/DELETE | Hurtigbufferstatistikk / tøm |
/api/modality-bridge/stats |
GET | Minnebaserte attempts, vellykkede forsøk/bridged, feil, hurtigbuffertreff, totalLatencyMs, latencySamples, utvalgsbasert averageLatencyMs og tidspunkt for siste bruk (tilbakestilles ved omstart; krever administrasjonsautentisering) |
/api/modality-bridge/video/runtime |
GET | Streng kontroll av klarert loopback før administrasjonsautentisering/probing; sanert tilgjengelighet og versjoner for FFmpeg/ffprobe (no-store) |
/api/modality-bridge/video/extract |
POST | Intern, autentisert byte-formidler for klarert loopback; inndata på 50 MiB, begrenset kø/utdata på 32 MiB, 503 ved kapasitetsmangel, 499 ved frakobling, 504 ved tidsfrist; ikke et offentlig API for opplasting |
Sikkerhetskopiering og eksport/import
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/db-backups |
GET | Vis tilgjengelige sikkerhetskopier |
/api/db-backups |
PUT | Opprett en manuell sikkerhetskopi |
/api/db-backups |
POST | Gjenopprett fra en bestemt sikkerhetskopi |
/api/db-backups/export |
GET | Last ned databasen som en .sqlite-fil |
/api/db-backups/import |
POST | Last opp en .sqlite-fil for å erstatte databasen |
/api/db-backups/exportAll |
GET | Last ned en full sikkerhetskopi som et .tar.gz-arkiv |
Skysynkronisering
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/sync/cloud |
Forskjellige | Operasjoner for skysynkronisering |
/api/sync/initialize |
POST | Initialiser synkronisering |
/api/cloud/* |
Forskjellige | Skyadministrasjon |
Tunneler
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/tunnels/cloudflared |
GET | Les installasjons-/kjøretidsstatus for Cloudflare Quick Tunnel i kontrollpanelet |
/api/tunnels/cloudflared |
POST | Aktiver eller deaktiver Cloudflare Quick Tunnel (action=enable/disable) |
/api/tunnels/ngrok |
GET | Les kjøretidsstatus for ngrok Tunnel i kontrollpanelet |
/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 | Vis alle oppdagede agenter (innebygde + egendefinerte) med status |
/api/acp/agents |
POST | Legg til en egendefinert agent eller oppdater deteksjonsbufferen |
/api/acp/agents |
DELETE | Fjern en egendefinert agent via spørringsparameteren id |
GET-svaret inkluderer agents[] (id, name, binary, version, installed, protocol, isCustom) og summary (total, installed, notFound, builtIn, custom).
Robusthet og hastighetsgrenser
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/resilience |
GET/PATCH | Hent/oppdater innstillinger for forespørselskø, tilkoblingspause, leverandørbryter og venting |
/api/resilience/reset |
POST | Tilbakestill leverandørenes kretsbrytere |
/api/resilience/model-cooldowns |
GET | Vis aktive sperringer per (leverandør, tilkobling, modell), sortert etter gjenværende tid |
/api/resilience/model-cooldowns |
DELETE | Fjern en modellsperring — body {provider, model} eller {all: true} for å fjerne alt |
/api/rate-limits |
GET | Status for hastighetsgrenser per konto |
/api/rate-limit |
GET | Global konfigurasjon av hastighetsgrenser |
Alle de fire rutene under
/api/resilience/*krever administrasjonsautentisering (requireManagementAuth). Se Robusthet (utvidet) for en fullstendig gjennomgang av leverandørbryter kontra tilkoblingspause kontra modellsperring.
Evalueringer
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/evals |
GET/POST | Vis evalueringspakker / kjør evaluering |
Retningslinjer
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/policies |
GET/POST/DELETE | Administrer rutingsretningslinjer |
Samsvar
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/compliance/audit-log |
GET | Revisjonslogg for samsvar (siste N) |
v1beta (Gemini-kompatibel)
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/v1beta/models |
GET | Vis modeller i Gemini-format |
/v1beta/models/{...path} |
POST | Gemini-endepunktet generateContent |
Disse endepunktene gjenspeiler Geminis API-format for klienter som forventer innebygd kompatibilitet med Gemini SDK.
Interne API-er / system-API-er
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/init |
GET | Kontroll av applikasjonsinitialisering (brukes ved første kjøring) |
/api/tags |
GET | Ollama-kompatible modelltagger (for Ollama-klienter) |
/api/restart |
POST | Utløs kontrollert omstart av serveren |
/api/shutdown |
POST | Utløs kontrollert avslutning av serveren |
/api/system/env/repair |
POST | Reparer miljøvariabler for OAuth-leverandør |
Merk: Disse endepunktene brukes internt av systemet eller for kompatibilitet med Ollama-klienter. 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 skadede OAuth-miljøvariabler for en bestemt 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 segmentet i banen velger den opprinnelige leverandøren (openai/…, deepgram/…). Gatewayer som reeksporterer 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
}
Eksempler 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 opprinnelig Deepgram-nøkkel). En forespørsel med bare deepgram/nova-3 bruker ikke OpenRouter.
Støttede formater: mp3, wav, m4a, flac, ogg, webm.
Ollama-kompatibilitet
For klienter som bruker Ollamas API-format:
# Endepunkt for chat (Ollama-format)
POST /v1/api/chat
# Modelliste (Ollama-format)
GET /api/tags
Forespørsler oversettes automatisk mellom Ollama-formatet og interne formater.
Tokeniserte VS Code-aliaser / aliaser uten headere
Bruk disse aliasene når en integrasjon ikke kan legge til en Authorization-header og trenger API-nøkkelen innebygd i basis-URL-en.
# Katalogalias i OpenAI-stil
GET /api/v1/vscode/{token}/
GET /api/v1/vscode/{token}/models
# Chat-aliaser i OpenAI-stil
POST /api/v1/vscode/{token}/chat/completions
POST /api/v1/vscode/{token}/responses
# Aliaser i Ollama-stil
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; svarformatene forblir identiske. - Foretrekk
Authorization: Bearer ...når klienten støtter egendefinerte headere. - URL-baserte tokener kan vises i logger fra reverse proxyer, nettleserhistorikk og telemetri utenfor OmniRoute. Behandle dem som et kompatibilitetsalternativ, ikke som standard autentiseringsmetode.
Telemetri
# Hent sammendrag av latenstelemetri (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"
}
Skjemamerknader (
setBudgetSchema):apiKeyIder obligatorisk; minst én avdailyLimitUsd,weeklyLimitUsdellermonthlyLimitUsdmå være større enn null. Valgfrie felt:warningThreshold(0–1),resetInterval(daily|weekly|monthly),resetTime(HH:MM). Det eldre formatet{keyId, limit, period}returnerer400 Bad Request.
Tokengrenser
Tokenbudsjetter per API-nøkkel (forskjellig fra det USD-baserte budsjettet ovenfor). Håndheves direkte i forespørselsflyten: Når bruken i nøkkelens gjeldende vindu når grensen, avvises forespørsler med 429 Too Many Requests. Grenser kan avgrenses til en bestemt model, en provider eller brukes globalt på tvers av nøkkelen med global. Når flere grenser samsvarer med en forespørsel, gjelder den mest restriktive.
# Vis tokengrensene til en nøkkel (inkluderer gjeldende bruk i vinduet)
GET /api/usage/token-limits?apiKeyId=key-123
# Opprett eller oppdater en tokengrense
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 tokengrense etter id
DELETE /api/usage/token-limits?id=tl-abc
Skjemamerknader (
setTokenLimitSchema):apiKeyIdogscopeType(model|provider|global) er obligatoriske.scopeValueer obligatorisk med mindrescopeTypeerglobal(f.eks. en modell-id for omfangetmodel, en leverandør-id for omfangetprovider).tokenLimitmå være et positivt heltall (konverteres fra streng). Valgfritt:id(utelat for å opprette, oppgi for å oppdatere),resetInterval(daily|weekly|monthly, standardverdimonthly),resetTime(HH:MM),enabled(standardverditrue).GET-svar utvider hver grense medtokensUsed,remaining,windowStart,periodStartAtognextResetAt. Dette er et endepunkt i administrasjonsklassen (autentisering håndheves sentralt av autorisasjonsflyten).
Forespørselsbehandling
- Klienten sender en forespørsel til
/v1/* - Rutebehandleren kaller
handleChat,handleEmbedding,handleAudioTranscriptionellerhandleImageGeneration - Modellen løses (direkte leverandør/modell eller alias/kombinasjon)
- Påloggingsinformasjon velges fra den lokale databasen med filtrering etter kontotilgjengelighet
- For chat:
handleChatCorekontrollerer semantisk/signaturbasert hurtigbuffer og løser innstillinger for kombinasjonskomprimering - Proaktiv komprimering kjøres før leverandøroversettelse når den er aktivert (
lite, Caveman, RTK eller stablet) - Leverandørutføreren sender forespørselen oppstrøms
- Svaret oversettes tilbake til klientformatet (chat) eller returneres som det er (innebygginger/bilder/lyd)
- Bruk, komprimeringsanalyse og forespørselslogger registreres
- Reservealternativer brukes ved feil i henhold til kombinasjonsreglene
Fullstendig arkitekturreferanse: ARCHITECTURE.md
Administrasjon av kombinasjoner
Rutingkombinasjoner på høyere nivå (allerede oppsummert under /api/combos*) kan også tilordnes 1:1 fra et mønster for modell-id, noe som muliggjør transparent omdirigering av en modell-id i OpenAI-stil til en kombinasjon.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/model-combo-mappings |
Vis alle modell→kombinasjon-tilordninger |
| POST | /api/model-combo-mappings |
Opprett tilordning — innhold: {pattern, comboId, priority?, enabled?, description?} |
| GET | /api/model-combo-mappings/[id] |
Hent én enkelt tilordning |
| PUT | /api/model-combo-mappings/[id] |
Oppdater feltene i en eksisterende tilordning |
| DELETE | /api/model-combo-mappings/[id] |
Fjern en tilordning |
Autentisering: administrasjonsøkt/API-nøkkel (requireManagementAuth).
Webhooks
Utgående webhook-abonnementer for OmniRoute-hendelser (fullføring av forespørsler, oppbrukt kvote, nøkkelrotasjon osv.).
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/webhooks |
Vis webhooks (hemmeligheter maskeres som <prefix>...) |
| POST | /api/webhooks |
Opprett webhook — body: {url, events?: ["*"], secret?, description?} |
| GET | /api/webhooks/[id] |
Hent en webhook |
| PUT | /api/webhooks/[id] |
Oppdater url/events/secret/description |
| 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 (automatisk administrasjon)
Brukes av delsystemet for automatisk nøkkeladministrasjon til å utstede og rotere API-nøkler hos en underliggende leverandør/konto, med daglige/timesbaserte kvoter.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/v1/registered-keys |
Vis registrerte nøkler (kun maskert prefiks) |
| POST | /api/v1/registered-keys |
Utsted en ny registrert nøkkel — body: {name, provider?, accountId?, idempotencyKey?, expiresAt?, dailyBudget?, hourlyBudget?}. Returnerer den rå nøkkelen én gang. Returnerer 429 ved kvoteavslag. |
| GET | /api/v1/registered-keys/[id] |
Hent metadataene til en registrert nøkkel (uten råmateriale) |
| DELETE | /api/v1/registered-keys/[id] |
Tilbakekall en registrert nøkkel |
| POST | /api/v1/registered-keys/[id]/revoke |
Eksplisitt endepunkt for tilbakekalling (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.) som kjøres eksternt på vegne av OmniRoute-brukere.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/v1/agents/tasks |
Vis oppgaver — valgfritt ?provider=, ?status=, ?limit= (1–500, standardverdi 50) |
| POST | /api/v1/agents/tasks |
Opprett oppgave — innholdet valideres 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 — oppdaterer status synkront fra den overordnede skyagenten når en external_id er angitt |
| POST | /api/v1/agents/tasks/[id] |
Diskriminert handling: {action: "approve"}, {action: "message", message} eller {action: "cancel"} |
| DELETE | /api/v1/agents/tasks/[id] |
Slett en bestemt oppgave etter ID |
Autentisering: administrasjonsautentisering kreves for alle metoder (
requireCloudAgentManagementAuth). Før v3.8.0 var disse ikke autentisert — se commit588a0333for den inkompatible 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 tilordnes leverandører, kontoer eller globalt.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/v1/management/proxies |
Vis proxyer (med ?id= returneres én; med ?id=&where_used=1 returneres tilordningsgrafen) |
| POST | /api/v1/management/proxies |
Opprett proxy — innholdet valideres av createProxyRegistrySchema |
| PATCH | /api/v1/management/proxies |
Oppdater proxy — innholdet valideres av updateProxyRegistrySchema (krever id) |
| DELETE | /api/v1/management/proxies?id=...&force=1 |
Slett proxy (bruk force=1 for å fjerne tilordninger) |
| GET | /api/v1/management/proxies/assignments |
Vis tilordninger — kan filtreres etter proxy_id, scope, scope_id; angi resolve_connection_id=<id> for å finne den aktive proxyen for en tilkobling |
| PUT | /api/v1/management/proxies/assignments |
Tilordne — innholdet valideres av proxyAssignmentSchema ({scope, scopeId?, proxyId?}). Tømmer hurtigbufferen for dispatcheren |
| PUT | /api/v1/management/proxies/bulk-assign |
Massetilordne — innholdet valideres av bulkProxyAssignmentSchema ({scope, scopeIds[], proxyId?}) |
| GET | /api/v1/management/proxies/health?hours=24 |
Samlet proxytilstand (antall vellykkede/mislykkede forsøk, ventetid) over et tidsvindu |
Autentisering: administrasjonsøkt/API-nøkkel på hver rute (requireManagementAuth).
Oppgavebeskrivelsens
POST /api/v1/management/proxies/[id]/assignmentsogPOST /api/v1/management/proxies/[id]/healthbetjenes av de flate rutene/assignmentsog/healthsom vises ovenfor — det finnes ingen underordnede ruter per ID i kodebasen.
Robusthet (utvidet)
OmniRoute tilbyr tre uavhengige mekanismer for midlertidige feil. Administrasjonsendepunktene nedenfor lar operatører lese og overstyre dem:
| Omfang | Tilstandslagring | Les | Tilbakestill / tøm |
|---|---|---|---|
| Leverandørbryter | domain_circuit_breakers + i minnet |
/api/monitoring/health |
POST /api/resilience/reset |
| Tilkoblingsnedkjøling | rateLimitedUntil på leverandørtilkoblinger |
/api/rate-limits, /api/providers/[id] |
(aktiveres igjen ved behov; tøm via leverandørens PUT) |
| Modellsperre | Modelltilgjengelighetsregister i minnet | GET /api/resilience/model-cooldowns |
DELETE /api/resilience/model-cooldowns |
PATCH /api/resilience godtar overstyringer av leverandørbrytere under providerBreaker.oauth og providerBreaker.apikey. Hver profil støtter degradationThreshold, failureThreshold og resetTimeoutMs. De samme feltene er tilgjengelige under Kontrollpanel → Innstillinger → Robusthet.
# Tøm en enkelt modellsperre
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 sperrer
curl -X DELETE http://localhost:20128/api/resilience/model-cooldowns \
-H "Cookie: auth_token=..." \
-d '{"all":true}'
Fullstendig konseptuell referanse og standardverdier for brytere: se CLAUDE.md → «Kjøretidstilstand for robusthet».
Ferdigheter
Rammeverk for å utvide OmniRoute med egendefinerte kjørbare behandlere samt markedsplassintegrasjoner.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/skills |
Vis installerte ferdigheter — kan filtreres etter ?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, behandler, tagger) |
| DELETE | /api/skills/[id] |
Avinstaller en ferdighet |
| POST | /api/skills/install |
Installer en ferdighet fra et råmanifest — innhold: {name, version, description, schema:{input, output}, handlerCode, apiKeyId?} |
| GET | /api/skills/executions |
Vis nylige kjøringer av ferdigheter (revisjonsspor med inndata/utdata/varighet) |
| GET | /api/skills/marketplace?q=... |
Søk/popularitetsliste fra SkillsMP-markedsplassen (krever innstillingen skillsmpApiKey) |
| 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. Søkeruter for markedsplassen godtar enten administrasjonsautentisering eller en Bearer-API-nøkkel (isAuthenticated).
Minne
Vedvarende lager for samtale-/faktaminner, avgrenset per API-nøkkel/økt.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/memory |
Vis minner — ?apiKeyId=, ?type=, ?sessionId=, ?q=, med paginering via offset/limit eller page/limit |
| POST | /api/memory |
Opprett minne — innhold 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 |
Tilstand for minneundersystemet (databaseforbindelse, innebyggingsmotor, status for vektorindeks) |
Autentisering: administrasjonsøkt/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 transporter (stdio, SSE, streamable-http) og omfangsbegrensede verktøy. Endepunktene for kontrollpanelet nedenfor leser status-/revisjonsdata og videresender HTTP-transportene.
| Metode | Bane | Beskrivelse | |
|---|---|---|---|
| GET | /api/mcp/status |
Livstegn, transport, tilkoblingsstatus, siste kall, mest brukte verktøy, suksessrate siste 24 t | |
| 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 via SSE-transporten | |
| GET | /api/mcp/stream |
Åpne SSE-siden av Streamable HTTP-transporten (serverinitierte meldinger) | |
| POST | /api/mcp/stream |
Send JSON-RPC-ramme via Streamable HTTP-transporten | |
| DELETE | /api/mcp/stream |
Avslutt en Streamable HTTP-økt | |
| GET | /api/mcp/audit |
Spørr i revisjonsloggen — ?limit=, ?offset=, ?tool=, `?success=true |
false, ?apiKeyId=` |
| GET | /api/mcp/audit/stats |
Aggregerte revisjonsstatistikker (totaler, suksessrate, gjennomsnittlig varighet, mest brukte verktøy) |
Autentisering: sse-/stream-transportene følger den MCP-spesifikke autentiseringsflaten (Bearer-API-nøkkel med mcp-omfang); rutene status/tools/audit* kan leses fra kontrollpanelet (ingen ytterligere autentisering kreves utover tilgang til kontrollpanelverten).
Begge HTTP-transportene styres av
settings.mcpEnabledogsettings.mcpTransport— manglende samsvar i transport returnerer400, mens deaktivert MCP returnerer503.
A2A-server
OmniRoute tilbyr et A2A-endepunkt (agent-til-agent) for JSON-RPC 2.0 samt et REST-grensesnitt for inspeksjon og bruk i kontrollpanelet.
JSON-RPC
POST /a2a
Authorization: Bearer your-api-key # valgfritt med mindre OMNIROUTE_API_KEY er angitt
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 styres av settings.a2aEnabled):
| Metode | Beskrivelse |
|---|---|
message/send |
Synkron ferdighetskjøring; returnerer {task, artifacts, metadata} |
message/stream |
Strømming av SSE-kjøring for 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, funksjoner, ferdighetskatalog, autentiseringsmetode) — bufres offentlig i 1 t. Ingen autentisering kreves.
REST-hjelpefunksjoner
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/a2a/status |
A2A aktivert + oppgavestatistikk + bufret sammendrag av agentkort |
| 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-hjelpefunksjon — 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-hjelpefunksjonene kjører uten administrasjonsautentisering (kan leses av kontrollpanelet); JSON-RPC-ruten /a2a bruker Bearer OMNIROUTE_API_KEY hvis den er konfigurert.
Sky, evalueringer og vurdering
| Metode | Bane | Beskrivelse | ||
|---|---|---|---|---|
| POST | /api/cloud/auth |
Verifiser en Bearer-nøkkel og returner maskerte leverandørtilkoblinger + modellaliaser for skysynkroniseringsklienter | ||
| POST | /api/cloud/credentials/update |
Oppdater kryptert legitimasjon for en skysynkronisert leverandør | ||
| POST | /api/cloud/model/resolve |
Slå opp en logisk modell-ID til en konkret leverandør/modell ved hjelp av den lokale rutingtabellen | ||
| GET | /api/cloud/models/alias |
List modellaliaser slik de eksponeres for skysynkronisering | ||
| GET | /api/assess |
Les de nyeste vurderingskategoriseringene (per leverandør/modell) | ||
| POST | /api/assess |
Kjør en vurdering — innhold: `{scope: {type:"all"} | {type:"provider", providerId} | {type:"model", modelId}, trigger?}` |
| GET | /api/evals |
List innebygde evalueringspakker + de nyeste kjøringene | ||
| POST | /api/evals |
Start en evalueringskjøring | ||
| POST | /api/evals/suites |
Opprett en egendefinert evalueringspakke — innhold validert av evalSuiteSaveSchema |
||
| GET | /api/evals/suites/[id] |
Hent en egendefinert evalueringspakke |
Autentisering: /api/cloud/auth validerer en Bearer-nøkkel direkte; de andre rutene under /api/cloud/*, /api/evals/* og /api/assess krever administrasjonsøkt/API-nøkkel. POST til /api/assess bruker validateBody med et omfangsskjema med diskriminert union.
Administrasjon av ACP (Agent Client Protocol)
som underordnede prosesser. Disse endepunktene håndterer oppdagelse 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 og binærfil |
| POST | /api/acp/agents |
Registrer en egendefinert ACP-agent eller oppdater hurtigbufferen — 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 en administrasjonsøkt (auth_token-informasjonskapsel for kontrollpanelet) eller en API-nøkkel med administrasjonsomfang.
Se ACP-rammeverket for fullstendig informasjon.
Analyse og observerbarhet
Endepunkter for sanntidsanalyse som brukes til å overvåke ruting, komprimering og leverandørmangfold. Disse driver sidene under /dashboard/analytics/*.
Analyse av automatisk ruting
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/analytics/auto-routing |
Aggregert statistikk for automatisk ruting: totalt antall kall, strategifordeling, nivåfordeling, toppleverandører |
| GET | /api/analytics/auto-routing?days=7 |
Statistikk for et tidsvindu (standard er 24 t) |
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 |
Aggregert komprimeringsstatistikk: sparte tokener, 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ørmangfold
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/analytics/diversity |
Mangfoldssporing basert på Shannon-entropi: forhindrer enkeltfeilpunkter ved å måle fordelingen mellom leverandører |
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 accounts for 40% of traffic — consider diversifying"]
}
Autentisering: Krever en administrasjonsøkt eller en API-nøkkel med administrasjonsomfang.
Administrativ drift
Endepunkter kun for administratorer, beregnet på driftsadministrasjon.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/admin/concurrency |
Les gjeldende samtidighetsgrenser (globale + per leverandør) |
| POST | /api/admin/concurrency |
Oppdater samtidighetsgrenser — innhold: {global?: number, perProvider?: Record<string, number>} |
Autentisering: Krever en administrasjonsøkt med administratoromfang.
Administrasjon av CLI-verktøy
Administrer CLI-verktøy som integreres med OmniRoute (antigravity, chipotle, 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 verktøyets genererte konfigurasjon (dryRun viser en forhåndsvisning; 422 + containerEphemeralTarget ved containerkjøring; migration angir en eldre Codex YAML-konfigurasjon) |
| 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: Det samme endepunktet gjenoppretter sikkerhetskopien når {tool, backupId} angis i innholdet |
| GET | /api/cli-tools/antigravity-mitm |
Status for Antigravity MITM-proxyen (CLI-verktøyet «antigravity-mitm») |
| POST | /api/cli-tools/antigravity-mitm/alias |
Konfigurer antigravity-mitm-aliaser |
Autentisering: Krever en administrasjonsøkt.
Agentferdigheter
Administrer ferdigheter for KI-agenter (tilsvarende OpenAIs egendefinerte GPT-er, men for agenter).
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/agent-skills |
List opp alle agentferdigheter (innebygde + egendefinerte) |
| GET | /api/agent-skills/[id] |
Hent en bestemt agentferdighet |
| POST | /api/agent-skills |
Opprett en egendefinert agentferdighet — innhold: {name, description, prompt, model?, temperature?} |
| PUT | /api/agent-skills/[id] |
Oppdater en egendefinert agentferdighet |
| DELETE | /api/agent-skills/[id] |
Slett en egendefinert agentferdighet |
| GET | /api/agent-skills/[id]/raw |
Hent rå instruksjon + metadata (uten kjøring) |
| POST | /api/agent-skills/generate |
Generer en ny ferdighet med KI fra en beskrivelse i naturlig språk |
Autentisering: Krever en administrasjonsøkt eller en API-nøkkel med administrasjonsomfang.
Hurtigbufferadministrasjon
Administrer den semantiske hurtigbufferen og resonneringshurtigbufferen.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/cache |
Oversikt over hurtigbufferen: totalt antall oppføringer, treffrate, størrelse på disk |
| GET | /api/cache/entries |
Vis hurtigbufrede oppføringer (med paginering) |
| DELETE | /api/cache/entries |
Slett hurtigbufferoppføringer (filtrer etter spørringsparametere) |
| GET | /api/cache/stats |
Detaljert hurtigbufferstatistikk (per leverandør, per modell) |
| GET | /api/cache/reasoning |
Status for resonneringshurtigbufferen (for avspilling av resonnering) |
| DELETE | /api/cache/reasoning |
Tøm resonneringshurtigbufferen — spørringsparametere: ?toolCallId=<id> (én), ?provider=<p> eller ingen parametere (alle) |
Autentisering: Krever administrasjonsøkt.
Minnesystem
Administrer persistent minne (FTS5 + vektorrepresentasjoner).
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/memory |
Vis minneoppføringer (filtrer etter omfang, type og søkespørring) |
| POST | /api/memory |
Opprett en ny minneoppføring — innhold: {scope, type, content, metadata?} |
| GET | /api/memory/[id] |
Hent en bestemt 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 minnet (FTS5 + vektor) — statistikk er inkludert i samme svar |
Autentisering: Krever administrasjonsøkt eller administrasjonsavgrenset API-nøkkel.
Webhooks
Administrer webhook-abonnementer for hendelser.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/webhooks |
Vis alle webhook-abonnementer |
| POST | /api/webhooks |
Opprett et webhook-abonnement — innhold: {url, events[], secret?, active?} |
| GET | /api/webhooks/[id] |
Hent et bestemt webhook-abonnement |
| PUT | /api/webhooks/[id] |
Oppdater et webhook-abonnement |
| DELETE | /api/webhooks/[id] |
Slett et webhook-abonnement |
| GET | /api/webhooks/[id]/deliveries |
Vis leveringshistorikken for en webhook (logg over vellykkede/mislykkede leveringer) |
| POST | /api/webhooks/[id]/test |
Send en testhendelse til en webhook |
Autentisering: Krever administrasjonsøkt.
Se Webhook-rammeverket for alle hendelsestyper.
Ferdighetsrammeverk
Administrer ferdigheter (rammeverket for agentbaserte utvidelser).
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/skills |
Vis 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 — brødtekst: {enabled?: boolean, mode?: "on" | "off" | "auto"} |
| POST | /api/skills/executions |
Kjør en ferdighet — brødtekst: {skillName, apiKeyId, input?, sessionId?} |
| GET | /api/skills/executions |
Vis kjøringshistorikk for alle ferdigheter (filtrer etter ?apiKeyId=) |
Autentisering: Krever administrasjonsøkt eller API-nøkkel med administrasjonstilgang.
Se Ferdighetsrammeverk for fullstendig informasjon.
Programtillegg
Administrer OmniRoute-programtillegg (tredjepartsutvidelser).
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/plugins |
Vis installerte programtillegg |
| POST | /api/plugins/marketplace/install |
Installer et programtillegg fra markedsplassen |
| DELETE | /api/plugins/[name] |
Avinstaller et programtillegg |
| POST | /api/plugins/[name]/activate |
Aktiver et programtillegg |
| POST | /api/plugins/[name]/deactivate |
Deaktiver et programtillegg |
| GET | /api/plugins/[name]/config |
Hent konfigurasjonen for programtillegget |
| PUT | /api/plugins/[name]/config |
Oppdater konfigurasjonen for programtillegget |
Autentisering: Krever administrasjonsøkt.
Se Rammeverk for programtillegg for fullstendig informasjon.
Skyggeruting
Skygge-/A-B-sammenligning av leverandører er ikke en frittstående REST-flate — den konfigureres via kombinasjonsruting (se Automatisk kombinasjon). Sammenligningsmålinger per kombinasjon leveres av GET /api/combos/metrics.
Sikkerhetsmekanismer
Inspiser sikkerhetsmekanismene under kjøring (deteksjon av personopplysninger, deteksjon av promptinjeksjon, kobling mot synsmodeller). Sikkerhetsmekanismene kjøres for hver forespørsel. De kan velges bort per kall via forespørselshodet x-omniroute-disabled-guardrails — det finnes ingen vedvarende flate for aktivering/deaktivering.
| Metode | Bane | Beskrivelse |
|---|---|---|
| GET | /api/guardrails |
Vis de registrerte sikkerhetsmekanismene og statusen deres (navn / aktivert / prioritet) |
| POST | /api/guardrails/test |
Testkjør førkallspipelinen med eksempeldata — brødtekst: {input, disabledGuardrails?} |
Autentisering: Krever administrasjonsøkt.
Se Sikkerhet > Sikkerhetsmekanismer for fullstendig informasjon.
Autentisering
Se Administrasjonsautentisering for de fire
legitimasjonstypene (dashbordøkt, lokalt CLI-token, oma_live_…-tilgangstoken,
API-nøkkel med administrasjonsomfang) og hvordan de skiller seg fra inferensnøkler.
- Dashbordruter (
/dashboard/*) bruker informasjonskapselenauth_token - Innlogging bruker lagret passord-hash, med
INITIAL_PASSWORDsom reserve requireLoginkan slås av og på via/api/settings/require-login/v1/*-ruter kan kreve Bearer-API-nøkkel nårREQUIRE_API_KEY=true- «administrasjonstoken» / «API-nøkkel med administrasjonsomfang» i denne referansen betyr én av typene i denne veiledningen – ikke en udefinert, ekstra type hemmelighet
Bakoverinkompatibel endring (v3.8.0) –
/api/v1/agents/tasks/*og endepunktene for administrasjon av nedkjølingsperioder krever nå administrasjonsautentisering (dashbordetsauth_token-informasjonskapsel eller en API-nøkkel med administrasjonsomfang). Klienter som tidligere kalte disse rutene uten autentisering, vil motta401 Unauthorized. Se commit588a0333(fix(auth): require management auth for agent and cooldown APIs).