Files
OmniRoute/docs/i18n/sv/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

122 KiB
Raw Blame History

API Reference (Svenska)

🌐 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 · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


🌐 Språk: 🇺🇸 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á | 🇨🇳 中文 (简体) | 🇹🇼 中文 (繁體)

Grundläggande referens för OmniRoute-API:et. Den omfattar det publika /v1-gränssnittet och de mest använda hanteringsendpoints; den maskinläsbara docs/openapi.yaml och routeträdet under src/app/api/ är de fullständiga källorna.


Innehållsförteckning


Chattkompletteringar

POST /v1/chat/completions
Authorization: Bearer your-api-key
Content-Type: application/json

{
  "model": "cc/claude-opus-4-6",
  "messages": [
    {"role": "user", "content": "Skriv en funktion för att..."}
  ],
  "stream": true
}

Anpassade headers

Header Riktning Beskrivning
X-OmniRoute-No-Cache Begäran Ange true för att kringgå cachen
x-omniroute-no-memory Begäran Ange true för att hoppa över injicering av minne och färdigheter för denna begäran (motsvarar ingen cache och undviker extra token-/kostnadsbelastning per anrop)
X-OmniRoute-Progress Begäran Ange true för förloppshändelser
X-Session-Id Begäran Beständig sessionsnyckel för extern sessionsaffinitet
x_session_id Begäran Varianten med understreck accepteras också (direkt HTTP)
X-OmniRoute-Session-Id Begäran Sessions-/konversationstagg som tillhandahålls av anroparen (används även av minnet). När den finns sparas den ordagrant i call_logs.session_tag för kostnadsfördelning per session (#8249) — skapas aldrig om den saknas
Idempotency-Key Begäran Nyckel för deduplicering (5 s-fönster)
X-Request-Id Begäran Alternativ nyckel för deduplicering
X-OmniRoute-Cache Svar HIT eller MISS (icke-strömmande)
X-OmniRoute-Idempotent Svar true om deduplicerad
X-OmniRoute-Progress Svar enabled om förloppsspårning är aktiverad
X-OmniRoute-Session-Id Svar Effektivt sessions-ID som används av OmniRoute
X-OmniRoute-Request-Id Svar Korrelations-ID för begäran (när det är känt)
X-OmniRoute-Version Svar OmniRoutes byggversion (alltid tillgänglig)
X-OmniRoute-Cost-Saved Svar USD som sparades genom cachen vid en HIT (endast cacheträffar)
X-OmniRoute-Decision Svar Routningsspårning: strategy=<name>; provider=<alias>; latency_ms=<n> (<name> är kombinationsstrategin, eller single för en begäran utan kombination) — finns alltid i kompletteringssvar

Nginx-anmärkning: om du är beroende av headers med understreck (till exempel x_session_id) aktiverar du underscores_in_headers on;.

Telemetrihuvuden för kostnad: lyckade svar utan strömning innehåller även uppsättningen X-OmniRoute-* för kostnadstelemetri — X-OmniRoute-Response-Cost (USD, exakt 10 decimaler; 0.0000000000 för kostnadsfria/ej prissatta anrop), X-OmniRoute-Tokens-In / X-OmniRoute-Tokens-Out, X-OmniRoute-Model, X-OmniRoute-Provider, X-OmniRoute-Latency-Ms, X-OmniRoute-Cache-Hit och X-OmniRoute-Fallback-Attempts (endast när > 0), samt X-OmniRoute-Request-Id och X-OmniRoute-Version. Dessa genereras av chattkompletteringar, /v1/responses, /v1/messages, och medieslutpunkterna/v1/embeddings, /v1/images/generations, /v1/audio/speech, /v1/audio/transcriptions, /v1/rerank, /v1/videos/generations, /v1/music/generations och /v1/moderations (kostar alltid 0). Mediekostnaden beräknas per modalitet (per bild, per sekund, per tecken, per sökenhet) när prisuppgifter finns tillgängliga, annars 0 (fail-open).

Kostnadssemantik vid cacheträff: vid en TRÄFF i den semantiska cachen (X-OmniRoute-Cache-Hit: true) görs inget anrop till uppströmsleverantören, så X-OmniRoute-Response-Cost är 0.0000000000 (den inkrementella kostnaden för att leverera träffen). Den ursprungliga kostnaden/kostnaden som annars skulle ha uppstått rapporteras separat i X-OmniRoute-Cost-Saved. Faktureringssystem bör summera X-OmniRoute-Response-Cost (träffar kostar ingenting); cacheanalyser kan aggregera X-OmniRoute-Cost-Saved.

Exklusiva hanterade sessionslån

Exklusiv utlåning av hanterade sessioner är ett valfritt, klientneutralt routningsavtal: en aktiv ägare innehar en behörig OmniRoute-anslutning. Det innebär inte att en modell lånas, kräver inte OAuth, identifierar inte en specifik klient och kräver inte en specifik leverantör.

API-nyckeln som används för autentisering måste ha omfånget lease:exclusive och en uttrycklig, icke-tom lista allowedConnections. Databasens mutationsgräns framtvingar båda fälten tillsammans när nycklar skapas och vid partiella uppdateringar.

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"}

Lyckade svar för anskaffning, förnyelse och frigöring visar tidsstämplar, state och det exakta positiva värdet för generation, men aldrig den valda anslutningen eller autentiseringsuppgifterna. Vid förnyelse och frigöring anges generationen i JSON-kroppen:

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

En aktiv låneägare kan uttryckligen begära integritetssäkra visningsmetadata för sin aktuella bindning:

{ "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"
  }
}

Den här valfria statusåtgärden skyddas av den ogenomskinliga ägaren, den autentiserade hanterade API-nyckeln och den exakta aktiva generationen i en enda databastransaktion. displayName är endast det trimmade konfigurerade anslutningsnamnet; det är null när det inte finns något säkert konfigurerat namn. OmniRoute ersätter det aldrig med en e-postadress eller genererad kontoidentitet. Leverantörsvärdet är en icke-känslig visningsetikett och aldrig en genererad identifierare för en kompatibel leverantör. Autentiseringsuppgifter, tokens, cookies, råa anslutnings- eller API-nyckel-id:n, ägarhashar, avgränsningshemligheter och interna routningsdata undantas.

Uppslagningar med fel nyckel, fel ägare, inaktuell generation eller en bindning som saknas, har upphört, har frigjorts eller har ogiltigförklarats returnerar alla samma fel 409 LEASE_FENCE_STALE utan anslutningsmetadata. En klient som har fått svaret om väntan på kapacitet har ingen aktiv bindning att inspektera. När routningen flyttar ett aktivt lån förblir samma generation giltig och status returnerar atomärt den nya bindningen, aldrig den gamla. Befintliga klienter förblir oförändrade eftersom svaren för anskaffning, förnyelse, frigöring och väntan behåller sina tidigare format.

Det här serveravtalet ändrar inte vanliga OpenAI Codex /status. Vanliga Codex rapporterar för närvarande sin modellleverantör och sitt inbyggda autentiserings-/kontotillstånd, men återger inte godtyckliga kontometadata för anpassade leverantörer. En framtida klientintegration måste anropa den här åtgärden och avgöra hur connection.displayName ska visas.

Varje hanterad inferensbegäran skickar därefter båda kontrollhuvudena:

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

Den exakta ägaren, generationen, aktiva anslutningen och autentiserade API-nyckeln avgränsas omedelbart före varje uppströmsförsök som stöds. Återanvändning av ägare och generation med en annan nyckel misslyckas även när den nyckeln tillåter samma anslutning. Råa ägarvärden sparas inte, loggas inte, behålls inte i ögonblicksbilden av begäran och vidarebefordras inte uppströms.

Tillfällig konkurrens om resurser returnerar HTTP 429 med Retry-After och:

{
  "state": "WAITING_FOR_CAPACITY",
  "error": { "type": "lease_error", "code": "LEASE_CAPACITY_UNAVAILABLE" },
  "reason": "NO_FREE_ELIGIBLE_CONNECTION",
  "retryAfter": 30
}

Det här svaret innebär endast att den ordinarie uppsättningen behöriga anslutningar inte var tom och att varje ledig kandidat innehades av ett främmande aktivt lån. Modeller/leverantörer som inte stöds, policyavvikelser, väntetid, kvot, hälsa och andra vanliga behörighetsfel behåller sina befintliga OmniRoute-svar.

x-omniroute-compression

Åsidosättning av komprimeringsplanen per begäran. Högsta prioritet — åsidosätter routningskombinationens åsidosättning, den aktiva profilen, automatisk utlösning och panelens standardvärde. Värden:

Värde Effekt
off Ingen komprimering för den här begäran.
default Standardprofilen som härleds från panelen (ignorerar den aktiva profilen).
engine:<id> En enskild motor när den är aktiverad, t.ex. engine:rtk.
<combo> En namngiven kombination, som först matchas efter namn (skiftlägesokänsligt) och därefter efter id.

Anmärkningar:

  • Okända värden ignoreras (begäran avvisas aldrig); matchningen fortsätter enligt den normala prioritetsordningen.
  • Om flera kombinationer har samma namn anger du kombinationens id för en deterministisk matchning.
  • En kombination vars namn är off eller default kan inte väljas efter namn (dessa nyckelord tolkas först); referera till en sådan kombination med dess id.
  • Huvudreglaget för komprimering är en absolut spärr: när komprimering är globalt inaktiverad kan det här huvudet inte aktivera den.

