Files
OmniRoute/docs/i18n/da/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 (Dansk)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


🌐 Sprog: 🇺🇸 English | 🇪🇹 አማርኛ | 🇸🇦 العربية | 🇦🇿 Azərbaycan dili | 🇧🇬 Български | 🇧🇩 বাংলা | 🇨🇿 Čeština | 🇩🇰 Dansk | 🇩🇪 Deutsch | 🇬🇷 Ελληνικά | 🇪🇸 Español | 🇪🇪 Eesti | 🇮🇷 فارسی | 🇫🇮 Suomi | 🇫🇷 Français | 🇮🇪 Gaeilge | 🇮🇳 ગુજરાતી | 🇳🇬 Hausa | 🇮🇱 עברית | 🇮🇳 हिन्दी | 🇭🇷 Hrvatski | 🇭🇺 Magyar | 🇦🇲 Հայերեն | 🇮🇩 Bahasa Indonesia | 🇳🇬 Igbo | 🇮🇹 Italiano | 🇯🇵 日本語 | 🇬🇪 ქართული | 🇰🇭 ខ្មែរ | 🇮🇳 ಕನ್ನಡ | 🇰🇷 한국어 | 🇱🇹 Lietuvių | 🇱🇻 Latviešu | 🇮🇳 മലയാളം | 🇮🇳 मराठी | 🇲🇾 Bahasa Melayu | 🇲🇹 Malti | 🇲🇲 မြန်မာ | 🇳🇵 नेपाली | 🇳🇱 Nederlands | 🇳🇴 Norsk | 🇮🇳 ଓଡ଼ିଆ | 🇮🇳 ਪੰਜਾਬੀ | 🇵🇭 Filipino | 🇵🇱 Polski | 🇵🇹 Português (Portugal) | 🇧🇷 Português (Brasil) | 🇷🇴 Română | 🇷🇺 Русский | 🇱🇰 සිංහල | 🇸🇰 Slovenčina | 🇸🇮 Slovenščina | 🇷🇸 Српски | 🇸🇪 Svenska | 🇰🇪 Kiswahili | 🇮🇳 தமிழ் | 🇮🇳 తెలుగు | 🇹🇭 ไทย | 🇹🇷 Türkçe | 🇺🇦 Українська | 🇵🇰 اردو | 🇺🇿 Oʻzbekcha | 🇻🇳 Tiếng Việt | 🇳🇬 Yorùbá | 🇨🇳 中文 (简体) | 🇹🇼 中文 (繁體)

Central reference til OmniRoute-API'et. Den dækker den offentlige /v1-grænseflade og de mest anvendte administrationsendepunkter; den maskinlæsbare docs/openapi.yaml og routetræet under src/app/api/ er de udtømmende kilder.


Indholdsfortegnelse


Chatfuldførelser

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
}

Brugerdefinerede headers

Header Retning Beskrivelse
X-OmniRoute-No-Cache Anmodning Indstil til true for at omgå cachen
x-omniroute-no-memory Anmodning Indstil til true for at springe over injektion af hukommelse og færdigheder for denne anmodning (svarer til ingen cache og undgår token-/omkostningsoverhead pr. kald)
X-OmniRoute-Progress Anmodning Indstil til true for statushændelser
X-Session-Id Anmodning Fast sessionsnøgle til ekstern sessionstilknytning
x_session_id Anmodning Varianten med understregning accepteres også (direkte HTTP)
X-OmniRoute-Session-Id Anmodning Sessions-/samtaletag angivet af kalderen (bruges også af hukommelsen). Når det er til stede, gemmes det ordret i call_logs.session_tag til omkostningstildeling pr. session (#8249) — det genereres aldrig, når det mangler
Idempotency-Key Anmodning Nøgle til deduplikering (vindue på 5 sek.)
X-Request-Id Anmodning Alternativ nøgle til deduplikering
X-OmniRoute-Cache Svar HIT eller MISS (uden streaming)
X-OmniRoute-Idempotent Svar true, hvis anmodningen blev deduplikeret
X-OmniRoute-Progress Svar enabled, hvis statussporing er slået til
X-OmniRoute-Session-Id Svar Det effektive sessions-id, der bruges af OmniRoute
X-OmniRoute-Request-Id Svar Korrelations-id for anmodningen (når det er kendt)
X-OmniRoute-Version Svar OmniRoutes buildversion (altid til stede)
X-OmniRoute-Cost-Saved Svar Det beløb i USD, som cachen sparede ved et HIT (kun cachehits)
X-OmniRoute-Decision Svar Routingsporing: strategy=<name>; provider=<alias>; latency_ms=<n> (<name> er kombinationsstrategien eller single for en anmodning uden kombination) — altid til stede i fuldførelsessvar

Nginx-bemærkning: Hvis du er afhængig af headers med understregning (f.eks. x_session_id), skal du aktivere underscores_in_headers on;.

Headere til omkostningstelemetri: Vellykkede ikke-streaming-svar indeholder også sættet af X-OmniRoute-*-headere til omkostningstelemetri — X-OmniRoute-Response-Cost (USD, fast 10 decimaler; 0.0000000000 for gratis/ikke-prissat), 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) samt X-OmniRoute-Request-Id og X-OmniRoute-Version. Disse udsendes af chatfuldførelser, /v1/responses, /v1/messages, og medieslutpunkterne/v1/embeddings, /v1/images/generations, /v1/audio/speech, /v1/audio/transcriptions, /v1/rerank, /v1/videos/generations, /v1/music/generations og /v1/moderations (altid med omkostningen 0). Medieomkostninger beregnes pr. modalitet (pr. billede, pr. sekund, pr. tegn, pr. søgeenhed), når prisoplysninger er tilgængelige, ellers 0 (fail-open).

Omkostningssemantik for cache-hit: Ved et HIT i den semantiske cache (X-OmniRoute-Cache-Hit: true) foretages der intet upstream-kald, så X-OmniRoute-Response-Cost er 0.0000000000 (den inkrementelle omkostning ved at levere cache-hittet). Den oprindelige/forventede omkostning rapporteres separat i X-OmniRoute-Cost-Saved. Faktureringssystemer bør summere X-OmniRoute-Response-Cost (cache-hits koster intet); cacheanalyse kan aggregere X-OmniRoute-Cost-Saved.

Eksklusive administrerede sessionslejemål

Eksklusiv leasing af administrerede sessioner er en valgfri, klientneutral routingkontrakt: Én aktiv ejer besidder én kvalificeret OmniRoute-forbindelse. Den udlejer ikke en model, kræver ikke OAuth, identificerer ikke en bestemt klient og kræver ikke en bestemt udbyder.

Den API-nøgle, der bruges til godkendelse, skal have rettigheden lease:exclusive og en eksplicit ikke-tom allowedConnections-liste. Databasens mutationsgrænse håndhæver begge felter samlet ved oprettelse af nøgler og delvise opdateringer.

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å hentning, fornyelse og frigivelse viser tidsstempler, state og den nøjagtige positive generation, men aldrig den valgte forbindelse eller legitimationsoplysninger. Ved fornyelse og frigivelse angives generationen i JSON-indholdet:

{ "action": "renew", "generation": 1 }
{ "action": "release", "generation": 1, "reason": "OWNER_EXIT" }

En aktiv lejemålsejer kan eksplicit anmode om privatlivssikre visningsmetadata for sin aktuelle tilknytning:

{ "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 statushandling afgrænses af den uigennemsigtige ejer, den godkendte administrerede API-nøgle og den nøjagtige aktive generation i én databasetransaktion. displayName er kun det beskårne konfigurerede forbindelsesnavn; det er null, når der ikke findes et sikkert konfigureret navn. OmniRoute erstatter det aldrig med en e-mailadresse eller en genereret kontoidentitet. Udbyderværdien er en ikke-følsom visningsetiket og aldrig en genereret identifikator for en kompatibel udbyder. Legitimationsoplysninger, tokens, cookies, rå id'er for forbindelser eller API-nøgler, ejerhashes, afgrænsningshemmeligheder og interne routingdata er udeladt.

Opslag med forkert nøgle, forkert ejer, forældet generation, manglende, udløbet, frigivet eller ugyldiggjort lejemål returnerer alle den samme 409 LEASE_FENCE_STALE-fejl uden forbindelsesmetadata. En klient, der modtog svaret om kapacitetsventetid, har ingen aktiv tilknytning at inspicere. Når routing flytter et aktivt lejemål, forbliver den samme generation gyldig, og status returnerer atomisk den nye tilknytning, aldrig den gamle. Eksisterende klienter forbliver uændrede, fordi svar på hentning, fornyelse, frigivelse og ventetid bevarer deres tidligere strukturer.

Denne serverkontrakt ændrer ikke standardfunktionen /status i OpenAI Codex. Standard-Codex rapporterer i øjeblikket sin modeludbyder og indbyggede godkendelses-/kontostatus, men viser ikke vilkårlige brugerdefinerede kontometadata for udbydere. En senere klientintegration skal kalde denne handling og beslutte, hvordan connection.displayName skal vises.

Hver administreret inferensanmodning angiver derefter begge kontrolheadere:

X-OmniRoute-Lease-Owner: vlo_<43-base64url-characters>
X-OmniRoute-Lease-Generation: 1

Den nøjagtige ejer, generation, aktive forbindelse og godkendte API-nøgle afgrænses umiddelbart før hvert understøttet upstream-forsøg. Genafspilning af ejer og generation med en anden nøgle mislykkes, selv når denne nøgle tillader den samme forbindelse. Rå ejerværdier gemmes, logføres eller opbevares ikke i anmodningssnapshotshottet og videresendes ikke upstream.

Midlertidig kapacitetskonflikt 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 svar betyder kun, at det almindelige kvalificerede sæt ikke var tomt, og at alle ledige kandidater var besat af et fremmed aktivt lejemål. Ikke-understøttede modeller/udbydere, uoverensstemmelse med politikker, nedkøling, kvote, tilstand og andre almindelige kvalifikationsfejl bevarer deres eksisterende OmniRoute-svar.

x-omniroute-compression

Tilsidesættelse af komprimeringsplanen pr. anmodning. Højeste prioritet — har forrang for tilsidesættelsen af routingkombinationen, den aktive profil, automatisk udløsning og panelets standardindstilling. Værdier:

Værdi Effekt
off Ingen komprimering for denne anmodning.
default Panelets afledte standardprofil (ignorerer den aktive profil).
engine:<id> En enkelt motor, når den er aktiveret, f.eks. engine:rtk.
<combo> En navngivet kombination, der først matches efter navn (uden forskel på store og små bogstaver) og derefter efter id.

Bemærkninger:

  • Ukendte værdier ignoreres (anmodningen afvises aldrig); fortolkningen fortsætter med den normale prioritetsrækkefølge for operatorer.
  • Hvis flere kombinationer har samme navn, skal kombinationens id angives for at få et deterministisk match.
  • En kombination med navnet off eller default kan ikke vælges efter navn (disse nøgleord fortolkes først); henvis til en sådan kombination via dens id.
  • Hovedkontakten for komprimering er en ufravigelig spærring: Når komprimering er deaktiveret globalt, kan denne header ikke aktivere den.

Den anvendte plan returneres i responsheaderen:

X-OmniRoute-Compression: <mode>; source=<source>

hvor <source> er enten 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"
}

