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

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

HeaderRetningBeskrivelse
X-OmniRoute-No-CacheForespørselSett til true for å omgå hurtigbufferen
x-omniroute-no-memoryForespørselSett til true for å hoppe over minne- + ferdighetsinjeksjon for denne forespørselen (speiler ingen hurtigbuffer; unngår token-/kostnadsoverhead per kall)
X-OmniRoute-ProgressForespørselSett til true for fremdriftshendelser
X-Session-IdForespørselSticky sesjonsnøkkel for ekstern sesjonsaffinitet
x_session_idForespørselUnderstrek-variant aksepteres også (direkte HTTP)
X-OmniRoute-Session-IdForespørselAnroper-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-KeyForespørselDedup-nøkkel (5s vindu)
X-Request-IdForespørselAlternativ dedup-nøkkel
X-OmniRoute-CacheSvarHIT eller MISS (ikke-strømming)
X-OmniRoute-IdempotentSvartrue hvis duplisert
X-OmniRoute-ProgressSvarenabled hvis fremdriftssporing er på
X-OmniRoute-Session-IdSvarEffektiv sesjons-ID brukt av OmniRoute
X-OmniRoute-Request-IdSvarForespørselskorrelasjons-ID (når kjent)
X-OmniRoute-VersionSvarOmniRoute byggeversjon (alltid til stede)
X-OmniRoute-Cost-SavedSvarUSD hurtigbufferen unngikk ved en HIT (kun hurtigbuffer-treff)
X-OmniRoute-DecisionSvarRuting-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), aktiver underscores_in_headers on;.

Kostnadstelemetri-headere: ikke-strømmende suksessresponser inneholder også X-OmniRoute-* kostnadstelemetri-settet — X-OmniRoute-Response-Cost (USD, fast 10 desimaler; 0.0000000000 for gratis/upriset), X-OmniRoute-Tokens-In / X-OmniRoute-Tokens-Out, X-OmniRoute-Model, X-OmniRoute-Provider, X-OmniRoute-Latency-Ms, X-OmniRoute-Cache-Hit, og X-OmniRoute-Fallback-Attempts (kun når > 0), pluss X-OmniRoute-Request-Id og X-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 alltid 0). Mediekostnad beregnes per modalitet (per bilde, per sekund, per tegn, per søkeenhet) når prising er tilgjengelig, ellers 0 (fail-open).

Cache-treff kostnadssemantikk: ved et semantisk cache-treff (X-OmniRoute-Cache-Hit: true) gjøres ingen oppstrømsanrop, så X-OmniRoute-Response-Cost er 0.0000000000 (den inkrementelle kostnaden for å levere treffet). Den opprinnelige/ville-ha-vært-kostnaden rapporteres separat i X-OmniRoute-Cost-Saved. Faktureringsforbrukere bør summere X-OmniRoute-Response-Cost (treff koster ingenting); cache-analyse kan aggregere X-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:

VerdiEffekt
offIngen komprimering for denne forespørselen.
defaultDen panelavledede standardprofilen (ignorerer den aktive profilen). Tapsgivende motorer er slått av.
safeKun deduplisering og mellomromsfalding.
allow-lossyBehold 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 off eller default kan 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 med content.parts (text eller inline_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-IDModell-IDmodel-verdiMerknader
mistralmistral-ocr-latestmistral/mistral-ocr-latest (eller bare mistral-ocr-latest)Synkron – svaret returneres direkte fra det enkelte oppstrømskallet.
azure-document-intelligenceprebuilt-readazure-document-intelligence/prebuilt-readAsynkron oppstrøm (analyze + polling) – se nedenfor.
vertex-deepseek-ocrdeepseek-ocr-maasvertex-deepseek-ocr/deepseek-ocr-maasSynkron, 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
ModusSender utMerknader
dualcc/claude-sonnet-4-6 og claude/claude-sonnet-4-6Standard. Begge ID-ene ruter til samme modell; beholdt slik at klientkonfigurasjoner som hardkodet en av formene, fortsetter å fungere. Dobler omtrent katalogen.
aliascc/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.
canonicalclaude/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"}/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

MetodeBaneFormat
POST/v1/chat/completionsOpenAI
POST/v1/messagesAnthropic
POST/v1/responsesOpenAI-svar
POST/v1/embeddingsOpenAI
POST/v1/images/generationsOpenAI-bilder
POST/v1/images/editsOpenAI-bilder (rediger/inpaint)
POST/v1/videos/generationsOpenAI-stil videogenerering
POST/v1/music/generationsOpenAI-stil musikkgenerering
POST/v1/audio/transcriptionsOpenAI-lyd (STT)
POST/v1/audio/speechOpenAI TTS (returnerer lydkropp)
POST/v1/rerankCohere/Voyage-stil rerank
POST/v1/classifyJina klassifiser (api.jina.ai)
POST/v1/segmentJina segmenterer (segment.jina.ai)
POST/v1/moderationsOpenAI-modereringer
GET/v1/modelsOpenAI
POST/v1/messages/count_tokensAnthropic
GET/v1beta/modelsGemini
POST/v1beta/models/{...path}Gemini generateContent
POST/v1/api/chatOllama
GET/api/v1/vscode/{token}/OpenAI katalogalias
GET/api/v1/vscode/{token}/modelsOpenAI modellalias
POST/api/v1/vscode/{token}/chat/completionsOpenAI tokenisert alias
POST/api/v1/vscode/{token}/responsesOpenAI-svar tokenisert alias
POST/api/v1/vscode/{token}/api/chatOllama tokenisert alias
GET/api/v1/vscode/{token}/api/tagsOllama 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/rerank ruter 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 aktiverer RERANK_REMOTE_PROVIDER_NODES funksjonsflagget 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 styrer rerankProviderModel i minneinnstillingene.

Lokale serverformer: noden kalles på <base>/v1/rerank og, 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 til top_n.

Oppdagelse av leverandørnoder: Modeller på en OpenAI-kompatibel leverandørnode vises i GET /v1/models under nodeprefikset. Rader som ikke inneholder endepunktmetadata (typisk for lokale /v1/models-oppføringer) arver nodens apiType, slik at modellene til en embeddings-node er type: "embedding" og en rerank-nodes modeller er type: "rerank" i stedet for å standardisere til chat; en eksplisitt supportedEndpoints på 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.

MetodeStiBeskrivelse
POST/v1/filesLast opp en fil (multipart: file, purpose, expires_after[anchor], expires_after[seconds]) — maks 512 MiB
GET/v1/filesList 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]/contentStrø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.

MetodeStiBeskrivelse
POST/v1/batchesOpprett batch — kropp validert av v1BatchCreateSchema (input_file_id, endpoint, completion_window)
GET/v1/batchesList batcher
GET/v1/batches/[id]Hent batchstatus + request_counts
DELETE/v1/batches/[id]Slett en fullført/mislykket batch
POST/v1/batches/[id]/cancelAvbryt 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.).

MetodeStiBeskrivelse
GET/v1/searchList opp konfigurerte søkeleverandører + funksjonalitet
POST/v1/searchKjør en søkeforespørsel — kropp validert av v1SearchSchema, støtter hurtigbufring/sammenføyning
GET/v1/search/analyticsStatistikk 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).