Den tillämpade planen återges i svarshuvudet:

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

där <source> är något 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": "Maten var utsökt"
}

Tillgängliga leverantörer: Nebius, OpenAI, Mistral, Together AI, Fireworks, NVIDIA, OpenRouter, Jina AI.

Katalog-id:n är provider/model (exempel: jina-ai/jina-embeddings-v5-omni-small). Enkla Jina-modell-id:n som förekommer i registret (till exempel jina-embeddings-v5-text-small, jina-reranker-v3.5) matchas också. Jinas embed/rerank/classify/segment använder först autentiseringsuppgifterna för jina-ai från kontrollpanelen; JINA_AI_API_KEY används endast som reserv när det inte finns någon nyckel i kontrollpanelen. Kortet jina-reader är endast avsett för Reader / r.jina.ai (POST /v1/web/fetch) och tillhandahåller aldrig embeddings eller rerank.

Registermodeller som anger stöd för multimodalitet accepterar även upp till 32 leverantörsneutrala strukturerade objekt. Medieobjekttyperna är text, image, audio, video och document. Deras medie-source är antingen {"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 och familjealiaset jina-ai/jina-embeddings-v5-omni → omni-small) accepterar även Jinas egna EmbeddingsV5Request-dokument och vidarebefordrar dem oförändrade till https://api.jina.ai/v1/embeddings:

{
  "model": "jina-ai/jina-embeddings-v5-omni-small",
  "task": "retrieval.query",
  "normalized": true,
  "input": [
    { "text": "en röd cykel" },
    { "image": "https://example.com/bike.png" },
    {
      "content": [{ "text": "bildtext" }, { "image": "data:image/png;base64,..." }]
    }
  ]
}

Egna { image | audio | video | pdf }-värden kan vara en offentlig HTTPS-URL, en data:-URI eller rå base64. OmniRoute konverterar inte dessa objekt till strängar och hämtar inte egna bild-URL:er Jina hämtar offentliga medier självt. Ytterligare Jina-fält (task, normalized, truncate, embedding_type) vidarebefordras. Jina-SKU:er som endast stöder text avvisar fortfarande dokument som inte är text.

Säkerhets- och transportgränser:

  • URL:er till externa medier måste vara offentliga HTTPS-URL:er. Kanoniska {type,source:url}-objekt hämtas på serversidan (förnyad validering av omdirigeringar, tidsgräns, storleksgränser, offentlig DNS, anslutningslåsning) och infogas före leverantörsanropet. Jinas egna {image:"https://..."}-objekt vidarebefordras oförändrade efter samma kontroll av offentlig HTTPS; Jina hämtar URL:en.
  • Infogade base64-medier är begränsade till 8 MiB avkodad data per objekt och 16 MiB avkodad data för hela begäran.

Leverantörsöversättning (kanoniska objekt vidarebefordras aldrig oförändrade):

  • Jinas multimodala modeller: varje objekt på högsta nivån blir ett modalitetsnycklat objekt (text / image / audio / video / pdf) som använder data-URI:er för infogade medier; en vektor per objekt på högsta nivån.
  • Gemini Embedding 2-familjen: en array på högsta nivån blir en enda intern models/{model}:embedContent-begäran med content.parts (text eller inline_data).
  • Okända/dynamiska modeller utan uttryckliga modalitetsmetadata avvisar strukturerade indata med HTTP 400.
{
  "model": "jina-ai/jina-embeddings-v5-omni-small",
  "input": [
    { "type": "text", "text": "En röd cykel" },
    {
      "type": "image",
      "source": { "type": "url", "url": "https://example.com/bicycle.png" }
    }
  ],
  "dimensions": 512,
  "encoding_format": "float"
}

Modell-/modalitetskombinationer som inte stöds returnerar HTTP 400 i stället för att konvertera objektet. Utökningsfält som inte är indata i äldre sträng-/tokenbegäranden fortsätter att skickas vidare oförändrade.

# Lista alla embedding-modeller
GET /v1/embeddings

Bildgenerering

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

{
  "model": "openai/gpt-image-2",
  "prompt": "En vacker solnedgång över berg",
  "size": "1024x1024"
}

Tillgängliga leverantörer: OpenAI (GPT Image 2), xAI (Grok Image), Together AI (FLUX), Fireworks AI, Nebius (FLUX), Hyperbolic, NanoBanana, OpenRouter, SD WebUI (lokal), ComfyUI (lokal).

# Lista alla bildmodeller
GET /v1/images/generations

OCR för dokument

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äljer OCR-leverantör via prefixet provider/model. Ett modell-id utan prefix (t.ex. mistral-ocr-latest) matchas mot dess registrerade leverantör, och om model utelämnas används Mistral (mistral-ocr-latest) som standard. Registrerade leverantörer (open-sse/config/ocrRegistry.ts):

Leverantörs-id Modell-id model-värde Kommentarer
mistral mistral-ocr-latest mistral/mistral-ocr-latest (eller bara mistral-ocr-latest) Synkron — svaret returneras direkt från det enda anropet till uppströmsleverantören.
azure-document-intelligence prebuilt-read azure-document-intelligence/prebuilt-read Asynkron uppströmsleverantör (analyze + polling) — se nedan.
vertex-deepseek-ocr deepseek-ocr-maas vertex-deepseek-ocr/deepseek-ocr-maas Synkron, via Vertex AI:s partner-endpoint openapi/chat/completions — se nedan för autentisering/webbadress.

Alla tre leverantörerna svarar med samma Mistral-formaterade innehåll:

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

Pollingflöde för Azure Document Intelligence

Azure Document Intelligences analyze-API är asynkront: den ursprungliga begäran returnerar ett Operation-Location-huvud i stället för ett svarsinnehåll, och resultatet måste hämtas genom polling. Hanteraren (open-sse/handlers/ocr.ts) frågar denna webbadress varje sekund i upp till 30 försök, avbryter omedelbart (fortsätter inte att fråga) vid ett pollingsvar som inte är ok eller vid statusen "failed", och returnerar 504 om åtgärden fortfarande körs efter att antalet tillåtna försök har förbrukats. Det slutliga Azure-svaret normaliseras till samma pages-/markdown-format som används av Mistral innan det returneras till anroparen, så klientkoden behöver inte specialhantera leverantören.

Autentisering och endpoint-matchning för Vertex AI DeepSeek OCR

vertex-deepseek-ocr återanvänder samma Vertex AI-autentisering som OmniRoute redan stöder för chatt-/bildtrafik (open-sse/executors/vertex.ts): anslutningens API-nyckel är antingen autentiseringsuppgifter i Service Account JSON-format (som byts ut mot en kortlivad OAuth-åtkomsttoken via JWT Bearer-flödet) eller en redan utfärdad OAuth-åtkomsttoken som används i befintligt skick. Webbadressen till uppströms-endpointen är Vertex generiska partner-endpoint openapi/chat/completions, som skapas utifrån anslutningens projekt och region — ett explicit providerSpecificData.project/providerSpecificData.region har alltid företräde; annars härleds projektet från Service Account JSON-objektets project_id och regionens standardvärde är us-central1. Båda matchningarna sker i open-sse/handlers/ocr.ts (resolveVertexOcrAccessToken, resolveVertexOcrBaseUrl) och används av src/app/api/v1/ocr/route.ts innan anropet skickas vidare till handleOcr.


Lista modeller

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

→ Returnerar alla chatt-, inbäddnings- och bildmodeller samt kombinationer i OpenAI-format

Prefix för modell-id:n (?prefix=)

De flesta modeller presenteras under ett leverantörsprefix. Vilket prefix du får styrs av funktionsflaggan MODELS_CATALOG_PREFIX_MODE och kan åsidosättas per begäran med en frågeparameter praktiskt för en klient som vill ha en ren lista utan att ändra den serverövergripande inställningen för alla andra:

GET /v1/models?prefix=alias        # ett id per modell  det korta aliasprefixet
GET /v1/models?prefix=dual         # båda formerna (serverns standardvärde)
GET /v1/models?prefix=canonical    # endast det fullständiga leverantörs-id-prefixet
Läge Returnerar Anmärkningar
dual cc/claude-sonnet-4-6 och claude/claude-sonnet-4-6 Standard. Båda id:n dirigeras till samma modell. Detta behålls så att klientkonfigurationer som hårdkodat någon av formerna fortsätter att fungera. Katalogen blir ungefär dubbelt så stor.
alias cc/claude-sonnet-4-6 En post per modell. Leverantörer utan ett separat alias returnerar fortfarande sin post, så inget går förlorat.
canonical claude/claude-sonnet-4-6 En post per modell under det fullständiga leverantörs-id-prefixet. Leverantörer utan ett separat alias (t.ex. antigravity/…, agy/…) returnerar även här sitt enda id, så inget går förlorat.

En spegling i läget dual kan även identifieras utan frågeparametern: den innehåller ett parent-fält som pekar på det primära id:t.

Klienter som visar en modellväljare bör begära ?prefix=alias det är vad OmniCopilot-tillägget för VS Code gör.

Modellvarianter utan tänkande

För Claude-modeller med stöd för tänkande presenterar /v1/models även en variant utan tänkande, vars id har prefixet claude-3-omniroute-no-thinking/:

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

Om detta id väljs (t.ex. i en Claude Code-konfiguration som alltid bifogar ett thinking-block) matchas det tillbaka till den verkliga modellen <provider>/<model> med resonemang inaktiverat thinking:{type:"disabled"} för sökvägen /v1/messages, eller med fälten reasoning/reasoning_effort borttagna för sökvägen /v1/chat/completions. Varianten listas endast för modeller i Claude-familjen som stöder tänkande och respekterar disabled (så t.ex. modeller som endast stöder adaptivt läge och avvisar disabled undantas). Operatörer kan tvinga varianten att vara aktiverad eller inaktiverad per modell via ModelSpec.noThinkingAlias.


Manifest för leverantörsplugin

GET /api/v1/provider-plugin-manifest

Returnerar det JSON-säkra manifestet för leverantörsplugin som används av Bifrost, CLIProxyAPI och framtida sidovagnsroutrar. Svaret genereras från TypeScript-registret för leverantörer och utelämnar avsiktligt OAuth-klienthemligheter, matchning mot exekveringsmiljön, exekveringsfunktioner, förfrågningshuvuden och kontodata.

Använd den här slutpunkten när en sidovagn körs utanför processen och inte kan importera open-sse/config/providerPluginManifestRegistry.ts direkt.


Kompatibilitetsslutpunkter

Metod Sökväg 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 Musikgenerering i OpenAI-stil
POST /v1/audio/transcriptions OpenAI Audio (tal till text)
POST /v1/audio/speech OpenAI TTS (returnerar ljudinnehåll)
POST /v1/rerank Omrankning i Cohere/Voyage-stil
POST /v1/classify Jina-klassificering (api.jina.ai)
POST /v1/segment Jina-segmenterare (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 för OpenAI-katalog
GET /api/v1/vscode/{token}/models Alias för OpenAI-modeller
POST /api/v1/vscode/{token}/chat/completions Tokeniserad OpenAI-alias
POST /api/v1/vscode/{token}/responses Tokeniserad alias för OpenAI Responses
POST /api/v1/vscode/{token}/api/chat Tokeniserad Ollama-alias
GET /api/v1/vscode/{token}/api/tags Tokeniserad alias för Ollama-taggar

Alla POST-rutter följer samma struktur: Bearer your-api-key + Zod-validerad JSON-brödtext (v1RerankSchema, v1ModerationSchema, v1AudioSpeechSchema osv., se src/shared/validation/schemas.ts). 4xx returneras vid schemafel.

För klienter som inte kan bifoga Authorization: Bearer ... accepterar OmniRoute även API-nycklar i URL:en, antingen via kompatibla frågesträngar (?token=..., ?apiKey=..., ?api_key=..., ?key=...) eller via de särskilda slutpunkterna /api/v1/vscode/{token}/... som dokumenteras nedan.

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

# Jina-klassificering (autentiseringsuppgifter för Foundation API)
POST /v1/classify    { "model": "jina-embeddings-v5-text-small", "input": ["..."], "labels": ["a", "b"] }

# Jina-segmenterare
POST /v1/segment     { "content": "...", "return_chunks": true }

# Jina-sökning (s.jina.ai; leverantörsalias: jina-search, jina-ai, jina)
POST /v1/search      { "query": "...", "provider": "jina-search" }

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

# TTS — returnerar audio/mpeg-innehåll (eller begärt format)
POST /v1/audio/speech { "model": "openai/tts-1", "input": "Hello", "voice": "alloy" }

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

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

Särskilda leverantörsrutter

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

Leverantörsprefixet läggs till automatiskt om det saknas. Modeller som inte matchar returnerar 400.


Files API

OpenAI-kompatibel filslutpunkt för batchindata/-utdata och filuppladdningar med angivet syfte.

Metod Sökväg Beskrivning
POST /v1/files Ladda upp en fil (multipart: file, purpose, expires_after[anchor], expires_after[seconds]) — högst 512 MiB
GET /v1/files Lista filer för den autentiserade API-nyckeln
GET /v1/files/[id] Hämta en fils metadata
DELETE /v1/files/[id] Ta bort en fil
GET /v1/files/[id]/content Strömma tillbaka filens rådata

Autentisering: Bearer-API-nyckel — filer avgränsas per API-nyckel via getApiKeyRequestScope. En nyckel kan endast se, ladda ned och ta bort sina egna filer; en instrumentpanelssession utan nyckel kan läsa hela instansen; en fil utan ägare (anonym uppladdning eller uppladdning via instrumentpanelssession) nekas för alla anropare utan session. GET /v1/files avvisar en anonym anropare — och en angiven nyckel som inte kan matchas — med 401 även när REQUIRE_API_KEY=false, i stället för att lista alla klienters filer (GHSA-m3hp-hq9g-fpmv, GHSA-2jm2-mpx8-6523).


Batches API

OpenAI-kompatibel batchbearbetning.

Metod Sökväg Beskrivning
POST /v1/batches Skapa batch — kroppen valideras av v1BatchCreateSchema (input_file_id, endpoint, completion_window)
GET /v1/batches Lista batcher
GET /v1/batches/[id] Hämta batchstatus + request_counts
DELETE /v1/batches/[id] Ta bort en slutförd/misslyckad batch
POST /v1/batches/[id]/cancel Avbryt en pågående batch

Autentisering: Bearer-API-nyckel. Batchar avgränsas per API-nyckel enligt samma tredelade regel som filer: endast den egna nyckeln, instrumentpanelssession för hela instansen, poster utan ägare nekas för alla anropare utan session (hämtning, borttagning, avbrytning samt kontrollen av input_file_id vid skapande). GET /v1/batches avvisar en anonym anropare med 401 även när REQUIRE_API_KEY=false.


Sök-API

Abstraktion för webb-/sökleverantörer (Tavily, Brave, Exa, Serper osv.).

Metod Sökväg Beskrivning
GET /v1/search Lista konfigurerade sökleverantörer + funktioner
POST /v1/search Kör en sökfråga — brödtexten valideras av v1SearchSchema, stöder cachelagring/sammanslagning
GET /v1/search/analytics Statistik per leverantör för träffar/latens/cache

Autentisering: Bearer-API-nyckel (extractApiKey + isValidApiKey). Sökpolicyn tillämpas via enforceApiKeyPolicy.


API för webbhämtning

Extrahera innehåll från en URL via en konfigurerad leverantör för webbhämtning (Firecrawl, Jina Reader, Tavily Extract, TinyFish Fetch, Nimble Extract).

Metod Sökväg Beskrivning
POST /v1/web/fetch Hämta/skrapa en URL — brödtexten valideras av v1WebFetchSchema

Autentisering: Bearer-API-nyckel (extractApiKey + isValidApiKey). Policyn tillämpas via enforceApiKeyPolicy.

Kvotmedveten reservlösning (#8297): när ingen uttrycklig provider anges, gås poolen (firecrawljina-readertavily-searchtinyfishnimble-search) igenom i fast prioritetsordning (fyll den första först) — en hastighetsbegränsad men konfigurerad leverantör hoppas över i stället för att begäran avbryts, och ett omprövningsbart fel eller kvotfel uppströms (HTTP 429 alltid; 402/403 för kvotbaserade kostnadsfria nivåer hos Firecrawl/Tavily/TinyFish — inte för Jina Reader, och aldrig för en vanlig felaktig 400-begäran) går vidare till nästa ännu oprövade leverantör med autentiseringsuppgifter vid tidpunkten för begäran. När samtliga leverantörer i poolen är uttömda returnerar slutpunkten ett enda 429 (med ett Retry-After- huvud) i stället för det tidigare generiska 400. När en uttrycklig provider begärs sker ingen tyst reservväxling — en hastighetsbegränsad eller felande uttrycklig leverantör visar sitt eget fel (429 vid hastighetsbegränsning, annars statusen från uppströmskällan).


WebSocket-strömning

GET /v1/ws?handshake=1

Validerar en WebSocket-uppgraderingshandskakning och returnerar exempelmeddelandena för kommunikationsprotokollet (request, cancel). Faktiska WS-ramar hanteras av den medföljande WS-servern utanför Next.js-routningstabellen.

Autentisering: Bearer-API-nyckel under handskakningen.

Responses API över WebSocket (endast codex)

# Samma värd:port som HTTP-API:t (standard 20128); uppgradera anslutningen:
wscat -c "ws://localhost:20128/v1/responses?api_key=<OMNIROUTE_API_KEY>"
# (eller: -H "Authorization: Bearer <OMNIROUTE_API_KEY>")

# Den första ramen MÅSTE vara response.create:
{ "type": "response.create", "model": "gpt-5.5", "input": [ { "role": "user", "content": "hi" } ] }

En proxy för Responses-API-over-WebSocket är kopplad uteslutande till codex (ChatGPT- serverdelen). Den lyssnar på samma port som API:t/instrumentpanelen på sökvägarna /v1/responses, /responses och /api/v1/responses. Vid den första response.create-ramen autentiserar och förbereder den via den interna bryggan codex-responses-ws, väljer en codex OAuth-anslutning och tunnlar till wss://chatgpt.com/backend-api/codex/responses via transporten wreq-js. Modeller som inte är codex avvisas (codex_ws_provider_required). För kvotdelningsroutning, använd model: "qtSd/<group>/codex/<model>". Implementerat i app/server-ws.mjs + scripts/dev/responses-ws-proxy.mjs + src/app/api/internal/codex-responses-ws/route.ts.

Autentisering: Bearer-API-nyckel under handskakningen. Den medföljande HTTP-servern (server-ws.mjs) måste vara den aktiva startpunkten (vilket den är som standard när app/server-ws.mjs finns).

Modell-id: använd det rena ChatGPT-id:t (utan prefixet codex/)

OpenAI Codex CLI validerar modellnamnet på klientsidan när supports_websockets = true och avvisar id:n med leverantörsprefix såsom codex/gpt-5.5 (The 'codex/gpt-5.5' model is not supported when using Codex with a ChatGPT account). Skicka det rena id:t (t.ex. gpt-5.5). OmniRoutes brygga är endast avsedd för codex, så den matchar om ett rent id som en codex-modell (resolveCodexWsModelInfo) innan den tunnlar uppströms — även om ett rent gpt-5.5 annars skulle routas till en annan leverantör över HTTP.

Konfigurera OpenAI Codex CLI

Rikta Codex CLI mot OmniRoute genom att lägga till en anpassad leverantör med WebSocket- stöd i ~/.codex/config.toml (använd en separat CODEX_HOME för att undvika att ändra en befintlig konfiguration):

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

[model_providers.omniroute]
name = "OmniRoute (WS)"
base_url = "http://localhost:20128/v1"   # inget avslutande snedstreck; WS-URL:en härleds (använd https/wss i produktion)
wire_api = "responses"                    # enda värdet som stöds sedan februari 2026
supports_websockets = true                # aktiverar Responses-over-WS-transporten
env_key = "OMNIROUTE_API_KEY"             # innehåller OmniRoute-API-nyckeln (Bearer)
export OMNIROUTE_API_KEY=sk-...           # en OmniRoute-API-nyckel (valfri nyckel om REQUIRE_API_KEY=false)
codex exec "Responda apenas: PONG"

CLI:t uppgraderar base_url + /responses till en WebSocket och OmniRoute tunnlar den till den valda codex OAuth-anslutningen. Validerat från början till slut mot den lokala servern: ChatGPT returnerar codex.rate_limits + response.created och strömmar slutförandet.


Kvoter och problemrapportering

Metod Sökväg Beskrivning
GET /v1/quotas/check Förhandsvalidera kvoten för en provider + accountId innan en registrerad nyckel utfärdas
POST /v1/issues/report Rapportera ett fel vid kvot-/nyckelutfärdande till GitHub (kräver GITHUB_ISSUES_REPO + token)

Autentisering: Bearer-API-nyckel (isAuthenticated).


Användning med självbetjäning (/api/usage/om-usage)

Alla API-nycklar kan läsa sin egen användning och sina egna kvoter — ingen administratörsautentisering krävs. Detta är den ändpunkt som en klient (CLI, OmniCopilot-panelen) använder för att visa en nyckelinnehavare dennes kostnader.

# Textformat (det historiska kontraktet — oformaterad text för en terminal)
curl -H "Authorization: Bearer <your-api-key>" \
  http://localhost:20128/api/usage/om-usage

# Strukturerat format — det som ett användargränssnitt använder
curl -H "Authorization: Bearer <your-api-key>" \
  "http://localhost:20128/api/usage/om-usage?format=json"

Nyckeln måste ha allowUsageCommand aktiverat (inaktiverat som standard — kontrollpanelens hanterare för API-nycklar växlar detta per nyckel). Utan det svarar ändpunkten med 403.

?format=json returnerar en diskriminerad struktur så att en anropare aldrig läser ett datafält från ett avslag. Vid lyckat anrop:

{
  "allowed": true,
  // finns endast när nyckeln har valt användningsgränser per nyckel (USD per dag/vecka):
  "personal": {
    "dailySpentUsd": 1.25,
    "dailyLimitUsd": 5,
    "dailyResetAtIso": "…",
    "weeklySpentUsd": 8,
    "weeklyLimitUsd": 20,
    "weeklyResetAtIso": "…" /*  */,
  },
  // ögonblicksbilden av den valda leverantörskvoten, eller null när inget har cachelagrats ännu:
  "provider": {
    "connectionId": "…",
    "provider": "claude",
    "plan": "…",
    "quotas": {/*  */},
  },
  // ögonblicksbilder för alla anslutningar, så att ett användargränssnitt kan visa flera leverantörer sida vid sida:
  "providers": [
    { "connectionId": "…", "provider": "claude" /*  */ },
    { "provider": "codex" /*  */ },
  ],
}

Vid avslag (401 felaktig nyckel / 403 inte tillåtet) returnerar samma rutt { "allowed": false, "error": { "message": "…" } } — ett befintligt men tomt personal/provider (nyckeln är tillåten, men inget har hämtats ännu) är ett annat tillstånd än ett avslag, och endast JSON-formatet skiljer dem åt.

Autentisering: anroparens egen Bearer-API-nyckel, validerad med isValidApiKey — detta är inte administrationsgränssnittet (/api/keys/…), som förblir skyddat av requireManagementAuth.


Semantisk cache

# Hämta cachestatistik
GET /api/cache/stats

# Rensa alla cachar
DELETE /api/cache/stats

Exempel på svar:

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

Påverkan på latens

En TRÄFF i den semantiska cachen levererar svaret från cachen utan ett uppströmsanrop, så den rapporterade X-OmniRoute-Response-Latency är nära noll (oavsett den ursprungliga uppströmslatensen). Latenskänsliga klienter (prestandamätning, p50/p99-övervakning) bör kontrollera svarshuvudet X-OmniRoute-Cache-Latency:

Värde Betydelse
synthetic Svaret levererades från cachen; latensen är inte verklig uppströmstid
(saknas) Svar från ett verkligt uppströmsanrop

Förbigång av cache per nyckel

API-nycklar kan välja bort läsningar från den semantiska cachen via cacheDefaultMode:

Värde Beteende
legacy Normalt cachebeteende (standard)
bypass Hoppa över cacheuppslagningen helt; anropa alltid uppströms

Ange vid skapande av nyckel (POST /api/keys) eller uppdatering (PATCH /api/keys/[id]):

{ "cacheDefaultMode": "bypass" }

Förbigång per begäran

Alla begäranden kan kringgå cachen oavsett nyckelinställningar:

X-OmniRoute-No-Cache: true

Instrumentpanel och hantering

Hanteringsvägar (/api/* förutom offentlig autentisering/inloggning) auktoriseras inte med vanliga API-nycklar för inferens. Information om autentiseringsuppgifter, behörighetsomfattningar och curl-exempel: Autentisering för hantering.

Autentisering

Slutpunkt Metod Beskrivning
/api/auth/login POST Logga in
/api/auth/logout POST Logga ut
/api/settings/require-login GET/PUT Växla krav på inloggning

Leverantörshantering

Slutpunkt Metod Beskrivning
/api/providers GET/POST Lista/skapa leverantörer
/api/providers/[id] GET/PUT/DELETE Hantera en leverantör
/api/providers/[id]/test POST Testa leverantörsanslutningen
/api/providers/[id]/models GET Lista leverantörens modeller
/api/providers/validate POST Validera leverantörskonfigurationen
/api/providers/bulk POST Lägg till flera API-nycklar samtidigt för EN leverantör
/api/providers/import POST Importera en heterogen LISTA över leverantörer från en parsad CSV-/JSON-fil (#6836); resultat med partiella fel per rad
/api/provider-nodes* Diverse Hantering av leverantörsnoder
/api/provider-models GET/POST/PATCH/DELETE Anpassade modeller (lägg till, uppdatera, dölj/visa, ta bort)

OAuth-flöden

Slutpunkt Metod Beskrivning
/api/oauth/[provider]/[action] Diverse Leverantörsspecifik OAuth

Routning och konfiguration

Slutpunkt Metod Beskrivning
/api/models/alias GET/POST Modellalias
/api/models/catalog GET Alla modeller efter leverantör + typ
/api/combos* Diverse Kombinationshantering
/api/keys* Diverse Hantering av API-nycklar
/api/pricing GET Modellprissättning

Användning och analys

Slutpunkt Metod Beskrivning
/api/usage/history GET Användningshistorik
/api/usage/logs GET Användningsloggar
/api/usage/request-logs GET Loggar på begärandenivå
/api/usage/[connectionId] GET Användning per anslutning
/api/usage/token-limits GET/POST/DELETE Budgetar för tokengränser per API-nyckel
/api/usage/model-latency-stats GET Löpande latensaggregat per leverantör/modell (genomsnitt/p50/p95/p99, lyckandefrekvens); filter: windowHours/minSamples/maxRows/provider/model (#6873)
/api/usage/cache-health GET Sammanfattning av promptcachehälsa över call_logs — skriv-/läsförhållande, p50/p90/p99-fördelning av skrivstorlek, koncentration av omfattande skrivningar, uppdelning per modell samt bedömningen healthy/degraded/thrash/no-data; frågeparametrarna range (1h|24h|7d|30d, standardvärde 24h) och valfria model (#8827)

Inställningar

Slutpunkt Metod Beskrivning
/api/settings GET/PUT/PATCH Allmänna inställningar
/api/settings/proxy GET/PUT Konfiguration av nätverksproxy
/api/settings/proxy/test POST Testa proxyanslutningen
/api/settings/ip-filter GET/PUT Lista över tillåtna/blockerade IP-adresser
/api/settings/thinking-budget GET/PUT Omskrivningsläge för begäranden avseende tanke-/resoneringsbudget (oförändrad vidarebefordran / automatisk borttagning / anpassat / adaptivt). Oberoende av 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 Rensa rader i begärandeloggen och lokala anropsloggar

Kontext och komprimering

Ändpunkt Metod Beskrivning
/api/compression/preview POST Förhandsgranska av/lätt/standard/aggressiv/ultra/RTK/staplad komprimering
/api/compression/language-packs GET Lista tillgängliga Caveman-språkpaket
/api/compression/rules GET Lista metadata för Caveman-regler
/api/context/caveman/config GET/PUT Alias för Caveman-specifika inställningar
/api/context/rtk/config GET/PUT RTK-specifika inställningar, inklusive anpassade filter och lagring av råutdata
/api/context/rtk/filters GET RTK-filterkatalog och diagnostik för anpassade filter
/api/context/rtk/test POST Kör RTK-förhandsgranskning/-test mot en textnyttolast
/api/context/rtk/raw-output/[id] GET Läs lagrade maskerade råutdata via pekar-id
/api/context/combos GET/POST Lista/skapa komprimeringskombinationer
/api/context/combos/[id] GET/PUT/DELETE Detaljer/uppdatering/borttagning för komprimeringskombination
/api/context/combos/[id]/assignments GET/PUT Tilldela komprimeringskombinationer till routningskombinationer
/api/context/analytics GET Alias för komprimeringsanalys

Övervakning

Ändpunkt Metod Beskrivning
/api/sessions GET Spårning av aktiva sessioner
/api/rate-limits GET Hastighetsgränser per konto
/api/monitoring/health GET Hälsokontroll + leverantörssammanfattning (catalogCount, configuredCount, activeCount, monitoredCount). Administrationsvyn inkluderar credentialHealth: skalärvärden för probcachen, failedConnections när failed>0 och staleDbNonOkCount (beständigt test_status i SQLite, inte mätvärdet). Se MONITORING_GUIDE.md.
/api/cache/stats GET/DELETE Cachestatistik/rensa
/api/modality-bridge/stats GET Minneslagrade attempts, lyckade försök/bridged, misslyckanden, cacheträffar, totalLatencyMs, latencySamples, samplingsbaserad averageLatencyMs och tidpunkt för senaste användning (återställs vid omstart; administratörsautentisering)
/api/modality-bridge/video/runtime GET Strikt kontroll av betrodd loopback före administratörsautentisering/prob; sanerad information om tillgänglighet och versioner för FFmpeg/ffprobe (no-store)
/api/modality-bridge/video/extract POST Intern autentiserad byteförmedlare via betrodd loopback; 50 MiB indata, begränsad kö/32 MiB utdata, 503 vid kapacitetsbrist, 499 vid frånkoppling, 504 vid överskriden tidsgräns; inte ett offentligt API för uppladdning

Säkerhetskopiering och export/import

Slutpunkt Metod Beskrivning
/api/db-backups GET Lista tillgängliga säkerhetskopior
/api/db-backups PUT Skapa en manuell säkerhetskopia
/api/db-backups POST Återställ från en specifik säkerhetskopia
/api/db-backups/export GET Ladda ned databasen som en .sqlite-fil
/api/db-backups/import POST Ladda upp en .sqlite-fil för att ersätta databasen
/api/db-backups/exportAll GET Ladda ned en fullständig säkerhetskopia som ett .tar.gz-arkiv

Molnsynkronisering

Slutpunkt Metod Beskrivning
/api/sync/cloud Varierande Åtgärder för molnsynkronisering
/api/sync/initialize POST Initiera synkronisering
/api/cloud/* Varierande Molnhantering

Tunnlar

Slutpunkt Metod Beskrivning
/api/tunnels/cloudflared GET Läs installations-/körningsstatus för Cloudflare Quick Tunnel på instrumentpanelen
/api/tunnels/cloudflared POST Aktivera eller inaktivera Cloudflare Quick Tunnel (action=enable/disable)
/api/tunnels/ngrok GET Läs körningsstatus för ngrok Tunnel på instrumentpanelen
/api/tunnels/ngrok POST Aktivera eller inaktivera ngrok Tunnel (action=enable/disable)

CLI-verktyg

Slutpunkt Metod Beskrivning
/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-körningsmiljö

CLI-svar innehåller: installed, runnable, command, commandPath, runtimeMode, reason.

ACP-agenter

Slutpunkt Metod Beskrivning
/api/acp/agents GET Lista alla identifierade agenter (inbyggda + anpassade) med status
/api/acp/agents POST Lägg till en anpassad agent eller uppdatera identifieringscachen
/api/acp/agents DELETE Ta bort en anpassad agent via frågeparametern id

GET-svaret innehåller agents[] (id, namn, binärfil, version, installerad, protokoll, är anpassad) och summary (totalt, installerade, hittades inte, inbyggda, anpassade).

Motståndskraft och hastighetsgränser

Slutpunkt Metod Beskrivning
/api/resilience GET/PATCH Hämta/uppdatera inställningar för begärandekö, anslutningspaus, leverantörsbrytare och väntetid
/api/resilience/reset POST Återställ leverantörernas kretsbrytare
/api/resilience/model-cooldowns GET Lista aktiva spärrar per (leverantör, anslutning, modell), sorterade efter återstående tid
/api/resilience/model-cooldowns DELETE Rensa en modellspärr — brödtext {provider, model} eller {all: true} för att rensa allt
/api/rate-limits GET Status för hastighetsgräns per konto
/api/rate-limit GET Global konfiguration av hastighetsgräns

Alla fyra /api/resilience/*-vägar kräver hanteringsautentisering (requireManagementAuth). Se Motståndskraft (utökad) för en fullständig genomgång av leverantörsbrytare kontra anslutningspaus kontra modellspärr.

Utvärderingar

Slutpunkt Metod Beskrivning
/api/evals GET/POST Lista utvärderingssviter/kör utvärdering

Policyer

Slutpunkt Metod Beskrivning
/api/policies GET/POST/DELETE Hantera routningspolicyer

Efterlevnad

Slutpunkt Metod Beskrivning
/api/compliance/audit-log GET Granskningslogg för efterlevnad (senaste N)

v1beta (Gemini-kompatibelt)

Slutpunkt Metod Beskrivning
/v1beta/models GET Lista modeller i Gemini-format
/v1beta/models/{...path} POST Gemini-slutpunkt för generateContent

Dessa slutpunkter speglar Geminis API-format för klienter som förväntar sig kompatibilitet med Geminis inbyggda SDK.

Interna API:er/system-API:er

Ändpunkt Metod Beskrivning
/api/init GET Kontroll av programinitiering (används vid första körningen)
/api/tags GET Ollama-kompatibla modelltaggar (för Ollama-klienter)
/api/restart POST Utlös en kontrollerad omstart av servern
/api/shutdown POST Utlös en kontrollerad avstängning av servern
/api/system/env/repair POST Reparera miljövariabler för OAuth-leverantörer

Obs! Dessa ändpunkter används internt av systemet eller för kompatibilitet med Ollama-klienter. De anropas vanligtvis inte av slutanvändare.

Reparation av OAuth-miljövariabler (v3.6.1+)

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

{
  "provider": "claude-code"
}

Reparerar saknade eller skadade OAuth-miljövariabler för en specifik leverantör. Returnerar:

{
  "success": true,
  "repaired": ["CLAUDE_CODE_OAUTH_CLIENT_ID", "CLAUDE_CODE_OAUTH_CLIENT_SECRET"],
  "backupPath": "/home/user/.omniroute/backups/env-repair-2026-04-11.bak"
}

Ljudtranskribering

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

Transkribera ljudfiler med valfri konfigurerad STT-leverantör. Det första sökvägssegmentet väljer den ursprungliga leverantören (openai/…, deepgram/…). Gatewayer som vidareexporterar en annan leverantörs modell använder ett kvalificerat id (openrouter/deepgram/nova-3).

Begäran:

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
}

Exempel på modell-id:n: openai/whisper-1 (kräver en OpenAI-nyckel), openrouter/deepgram/nova-3 (kräver en OpenRouter-nyckel), deepgram/nova-3 (kräver en ursprunglig Deepgram-nyckel). En begäran med enbart deepgram/nova-3 använder inte OpenRouter.

Format som stöds: mp3, wav, m4a, flac, ogg, webm.


Ollama-kompatibilitet

För klienter som använder Ollamas API-format:

# Chattändpunkt (Ollama-format)
POST /v1/api/chat

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

Begäranden översätts automatiskt mellan Ollama-format och interna format.

Tokeniserade VS Code-alias utan headers

Använd dessa alias när en integration inte kan infoga en Authorization-header och API-nyckeln måste bäddas in i bas-URL:en.

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

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

# Alias i Ollama-stil
POST /api/v1/vscode/{token}/api/chat
GET /api/v1/vscode/{token}/api/tags

Exempel:

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

Anmärkningar:

  • De tokeniserade aliasen återanvänder samma hanterare som /v1/* och /api/tags; svarsformaten förblir identiska.
  • Föredra Authorization: Bearer ... när klienten stöder anpassade headers.
  • URL-baserade token kan förekomma i loggar från omvända proxyservrar, webbläsarhistorik och telemetri utanför OmniRoute. Behandla dem som ett kompatibilitetsalternativ, inte som standardmetod för autentisering.

Telemetri

# Hämta sammanfattning av latenstelemetri (p50/p95/p99 per leverantö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 }
  }
}

Budget

# Hämta budgetstatus för alla API-nycklar
GET /api/usage/budget

# Ange eller uppdatera en 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"
}

Schemaanmärkningar (setBudgetSchema): apiKeyId krävs; minst ett av dailyLimitUsd, weeklyLimitUsd eller monthlyLimitUsd måste vara större än noll. Valfria fält: warningThreshold (01), resetInterval (daily | weekly | monthly), resetTime (HH:MM). Det äldre formatet {keyId, limit, period} returnerar 400 Bad Request.

Tokengränser

Tokenbudgetar per API-nyckel (separata från den USD-baserade budgeten ovan). Tillämpas direkt i begäransflödet: när en nyckels användning i det aktuella fönstret når gränsen avvisas begäranden med 429 Too Many Requests. Gränser kan avgränsas till en specifik model, en provider eller tillämpas globalt för hela nyckeln. När flera gränser matchar en begäran gäller den mest restriktiva.

# Lista en nyckels tokengränser (inkluderar aktuell användning i fönstret)
GET /api/usage/token-limits?apiKeyId=key-123

# Skapa eller uppdatera en tokengräns
POST /api/usage/token-limits
Content-Type: application/json

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

# Ta bort en tokengräns efter id
DELETE /api/usage/token-limits?id=tl-abc

Schemaanteckningar (setTokenLimitSchema): apiKeyId och scopeType (model | provider | global) är obligatoriska. scopeValue är obligatoriskt om inte scopeType är global (t.ex. ett modell-id för omfattningen model, ett leverantörs-id för omfattningen provider). tokenLimit måste vara ett positivt heltal (konverteras från en sträng). Valfritt: id (utelämna för att skapa, ange för att uppdatera), resetInterval (daily | weekly | monthly, standardvärde monthly), resetTime (HH:MM), enabled (standardvärde true). GET-svar utökar varje gräns med tokensUsed, remaining, windowStart, periodStartAt och nextResetAt. Detta är en endpoint av hanteringsklass (autentisering tillämpas centralt av authz-pipelinen).

Bearbetning av begäranden

  1. Klienten skickar en begäran till /v1/*
  2. Route-hanteraren anropar handleChat, handleEmbedding, handleAudioTranscription eller handleImageGeneration
  3. Modellen matchas (direkt leverantör/modell eller alias/kombination)
  4. Autentiseringsuppgifter väljs från den lokala databasen med filtrering efter kontotillgänglighet
  5. För chatt: handleChatCore kontrollerar semantisk cache/signaturcache och matchar kombinationens komprimeringsinställningar
  6. Proaktiv komprimering körs före leverantörsöversättningen när den är aktiverad (lite, Caveman, RTK eller staplad)
  7. Leverantörsexekveraren skickar begäran uppströms
  8. Svaret översätts tillbaka till klientformatet (chatt) eller returneras i befintligt skick (inbäddningar/bilder/ljud)
  9. Användning, komprimeringsanalys och begärandeloggar registreras
  10. Reservlösning tillämpas vid fel enligt kombinationsreglerna

Fullständig arkitekturreferens: ARCHITECTURE.md


Kombinationshantering

Kombinationer för routning på högre nivå (redan sammanfattade under /api/combos*) kan även mappas 1:1 från ett mönster för modell-id, vilket möjliggör transparent omdirigering av ett modell-id i OpenAI-stil till en kombination.

Metod Sökväg Beskrivning
GET /api/model-combo-mappings Lista alla mappningar från modell till kombination
POST /api/model-combo-mappings Skapa mappning — body: {pattern, comboId, priority?, enabled?, description?}
GET /api/model-combo-mappings/[id] Hämta en enskild mappning
PUT /api/model-combo-mappings/[id] Uppdatera fält i en befintlig mappning
DELETE /api/model-combo-mappings/[id] Ta bort en mappning

Autentisering: hanteringssession/API-nyckel (requireManagementAuth).


Webhooks

Utgående webhook-prenumerationer för OmniRoute-händelser (slutförda begäranden, förbrukad kvot, nyckelrotation osv.).

Metod Sökväg Beskrivning
GET /api/webhooks Lista webhooks (hemligheter maskeras som <prefix>...)
POST /api/webhooks Skapa webhook — body: {url, events?: ["*"], secret?, description?}
GET /api/webhooks/[id] Hämta en webhook
PUT /api/webhooks/[id] Uppdatera url/events/secret/description
DELETE /api/webhooks/[id] Ta bort en webhook
POST /api/webhooks/[id]/test Skicka en testpayload till webhook-URL:en och returnera leveransstatus

Autentisering: hanteringssession/API-nyckel (requireManagementAuth).


Registrerade nycklar (automatisk hantering)

Används av undersystemet för automatisk nyckelhantering för att utfärda och rotera API-nycklar hos en bakomliggande leverantör/ett bakomliggande konto, med dagliga/timvisa kvoter.

Metod Sökväg Beskrivning
GET /api/v1/registered-keys Lista registrerade nycklar (endast maskerat prefix)
POST /api/v1/registered-keys Utfärda en ny registrerad nyckel — body: {name, provider?, accountId?, idempotencyKey?, expiresAt?, dailyBudget?, hourlyBudget?}. Returnerar den råa nyckeln en gång. Returnerar 429 om kvoten nekar begäran.
GET /api/v1/registered-keys/[id] Hämta metadata för en registrerad nyckel (inget råmaterial)
DELETE /api/v1/registered-keys/[id] Återkalla en registrerad nyckel
POST /api/v1/registered-keys/[id]/revoke Explicit slutpunkt för återkallning (samma effekt som DELETE)

Autentisering: Bearer-API-nyckel (isAuthenticated). Se även /v1/quotas/check och /v1/issues/report.


Agentprotokoll

Molnagentuppgifter (Claude Code, Codex Cloud, OpenHands osv.) som körs på distans åt OmniRoute-användare.

Metod Sökväg Beskrivning
GET /api/v1/agents/tasks Lista uppgifter — valfria ?provider=, ?status=, ?limit= (1500, standardvärde 50)
POST /api/v1/agents/tasks Skapa uppgift — innehållet valideras av CreateCloudAgentTaskSchema (providerId, prompt, source, options?). Returnerar 201 med uppgiftsomslag
DELETE /api/v1/agents/tasks?id=... Ta bort en uppgift
GET /api/v1/agents/tasks/[id] Läs uppgift — uppdaterar synkront statusen från den externa molnagenten när ett external_id har angetts
POST /api/v1/agents/tasks/[id] Diskriminerad åtgärd: {action: "approve"}, {action: "message", message} eller {action: "cancel"}
DELETE /api/v1/agents/tasks/[id] Ta bort en specifik uppgift efter id

Autentisering: hanteringsautentisering krävs för varje metod (requireCloudAgentManagementAuth). Före v3.8.0 var dessa oautentiserade — se commit 588a0333 för den inkompatibla ändringen.

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

Hanteringsproxyservrar

Utgående HTTP(S)/SOCKS-proxyservrar som kan tilldelas leverantörer, konton eller globalt.

Metod Sökväg Beskrivning
GET /api/v1/management/proxies Lista proxyservrar (med ?id= returneras en; med ?id=&where_used=1 returneras tilldelningsgrafen)
POST /api/v1/management/proxies Skapa proxyserver — innehållet valideras av createProxyRegistrySchema
PATCH /api/v1/management/proxies Uppdatera proxyserver — innehållet valideras av updateProxyRegistrySchema (kräver id)
DELETE /api/v1/management/proxies?id=...&force=1 Ta bort proxyserver (använd force=1 för att koppla bort tilldelningar)
GET /api/v1/management/proxies/assignments Lista tilldelningar — kan filtreras efter proxy_id, scope, scope_id; ange resolve_connection_id=<id> för att fastställa den aktiva proxyservern för en anslutning
PUT /api/v1/management/proxies/assignments Tilldela — innehållet valideras av proxyAssignmentSchema ({scope, scopeId?, proxyId?}). Rensar dispatcher-cachen
PUT /api/v1/management/proxies/bulk-assign Masstilldela — innehållet valideras av bulkProxyAssignmentSchema ({scope, scopeIds[], proxyId?})
GET /api/v1/management/proxies/health?hours=24 Sammanställd proxyhälsa (antal lyckade/misslyckade anrop, latens) under ett tidsintervall

Autentisering: hanteringssession/API-nyckel krävs för varje rutt (requireManagementAuth).

Uppgiftsbeskrivningens POST /api/v1/management/proxies/[id]/assignments och POST /api/v1/management/proxies/[id]/health hanteras av de platta rutterna /assignments och /health som visas ovan — det finns inga underordnade rutter per id i kodbasen.


Resiliens (utökad)

OmniRoute tillhandahåller tre oberoende mekanismer för tillfälliga fel. Hanteringsslutpunkterna nedan gör det möjligt för operatörer att läsa och åsidosätta dem:

Omfattning Tillståndslagring Läs Återställ / rensa
Leverantörsbrytare domain_circuit_breakers + i minnet /api/monitoring/health POST /api/resilience/reset
Anslutningens väntetid rateLimitedUntil för leverantörsanslutningar /api/rate-limits, /api/providers/[id] (återaktiveras vid behov; rensa via leverantörens PUT)
Modellspärr Minnesbaserat register över modelltillgänglighet GET /api/resilience/model-cooldowns DELETE /api/resilience/model-cooldowns

PATCH /api/resilience accepterar åsidosättningar av leverantörsbrytaren under providerBreaker.oauth och providerBreaker.apikey. Varje profil stöder degradationThreshold, failureThreshold och resetTimeoutMs; samma fält finns i Instrumentpanel → Inställningar → Resiliens.

# Rensa en enskild modellspärr
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"}'

# Rensa alla spärrar
curl -X DELETE http://localhost:20128/api/resilience/model-cooldowns \
  -H "Cookie: auth_token=..." \
  -d '{"all":true}'

Fullständig konceptuell referens och standardvärden för brytare: se CLAUDE.md → "Resiliensens körtidstillstånd".


Färdigheter

Ramverk för att utöka OmniRoute med anpassade körbara hanterare samt marknadsplatsintegrationer.

Metod Sökväg Beskrivning
GET /api/skills Lista installerade färdigheter — kan filtreras med ?q=, ?mode=on|off|auto, ?source=skillsmp|skillssh|local, sidindelad
GET /api/skills/[id] Hämta en färdighet
PUT /api/skills/[id] Uppdatera en färdighet (namn, beskrivning, läge, schema, hanterare, taggar)
DELETE /api/skills/[id] Avinstallera en färdighet
POST /api/skills/install Installera en färdighet från ett råmanifest — body: {name, version, description, schema:{input, output}, handlerCode, apiKeyId?}
GET /api/skills/executions Lista de senaste färdighetskörningarna (granskningslogg med indata/utdata/varaktighet)
GET /api/skills/marketplace?q=... Sökning/populär lista från marknadsplatsen SkillsMP (kräver inställningen skillsmpApiKey)
POST /api/skills/marketplace/install Installera en färdighet via id från SkillsMP
GET /api/skills/skillssh?q=&limit= Sök i registret skills.sh
POST /api/skills/skillssh/install Installera en färdighet via id från skills.sh

Autentisering: hanteringssession/API-nyckel. Sökvägar för marknadsplatssökning accepterar antingen hanteringsautentisering eller en Bearer-API-nyckel (isAuthenticated).


Minne

Beständigt minne för konversationer/fakta, avgränsat per API-nyckel/session.

Metod Sökväg Beskrivning
GET /api/memory Lista minnen — ?apiKeyId=, ?type=, ?sessionId=, ?q=, med sidnumrering via offset/limit eller page/limit
POST /api/memory Skapa minne — brödtext validerad av Zod: {content, key, type?, sessionId?, apiKeyId?, metadata?, expiresAt?}
GET /api/memory/[id] Hämta ett minne
DELETE /api/memory/[id] Ta bort ett minne
GET /api/memory/health Minnesundersystemets hälsa (databasanslutning, backend för inbäddningar, status för vektorindex)

Autentisering: hanteringssession/API-nyckel (requireManagementAuth). Enum för type: FACTUAL, EPISODIC, SEMANTIC, PROCEDURAL (se MemoryType i src/lib/memory/types.ts).


MCP-server

OmniRoute levereras med en inbäddad Model Context Protocol-server med 3 transporter (stdio, SSE, streamable-http) och verktyg med avgränsade behörigheter. Kontrollpanelens slutpunkter nedan läser status-/granskningsdata och fungerar som proxy för HTTP-transporterna.

Metod Sökväg Beskrivning
GET /api/mcp/status Hjärtslag, transport, onlinestatus, senaste anrop, vanligaste verktyg, lyckandefrekvens under 24 timmar
GET /api/mcp/tools Lista över MCP-verktyg med name, description, scopes, phase, auditLevel, sourceEndpoints
GET /api/mcp/sse Öppna SSE-ström för SSE-transporten (returnerar 503 om MCP är inaktiverat eller transporten inte matchar)
POST /api/mcp/sse Skicka JSON-RPC-ram via SSE-transporten
GET /api/mcp/stream Öppna SSE-sidan av Streamable HTTP-transporten (serverinitierade meddelanden)
POST /api/mcp/stream Skicka JSON-RPC-ram via Streamable HTTP-transporten
DELETE /api/mcp/stream Avsluta en Streamable HTTP-session
GET /api/mcp/audit Fråga granskningsloggen — ?limit=, ?offset=, ?tool=, `?success=true false, ?apiKeyId=`
GET /api/mcp/audit/stats Aggregerad granskningsstatistik (totalt antal, lyckandefrekvens, genomsnittlig varaktighet, vanligaste verktyg)

Autentisering: transporterna sse/stream använder den MCP-specifika autentiseringsytan (Bearer-API-nyckel med omfånget mcp); vägarna status/tools/audit* kan läsas från kontrollpanelen (ingen ytterligare autentisering krävs utöver åtkomst till kontrollpanelens värd).

Båda HTTP-transporterna styrs av settings.mcpEnabled och settings.mcpTransport — en transport som inte matchar returnerar 400, medan ett inaktiverat MCP-tillstånd returnerar 503.


A2A-server

OmniRoute exponerar en A2A-slutpunkt (agent-till-agent) för JSON-RPC 2.0 samt ett REST-gränssnitt för inspektion och användning i kontrollpanelen.

JSON-RPC

POST /a2a
Authorization: Bearer your-api-key   # valfritt om inte OMNIROUTE_API_KEY har angetts
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "message/send",
  "params": {
    "skill": "smart-routing",
    "messages": [{"role": "user", "content": "Route this coding task"}]
  }
}

Metoder som stöds (samtliga styrs av settings.a2aEnabled):

Metod Beskrivning
message/send Synkron körning av en färdighet; returnerar {task, artifacts, metadata}
message/stream Strömmande SSE-körning av samma uppsättning färdigheter
tasks/get Hämtar en uppgift via taskId
tasks/cancel Avbryter en uppgift via taskId

Inbyggda färdigheter: smart-routing, quota-management, provider-discovery, cost-analysis, health-report.

Agentkort

GET /.well-known/agent.json

Returnerar det offentliga A2A-agentkortet (namn, beskrivning, funktioner, färdighetskatalog och autentiseringsschema) — cachelagrat offentligt i 1 timme. Ingen autentisering krävs.

REST-hjälpfunktioner

Metod Sökväg Beskrivning
GET /api/a2a/status A2A-status + uppgiftsstatistik + sammanfattning av det cachelagrade agentkortet
GET /api/a2a/tasks Listar uppgifter — ?state=submitted|working|completed|failed|cancelled, ?skill=, ?limit= (≤200), ?offset=
POST /api/a2a/tasks (Inte implementerat som en REST-hjälpfunktion — skapa via JSON-RPC message/send)
GET /api/a2a/tasks/[id] Hämtar en uppgift
POST /api/a2a/tasks/[id]/cancel Avbryter en uppgift

Autentisering: REST-hjälpfunktionerna körs utan administrationsautentisering (läsbara från kontrollpanelen); JSON-RPC-rutten /a2a använder Bearer OMNIROUTE_API_KEY om den är konfigurerad.


Moln, utvärderingar och bedömningar

Metod Sökväg Beskrivning
POST /api/cloud/auth Verifierar en Bearer-nyckel och returnerar maskerade leverantörsanslutningar + modellalias för molnsynkroniseringsklienter
POST /api/cloud/credentials/update Uppdaterar krypterade autentiseringsuppgifter för en molnsynkroniserad leverantör
POST /api/cloud/model/resolve Matchar ett logiskt modell-id mot en konkret leverantör/modell med hjälp av den lokala routningstabellen
GET /api/cloud/models/alias Listar modellalias såsom de exponeras för molnsynkronisering
GET /api/assess Läser de senaste bedömningskategoriseringarna (per leverantör/modell)
POST /api/assess Kör en bedömning — brödtext: `{scope: {type:"all"} {type:"provider", providerId} {type:"model", modelId}, trigger?}`
GET /api/evals Listar inbyggda utvärderingssviter + de senaste körningarna
POST /api/evals Startar en utvärderingskörning
POST /api/evals/suites Skapar en anpassad utvärderingssvit — brödtexten valideras av evalSuiteSaveSchema
GET /api/evals/suites/[id] Hämtar en anpassad utvärderingssvit

Autentisering: /api/cloud/auth validerar en Bearer-nyckel direkt; de övriga rutterna /api/cloud/*, /api/evals/* och /api/assess kräver en administrationssession/API-nyckel. POST för /api/assess använder validateBody med ett diskriminerat unionsschema för omfånget.


Hantering av ACP (Agent Client Protocol)

som underordnade processer. Dessa slutpunkter hanterar identifiering av ACP-agenter och registrering av anpassade agenter.

Metod Sökväg Beskrivning
GET /api/acp/agents Lista alla kända CLI-agenter (inbyggda + anpassade) med installationsstatus, version och binärfil
POST /api/acp/agents Registrera en anpassad ACP-agent eller uppdatera cachen — body: {id, name, binary, versionCommand, providerAlias, spawnArgs, protocol} eller {action: "refresh"}
DELETE /api/acp/agents Ta bort en anpassad ACP-agent — frågeparameter: ?id=<agentId>

Exempel 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
}

Autentisering: Kräver en hanteringssession (auth_token-cookien för kontrollpanelen) eller en API-nyckel med hanteringsbehörighet.

Se ACP-ramverket för fullständig information.


Analys och observerbarhet

Slutpunkter för realtidsanalys av dirigering, komprimering och leverantörsmångfald. Dessa används av sidorna under /dashboard/analytics/*.

Analys av automatisk dirigering

Metod Sökväg Beskrivning
GET /api/analytics/auto-routing Sammanställd statistik för automatisk dirigering: totalt antal anrop, strategifördelning, nivåfördelning och främsta leverantörer
GET /api/analytics/auto-routing?days=7 Statistik för ett tidsintervall (standardvärde 24 h)

Exempel 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 }
  ]
}

Komprimeringsanalys

Metod Sökväg Beskrivning
GET /api/analytics/compression Sammanställd komprimeringsstatistik: sparade token, besparingsprocent, lägesfördelning och motoranvändning

Exempel 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
  }
}

Spårning av leverantörsmångfald

Metod Sökväg Beskrivning
GET /api/analytics/diversity Mångfaldsspårning baserad på Shannon-entropi: förhindrar enskilda felpunkter genom att mäta spridningen mellan leverantörer

Exempel 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"]
}

Autentisering: Kräver en hanteringssession eller en API-nyckel med hanteringsbehörighet.


Administratörsåtgärder

Ändpunkter endast för administratörer för operativ hantering.

Metod Sökväg Beskrivning
GET /api/admin/concurrency Läs aktuella samtidighetsgränser (globalt + per leverantör)
POST /api/admin/concurrency Uppdatera samtidighetsgränser — brödtext: {global?: number, perProvider?: Record<string, number>}

Autentisering: Kräver en hanteringssession med administratörsbehörighet.


Hantering av CLI-verktyg

Hantera CLI-verktyg som integreras med OmniRoute (antigravity, chipotle, commandCode, devin-cli osv.). Se Leverantörsreferens för den fullständiga listan.

Metod Sökväg Beskrivning
GET /api/cli-tools/all-statuses Status för alla CLI-verktyg (installerat, version, senast sett)
GET /api/cli-tools/status Detaljerad status för ett CLI-verktyg (?tool=-fråga)
POST /api/cli-tools/apply Skriv ett verktygs genererade konfiguration (dryRun förhandsvisar; 422 + containerEphemeralTarget vid containerkörning; migration anger äldre Codex-YAML)
GET /api/cli-tools/backups Lista säkerhetskopior av CLI-verktygens konfigurationer
POST /api/cli-tools/backups Skapa en säkerhetskopia av alla CLI-verktygskonfigurationer
POST /api/cli-tools/backups Återställ: samma ändpunkt med {tool, backupId} i brödtexten återställer den säkerhetskopian
GET /api/cli-tools/antigravity-mitm Status för Antigravity MITM-proxyn (CLI-verktyget "antigravity-mitm")
POST /api/cli-tools/antigravity-mitm/alias Konfigurera alias för antigravity-mitm

Autentisering: Kräver en hanteringssession.


Agentfärdigheter

Hantera AI-agentfärdigheter (liknande OpenAI:s anpassade GPT:er, men för agenter).

Metod Sökväg Beskrivning
GET /api/agent-skills Lista alla agentfärdigheter (inbyggda + anpassade)
GET /api/agent-skills/[id] Hämta en specifik agentfärdighet
POST /api/agent-skills Skapa en anpassad agentfärdighet — brödtext: {name, description, prompt, model?, temperature?}
PUT /api/agent-skills/[id] Uppdatera en anpassad agentfärdighet
DELETE /api/agent-skills/[id] Ta bort en anpassad agentfärdighet
GET /api/agent-skills/[id]/raw Hämta rå prompt + metadata (ingen körning)
POST /api/agent-skills/generate AI-generera en ny färdighet från en beskrivning på naturligt språk

Autentisering: Kräver en hanteringssession eller en API-nyckel med hanteringsbehörighet.


Cachehantering

Hantera den semantiska cachen och resonemangscachen.

Metod Sökväg Beskrivning
GET /api/cache Cacheöversikt: totalt antal poster, träfffrekvens, storlek på disk
GET /api/cache/entries Lista cachade poster (med paginering)
DELETE /api/cache/entries Ta bort cacheposter (filtrera efter frågeparametrar)
GET /api/cache/stats Detaljerad cachestatistik (per leverantör, per modell)
GET /api/cache/reasoning Status för resonemangscachen (för återuppspelning av resonemang)
DELETE /api/cache/reasoning Rensa resonemangscachen — frågeparametrar: ?toolCallId=<id> (enskild), ?provider=<p> eller inga parametrar (alla)

Autentisering: Kräver en hanteringssession.


Minnessystem

Hantera beständigt minne (FTS5 + vektorinbäddningar).

Metod Sökväg Beskrivning
GET /api/memory Lista minnesposter (filtrera efter omfång, typ och sökfråga)
POST /api/memory Skapa en ny minnespost — body: {scope, type, content, metadata?}
GET /api/memory/[id] Hämta en specifik minnespost
PUT /api/memory/[id] Uppdatera en minnespost
DELETE /api/memory/[id] Ta bort en minnespost
GET /api/memory?q= Sök i minnet (FTS5 + vektor) — statistik inkluderas i samma svar

Autentisering: Kräver en hanteringssession eller en API-nyckel med hanteringsomfång.


Webhooks

Hantera webhook-prenumerationer för händelser.

Metod Sökväg Beskrivning
GET /api/webhooks Lista alla webhook-prenumerationer
POST /api/webhooks Skapa en webhook-prenumeration — body: {url, events[], secret?, active?}
GET /api/webhooks/[id] Hämta en specifik webhook-prenumeration
PUT /api/webhooks/[id] Uppdatera en webhook-prenumeration
DELETE /api/webhooks/[id] Ta bort en webhook-prenumeration
GET /api/webhooks/[id]/deliveries Lista leveranshistoriken för en webhook (logg över lyckade/misslyckade leveranser)
POST /api/webhooks/[id]/test Skicka en testhändelse till en webhook

Autentisering: Kräver en hanteringssession.

Se Webhooks-ramverket för en fullständig lista över händelsetyper.


Färdighetsramverk

Hantera färdigheter (ramverket för agentbaserade tillägg).

Metod Sökväg Beskrivning
GET /api/skills Lista alla installerade färdigheter (inbyggda + anpassade)
POST /api/skills/install Installera en färdighet från en lokal sökväg eller URL
DELETE /api/skills/[id] Avinstallera en färdighet
PUT /api/skills/[id] Aktivera eller inaktivera en färdighet — body: {enabled?: boolean, mode?: "on" | "off" | "auto"}
POST /api/skills/executions Kör en färdighet — body: {skillName, apiKeyId, input?, sessionId?}
GET /api/skills/executions Lista körningshistorik för alla färdigheter (filtrera med ?apiKeyId=)

Autentisering: Kräver en hanteringssession eller en API-nyckel med hanteringsbehörighet.

Se Färdighetsramverk för fullständig information.


Insticksprogram

Hantera OmniRoute-insticksprogram (tillägg från tredje part).

Metod Sökväg Beskrivning
GET /api/plugins Lista installerade insticksprogram
POST /api/plugins/marketplace/install Installera ett insticksprogram från marknadsplatsen
DELETE /api/plugins/[name] Avinstallera ett insticksprogram
POST /api/plugins/[name]/activate Aktivera ett insticksprogram
POST /api/plugins/[name]/deactivate Inaktivera ett insticksprogram
GET /api/plugins/[name]/config Hämta insticksprogrammets konfiguration
PUT /api/plugins/[name]/config Uppdatera insticksprogrammets konfiguration

Autentisering: Kräver en hanteringssession.

Se Ramverk för insticksprogram för fullständig information.


Skuggdirigering

Skugg-/A-B-jämförelse av leverantörer är inte en fristående REST-yta — den konfigureras genom kombinationsdirigering (se Automatisk kombination). Jämförelsemått per kombination tillhandahålls av GET /api/combos/metrics.


Skyddsräcken

Inspektera skyddsräckena under körning (detektering av personligt identifierbar information, detektering av promptinjektion och sammankoppling för bildbehandling). Skyddsräckena körs för varje begäran; bortval per anrop görs via begärandehuvudet x-omniroute-disabled-guardrails — det finns ingen beständig yta för aktivering/inaktivering.

Metod Sökväg Beskrivning
GET /api/guardrails Lista de registrerade skyddsräckena och deras status (namn/aktiverad/prioritet)
POST /api/guardrails/test Testkör pipelinen före anrop med exempelindata — body: {input, disabledGuardrails?}

Autentisering: Kräver en hanteringssession.

Se Säkerhet > Skyddsräcken för fullständig information.



Autentisering

Se Autentisering för administration för de fyra typerna av autentiseringsuppgifter (inloggningssession för kontrollpanelen, lokal CLI-token, oma_live_…-åtkomsttoken och API-nyckel med administrationsbehörighet) och hur de skiljer sig från inferensnycklar.

  • Kontrollpanelsrutter (/dashboard/*) använder cookien auth_token
  • Inloggning använder den sparade lösenordshashen, med INITIAL_PASSWORD som reserv
  • requireLogin kan aktiveras eller inaktiveras via /api/settings/require-login
  • /v1/*-rutter kan kräva en Bearer-API-nyckel när REQUIRE_API_KEY=true
  • ”administrationstoken”/”API-nyckel med administrationsbehörighet” i denna referens avser en av typerna i den guiden inte någon odefinierad ytterligare typ av hemlighet

Bakåtinkompatibel ändring (v3.8.0) /api/v1/agents/tasks/* och slutpunkterna för cooldown-administration kräver nu administrationsautentisering (kontrollpanelens auth_token-cookie eller en API-nyckel med administrationsbehörighet). Klienter som tidigare anropade dessa rutter utan autentisering får nu svaret 401 Unauthorized. Se commit 588a0333 (fix(auth): require management auth for agent and cooldown APIs).