Tilgængelige udbydere: Nebius, OpenAI, Mistral, Together AI, Fireworks, NVIDIA, OpenRouter, Jina AI.

Katalog-id'er er provider/model (eksempel: jina-ai/jina-embeddings-v5-omni-small). Jina-model-id'er uden præfiks, som findes i registreringsdatabasen (for eksempel jina-embeddings-v5-text-small, jina-reranker-v3.5), kan også opløses. Jina embed/rerank/classify/segment bruger først jina-ai-legitimationsoplysninger fra kontrolpanelet; JINA_AI_API_KEY bruges kun som reserve, når der ikke findes nogen nøgle i kontrolpanelet. jina-reader-kortet er kun til Reader / r.jina.ai (POST /v1/web/fetch) og leverer aldrig embeddings eller rerank.

Modeller i registreringsdatabasen, der angiver understøttelse af multimodalitet, accepterer også op til 32 udbyderneutrale strukturerede elementer. Medieelementtyperne er text, image, audio, video og document. Deres medie-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 familiealiasset jina-ai/jina-embeddings-v5-omni → omni-small) accepterer også Jinas oprindelige 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,..." }]
    }
  ]
}

Oprindelige { image | audio | video | pdf }-værdier kan være en offentlig HTTPS-URL, en data:-URI eller rå base64. OmniRoute konverterer ikke disse objekter til strenge og henter ikke oprindelige billed-URL'er — Jina henter selv offentlige medier. Ekstra Jina-felter (task, normalized, truncate, embedding_type) videresendes. Jina-SKU'er, der kun understøtter tekst, afviser fortsat dokumenter, som ikke er tekst.

Sikkerheds- og transportgrænser:

  • URL'er til fjernmedier skal være offentlige HTTPS-URL'er. Kanoniske {type,source:url}-elementer hentes på serversiden (genvalidering af omdirigeringer, timeout, størrelsesgrænser, offentlig DNS, forbindelsesfastgørelse) og indlejres før udbyderkaldet. Jina-oprindelige {image:"https://..."}-elementer videresendes uændret efter det samme offentlige HTTPS-tjek; Jina henter URL'en.
  • Indlejrede base64-medier er begrænset til 8 MiB afkodet pr. element og 16 MiB afkodet på tværs af anmodningen.

Udbyderoversættelse (kanoniske elementer videresendes aldrig uændret):

  • Jina-multimodalmodeller: Hvert element på øverste niveau bliver til ét modalitetsnøglet objekt (text / image / audio / video / pdf), der bruger data-URI'er til indlejrede medier; én vektor pr. element på øverste niveau.
  • Gemini Embedding 2-familien: Ét array på øverste niveau bliver til en enkelt oprindelig models/{model}:embedContent-anmodning med content.parts (text eller inline_data).
  • Ukendte/dynamiske modeller uden eksplicitte modalitetsmetadata afviser struktureret 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-understøttede kombinationer af model og modalitet returnerer HTTP 400 i stedet for at konvertere elementet. Udvidelsesfelter, der ikke er inputfelter, i ældre streng-/tokenanmodninger sendes fortsat uændret videre.

# Vis alle embedding-modeller
GET /v1/embeddings

Billedgenerering

POST /v1/images/generations
Authorization: Bearer your-api-key
Content-Type: application/json

{
  "model": "openai/gpt-image-2",
  "prompt": "En smuk solnedgang over bjerge",
  "size": "1024x1024"
}

Tilgængelige udbydere: OpenAI (GPT Image 2), xAI (Grok Image), Together AI (FLUX), Fireworks AI, Nebius (FLUX), Hyperbolic, NanoBanana, OpenRouter, SD WebUI (lokal), ComfyUI (lokal).

# Vis alle billedmodeller
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 vælger OCR-udbyderen via et provider/model-præfiks. Et model-id uden præfiks (f.eks. mistral-ocr-latest) fortolkes som tilhørende den registrerede udbyder, og hvis model udelades, bruges Mistral (mistral-ocr-latest) som standard. Registrerede udbydere (open-sse/config/ocrRegistry.ts):

Udbyder-id Model-id model-værdi Bemærkninger
mistral mistral-ocr-latest mistral/mistral-ocr-latest (eller mistral-ocr-latest uden præfiks) Synkron — svaret returneres direkte fra det enkelte upstream-kald.
azure-document-intelligence prebuilt-read azure-document-intelligence/prebuilt-read Asynkron upstream (analyze + polling) — se nedenfor.
vertex-deepseek-ocr deepseek-ocr-maas vertex-deepseek-ocr/deepseek-ocr-maas Synkron via Vertex AI's openapi/chat/completions-partnerendepunkt — se nedenfor vedrørende godkendelse/URL.

Alle tre udbydere svarer med den samme Mistral-formaterede struktur:

{
  "pages": [{ "index": 0, "markdown": "# Udtrukket tekst..." }],
  "model": "mistral-ocr-latest",
  "usage_info": { "pages_processed": 1 }
}

Pollingforløb for Azure Document Intelligence

Azure Document Intelligence's analyze-API er asynkron: Den indledende anmodning returnerer en Operation-Location-header i stedet for en body, og der skal derfor foretages polling efter resultatet. Handleren (open-sse/handlers/ocr.ts) poller denne URL hvert sekund i op til 30 forsøg, afbryder straks (fortsætter ikke med at polle) ved et poll-svar, der ikke er ok, eller en "failed"-status, og returnerer 504, hvis handlingen stadig kører, efter at antallet af tilladte forsøg er opbrugt. Det endelige Azure-svar normaliseres til det samme pages/markdown-format, som Mistral bruger, før det returneres til kalderen, så klientkoden ikke behøver at særbehandle udbyderen.

Godkendelse og løsning af endepunkt for Vertex AI DeepSeek OCR

vertex-deepseek-ocr genbruger den samme Vertex AI-godkendelse, som OmniRoute allerede understøtter for chat-/billedtrafik (open-sse/executors/vertex.ts): Forbindelsens API-nøgle er enten en Service Account JSON-legitimationsoplysning (som udveksles med et kortlivet OAuth-adgangstoken via JWT-bearer- forløbet) eller et allerede udstedt OAuth-adgangstoken, der bruges, som det er. Upstream-endepunktets URL er Vertex' generiske openapi/chat/completions-partnerendepunkt, som opbygges ud fra forbindelsens projekt og region — en eksplicit providerSpecificData.project/providerSpecificData.region har altid forrang; ellers udledes projektet fra Service Account JSON'ens project_id, og regionen er som standard us-central1. Begge værdier bestemmes i open-sse/handlers/ocr.ts (resolveVertexOcrAccessToken, resolveVertexOcrBaseUrl) og bruges af src/app/api/v1/ocr/route.ts, før der videresendes til handleOcr.


Vis modeller

GET /v1/models
Authorization: Bearer your-api-key

→ Returnerer alle chat-, embedding- og billedmodeller samt kombinationer i OpenAI-format

Model-id-præfikser (?prefix=)

De fleste modeller vises under et udbyderpræfiks. Hvilket præfiks du får, styres af feature-flaget MODELS_CATALOG_PREFIX_MODE og kan tilsidesættes for hver anmodning med en forespørgselsparameter — nyttigt for en klient, der ønsker en enkel liste uden at ændre den serveromspændende indstilling for alle andre:

GET /v1/models?prefix=alias        # ét id pr. model — det korte aliaspræfiks
GET /v1/models?prefix=dual         # begge former (serverens standardindstilling)
GET /v1/models?prefix=canonical    # kun det fulde udbyder-id-præfiks
Tilstand Returnerer Bemærkninger
dual cc/claude-sonnet-4-6 og claude/claude-sonnet-4-6 Standard. Begge id'er dirigeres til den samme model. Dette er bevaret, så klientkonfigurationer, der har hardkodet en af formerne, fortsat fungerer. Fordobler omtrent kataloget.
alias cc/claude-sonnet-4-6 Én post pr. model. Udbydere uden et særskilt alias returnerer stadig deres post, så intet går tabt.
canonical claude/claude-sonnet-4-6 Én post pr. model under det fulde udbyder-id-præfiks. Udbydere uden et særskilt alias (f.eks. antigravity/…, agy/…) returnerer også deres enkelte id her, så intet går tabt.

Et spejl i dual-tilstand kan også genkendes uden forespørgselsparameteren: Det indeholder et parent-felt, der peger på det primære id.

Klienter, der viser en modelvælger, bør anmode om ?prefix=alias — det er det, som OmniCopilot VS Code-udvidelsen gør.

Modelvarianter uden tænkning

For Claude-modeller med tænkeevne viser /v1/models også en variant uden tænkning, hvis id har præfikset claude-3-omniroute-no-thinking/:

claude-3-omniroute-no-thinking/<provider>/<model>

