Files
OmniRoute/docs/i18n/no/docs/reference/API_REFERENCE.md
Diego Rodrigues de Sa e Souza b637350680 fix(docs): re-sync the 65 documentation mirror sets; section-level docs pipeline; drift gate blocking (#13940)
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
2026-09-17 02:55:31 -03:00

121 KiB
Raw Blame History

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

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), aktiver underscores_in_headers on;.

Kostnadstelemetri-headere: vellykkede svar uten strømming inneholder også kostnadstelemetrisettet X-OmniRoute-*X-OmniRoute-Response-Cost (USD, fast 10 desimaler; 0.0000000000 for 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-Hit og X-OmniRoute-Fallback-Attempts (bare når > 0), samt X-OmniRoute-Request-Id og X-OmniRoute-Version. Disse returneres 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 (har alltid en kostnad på 0). Mediekostnaden beregnes per modalitet (per bilde, per sekund, per tegn, per søkeenhet) når prisinformasjon er tilgjengelig, ellers 0 (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-Cost er 0.0000000000 (den inkrementelle kostnaden ved å levere treffet). Den opprinnelige kostnaden/kostnaden som ellers ville påløpt, rapporteres separat i X-OmniRoute-Cost-Saved. Faktureringssystemer bør summere X-OmniRoute-Response-Cost (treff koster ingenting); cacheanalyse kan aggregere X-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 off eller default kan 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 med content.parts (text eller inline_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"}/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 (firecrawljina-readertavily-searchtinyfishnimble-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): apiKeyId er obligatorisk; minst én av dailyLimitUsd, weeklyLimitUsd eller monthlyLimitUsd må være større enn null. Valgfrie felt: warningThreshold (01), resetInterval (daily | weekly | monthly), resetTime (HH:MM). Det eldre formatet {keyId, limit, period} returnerer 400 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): apiKeyId og scopeType (model | provider | global) er obligatoriske. scopeValue er obligatorisk med mindre scopeType er global (f.eks. en modell-id for omfanget model, en leverandør-id for omfanget provider). tokenLimit må være et positivt heltall (konverteres fra streng). Valgfritt: id (utelat for å opprette, oppgi for å oppdatere), resetInterval (daily | weekly | monthly, standardverdi monthly), resetTime (HH:MM), enabled (standardverdi true). GET-svar utvider hver grense med tokensUsed, remaining, windowStart, periodStartAt og nextResetAt. Dette er et endepunkt i administrasjonsklassen (autentisering håndheves sentralt av autorisasjonsflyten).

Forespørselsbehandling

  1. Klienten sender en forespørsel til /v1/*
  2. Rutebehandleren kaller handleChat, handleEmbedding, handleAudioTranscription eller handleImageGeneration
  3. Modellen løses (direkte leverandør/modell eller alias/kombinasjon)
  4. Påloggingsinformasjon velges fra den lokale databasen med filtrering etter kontotilgjengelighet
  5. For chat: handleChatCore kontrollerer semantisk/signaturbasert hurtigbuffer og løser innstillinger for kombinasjonskomprimering
  6. Proaktiv komprimering kjøres før leverandøroversettelse når den er aktivert (lite, Caveman, RTK eller stablet)
  7. Leverandørutføreren sender forespørselen oppstrøms
  8. Svaret oversettes tilbake til klientformatet (chat) eller returneres som det er (innebygginger/bilder/lyd)
  9. Bruk, komprimeringsanalyse og forespørselslogger registreres
  10. 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= (1500, 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 commit 588a0333 for 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]/assignments og POST /api/v1/management/proxies/[id]/health betjenes av de flate rutene /assignments og /health som 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.mcpEnabled og settings.mcpTransport — manglende samsvar i transport returnerer 400, mens deaktivert MCP returnerer 503.


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 informasjonskapselen auth_token
  • Innlogging bruker lagret passord-hash, med INITIAL_PASSWORD som reserve
  • requireLogin kan slås av og på via /api/settings/require-login
  • /v1/*-ruter kan kreve Bearer-API-nøkkel når REQUIRE_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 (dashbordets auth_token-informasjonskapsel eller en API-nøkkel med administrasjonsomfang). Klienter som tidligere kalte disse rutene uten autentisering, vil motta 401 Unauthorized. Se commit 588a0333 (fix(auth): require management auth for agent and cooldown APIs).