MetodeStiBeskrivelse
POST/v1/web/fetchHent/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 (firecrawljina-readertavily-searchtinyfishnimble-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

MetodeStiBeskrivelse
GET/v1/quotas/checkForhåndsvalidere kvote for en provider + accountId før utstedelse av en registrert nøkkel
POST/v1/issues/reportRapporter 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:

VerdiBetydning
syntheticRespons 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:

VerdiOppførsel
legacyNormal hurtigbuffer-oppførsel (standard)
bypassHopp 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

EndepunktMetodeBeskrivelse
/api/auth/loginPOSTLogg inn
/api/auth/logoutPOSTLogg ut
/api/settings/require-loginGET/PUTVeksle påkrevd innlogging

Leverandøradministrasjon

EndepunktMetodeBeskrivelse
/api/providersGET/POSTListe / opprett leverandører
/api/providers/[id]GET/PUT/DELETEAdministrer en leverandør
/api/providers/[id]/testPOSTTest leverandørforbindelse
/api/providers/[id]/modelsGETList leverandørmodeller
/api/providers/validatePOSTValidere leverandørkonfigurasjon
/api/providers/bulkPOSTLegg til API-nøkler i bulk for ÉN leverandør
/api/providers/importPOSTImporter en heterogen leverandørLISTE fra en parset CSV/JSON-fil (#6836); delvise feilresultater per rad
/api/provider-nodes*VariousAdministrasjon av leverandørnoder
/api/provider-modelsGET/POST/PATCH/DELETEEgendefinerte modeller (legg til, oppdater, skjul/vis, slett)

OAuth-flyter

EndepunktMetodeBeskrivelse
/api/oauth/[provider]/[action]VariousLeverandørspesifikk OAuth

Ruteføring og konfigurasjon

EndepunktMetodeBeskrivelse
/api/models/aliasGET/POSTModellaliaser
/api/models/catalogGETAlle modeller etter leverandør + type
/api/combos*VariousKombinasjonsadministrasjon
/api/keys*VariousAPI-nøkkeladministrasjon
/api/pricingGETModellpriser

Bruk og analyse

EndepunktMetodeBeskrivelse
/api/usage/historyGETBrukshistorikk
/api/usage/logsGETBrukslogger
/api/usage/request-logsGETLogger på forespørselsnivå
/api/usage/[connectionId]GETBruk per tilkobling
/api/usage/token-limitsGET/POST/DELETEToken-grensebudsjetter per API-nøkkel
/api/usage/model-latency-statsGETRullerende aggregering av latens per leverandør/modell (avg/p50/p95/p99, success rate); filtre: windowHours/minSamples/maxRows/provider/model (#6873)
/api/usage/cache-healthGETHelsestatus 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

EndepunktMetodeBeskrivelse
/api/settingsGET/PUT/PATCHGenerelle innstillinger
/api/settings/proxyGET/PUTNettverksproxy-konfigurasjon
/api/settings/proxy/testPOSTTest proxy-tilkobling
/api/settings/ip-filterGET/PUTIP-tillatelsesliste/blokkeringsliste
/api/settings/thinking-budgetGET/PUTTenke-/resonnerings-forespørsel omskrivingsmodus (passthrough / auto-strip / custom / adaptive). Uavhengig av komprimering. Se THINKING_BUDGET.md.
/api/settings/system-promptGET/PUTGlobal systemprompt
/api/settings/compressionGET/PUTGlobal komprimeringskonfigurasjon
/api/settings/purge-request-historyPOSTSlett forespørselsloggrader og lokale call-log-artefakter

Kontekst og komprimering

EndpointMethodDescription
/api/compression/previewPOSTForhåndsvis av/lett/standard/aggressiv/ultra/RTK/stablet komprimering
/api/compression/language-packsGETList tilgjengelige Caveman språkpakker
/api/compression/rulesGETList Caveman regelmetadata
/api/context/caveman/configGET/PUTCaveman-spesifikke innstillinger alias
/api/context/rtk/configGET/PUTRTK-spesifikke innstillinger, inkludert egendefinerte filtre og oppbevaring av rådatautdata
/api/context/rtk/filtersGETRTK filterkatalog og diagnostikk for egendefinerte filtre
/api/context/rtk/testPOSTKjør RTK forhåndsvisning/test mot en tekstnyttelast
/api/context/rtk/raw-output/[id]GETLes oppbevart redigert rådatautdata etter peker-ID
/api/context/combosGET/POSTKomprimeringskombinasjonsliste/opprett
/api/context/combos/[id]GET/PUT/DELETEKomprimeringskombinasjonsdetaljer/oppdater/slett
/api/context/combos/[id]/assignmentsGET/PUTTilordne komprimeringskombinasjoner til rutingskombinasjoner
/api/context/analyticsGETKomprimeringsanalyse alias

Overvåking

EndpointMethodDescription
/api/sessionsGETSporing av aktive sesjoner
/api/rate-limitsGETHastighetsbegrensninger per konto
/api/monitoring/healthGETHelsetilstandssjekk + 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/statsGET/DELETECache-statistikk / tøm
/api/modality-bridge/statsGETIn-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/runtimeGETStreng trusted-loopback sjekk før administrasjonsautentisering/probe; renset FFmpeg/ffprobe tilgjengelighet og versjoner (ingen lagring)
/api/modality-bridge/video/extractPOSTIntern 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

EndepunktMetodeBeskrivelse
/api/db-backupsGETList tilgjengelige sikkerhetskopier
/api/db-backupsPUTOpprett en manuell sikkerhetskopi
/api/db-backupsPOSTGjenopprett fra en spesifikk sikkerhetskopi
/api/db-backups/exportGETLast ned database som .sqlite-fil
/api/db-backups/importPOSTLast opp .sqlite-fil for å erstatte databasen
/api/db-backups/exportAllGETLast ned full sikkerhetskopi som .tar.gz-arkiv

Skysynkronisering

EndepunktMetodeBeskrivelse
/api/sync/cloudVariousSkysynkroniseringsoperasjoner
/api/sync/initializePOSTInitialiser synkronisering
/api/cloud/*VariousSkyadministrasjon

Tunneler

EndepunktMetodeBeskrivelse
/api/tunnels/cloudflaredGETLes Cloudflare Quick Tunnel installasjons-/kjøretidsstatus for dashbordet
/api/tunnels/cloudflaredPOSTAktiver eller deaktiver Cloudflare Quick Tunnel (action=enable/disable)
/api/tunnels/ngrokGETLes ngrok Tunnel kjøretidsstatus for dashbordet
/api/tunnels/ngrokPOSTAktiver eller deaktiver ngrok Tunnel (action=enable/disable)

CLI-verktøy

EndepunktMetodeBeskrivelse
/api/cli-tools/claude-settingsGETClaude CLI-status
/api/cli-tools/codex-settingsGETCodex CLI-status
/api/cli-tools/droid-settingsGETDroid CLI-status
/api/cli-tools/openclaw-settingsGETOpenClaw CLI-status
/api/cli-tools/runtime/[toolId]GETGenerisk CLI-kjøretid

CLI-svar inkluderer: installed, runnable, command, commandPath, runtimeMode, reason.

ACP-agenter

EndepunktMetodeBeskrivelse
/api/acp/agentsGETList alle oppdagede agenter (innebygde + tilpassede) med status
/api/acp/agentsPOSTLegg til tilpasset agent eller oppdater deteksjonsbuffer
/api/acp/agentsDELETEFjern 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

EndepunktMetodeBeskrivelse
/api/resilienceGET/PATCHHent/oppdater forespørselskø, tilkoblingsnedkjøling, leverandørbryter og ventetidsinnstillinger
/api/resilience/resetPOSTTilbakestill leverandørens strømbrytere
/api/resilience/model-cooldownsGETList aktive per-(leverandør, tilkobling, modell) utestengelser, sortert etter gjenværende tid
/api/resilience/model-cooldownsDELETEFjern en modellutestengelse — kropp {provider, model} eller {all: true} for å slette alt
/api/rate-limitsGETHastighetsbegrensningsstatus per konto
/api/rate-limitGETGlobal 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

EndepunktMetodeBeskrivelse
/api/evalsGET/POSTList evalueringssuiter / kjør evaluering

Policyer

EndepunktMetodeBeskrivelse
/api/policiesGET/POST/DELETEAdministrer rutingpolicyer

Samsvar

EndepunktMetodeBeskrivelse
/api/compliance/audit-logGETSamsvarsrevisjonslogg (siste N)

v1beta (Gemini-kompatibel)

EndepunktMetodeBeskrivelse
/v1beta/modelsGETList modeller i Gemini-format
/v1beta/models/{...path}POSTGemini generateContent-endepunkt

Disse endepunktene speiler Geminis API-format for klienter som forventer native Gemini SDK-kompatibilitet.

Interne / System-APIer

EndpointMethodDescription
/api/initGETSjekk av applikasjonsinitialisering (brukes ved første kjøring)
/api/tagsGETOllama-kompatible modell-tagger (for Ollama-klienter)
/api/restartPOSTUtløser grasiøs serveromstart
/api/shutdownPOSTUtløser grasiøs servernedstengning
/api/system/env/repairPOSTReparer 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): apiKeyId er påkrevd; minst én av dailyLimitUsd, weeklyLimitUsd eller monthlyLimitUsd må være større enn null. Valgfrie felt: warningThreshold (0–1), resetInterval (daily | weekly | monthly), resetTime (HH:MM). Det eldre {keyId, limit, period}-formatet returnerer 400 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): apiKeyId og scopeType (model | provider | global) er påkrevd. scopeValue er påkrevd med mindre scopeType er global (f.eks. en modell-id for model-omfang, en leverandør-id for provider-omfang). tokenLimit må være et positivt heltall (konvertert fra streng). Valgfritt: id (utelat for å opprette, oppgi for å oppdatere), resetInterval (daily | weekly | monthly, standard monthly), resetTime (HH:MM), enabled (standard true). GET-svar beriker hver grense med tokensUsed, remaining, windowStart, periodStartAt og nextResetAt. Dette er et administrasjonsklasse-endepunkt (autentisering håndheves sentralt av authz-pipelinen).

Forespørselsbehandling

  1. Klient sender forespørsel til /v1/*
  2. Rutebehandler kaller handleChat, handleEmbedding, handleAudioTranscription eller handleImageGeneration
  3. Modell blir løst (direkte leverandør/modell eller alias/kombo)
  4. Legitimasjon velges fra lokal DB med kontotilgjengelighetsfiltrering
  5. For chat: handleChatCore sjekker semantisk/signatur-cache og løser kombo-komprimeringsinnstillinger
  6. Proaktiv komprimering kjører før leverandøroversettelse når aktivert (lite, Caveman, RTK, eller stablet)
  7. Leverandøreksekutor sender oppstrøms forespørsel
  8. Svar oversettes tilbake til klientformat (chat) eller returneres som det er (embeddings/bilder/lyd)
  9. Bruk, komprimeringsanalyse og forespørselslogger registreres
  10. 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.

MetodeBaneBeskrivelse
GET/api/model-combo-mappingsList alle modell→kombo-mappinger
POST/api/model-combo-mappingsOpprett 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.).

MetodeStiBeskrivelse
GET/api/webhooksList webhooks (hemmeligheter er maskert til <prefix>...)
POST/api/webhooksOpprett 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]/testSend 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.

MetodeStiBeskrivelse
GET/api/v1/registered-keysList registrerte nøkler (kun maskert prefiks)
POST/api/v1/registered-keysUtsted 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]/revokeEksplisitt 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.

MetodeBaneBeskrivelse
GET/api/v1/agents/tasksList oppgaver – valgfritt ?provider=, ?status=, ?limit= (1–500, standard 50)
POST/api/v1/agents/tasksOpprett 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 commit 588a0333 for 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.

MetodeBaneBeskrivelse
GET/api/v1/management/proxiesList proxyer (med ?id= returnerer én; med ?id=&where_used=1 returnerer tildelingsgrafen)
POST/api/v1/management/proxiesOpprett proxy – kropp validert av createProxyRegistrySchema
PATCH/api/v1/management/proxiesOppdater proxy – kropp validert av updateProxyRegistrySchema (krever id)
DELETE/api/v1/management/proxies?id=...&force=1Slett proxy (bruk force=1 for å løsne tildelinger)
GET/api/v1/management/proxies/assignmentsList 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/assignmentsTildel – kropp validert av proxyAssignmentSchema ({scope, scopeId?, proxyId?}). Tømmer dispatcher-bufferen
PUT/api/v1/management/proxies/bulk-assignMassetildel – kropp validert av bulkProxyAssignmentSchema ({scope, scopeIds[], proxyId?})
GET/api/v1/management/proxies/health?hours=24Aggregert proxyhelse (antall suksesser/feil, ventetid) over et tidsvindu

Autentisering: Administrasjonssesjon/API-nøkkel på hver rute (requireManagementAuth).

Oppgavebeskrivelsens POST /api/v1/management/proxies/[id]/assignments og POST /api/v1/management/proxies/[id]/health betjenes av de flate /assignments og /health rutene 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:

OmfangTilstandslagringLesTilbakestill / tøm
Leverandørbryterdomain_circuit_breakers + i-minne/api/monitoring/healthPOST /api/resilience/reset
TilkoblingsnedkjølingrateLimitedUntil på leverandørtilkoblinger/api/rate-limits, /api/providers/[id](aktiveres lat; tømmes via leverandør PUT)
ModellåsModelltilgjengelighetsregister i minnetGET /api/resilience/model-cooldownsDELETE /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.

MetodeBaneBeskrivelse
GET/api/skillsList 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/installInstaller en ferdighet fra et rått manifest — body: {name, version, description, schema:{input, output}, handlerCode, apiKeyId?}
GET/api/skills/executionsList 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/installInstaller en ferdighet etter ID fra SkillsMP
GET/api/skills/skillssh?q=&limit=Søk i skills.sh-registeret
POST/api/skills/skillssh/installInstaller 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.

MetodeBaneBeskrivelse
GET/api/memoryListe over minner — ?apiKeyId=, ?type=, ?sessionId=, ?q=, med offset/limit eller page/limit paginering
POST/api/memoryOpprett 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/healthMinnesystemets 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.mcpEnabled og settings.mcpTransport — et transportuoverensstemmelse returnerer 400, en deaktivert MCP-tilstand returnerer 503.


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):

MetodeBeskrivelse
message/sendSynkron ferdighetsutførelse; returnerer {task, artifacts, metadata}
message/streamStrømmende SSE-utførelse av det samme ferdighetssettet
tasks/getHent en oppgave etter taskId
tasks/cancelAvbryt 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

MetodeStiBeskrivelse
GET/api/a2a/statusA2A aktivert + oppgavestatistikk + hurtigbufret agentkortoversikt
GET/api/a2a/tasksList 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]/cancelAvbryt 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

MetodeStiBeskrivelse
POST/api/cloud/authVerifiser en Bearer-nøkkel og returner maskerte leverandørforbindelser + modellaliaser for skysynkroniseringsklienter
POST/api/cloud/credentials/updateOppdater krypterte legitimasjoner for en sky-synkronisert leverandør
POST/api/cloud/model/resolveLøs opp en logisk modell-ID til en konkret leverandør/modell ved hjelp av den lokale rutingtabellen
GET/api/cloud/models/aliasList modellaliaser som eksponeres for skysynkronisering
GET/api/assessLes de nyeste vurderingskategoriseringene (per-leverandør/modell)
POST/api/assessKjør en vurdering — body: {scope: {type:"all"} | {type:"provider", providerId} | {type:"model", modelId}, trigger?}
GET/api/evalsList innebygde evalueringssuiter + nyeste kjøringer
POST/api/evalsUtløs en evalueringskjøring
POST/api/evals/suitesOpprett 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.

MetodeBaneBeskrivelse
GET/api/acp/agentsVis alle kjente CLI-agenter (innebygde + egendefinerte) med installasjonsstatus, versjon, binærfil
POST/api/acp/agentsRegistrer en egendefinert ACP-agent eller oppdater hurtigbuffer — body: {id, name, binary, versionCommand, providerAlias, spawnArgs, protocol} eller {action: "refresh"}
DELETE/api/acp/agentsFjern 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

MetodeBaneBeskrivelse
GET/api/analytics/auto-routingAggregerte statistikker for automatisk ruting: totale kall, strategifordeling, nivåfordeling, topp leverandører
GET/api/analytics/auto-routing?days=7Tidsvindu-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

MetodeBaneBeskrivelse
GET/api/analytics/compressionAggregerte 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

MetodeBaneBeskrivelse
GET/api/analytics/diversityShannon-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.

MetodeBaneBeskrivelse
GET/api/admin/concurrencyLes gjeldende samtidighetgrenser (globalt + per-leverandør)
POST/api/admin/concurrencyOppdater 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.

MetodeBaneBeskrivelse
GET/api/cli-tools/all-statusesStatus for alle CLI-verktøy (installert, versjon, sist sett)
GET/api/cli-tools/statusDetaljert status for ett CLI-verktøy (?tool= spørring)
POST/api/cli-tools/applySkriv et verktøys genererte konfigurasjon (dryRun forhåndsviser; 422 + containerEphemeralTarget når containerisert; migration noterer en eldre Codex YAML)
GET/api/cli-tools/backupsList opp sikkerhetskopier av CLI-verktøykonfigurasjoner
POST/api/cli-tools/backupsOpprett en sikkerhetskopi av alle CLI-verktøykonfigurasjoner
POST/api/cli-tools/backupsGjenopprett: samme endepunkt med {tool, backupId} i body gjenoppretter den sikkerhetskopien
GET/api/cli-tools/antigravity-mitmAntigravity MITM proxy-status ("antigravity-mitm" CLI-verktøyet)
POST/api/cli-tools/antigravity-mitm/aliasKonfigurer antigravity-mitm aliaser

Autentisering: Krever administrasjonsøkt.


Agentferdigheter

Administrer AI-agentferdigheter (ligner på OpenAIs tilpassede GPT-er, men for agenter).

MetodeBaneBeskrivelse
GET/api/agent-skillsList opp alle agentferdigheter (innebygde + tilpassede)
GET/api/agent-skills/[id]Hent en spesifikk agentferdighet
POST/api/agent-skillsOpprett 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]/rawHent rå prompt + metadata (ingen utførelse)
POST/api/agent-skills/generateAI-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.

MetodeBaneBeskrivelse
GET/api/cacheCache-oversikt: totalt antall oppføringer, treffrate, størrelse på disk
GET/api/cache/entriesList opp bufret oppføringer (med paginering)
DELETE/api/cache/entriesSlett cache-oppføringer (filtrer etter spørringsparametere)
GET/api/cache/statsDetaljert cache-statistikk (per-leverandør, per-modell)
GET/api/cache/reasoningResonneringscache-status (for resonneringsgjenspill)
DELETE/api/cache/reasoningTøm resonneringscache — spørringsparametere: ?toolCallId=<id> (enkelt) eller ?provider=<p> eller ingen parametere (alle)

Autentisering: Krever administrasjonsøkt.


Minnesystem

Administrer vedvarende minne (FTS5 + vektorinnleiringer).

MetodeBaneBeskrivelse
GET/api/memoryList opp minneoppføringer (filtrer etter omfang, type, søkeforespørsel)
POST/api/memoryOpprett 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.

MetodeBaneBeskrivelse
GET/api/webhooksList opp alle webhook-abonnementer
POST/api/webhooksOpprett 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]/deliveriesList opp leveringshistorikk for en webhook (suksess-/feillogg)
POST/api/webhooks/[id]/testSend en testhendelse til en webhook

Autentisering: Krever administrasjonsøkt.

Se Webhooks-rammeverk for fullstendige hendelsestyper.


Ferdighetsrammeverk

Administrer ferdigheter (rammeverket for agentiske utvidelser).

MetodeBaneBeskrivelse
GET/api/skillsList opp alle installerte ferdigheter (innebygde + egendefinerte)
POST/api/skills/installInstaller 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/executionsUtfør en ferdighet — body: {skillName, apiKeyId, input?, sessionId?}
GET/api/skills/executionsList 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).

MetodeBaneBeskrivelse
GET/api/pluginsList opp installerte plugins
POST/api/plugins/marketplace/installInstaller en plugin fra markedsplassen
DELETE/api/plugins/[name]Avinstaller en plugin
POST/api/plugins/[name]/activateAktiver en plugin
POST/api/plugins/[name]/deactivateDeaktiver en plugin
GET/api/plugins/[name]/configHent plugin-konfigurasjon
PUT/api/plugins/[name]/configOppdater 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.

MetodeBaneBeskrivelse
GET/api/guardrailsList opp de registrerte sikkerhetsbarrierene og deres status (navn / aktivert / prioritet)
POST/api/guardrails/testTø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/*) bruker auth_token-cookie
  • Pålogging bruker lagret passord-hash; faller tilbake til INITIAL_PASSWORD
  • requireLogin kan veksles via /api/settings/require-login
  • /v1/*-ruter krever valgfritt Bearer API-nøkkel når REQUIRE_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 (dashboard auth_token-cookie eller en management-scoped API-nøkkel). Klienter som tidligere kalte disse rutene uautentisert vil motta 401 Unauthorized. Se commit 588a0333 (fix(auth): require management auth for agent and cooldown APIs).