Hvis dette id vælges (f.eks. i en Claude Code-konfiguration, der altid vedhæfter en thinking-blok), fortolkes det som den faktiske <provider>/<model> med ræsonnering deaktiveret — thinking:{type:"disabled"}/v1/messages-stien, eller med felterne reasoning/reasoning_effort udeladt på /v1/chat/completions-stien. Varianten vises kun for modeller i Claude-familien, som understøtter tænkning og respekterer disabled (så f.eks. modeller, der kun understøtter adaptiv tænkning og afviser disabled, er udeladt). Operatører kan gennemtvinge, at varianten aktiveres eller deaktiveres for hver model via ModelSpec.noThinkingAlias.


Manifest for udbyderplugin

GET /api/v1/provider-plugin-manifest

Returnerer det JSON-sikre manifest for udbyderplugins, der bruges af Bifrost, CLIProxyAPI og fremtidige sidecar-routere. Svaret genereres fra TypeScript-registreringsdatabasen for udbydere og udelader bevidst OAuth-klienthemmeligheder, fortolkning af runtime-miljøet, eksekveringsfunktioner, request-headere og kontodata.

Brug dette endpoint, når en sidecar kører uden for processen og ikke kan importere open-sse/config/providerPluginManifestRegistry.ts direkte.


Kompatibilitetsendpoints

Metode Sti 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/inpaint)
POST /v1/videos/generations Videogenerering i OpenAI-stil
POST /v1/music/generations Musikgenerering i OpenAI-stil
POST /v1/audio/transcriptions OpenAI Audio (STT)
POST /v1/audio/speech OpenAI TTS (returnerer lydindhold)
POST /v1/rerank Rerank i Cohere/Voyage-stil
POST /v1/classify Jina-klassificering (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 Tokenbaseret OpenAI-alias
POST /api/v1/vscode/{token}/responses Tokenbaseret OpenAI Responses-alias
POST /api/v1/vscode/{token}/api/chat Tokenbaseret Ollama-alias
GET /api/v1/vscode/{token}/api/tags Tokenbaseret alias for Ollama-tags

Alle POST-ruter følger samme struktur: Bearer your-api-key + Zod-valideret JSON-indhold (v1RerankSchema, v1ModerationSchema, v1AudioSpeechSchema osv.; se src/shared/validation/schemas.ts). 4xx returneres ved skemafejl.

For klienter, der ikke kan tilføje Authorization: Bearer ..., accepterer OmniRoute også API-nøgler i URL'en via enten kompatibilitet med query-strenge (?token=..., ?apiKey=..., ?api_key=..., ?key=...) eller de dedikerede /api/v1/vscode/{token}/...-endpoints, der er dokumenteret nedenfor.

# Rerank
POST /v1/rerank      { "model": "jina-ai/jina-reranker-v3.5", "query": "...", "documents": ["..."] }

# Jina-klassificering (legitimationsoplysninger til 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øgning (s.jina.ai; udbyderaliasser: jina-search, jina-ai, jina)
POST /v1/search      { "query": "...", "provider": "jina-search" }

# Modereringer
POST /v1/moderations { "model": "omni-moderation-latest", "input": "..." }

# TTS — returnerer indhold som audio/mpeg (eller det ønskede format)
POST /v1/audio/speech { "model": "openai/tts-1", "input": "Hello", "voice": "alloy" }

# Billedredigering (multipart)
POST /v1/images/edits  -F image=@input.png -F prompt="..." -F mask=@mask.png

# Video-/musikgenerering (model-id med udbyderpræfiks)
POST /v1/videos/generations { "model": "runway/gen-3", "prompt": "..." }
POST /v1/music/generations  { "model": "suno/v3.5",   "prompt": "..." }

Dedikerede udbyderruter

POST /v1/providers/{provider}/chat/completions
POST /v1/providers/{provider}/embeddings
POST /v1/providers/{provider}/images/generations

Udbyderpræfikset tilføjes automatisk, hvis det mangler. Modeller, der ikke matcher, returnerer 400.


Files API

OpenAI-kompatibelt filslutpunkt til batchinput/-output og filuploads med formål.

Metode Sti Beskrivelse
POST /v1/files Upload en fil (multipart: file, purpose, expires_after[anchor], expires_after[seconds]) — maks. 512 MiB
GET /v1/files Vis filer for den godkendte API-nøgle
GET /v1/files/[id] Hent en fils metadata
DELETE /v1/files/[id] Slet en fil
GET /v1/files/[id]/content Stream den rå fil tilbage

Godkendelse: Bearer-API-nøgle — filer afgrænses pr. API-nøgle via getApiKeyRequestScope. En nøgle kan kun se, downloade og slette sine egne filer; en dashboardsession uden en nøgle kan læse hele instansen; en fil uden en ejer (anonym upload eller upload via dashboardsession) afvises for alle kaldere uden en session. GET /v1/files afviser en anonym kalder — og en angivet nøgle, der ikke kan slås op — med 401, selv når REQUIRE_API_KEY=false, i stedet for at vise alle lejeres filer (GHSA-m3hp-hq9g-fpmv, GHSA-2jm2-mpx8-6523).


Batches API

OpenAI-kompatibel batchbehandling.

Metode Sti Beskrivelse
POST /v1/batches Opret batch — body valideres af v1BatchCreateSchema (input_file_id, endpoint, completion_window)
GET /v1/batches Vis batches
GET /v1/batches/[id] Hent batchstatus + request_counts
DELETE /v1/batches/[id] Slet en afsluttet/mislykket batch
POST /v1/batches/[id]/cancel Annuller en igangværende batch

Godkendelse: Bearer-API-nøgle. Batches afgrænses pr. API-nøgle efter den samme tredelte regel som filer: Kun egen nøgle, dashboardsession på tværs af hele instansen, poster med null-ejer afvises for alle kaldere uden en session (hentning, sletning, annullering og kontrollen af input_file_id ved oprettelse). GET /v1/batches afviser en anonym kalder med 401, selv når REQUIRE_API_KEY=false.


Søge-API

Abstraktion for web-/søgeudbydere (Tavily, Brave, Exa, Serper osv.).

Metode Sti Beskrivelse
GET /v1/search Vis konfigurerede søgeudbydere + funktioner
POST /v1/search Kør en søgeforespørgsel — brødteksten valideres af v1SearchSchema, understøtter caching/samling
GET /v1/search/analytics Statistik for træffere/ventetid/cache pr. udbyder

Godkendelse: Bearer-API-nøgle (extractApiKey + isValidApiKey). Søgepolitikken håndhæves via enforceApiKeyPolicy.


API til hentning fra internettet

Udtræk indhold fra en URL via en konfigureret udbyder til hentning fra internettet (Firecrawl, Jina Reader, Tavily Extract, TinyFish Fetch, Nimble Extract).

Metode Sti Beskrivelse
POST /v1/web/fetch Hent/skrabet en URL — brødteksten valideres af v1WebFetchSchema

Godkendelse: Bearer-API-nøgle (extractApiKey + isValidApiKey). Politikken håndhæves via enforceApiKeyPolicy.

Kvotebevidst fallback (#8297): Når der ikke er angivet en eksplicit provider, gennemgås puljen (firecrawljina-readertavily-searchtinyfishnimble-search) i fast prioritetsrækkefølge (fyld først) — en hastighedsbegrænset, men konfigureret udbyder springes over i stedet for at afbryde forespørgslen, og en genforsøgsegnet upstream-fejl eller kvotefejl (altid HTTP 429; 402/403 for kvotebaserede gratisniveauer hos Firecrawl/Tavily/TinyFish — ikke for Jina Reader og aldrig ved en almindelig 400-fejlbehæftet forespørgsel) fortsætter til den næste endnu ikke afprøvede udbyder med legitimationsoplysninger på forespørgselstidspunktet. Når alle udbydere i puljen er udtømt, returnerer slutpunktet en enkelt 429 (med en Retry-After- header) i stedet for den tidligere generiske 400. Når der anmodes om en eksplicit provider, er der ingen skjult fallback — en hastighedsbegrænset eller fejlslagen eksplicit udbyder viser sin egen fejl (429, hvis den er hastighedsbegrænset, ellers upstream- statussen).


WebSocket-streaming

GET /v1/ws?handshake=1

Validerer et WebSocket-opgraderingshåndtryk og returnerer eksempelmeddelelserne for protokollen (request, cancel). De faktiske WS-frames håndteres af den medfølgende WS-server uden for Next.js-rutetabellen.

Godkendelse: Bearer-API-nøgle under håndtrykket.

Responses-API over WebSocket (kun codex)

# Samme vært:port som HTTP-API'et (standard er 20128); opgrader forbindelsen:
wscat -c "ws://localhost:20128/v1/responses?api_key=<OMNIROUTE_API_KEY>"
# (eller: -H "Authorization: Bearer <OMNIROUTE_API_KEY>")

# Første frame SKAL være response.create:
{ "type": "response.create", "model": "gpt-5.5", "input": [ { "role": "user", "content": "hi" } ] }

En Responses-API-over-WebSocket-proxy er knyttet udelukkende til codex (ChatGPT- backend). Den lytter på samme port som API'et/dashboardet på stierne /v1/responses, /responses og /api/v1/responses. Ved den første response.create-frame godkender og forbereder den via den interne codex-responses-ws-bro, vælger en codex OAuth-forbindelse og opretter en tunnel til wss://chatgpt.com/backend-api/codex/responses via wreq-js-transporten. Modeller, der ikke er codex, afvises (codex_ws_provider_required). Brug model: "qtSd/<group>/codex/<model>" til kvotedelingsrouting. Implementeret i app/server-ws.mjs + scripts/dev/responses-ws-proxy.mjs + src/app/api/internal/codex-responses-ws/route.ts.

Godkendelse: Bearer-API-nøgle under håndtrykket. Den medfølgende HTTP-server (server-ws.mjs) skal være det aktive startpunkt (hvilket den som standard er, når app/server-ws.mjs findes).

Model-id: Brug det rene ChatGPT-id (uden præfikset codex/)

OpenAI Codex CLI validerer modelnavnet på klientsiden, når supports_websockets = true, og afviser udbyderpræfikserede id'er som codex/gpt-5.5 (The 'codex/gpt-5.5' model is not supported when using Codex with a ChatGPT account). Send det rene id (f.eks. gpt-5.5). OmniRoutes bro er kun til codex, så den fortolker et rent id som en codex-model (resolveCodexWsModelInfo), før der oprettes en tunnel til upstream — selvom et rent gpt-5.5 ellers ville blive dirigeret til en anden udbyder over HTTP.

Konfiguration af OpenAI Codex CLI

Peg Codex CLI mod OmniRoute ved at føje en brugerdefineret udbyder med WebSocket- understøttelse til ~/.codex/config.toml (brug en separat CODEX_HOME for at undgå at ændre en eksisterende konfiguration):

model = "gpt-5.5"                 # rent id — IKKE "codex/gpt-5.5"
model_provider = "omniroute"

[model_providers.omniroute]
name = "OmniRoute (WS)"
base_url = "http://localhost:20128/v1"   # ingen afsluttende skråstreg; WS-URL'en udledes (brug https/wss i produktion)
wire_api = "responses"                    # den eneste understøttede værdi siden februar 2026
supports_websockets = true                # aktiverer Responses-over-WS-transporten
env_key = "OMNIROUTE_API_KEY"             # indeholder OmniRoute-API-nøglen (Bearer)
export OMNIROUTE_API_KEY=sk-...           # en OmniRoute-API-nøgle (enhver nøgle, hvis REQUIRE_API_KEY=false)
codex exec "Responda apenas: PONG"

CLI'en opgraderer base_url + /responses til en WebSocket, og OmniRoute opretter en tunnel til den valgte codex OAuth-forbindelse. Valideret fra ende til ende mod den lokale server: ChatGPT returnerer codex.rate_limits + response.created og streamer fuldførelsen.


Rapportering af kvoter og problemer

Metode Sti Beskrivelse
GET /v1/quotas/check Forhåndsvalider kvoten for en provider + accountId, før der udstedes en registreret nøgle
POST /v1/issues/report Rapportér en fejl ved udstedelse af en kvote/nøgle til GitHub (kræver GITHUB_ISSUES_REPO + token)

Godkendelse: Bearer-API-nøgle (isAuthenticated).


Selvbetjent forbrug (/api/usage/om-usage)

Enhver API-nøgle kan aflæse sit eget forbrug og sine egne kvoter — ingen administrationsgodkendelse. Dette er det slutpunkt, som en klient (CLI, OmniCopilot-panelet) bruger til at vise en nøgleindehaver vedkommendes forbrug.

# Tekstformat (den historiske kontrakt — almindelig tekst til en terminal)
curl -H "Authorization: Bearer <your-api-key>" \
  http://localhost:20128/api/usage/om-usage

# Struktureret format — det, som en brugergrænseflade anvender
curl -H "Authorization: Bearer <your-api-key>" \
  "http://localhost:20128/api/usage/om-usage?format=json"

Nøglen skal have allowUsageCommand aktiveret (deaktiveret som standard — dashboardets API-nøgleadministrator slår det til eller fra for hver nøgle). Uden denne indstilling svarer slutpunktet med 403.

?format=json returnerer en diskrimineret struktur, så en kalder aldrig læser et datafelt fra et afslag. Ved succes:

{
  "allowed": true,
  // findes kun, når nøglen har tilvalgt forbrugsgrænser pr. nøgle (daglige/ugentlige USD):
  "personal": {
    "dailySpentUsd": 1.25,
    "dailyLimitUsd": 5,
    "dailyResetAtIso": "…",
    "weeklySpentUsd": 8,
    "weeklyLimitUsd": 20,
    "weeklyResetAtIso": "…" /*  */,
  },
  // det valgte snapshot af udbyderkvoten eller null, når intet endnu er cachelagret:
  "provider": {
    "connectionId": "…",
    "provider": "claude",
    "plan": "…",
    "quotas": {/*  */},
  },
  // snapshots for alle forbindelser, så en brugergrænseflade kan vise flere udbydere side om side:
  "providers": [
    { "connectionId": "…", "provider": "claude" /*  */ },
    { "provider": "codex" /*  */ },
  ],
}

Ved afslag (401 ugyldig nøgle / 403 ikke tilladt) returnerer den samme rute { "allowed": false, "error": { "message": "…" } } — en tilstedeværende, men tom personal/provider (nøglen er tilladt, men der er endnu ikke registreret noget) er en anden tilstand end et afslag, og kun JSON-formatet skelner mellem dem.

Godkendelse: kalderens egen Bearer-API-nøgle, valideret med isValidApiKey — dette er ikke administrationsgrænsefladen (/api/keys/…), som fortsat er beskyttet af requireManagementAuth.


Semantisk cache

# Hent cachestatistik
GET /api/cache/stats

# Ryd alle cacher
DELETE /api/cache/stats

Eksempel på svar:

{
  "semanticCache": {
    "memorySize": 42,
    "memoryMaxSize": 500,
    "dbSize": 128,
    "hitRate": 0.65
  },
  "idempotency": {
    "activeKeys": 3,
    "windowMs": 5000
  }
}

Påvirkning af latenstid

Et HIT i den semantiske cache leverer svaret fra cachen uden et upstream-kald, så den rapporterede X-OmniRoute-Response-Latency er tæt på nul (uanset den oprindelige upstream-latenstid). Klienter, der er følsomme over for latenstid (benchmarking, p50/p99-overvågning), bør kontrollere response-headeren X-OmniRoute-Cache-Latency:

Værdi Betydning
synthetic Svaret leveres fra cachen; latenstiden er ikke reel upstream-tid
(fraværende) Svar fra et reelt upstream-kald

Omgåelse af cache pr. nøgle

API-nøgler kan fravælge læsninger fra den semantiske cache via cacheDefaultMode:

Værdi Adfærd
legacy Normal cacheadfærd (standard)
bypass Spring cacheopslag helt over; brug altid upstream

Angiv ved oprettelse af nøglen (POST /api/keys) eller ved opdatering (PATCH /api/keys/[id]):

{ "cacheDefaultMode": "bypass" }

Omgåelse pr. anmodning

Enhver anmodning kan omgå cachen uanset nøgleindstillingerne:

X-OmniRoute-No-Cache: true

Dashboard og administration

Administrationsruter (/api/* undtagen offentlig godkendelse/login) er ikke godkendt med almindelige API-nøgler til inferens. Legitimationsoplysningstyper, scopes og curl-eksempler: Administrationsgodkendelse.

Godkendelse

Slutpunkt Metode Beskrivelse
/api/auth/login POST Log ind
/api/auth/logout POST Log ud
/api/settings/require-login GET/PUT Slå krav om login til/fra

Udbyderadministration

Slutpunkt Metode Beskrivelse
/api/providers GET/POST Vis / opret udbydere
/api/providers/[id] GET/PUT/DELETE Administrer en udbyder
/api/providers/[id]/test POST Test forbindelsen til udbyderen
/api/providers/[id]/models GET Vis udbyderens modeller
/api/providers/validate POST Valider udbyderkonfigurationen
/api/providers/bulk POST Tilføj flere API-nøgler samlet for ÉN udbyder
/api/providers/import POST Importer en heterogen udbyderLISTE fra en fortolket CSV/JSON-fil (#6836); resultater med delvise fejl for hver række
/api/provider-nodes* Forskellige Administration af udbydernoder
/api/provider-models GET/POST/PATCH/DELETE Brugerdefinerede modeller (tilføj, opdater, skjul/vis, slet)

OAuth-forløb

Slutpunkt Metode Beskrivelse
/api/oauth/[provider]/[action] Forskellige Udbyderspecifik OAuth

Routing og konfiguration

Slutpunkt Metode Beskrivelse
/api/models/alias GET/POST Modelaliasser
/api/models/catalog GET Alle modeller efter udbyder + type
/api/combos* Forskellige Administration af kombinationer
/api/keys* Forskellige Administration af API-nøgler
/api/pricing GET Modelpriser

Brug og analyse

Endpoint Metode Beskrivelse
/api/usage/history GET Forbrugshistorik
/api/usage/logs GET Forbrugslogfiler
/api/usage/request-logs GET Logfiler på anmodningsniveau
/api/usage/[connectionId] GET Forbrug pr. forbindelse
/api/usage/token-limits GET/POST/DELETE Budgetter for tokengrænser pr. API-nøgle
/api/usage/model-latency-stats GET Rullende samlet latenstid pr. udbyder/model (gennemsnit/p50/p95/p99, succesrate); filtre: windowHours/minSamples/maxRows/provider/model (#6873)
/api/usage/cache-health GET Oversigt over promptcachens tilstand baseret på call_logs — skrive-/læseforhold, p50/p90/p99-fordeling af skrivestørrelse, koncentration af omfattende skrivninger, opdeling pr. model samt en vurdering på healthy/degraded/thrash/no-data; forespørgselsparametrene range (1h|24h|7d|30d, standardværdi 24h) og valgfrit model (#8827)

Indstillinger

Endpoint Metode Beskrivelse
/api/settings GET/PUT/PATCH Generelle indstillinger
/api/settings/proxy GET/PUT Konfiguration af netværksproxy
/api/settings/proxy/test POST Test proxyforbindelsen
/api/settings/ip-filter GET/PUT Liste over tilladte/blokerede IP-adresser
/api/settings/thinking-budget GET/PUT Omskrivningstilstand for anmodninger vedrørende tænke-/ræsonneringsbudget (uændret videresendelse / automatisk fjernelse / brugerdefineret / adaptiv). Uafhængig af komprimering. Se THINKING_BUDGET.md.
/api/settings/system-prompt GET/PUT Global systemprompt
/api/settings/compression GET/PUT Global komprimeringskonfiguration
/api/settings/purge-request-history POST Ryd rækker i anmodningsloggen og lokale kaldslogartefakter

Kontekst og komprimering

Slutpunkt Metode Beskrivelse
/api/compression/preview POST Forhåndsvis komprimering med off/lite/standard/aggressive/ultra/RTK/stacked
/api/compression/language-packs GET Vis tilgængelige Caveman-sprogpakker
/api/compression/rules GET Vis metadata for Caveman-regler
/api/context/caveman/config GET/PUT Alias for Caveman-specifikke indstillinger
/api/context/rtk/config GET/PUT RTK-specifikke indstillinger, herunder brugerdefinerede filtre og opbevaring af råt output
/api/context/rtk/filters GET RTK-filterkatalog og diagnosticering af brugerdefinerede filtre
/api/context/rtk/test POST Kør RTK-forhåndsvisning/-test med en tekstpayload
/api/context/rtk/raw-output/[id] GET Læs opbevaret, redigeret råt output via markør-id
/api/context/combos GET/POST Vis/opret komprimeringskombinationer
/api/context/combos/[id] GET/PUT/DELETE Detaljer om/opdatering/sletning af komprimeringskombination
/api/context/combos/[id]/assignments GET/PUT Tildel komprimeringskombinationer til routingkombinationer
/api/context/analytics GET Alias for komprimeringsanalyse

Overvågning

Slutpunkt Metode Beskrivelse
/api/sessions GET Sporing af aktive sessioner
/api/rate-limits GET Hastighedsgrænser pr. konto
/api/monitoring/health GET Sundhedstjek + udbyderoversigt (catalogCount, configuredCount, activeCount, monitoredCount). Administrationsvisningen inkluderer credentialHealth: skalarer fra probe-cachen, failedConnections, når failed>0, og staleDbNonOkCount (vedvarende SQLite-test_status, ikke måleren). Se MONITORING_GUIDE.md.
/api/cache/stats GET/DELETE Cachestatistik / rydning
/api/modality-bridge/stats GET attempts i hukommelsen, vellykkede/bridged, fejl, cachetræffere, totalLatencyMs, latencySamples, stikprøvebaseret averageLatencyMs og tidspunkt for seneste brug (nulstilles ved genstart; administrationsgodkendelse)
/api/modality-bridge/video/runtime GET Streng kontrol af betroet loopback før administrationsgodkendelse/probe; renset tilgængelighed og versioner for FFmpeg/ffprobe (no-store)
/api/modality-bridge/video/extract POST Intern godkendt bytebroker til betroet loopback; 50 MiB input, begrænset kø/32 MiB output, 503 ved kapacitetsgrænse, 499 ved afbrydelse, 504 ved tidsfrist; ikke en offentlig upload-API

Sikkerhedskopiering og eksport/import

Slutpunkt Metode Beskrivelse
/api/db-backups GET Vis tilgængelige sikkerhedskopier
/api/db-backups PUT Opret en manuel sikkerhedskopi
/api/db-backups POST Gendan fra en bestemt sikkerhedskopi
/api/db-backups/export GET Download databasen som en .sqlite-fil
/api/db-backups/import POST Upload en .sqlite-fil for at erstatte databasen
/api/db-backups/exportAll GET Download en komplet sikkerhedskopi som et .tar.gz-arkiv

Synkronisering med cloudtjenester

Slutpunkt Metode Beskrivelse
/api/sync/cloud Forskellige Handlinger til cloudsynkronisering
/api/sync/initialize POST Initialiser synkronisering
/api/cloud/* Forskellige Administration af cloudtjenester

Tunneler

Slutpunkt Metode Beskrivelse
/api/tunnels/cloudflared GET Læs installations-/kørselsstatus for Cloudflare Quick Tunnel til dashboardet
/api/tunnels/cloudflared POST Aktivér eller deaktiver Cloudflare Quick Tunnel (action=enable/disable)
/api/tunnels/ngrok GET Læs kørselsstatus for ngrok Tunnel til dashboardet
/api/tunnels/ngrok POST Aktivér eller deaktiver ngrok Tunnel (action=enable/disable)

CLI-værktøjer

Slutpunkt Metode Beskrivelse
/api/cli-tools/claude-settings GET Status for Claude CLI
/api/cli-tools/codex-settings GET Status for Codex CLI
/api/cli-tools/droid-settings GET Status for Droid CLI
/api/cli-tools/openclaw-settings GET Status for OpenClaw CLI
/api/cli-tools/runtime/[toolId] GET Generisk CLI-kørselsmiljø

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

ACP-agenter

Slutpunkt Metode Beskrivelse
/api/acp/agents GET Vis alle registrerede agenter (indbyggede + brugerdefinerede) med status
/api/acp/agents POST Tilføj en brugerdefineret agent, eller opdater registreringscachen
/api/acp/agents DELETE Fjern en brugerdefineret agent via forespørgselsparameteren id

GET-svaret inkluderer agents[] (id, name, binary, version, installed, protocol, isCustom) og summary (total, installed, notFound, builtIn, custom).

Robusthed og hastighedsgrænser

Slutpunkt Metode Beskrivelse
/api/resilience GET/PATCH Hent/opdater indstillinger for anmodningskø, forbindelsesnedkøling, udbyderafbryder og ventetid
/api/resilience/reset POST Nulstil udbydernes kredsløbsafbrydere
/api/resilience/model-cooldowns GET Vis aktive spærringer pr. (udbyder, forbindelse, model), sorteret efter resterende tid
/api/resilience/model-cooldowns DELETE Ryd en modelspærring — body {provider, model} eller {all: true} for at rydde alt
/api/rate-limits GET Status for hastighedsgrænse pr. konto
/api/rate-limit GET Global konfiguration af hastighedsgrænser

Alle fire /api/resilience/*-ruter kræver administrationsgodkendelse (requireManagementAuth). Se Robusthed (udvidet) for en komplet gennemgang af udbyderafbryder kontra forbindelsesnedkøling kontra modelspærring.

Evalueringer

Slutpunkt Metode Beskrivelse
/api/evals GET/POST Vis evalueringspakker/kør en evaluering

Politikker

Slutpunkt Metode Beskrivelse
/api/policies GET/POST/DELETE Administrer dirigeringspolitikker

Overholdelse

Slutpunkt Metode Beskrivelse
/api/compliance/audit-log GET Revisionslog for overholdelse (seneste N)

v1beta (Gemini-kompatibel)

Slutpunkt Metode Beskrivelse
/v1beta/models GET Vis modeller i Gemini-format
/v1beta/models/{...path} POST Gemini-generateContent-slutpunkt

Disse slutpunkter afspejler Geminis API-format for klienter, der forventer kompatibilitet med det oprindelige Gemini SDK.

Interne API'er/system-API'er

Slutpunkt Metode Beskrivelse
/api/init GET Kontrol af applikationsinitialisering (bruges ved første kørsel)
/api/tags GET Ollama-kompatible modeltags (til Ollama-klienter)
/api/restart POST Udløs kontrolleret genstart af serveren
/api/shutdown POST Udløs kontrolleret nedlukning af serveren
/api/system/env/repair POST Reparer miljøvariabler for OAuth-udbyderen

Bemærk: Disse slutpunkter bruges internt af systemet eller til kompatibilitet med Ollama-klienter. De kaldes typisk ikke af slutbrugere.

Reparation af OAuth-miljøvariabler (v3.6.1+)

POST /api/system/env/repair
Content-Type: application/json

{
  "provider": "claude-code"
}

Reparerer manglende eller beskadigede OAuth-miljøvariabler for en specifik udbyder. 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"
}

Lydtransskription

POST /v1/audio/transcriptions
Authorization: Bearer your-api-key
Content-Type: multipart/form-data

Transskriber lydfiler ved hjælp af en hvilken som helst konfigureret STT-udbyder. Det første stisegment vælger den oprindelige udbyder (openai/…, deepgram/…). Gateways, der videreeksporterer en anden leverandørs model, bruger et kvalificeret id (openrouter/deepgram/nova-3).

Anmodning:

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å model-id'er: openai/whisper-1 (kræver en OpenAI-nøgle), openrouter/deepgram/nova-3 (kræver en OpenRouter-nøgle), deepgram/nova-3 (kræver en oprindelig Deepgram-nøgle). En direkte deepgram/nova-3-anmodning bruger ikke OpenRouter.

Understøttede formater: mp3, wav, m4a, flac, ogg, webm.


Ollama-kompatibilitet

For klienter, der bruger Ollamas API-format:

# Chat-slutpunkt (Ollama-format)
POST /v1/api/chat

# Modelliste (Ollama-format)
GET /api/tags

Anmodninger oversættes automatisk mellem Ollama-formatet og interne formater.

Tokeniserede VS Code-aliasser/aliasser uden headers

Brug disse aliasser, når en integration ikke kan indsætte en Authorization-header og har brug for, at API-nøglen er indlejret i basis-URL'en.

# Katalogalias i OpenAI-stil
GET /api/v1/vscode/{token}/
GET /api/v1/vscode/{token}/models

# Chat-aliasser i OpenAI-stil
POST /api/v1/vscode/{token}/chat/completions
POST /api/v1/vscode/{token}/responses

# Aliasser 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"}]}'

Bemærkninger:

  • De tokeniserede aliasser genbruger de samme handlers som /v1/* og /api/tags; svarstrukturerne forbliver identiske.
  • Foretræk Authorization: Bearer ..., når klienten understøtter brugerdefinerede headers.
  • URL-baserede tokens kan optræde i reverse proxy-logfiler, browserhistorik og telemetri uden for OmniRoute. Betragt dem som en kompatibilitetsmulighed, ikke som standardmetoden til godkendelse.

Telemetri

# Hent oversigt over latenstelemetri (p50/p95/p99 pr. udbyder)
GET /api/telemetry/summary

Svar:

{
  "providers": {
    "claudeCode": { "p50": 245, "p95": 890, "p99": 1200, "count": 150 },
    "github": { "p50": 180, "p95": 620, "p99": 950, "count": 320 }
  }
}

Budget

# Hent budgetstatus for alle API-nøgler
GET /api/usage/budget

# Angiv eller opdater et budget
POST /api/usage/budget
Content-Type: application/json

{
  "apiKeyId": "key-123",
  "dailyLimitUsd": 5.00,
  "weeklyLimitUsd": 30.00,
  "monthlyLimitUsd": 100.00,
  "warningThreshold": 0.8,
  "resetInterval": "monthly"
}

Skemabemærkninger (setBudgetSchema): apiKeyId er påkrævet; mindst én af dailyLimitUsd, weeklyLimitUsd eller monthlyLimitUsd skal være større end nul. Valgfrie felter: warningThreshold (01), resetInterval (daily | weekly | monthly), resetTime (HH:MM). Det ældre {keyId, limit, period}-format returnerer 400 Bad Request.

Tokengrænser

Tokenbudgetter pr. API-nøgle (adskilt fra det USD-baserede budget ovenfor). Håndhæves direkte i requestforløbet: Når en nøgles forbrug i det aktuelle vindue når dens grænse, afvises requests med 429 Too Many Requests. Grænser kan afgrænses til en bestemt model, en provider eller anvendes globalt på tværs af nøglen. Når flere grænser matcher en request, gælder den mest restriktive.

# Vis en nøgles tokengrænser (inkluderer aktuelt forbrug i vinduet)
GET /api/usage/token-limits?apiKeyId=key-123

# Opret eller opdater en tokengrænse
POST /api/usage/token-limits
Content-Type: application/json

{
  "apiKeyId": "key-123",
  "scopeType": "model",
  "scopeValue": "openai/gpt-4o",
  "tokenLimit": 1000000,
  "resetInterval": "monthly",
  "enabled": true
}

# Slet en tokengrænse efter id
DELETE /api/usage/token-limits?id=tl-abc

Skemabemærkninger (setTokenLimitSchema): apiKeyId og scopeType (model | provider | global) er påkrævede. scopeValue er påkrævet, medmindre scopeType er global (f.eks. et model-id for model-omfang eller et udbyder-id for provider-omfang). tokenLimit skal være et positivt heltal (konverteres fra en streng). Valgfrit: id (udelad for at oprette, angiv for at opdatere), resetInterval (daily | weekly | monthly, standardværdi monthly), resetTime (HH:MM), enabled (standardværdi true). GET-svar udvider hver grænse med tokensUsed, remaining, windowStart, periodStartAt og nextResetAt. Dette er et administrationsendpoint (godkendelse håndhæves centralt af authz-pipelinen).

Behandling af requests

  1. Klienten sender en request til /v1/*
  2. Route-handleren kalder handleChat, handleEmbedding, handleAudioTranscription eller handleImageGeneration
  3. Modellen opløses (direkte udbyder/model eller alias/kombination)
  4. Legitimationsoplysninger vælges fra den lokale database med filtrering efter kontotilgængelighed
  5. For chat: handleChatCore kontrollerer den semantiske cache/signaturcachen og opløser kombinationens komprimeringsindstillinger
  6. Proaktiv komprimering køres før oversættelse til udbyderformatet, når den er aktiveret (lite, Caveman, RTK eller stablet)
  7. Udbyderens executor sender requesten opstrøms
  8. Svaret oversættes tilbage til klientformatet (chat) eller returneres uændret (embeddings/billeder/lyd)
  9. Forbrug, komprimeringsanalyse og requestlogs registreres
  10. Fallback anvendes ved fejl i henhold til kombinationsreglerne

Fuld arkitekturreference: ARCHITECTURE.md


Administration af kombinationer

Routingkombinationer på højere niveau (allerede opsummeret under /api/combos*) kan også mappes 1:1 fra et model-id-mønster, hvilket muliggør transparent omdirigering af et model-id i OpenAI-stil til en kombination.

Metode Sti Beskrivelse
GET /api/model-combo-mappings Vis alle model→kombination-mappinger
POST /api/model-combo-mappings Opret mapping — body: {pattern, comboId, priority?, enabled?, description?}
GET /api/model-combo-mappings/[id] Hent en enkelt mapping
PUT /api/model-combo-mappings/[id] Opdater felter i en eksisterende mapping
DELETE /api/model-combo-mappings/[id] Fjern en mapping

Godkendelse: administrationssession/API-nøgle (requireManagementAuth).


Webhooks

Udgående webhook-abonnementer på OmniRoute-hændelser (fuldførelse af anmodninger, opbrugte kvoter, nøglerotation osv.).

Metode Sti Beskrivelse
GET /api/webhooks Vis webhooks (hemmeligheder maskeres som <prefix>...)
POST /api/webhooks Opret webhook — body: {url, events?: ["*"], secret?, description?}
GET /api/webhooks/[id] Hent en webhook
PUT /api/webhooks/[id] Opdater url/events/secret/description
DELETE /api/webhooks/[id] Fjern en webhook
POST /api/webhooks/[id]/test Send en testpayload til webhook-URL'en, og returner leveringsstatus

Godkendelse: administrationssession/API-nøgle (requireManagementAuth).


Registrerede nøgler (automatisk administration)

Bruges af undersystemet til automatisk nøgleadministration til at udstede og rotere API-nøgler hos en underliggende udbyder/konto med daglige/timemæssige kvoter.

Metode Sti Beskrivelse
GET /api/v1/registered-keys Vis registrerede nøgler (kun maskeret præfiks)
POST /api/v1/registered-keys Udsted en ny registreret nøgle — body: {name, provider?, accountId?, idempotencyKey?, expiresAt?, dailyBudget?, hourlyBudget?}. Returnerer den rå nøgle én gang. Returnerer 429, hvis kvoten afviser.
GET /api/v1/registered-keys/[id] Hent metadataene for en registreret nøgle (intet råt nøglemateriale)
DELETE /api/v1/registered-keys/[id] Tilbagekald en registreret nøgle
POST /api/v1/registered-keys/[id]/revoke Eksplicit slutpunkt til tilbagekaldelse (samme effekt som DELETE)

Godkendelse: Bearer-API-nøgle (isAuthenticated). Se også /v1/quotas/check og /v1/issues/report.


Agentprotokol

Cloudagentopgaver (Claude Code, Codex Cloud, OpenHands osv.), der udføres eksternt på vegne af OmniRoute-brugere.

Metode Sti Beskrivelse
GET /api/v1/agents/tasks Vis opgaver — valgfrit ?provider=, ?status=, ?limit= (1500, standard 50)
POST /api/v1/agents/tasks Opret opgave — body valideres af CreateCloudAgentTaskSchema (providerId, prompt, source, options?). Returnerer 201 med en opgavekonvolut
DELETE /api/v1/agents/tasks?id=... Slet en opgave
GET /api/v1/agents/tasks/[id] Læs opgave — opdaterer synkront status fra den eksterne cloudagent, når et external_id er angivet
POST /api/v1/agents/tasks/[id] Diskrimineret handling: {action: "approve"}, {action: "message", message} eller {action: "cancel"}
DELETE /api/v1/agents/tasks/[id] Slet en specifik opgave efter id

Godkendelse: administrationsgodkendelse er påkrævet for hver metode (requireCloudAgentManagementAuth). Før v3.8.0 var disse ikke godkendelsesbeskyttede — se commit 588a0333 for den inkompatible ændring.

# Opret en Claude Code-cloudopgave
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":"..."}}'

Administrationsproxyer

Udgående HTTP(S)/SOCKS-proxyer, der kan tildeles udbydere, konti eller globalt.

Metode Sti Beskrivelse
GET /api/v1/management/proxies Vis proxyer (med ?id= returneres én; med ?id=&where_used=1 returneres tildelingsgrafen)
POST /api/v1/management/proxies Opret proxy — body valideres af createProxyRegistrySchema
PATCH /api/v1/management/proxies Opdater proxy — body valideres af updateProxyRegistrySchema (kræver id)
DELETE /api/v1/management/proxies?id=...&force=1 Slet proxy (brug force=1 til at fjerne tildelinger)
GET /api/v1/management/proxies/assignments Vis tildelinger — kan filtreres efter proxy_id, scope, scope_id; angiv resolve_connection_id=<id> for at finde den aktive proxy for en forbindelse
PUT /api/v1/management/proxies/assignments Tildel — body valideres af proxyAssignmentSchema ({scope, scopeId?, proxyId?}). Rydder dispatcherens cache
PUT /api/v1/management/proxies/bulk-assign Massetildel — body valideres af bulkProxyAssignmentSchema ({scope, scopeIds[], proxyId?})
GET /api/v1/management/proxies/health?hours=24 Samlet proxytilstand (antal vellykkede/mislykkede forsøg, latenstid) over et tidsvindue

Godkendelse: administrationssession/API-nøgle på hver rute (requireManagementAuth).

Opgavebeskrivelsens POST /api/v1/management/proxies/[id]/assignments og POST /api/v1/management/proxies/[id]/health betjenes af de flade /assignments- og /health-ruter, der er vist ovenfor — der findes ingen underordnede ruter pr. id i kodebasen.


Robusthed (udvidet)

OmniRoute tilbyder tre uafhængige mekanismer til midlertidige fejl. Administrationsendepunkterne nedenfor giver operatører mulighed for at aflæse og tilsidesætte dem:

Omfang Tilstandslagring Aflæsning Nulstilling / rydning
Udbyderafbryder domain_circuit_breakers + i hukommelsen /api/monitoring/health POST /api/resilience/reset
Forbindelsesnedkøling rateLimitedUntil på udbyderforbindelser /api/rate-limits, /api/providers/[id] (genaktiveres automatisk; ryd via udbyder-PUT)
Modelspærring Modeltilgængelighedsregister i hukommelsen GET /api/resilience/model-cooldowns DELETE /api/resilience/model-cooldowns

PATCH /api/resilience accepterer tilsidesættelser af udbyderafbrydere under providerBreaker.oauth og providerBreaker.apikey. Hver profil understøtter degradationThreshold, failureThreshold og resetTimeoutMs; de samme felter er tilgængelige under Dashboard → Indstillinger → Robusthed.

# Ryd en enkelt modelspærring
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"}'

# Ryd alle spærringer
curl -X DELETE http://localhost:20128/api/resilience/model-cooldowns \
  -H "Cookie: auth_token=..." \
  -d '{"all":true}'

Komplet konceptuel reference og standardværdier for afbrydere: Se CLAUDE.md → "Resilience Runtime State".


Færdigheder

Framework til udvidelse af OmniRoute med brugerdefinerede eksekverbare handlers samt integrationer med markedspladser.

Metode Sti Beskrivelse
GET /api/skills Vis installerede færdigheder — kan filtreres med ?q=, ?mode=on|off|auto, ?source=skillsmp|skillssh|local, sideinddelt
GET /api/skills/[id] Hent én færdighed
PUT /api/skills/[id] Opdater færdighed (navn, beskrivelse, tilstand, skema, handler, tags)
DELETE /api/skills/[id] Afinstaller en færdighed
POST /api/skills/install Installer en færdighed fra et råt manifest — body: {name, version, description, schema:{input, output}, handlerCode, apiKeyId?}
GET /api/skills/executions Vis de seneste færdighedskørsler (revisionsspor med input/output/varighed)
GET /api/skills/marketplace?q=... Søg/populærliste fra SkillsMP-markedspladsen (kræver indstillingen skillsmpApiKey)
POST /api/skills/marketplace/install Installer en færdighed efter id fra SkillsMP
GET /api/skills/skillssh?q=&limit= Søg i skills.sh-registret
POST /api/skills/skillssh/install Installer en færdighed efter id fra skills.sh

Godkendelse: administrationssession/API-nøgle. Søgeruter til markedspladser accepterer enten administrationsgodkendelse eller en Bearer-API-nøgle (isAuthenticated).


Hukommelse

Vedvarende lager til samtale- og faktuel hukommelse, afgrænset pr. API-nøgle/session.

Metode Sti Beskrivelse
GET /api/memory Vis hukommelser — ?apiKeyId=, ?type=, ?sessionId=, ?q=, med sideinddeling via offset/limit eller page/limit
POST /api/memory Opret hukommelse — body valideret af Zod: {content, key, type?, sessionId?, apiKeyId?, metadata?, expiresAt?}
GET /api/memory/[id] Hent én hukommelse
DELETE /api/memory/[id] Slet en hukommelse
GET /api/memory/health Hukommelsesundersystemets tilstand (databaseforbindelse, embeddings-backend, vektorindeksstatus)

Godkendelse: administrationssession/API-nøgle (requireManagementAuth). type-enum: FACTUAL, EPISODIC, SEMANTIC, PROCEDURAL (se MemoryType i src/lib/memory/types.ts).


MCP-server

OmniRoute leveres med en integreret Model Context Protocol-server med 3 transporter (stdio, SSE, streamable-http) og værktøjer med afgrænsede tilladelser. Dashboard-endpoints nedenfor læser status-/revisionsdata og fungerer som proxy for HTTP-transporterne.

Metode Sti Beskrivelse
GET /api/mcp/status Heartbeat, transport, onlinestatus, seneste kald, mest anvendte værktøjer, succesrate for de seneste 24 timer
GET /api/mcp/tools Liste over MCP-værktøjer med name, description, scopes, phase, auditLevel, sourceEndpoints
GET /api/mcp/sse Åbn SSE-stream for SSE-transporten (returnerer 503, hvis MCP er deaktiveret, eller transporten ikke matcher)
POST /api/mcp/sse Send JSON-RPC-frame via SSE-transporten
GET /api/mcp/stream Åbn SSE-siden af Streamable HTTP-transporten (serverinitierede meddelelser)
POST /api/mcp/stream Send JSON-RPC-frame via Streamable HTTP-transporten
DELETE /api/mcp/stream Afslut en Streamable HTTP-session
GET /api/mcp/audit Forespørg i revisionsloggen — ?limit=, ?offset=, ?tool=, `?success=true false, ?apiKeyId=`
GET /api/mcp/audit/stats Samlede revisionsstatistikker (totaler, succesrate, gennemsnitlig varighed, mest anvendte værktøjer)

Godkendelse: sse/stream-transporterne anvender den MCP-specifikke godkendelsesflade (Bearer-API-nøgle med mcp-scope); status/tools/audit*-ruterne kan læses fra dashboardet (ingen yderligere godkendelse kræves ud over adgang til dashboard-værten).

Begge HTTP-transporter styres af settings.mcpEnabled og settings.mcpTransport — en transportuoverensstemmelse returnerer 400, og en deaktiveret MCP-tilstand returnerer 503.


A2A-server

OmniRoute tilbyder et A2A-slutpunkt (Agent-to-Agent) baseret på JSON-RPC 2.0 samt en REST-wrapper til inspektion og brug i dashboards.

JSON-RPC

POST /a2a
Authorization: Bearer your-api-key   # valgfrit, medmindre OMNIROUTE_API_KEY er angivet
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "message/send",
  "params": {
    "skill": "smart-routing",
    "messages": [{"role": "user", "content": "Send denne programmeringsopgave videre"}]
  }
}

Understøttede metoder (alle afhænger af settings.a2aEnabled):

Metode Beskrivelse
message/send Synkron udførelse af færdighed; returnerer {task, artifacts, metadata}
message/stream Streamet SSE-udførelse af det samme sæt færdigheder
tasks/get Hent en opgave via taskId
tasks/cancel Annuller en opgave via taskId

Indbyggede færdigheder: smart-routing, quota-management, provider-discovery, cost-analysis, health-report.

Agentkort

GET /.well-known/agent.json

Returnerer det offentlige A2A-agentkort (navn, beskrivelse, funktioner, færdighedskatalog og godkendelsesmetode) — caches offentligt i 1 time. Kræver ingen godkendelse.

REST-hjælpefunktioner

Metode Sti Beskrivelse
GET /api/a2a/status A2A aktiveret + opgavestatistik + oversigt over cachet agentkort
GET /api/a2a/tasks Vis opgaver — ?state=submitted|working|completed|failed|cancelled, ?skill=, ?limit= (≤200), ?offset=
POST /api/a2a/tasks (Ikke implementeret som REST-hjælpefunktion — opret via JSON-RPC message/send)
GET /api/a2a/tasks/[id] Hent én opgave
POST /api/a2a/tasks/[id]/cancel Annuller en opgave

Godkendelse: REST-hjælpefunktionerne kører uden administrationsgodkendelse (kan læses af dashboardet); JSON-RPC-ruten /a2a bruger Bearer OMNIROUTE_API_KEY, hvis den er konfigureret.


Cloud, evalueringer og vurdering

Metode Sti Beskrivelse
POST /api/cloud/auth Bekræft en Bearer-nøgle, og returner maskerede udbyderforbindelser + modelaliasser til cloudsynkroniseringsklienter
POST /api/cloud/credentials/update Opdater krypterede legitimationsoplysninger for en cloudsynkroniseret udbyder
POST /api/cloud/model/resolve Omsæt et logisk model-id til en konkret udbyder/model ved hjælp af den lokale routingtabel
GET /api/cloud/models/alias Vis modelaliasser, som de eksponeres for cloudsynkronisering
GET /api/assess Læs de seneste vurderingskategoriseringer (pr. udbyder/model)
POST /api/assess Kør en vurdering — body: `{scope: {type:"all"} {type:"provider", providerId} {type:"model", modelId}, trigger?}`
GET /api/evals Vis indbyggede evalueringspakker + de seneste kørsler
POST /api/evals Start en evalueringskørsel
POST /api/evals/suites Opret en brugerdefineret evalueringspakke — body valideres af evalSuiteSaveSchema
GET /api/evals/suites/[id] Hent en brugerdefineret evalueringspakke

Godkendelse: /api/cloud/auth validerer en Bearer-nøgle direkte; de øvrige ruter under /api/cloud/*, /api/evals/* og /api/assess kræver en administrationssession/API-nøgle. POST til /api/assess bruger validateBody med et diskrimineret union-scope-skema.


Administration af ACP (Agent Client Protocol)

som underprocesser. Disse endpoints administrerer registrering af ACP-agenter og registrering af brugerdefinerede agenter.

Metode Sti Beskrivelse
GET /api/acp/agents Vis alle kendte CLI-agenter (indbyggede + brugerdefinerede) med installationsstatus, version og binær fil
POST /api/acp/agents Registrer en brugerdefineret ACP-agent, eller opdater cachen — body: {id, name, binary, versionCommand, providerAlias, spawnArgs, protocol} eller {action: "refresh"}
DELETE /api/acp/agents Fjern en brugerdefineret ACP-agent — query-parameter: ?id=<agentId>

Eksempel på svar (GET /api/acp/agents):

{
  "agents": [
    {
      "id": "claude",
      "name": "Claude Code CLI",
      "binary": "claude",
      "version": "1.0.45",
      "installed": true,
      "protocol": "stdio",
      "providerAlias": "claude",
      "isCustom": false
    },
    {
      "id": "my-custom-cli",
      "name": "My Custom CLI",
      "installed": false,
      "protocol": "stdio",
      "providerAlias": "my-provider",
      "isCustom": true
    }
  ],
  "cacheTtlMs": 60000,
  "cacheAge": 1234
}

Godkendelse: Kræver en administrationssession (auth_token-cookie til dashboardet) eller en API-nøgle med administrationsomfang.

Se ACP Framework for alle detaljer.


Analyse og observerbarhed

Analyseendpoints i realtid til overvågning af routing, komprimering og diversitet blandt udbydere. Disse driver siderne under /dashboard/analytics/*.

Analyse af automatisk routing

Metode Sti Beskrivelse
GET /api/analytics/auto-routing Aggregerede statistikker for automatisk routing: samlet antal kald, strategifordeling, niveaufordeling, topudbydere
GET /api/analytics/auto-routing?days=7 Statistik for et tidsvindue (standard er 24 timer)

Eksempel på svar:

{
  "window": "24h",
  "totalCalls": 1234,
  "strategyBreakdown": {
    "rules": 800,
    "cost": 200,
    "latency": 150,
    "sla-aware": 50,
    "lkgp": 34
  },
  "tierBreakdown": {
    "ultra": 100,
    "pro": 500,
    "standard": 400,
    "free": 234
  },
  "topProviders": [
    { "provider": "openai", "calls": 500, "avgLatencyMs": 850 },
    { "provider": "anthropic", "calls": 300, "avgLatencyMs": 1200 }
  ]
}

Komprimeringsanalyse

Metode Sti Beskrivelse
GET /api/analytics/compression Aggregerede komprimeringsstatistikker: sparede tokens, besparelse i %, tilstandsfordeling, motorforbrug

Eksempel på svar:

{
  "window": "24h",
  "totalOriginalTokens": 5000000,
  "totalCompressedTokens": 3500000,
  "totalSavings": 1500000,
  "savingsPct": 30.0,
  "modeBreakdown": {
    "lite": 400,
    "standard": 600,
    "aggressive": 100,
    "ultra": 50,
    "rtk": 84
  },
  "engineBreakdown": {
    "caveman": 800,
    "rtk": 434
  }
}

Sporing af udbyderdiversitet

Metode Sti Beskrivelse
GET /api/analytics/diversity Diversitetssporing baseret på Shannon-entropi: forhindrer enkelte fejlpunkter ved at måle spredningen blandt udbydere

Eksempel på svar:

{
  "window": "24h",
  "shannonEntropy": 2.45,
  "maxEntropy": 3.17,
  "diversityRatio": 0.77,
  "providerUsage": {
    "openai": 0.4,
    "anthropic": 0.25,
    "google": 0.2,
    "kiro": 0.15
  },
  "warnings": ["OpenAI accounts for 40% of traffic — consider diversifying"]
}

Godkendelse: Kræver en administrationssession eller en API-nøgle med administrationsomfang.


Administratorhandlinger

Endpoints kun for administratorer til driftsstyring.

Metode Sti Beskrivelse
GET /api/admin/concurrency Læs aktuelle samtidighedsgrænser (globale + pr. udbyder)
POST /api/admin/concurrency Opdater samtidighedsgrænser — body: {global?: number, perProvider?: Record<string, number>}

Godkendelse: Kræver en administrationssession med administratoromfang.


Administration af CLI-værktøjer

Administrer CLI-værktøjer, der integreres med OmniRoute (antigravity, chipotle, commandCode, devin-cli osv.). Se Udbyderreference for den fulde liste.

Metode Sti Beskrivelse
GET /api/cli-tools/all-statuses Status for alle CLI-værktøjer (installeret, version, senest set)
GET /api/cli-tools/status Detaljeret status for ét CLI-værktøj (?tool=-forespørgsel)
POST /api/cli-tools/apply Skriv et værktøjs genererede konfiguration (dryRun viser en forhåndsvisning; 422 + containerEphemeralTarget ved containerkørsel; migration angiver ældre Codex YAML)
GET /api/cli-tools/backups Vis sikkerhedskopier af CLI-værktøjskonfigurationer
POST /api/cli-tools/backups Opret en sikkerhedskopi af alle CLI-værktøjskonfigurationer
POST /api/cli-tools/backups Gendan: Det samme endpoint med {tool, backupId} i body gendanner den pågældende sikkerhedskopi
GET /api/cli-tools/antigravity-mitm Status for Antigravity MITM-proxyen (CLI-værktøjet "antigravity-mitm")
POST /api/cli-tools/antigravity-mitm/alias Konfigurer antigravity-mitm-aliasser

Godkendelse: Kræver en administrationssession.


Agentfærdigheder

Administrer AI-agentfærdigheder (svarende til OpenAI's brugerdefinerede GPT'er, men til agenter).

Metode Sti Beskrivelse
GET /api/agent-skills Vis alle agentfærdigheder (indbyggede + brugerdefinerede)
GET /api/agent-skills/[id] Hent en specifik agentfærdighed
POST /api/agent-skills Opret en brugerdefineret agentfærdighed — body: {name, description, prompt, model?, temperature?}
PUT /api/agent-skills/[id] Opdater en brugerdefineret agentfærdighed
DELETE /api/agent-skills/[id] Slet en brugerdefineret agentfærdighed
GET /api/agent-skills/[id]/raw Hent rå prompt + metadata (ingen udførelse)
POST /api/agent-skills/generate Generer en ny færdighed med AI ud fra en beskrivelse i naturligt sprog

Godkendelse: Kræver en administrationssession eller en API-nøgle med administrationsomfang.


Cacheadministration

Administrer den semantiske cache og ræsonneringscachen.

Metode Sti Beskrivelse
GET /api/cache Cacheoversigt: samlet antal poster, hitrate, størrelse på disk
GET /api/cache/entries Vis cachelagrede poster (med paginering)
DELETE /api/cache/entries Slet cacheposter (filtrer efter forespørgselsparametre)
GET /api/cache/stats Detaljeret cachestatistik (pr. udbyder, pr. model)
GET /api/cache/reasoning Status for ræsonneringscache (til genafspilning af ræsonnering)
DELETE /api/cache/reasoning Ryd ræsonneringscachen — forespørgselsparametre: ?toolCallId=<id> (enkelt), ?provider=<p> eller ingen (alle)

Godkendelse: Kræver en administrationssession.


Hukommelsessystem

Administrer vedvarende hukommelse (FTS5 + vektorindlejringer).

Metode Sti Beskrivelse
GET /api/memory Vis hukommelsesposter (filtrer efter omfang, type og søgeforespørgsel)
POST /api/memory Opret en ny hukommelsespost — brødtekst: {scope, type, content, metadata?}
GET /api/memory/[id] Hent en bestemt hukommelsespost
PUT /api/memory/[id] Opdater en hukommelsespost
DELETE /api/memory/[id] Slet en hukommelsespost
GET /api/memory?q= Søg i hukommelsen (FTS5 + vektor) — statistik er inkluderet i det samme svar

Godkendelse: Kræver en administrationssession eller en API-nøgle med administrationsomfang.


Webhooks

Administrer webhook-abonnementer på hændelser.

Metode Sti Beskrivelse
GET /api/webhooks Vis alle webhook-abonnementer
POST /api/webhooks Opret et webhook-abonnement — brødtekst: {url, events[], secret?, active?}
GET /api/webhooks/[id] Hent et bestemt webhook-abonnement
PUT /api/webhooks/[id] Opdater et webhook-abonnement
DELETE /api/webhooks/[id] Slet et webhook-abonnement
GET /api/webhooks/[id]/deliveries Vis leveringshistorikken for en webhook (log over vellykkede/mislykkede kald)
POST /api/webhooks/[id]/test Send en testhændelse til en webhook

Godkendelse: Kræver en administrationssession.

Se Webhook-framework for en komplet oversigt over hændelsestyper.


Færdighedsframework

Administrer færdigheder (frameworket til agentbaserede udvidelser).

Metode Sti Beskrivelse
GET /api/skills Vis alle installerede færdigheder (indbyggede + brugerdefinerede)
POST /api/skills/install Installer en færdighed fra en lokal sti eller URL
DELETE /api/skills/[id] Afinstaller en færdighed
PUT /api/skills/[id] Aktivér eller deaktiver en færdighed — body: {enabled?: boolean, mode?: "on" | "off" | "auto"}
POST /api/skills/executions Kør en færdighed — body: {skillName, apiKeyId, input?, sessionId?}
GET /api/skills/executions Vis kørselshistorik for alle færdigheder (filtrer efter ?apiKeyId=)

Godkendelse: Kræver en administrationssession eller en API-nøgle med administrationsrettigheder.

Se Færdighedsframework for alle detaljer.


Plugins

Administrer OmniRoute-plugins (tredjepartsudvidelser).

Metode Sti Beskrivelse
GET /api/plugins Vis installerede plugins
POST /api/plugins/marketplace/install Installer et plugin fra markedspladsen
DELETE /api/plugins/[name] Afinstaller et plugin
POST /api/plugins/[name]/activate Aktivér et plugin
POST /api/plugins/[name]/deactivate Deaktivér et plugin
GET /api/plugins/[name]/config Hent plugin-konfigurationen
PUT /api/plugins/[name]/config Opdater plugin-konfigurationen

Godkendelse: Kræver en administrationssession.

Se Pluginframework for alle detaljer.


Skyggerouting

Skygge-/A-B-sammenligning af udbydere er ikke en selvstændig REST-grænseflade — den konfigureres via kombinationsrouting (se Automatisk kombination). Sammenligningsmålinger pr. kombination leveres af GET /api/combos/metrics.


Sikkerhedskontroller

Inspicer sikkerhedskontrollerne under kørsel (registrering af personhenførbare oplysninger, registrering af prompt-injektion og billedbrokobling). Sikkerhedskontrollerne køres ved hver anmodning; fravalg for individuelle kald sker via anmodningsheaderen x-omniroute-disabled-guardrails — der findes ingen vedvarende grænseflade til aktivering/deaktivering.

Metode Sti Beskrivelse
GET /api/guardrails Vis de registrerede sikkerhedskontroller og deres status (navn / aktiveret / prioritet)
POST /api/guardrails/test Udfør en prøvekørsel af pipelinen før kald på et eksempelinput — body: {input, disabledGuardrails?}

Godkendelse: Kræver en administrationssession.

Se Sikkerhed > Sikkerhedskontroller for alle detaljer.



Godkendelse

Se Godkendelse til administration for de fire legitimationsfamilier (dashboard-session, lokalt CLI-token, oma_live_…-adgangstoken, API-nøgle med administrationsomfang), og hvordan de adskiller sig fra inferensnøgler.

  • Dashboard-ruter (/dashboard/*) bruger auth_token-cookien
  • Login bruger den gemte adgangskodehash med fallback til INITIAL_PASSWORD
  • requireLogin kan slås til eller fra via /api/settings/require-login
  • /v1/*-ruter kræver valgfrit en Bearer-API-nøgle, når REQUIRE_API_KEY=true
  • "administrationstoken" / "API-nøgle med administrationsomfang" i denne reference betyder en af familierne i den pågældende vejledning — ikke en udefineret ekstra hemmelighedstype

Inkompatibel ændring (v3.8.0)/api/v1/agents/tasks/* og administrationsendepunkterne for nedkølingsperioder kræver nu administrationsgodkendelse (dashboardets auth_token-cookie eller en API-nøgle med administrationsomfang). Klienter, der tidligere kaldte disse ruter uden godkendelse, modtager 401 Unauthorized. Se commit 588a0333 (fix(auth): require management auth for agent and cooldown APIs).