# API_REFERENCE (Latviešu) 🌐 **Languages:** 🇺🇸 [English](../../../../reference/API_REFERENCE.md) · 🇸🇦 [ar](../../../ar/docs/reference/API_REFERENCE.md) · 🇦🇿 [az](../../../az/docs/reference/API_REFERENCE.md) · 🇧🇬 [bg](../../../bg/docs/reference/API_REFERENCE.md) · 🇧🇩 [bn](../../../bn/docs/reference/API_REFERENCE.md) · 🇨🇿 [cs](../../../cs/docs/reference/API_REFERENCE.md) · 🇩🇰 [da](../../../da/docs/reference/API_REFERENCE.md) · 🇩🇪 [de](../../../de/docs/reference/API_REFERENCE.md) · 🇬🇷 [el](../../../el/docs/reference/API_REFERENCE.md) · 🇪🇸 [es](../../../es/docs/reference/API_REFERENCE.md) · 🇪🇪 [et](../../../et/docs/reference/API_REFERENCE.md) · 🇮🇷 [fa](../../../fa/docs/reference/API_REFERENCE.md) · 🇫🇮 [fi](../../../fi/docs/reference/API_REFERENCE.md) · 🇫🇷 [fr](../../../fr/docs/reference/API_REFERENCE.md) · 🇮🇪 [ga](../../../ga/docs/reference/API_REFERENCE.md) · 🇮🇳 [gu](../../../gu/docs/reference/API_REFERENCE.md) · 🇮🇱 [he](../../../he/docs/reference/API_REFERENCE.md) · 🇮🇳 [hi](../../../hi/docs/reference/API_REFERENCE.md) · 🇭🇷 [hr](../../../hr/docs/reference/API_REFERENCE.md) · 🇭🇺 [hu](../../../hu/docs/reference/API_REFERENCE.md) · 🇮🇩 [id](../../../id/docs/reference/API_REFERENCE.md) · 🇮🇹 [it](../../../it/docs/reference/API_REFERENCE.md) · 🇯🇵 [ja](../../../ja/docs/reference/API_REFERENCE.md) · 🇰🇷 [ko](../../../ko/docs/reference/API_REFERENCE.md) · 🇱🇹 [lt](../../../lt/docs/reference/API_REFERENCE.md) · 🇮🇳 [mr](../../../mr/docs/reference/API_REFERENCE.md) · 🇲🇾 [ms](../../../ms/docs/reference/API_REFERENCE.md) · 🇲🇹 [mt](../../../mt/docs/reference/API_REFERENCE.md) · 🇳🇱 [nl](../../../nl/docs/reference/API_REFERENCE.md) · 🇳🇴 [no](../../../no/docs/reference/API_REFERENCE.md) · 🇵🇭 [phi](../../../phi/docs/reference/API_REFERENCE.md) · 🇵🇱 [pl](../../../pl/docs/reference/API_REFERENCE.md) · 🇵🇹 [pt](../../../pt/docs/reference/API_REFERENCE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/reference/API_REFERENCE.md) · 🇷🇴 [ro](../../../ro/docs/reference/API_REFERENCE.md) · 🇷🇺 [ru](../../../ru/docs/reference/API_REFERENCE.md) · 🇸🇰 [sk](../../../sk/docs/reference/API_REFERENCE.md) · 🇸🇮 [sl](../../../sl/docs/reference/API_REFERENCE.md) · 🇷🇸 [sr](../../../sr/docs/reference/API_REFERENCE.md) · 🇸🇪 [sv](../../../sv/docs/reference/API_REFERENCE.md) · 🇰🇪 [sw](../../../sw/docs/reference/API_REFERENCE.md) · 🇮🇳 [ta](../../../ta/docs/reference/API_REFERENCE.md) · 🇮🇳 [te](../../../te/docs/reference/API_REFERENCE.md) · 🇹🇭 [th](../../../th/docs/reference/API_REFERENCE.md) · 🇹🇷 [tr](../../../tr/docs/reference/API_REFERENCE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/reference/API_REFERENCE.md) · 🇵🇰 [ur](../../../ur/docs/reference/API_REFERENCE.md) · 🇻🇳 [vi](../../../vi/docs/reference/API_REFERENCE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/reference/API_REFERENCE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/reference/API_REFERENCE.md) --- --- title: "API Reference" version: 3.8.51 lastUpdated: 2026-08-31 --- # API Atsauce 🌐 **Languages:** 🇺🇸 [English](../../../../reference/API_REFERENCE.md) · 🇸🇦 [ar](../../../ar/docs/reference/API_REFERENCE.md) · 🇦🇿 [az](../../../az/docs/reference/API_REFERENCE.md) · 🇧🇬 [bg](../../../bg/docs/reference/API_REFERENCE.md) · 🇧🇩 [bn](../../../bn/docs/reference/API_REFERENCE.md) · 🇨🇿 [cs](../../../cs/docs/reference/API_REFERENCE.md) · 🇩🇰 [da](../../../da/docs/reference/API_REFERENCE.md) · 🇩🇪 [de](../../../de/docs/reference/API_REFERENCE.md) · 🇬🇷 [el](../../../el/docs/reference/API_REFERENCE.md) · 🇪🇸 [es](../../../es/docs/reference/API_REFERENCE.md) · 🇪🇪 [et](../../../et/docs/reference/API_REFERENCE.md) · 🇮🇷 [fa](../../../fa/docs/reference/API_REFERENCE.md) · 🇫🇮 [fi](../../../fi/docs/reference/API_REFERENCE.md) · 🇫🇷 [fr](../../../fr/docs/reference/API_REFERENCE.md) · 🇮🇪 [ga](../../../ga/docs/reference/API_REFERENCE.md) · 🇮🇳 [gu](../../../gu/docs/reference/API_REFERENCE.md) · 🇮🇱 [he](../../../he/docs/reference/API_REFERENCE.md) · 🇮🇳 [hi](../../../hi/docs/reference/API_REFERENCE.md) · 🇭🇷 [hr](../../../hr/docs/reference/API_REFERENCE.md) · 🇭🇺 [hu](../../../hu/docs/reference/API_REFERENCE.md) · 🇮🇩 [id](../../../id/docs/reference/API_REFERENCE.md) · 🇮🇹 [it](../../../it/docs/reference/API_REFERENCE.md) · 🇯🇵 [ja](../../../ja/docs/reference/API_REFERENCE.md) · 🇰🇷 [ko](../../../ko/docs/reference/API_REFERENCE.md) · 🇱🇹 [lt](../../../lt/docs/reference/API_REFERENCE.md) · 🇮🇳 [mr](../../../mr/docs/reference/API_REFERENCE.md) · 🇲🇾 [ms](../../../ms/docs/reference/API_REFERENCE.md) · 🇲🇹 [mt](../../../mt/docs/reference/API_REFERENCE.md) · 🇳🇱 [nl](../../../nl/docs/reference/API_REFERENCE.md) · 🇳🇴 [no](../../../no/docs/reference/API_REFERENCE.md) · 🇵🇭 [phi](../../../phi/docs/reference/API_REFERENCE.md) · 🇵🇱 [pl](../../../pl/docs/reference/API_REFERENCE.md) · 🇵🇹 [pt](../../../pt/docs/reference/API_REFERENCE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/reference/API_REFERENCE.md) · 🇷🇴 [ro](../../../ro/docs/reference/API_REFERENCE.md) · 🇷🇺 [ru](../../../ru/docs/reference/API_REFERENCE.md) · 🇸🇰 [sk](../../../sk/docs/reference/API_REFERENCE.md) · 🇸🇮 [sl](../../../sl/docs/reference/API_REFERENCE.md) · 🇷🇸 [sr](../../../sr/docs/reference/API_REFERENCE.md) · 🇸🇪 [sv](../../../sv/docs/reference/API_REFERENCE.md) · 🇰🇪 [sw](../../../sw/docs/reference/API_REFERENCE.md) · 🇮🇳 [ta](../../../ta/docs/reference/API_REFERENCE.md) · 🇮🇳 [te](../../../te/docs/reference/API_REFERENCE.md) · 🇹🇭 [th](../../../th/docs/reference/API_REFERENCE.md) · 🇹🇷 [tr](../../../tr/docs/reference/API_REFERENCE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/reference/API_REFERENCE.md) · 🇵🇰 [ur](../../../ur/docs/reference/API_REFERENCE.md) · 🇻🇳 [vi](../../../vi/docs/reference/API_REFERENCE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/reference/API_REFERENCE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/reference/API_REFERENCE.md) Galvenā atsauce OmniRoute API. Tā apraksta publisko `/v1` virsmu un visbiežāk izmantotos pārvaldības galapunktus; mašīnlasāms [`docs/openapi.yaml`](../openapi.yaml) un ceļkoku koks zem `src/app/api/` ir visaptveroši avoti. --- ## Satura rādītājs - [Tērzēšanas pabeigšanas](#chat-completions) - [Ekskluzīvas pārvaldītas sesijas nomas](#exclusive-managed-session-leases) - [Embeddings](#embeddings) - [Attēlu ģenerēšana](#image-generation) - [Dokumentu OCR](#document-ocr) - [Modeļu saraksts](#list-models) - [Piegādātāja spraudņa manifests](#provider-plugin-manifest) - [Savietojamības gala punkti](#compatibility-endpoints) - [Failu API](#files-api) - [Partiju API](#batches-api) - [Meklēšanas API](#search-api) - [WebSocket straumēšana](#websocket-streaming) - [Kvotas & problēmu ziņošana](#quotas--issues-reporting) - [Semantiskā kešatmiņa](#semantic-cache) - [Informācijas panelis & pārvaldība](#dashboard--management) - [Kombo pārvaldība](#combo-management) - [Tīmekļa āķi](#webhooks) - [Reģistrētās atslēgas (automātiskā pārvaldība)](#registered-keys-auto-management) - [Aģentu protokols](#agents-protocol) - [Pārvaldības starpnieki](#management-proxies) - [Noturība (paplašināta)](#resilience-extended) - [Prasmes](#skills) - [Atmiņa](#memory) - [MCP serveris](#mcp-server) - [A2A serveris](#a2a-server) - [Mākoņa, vērtēšanas & novērtēšana](#cloud-evals--assess) - [Pieprasījumu apstrāde](#request-processing) - [Autentifikācija](#authentication) --- ## Tērzēšanas pabeigšanas ```bash 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 } ``` ### Pielāgotas galvenes | Galvene | Virziens | Apraksts | | ------------------------ | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `X-OmniRoute-No-Cache` | Pieprasījums | Iestatiet `true`, lai apietu kešatmiņu | | `x-omniroute-no-memory` | Pieprasījums | Iestatiet `true`, lai izlaistu atmiņu + prasmju injicēšanu šim pieprasījumam (atspoguļo bez kešatmiņas; izvairās no zvana tokena/izmaksu papildu slodzes) | | `X-OmniRoute-Progress` | Pieprasījums | Iestatiet `true`, lai saņemtu norises notikumus | | `X-Session-Id` | Pieprasījums | Lipīga sesijas atslēga ārējai sesijas saistībai | | `x_session_id` | Pieprasījums | Ar pasvītrojumu variants arī pieņemts (tiešais HTTP) | | `X-OmniRoute-Session-Id` | Pieprasījums | Izsaucēja nodrošināts sesijas/tērzēšanas tags (arī baro atmiņu). Ja klāt, saglabāts burtiski `call_logs.session_tag` katrai sesijai piesaistītām izmaksām (#8249) — nekad netiek sintezēts, ja nav klāt | | `Idempotency-Key` | Pieprasījums | Dedup atslēga (5s logs) | | `X-Request-Id` | Pieprasījums | Alternatīva dedup atslēga | | `X-OmniRoute-Cache` | Atbilde | `HIT` vai `MISS` (nestraumēts) | | `X-OmniRoute-Idempotent` | Atbilde | `true`, ja deduplicēts | | `X-OmniRoute-Progress` | Atbilde | `enabled`, ja norises izsekošana ir ieslēgta | | `X-OmniRoute-Session-Id` | Atbilde | Efektīvais sesijas ID, ko izmanto OmniRoute | | `X-OmniRoute-Request-Id` | Atbilde | Pieprasījuma korelācijas id (ja zināms) | | `X-OmniRoute-Version` | Atbilde | OmniRoute būvējuma versija (vienmēr klāt) | | `X-OmniRoute-Cost-Saved` | Atbilde | ASV dolāri, ko kešatmiņa ietaupīja HIT gadījumā (tikai kešatmiņas trāpījumi) | | `X-OmniRoute-Decision` | Atbilde | Maršrutēšanas izsekošana: `strategy=; provider=; latency_ms=` (`` ir kombo stratēģija vai `single` ne-kombo pieprasījumam) — vienmēr klāt pabeigtajām atbildēm | > Nginz piezīme: ja paļaujaties uz pasvītrotajām galvenēm (piemēram, `x_session_id`), iespējojiet `underscores_in_headers on;`. > **Izsmaksu telemetrijas galvenes:** nestraumētas veiksmīgas atbildes satur arī `X-OmniRoute-*` izmaksu telemetrijas kopu — `X-OmniRoute-Response-Cost` (ASV dolāri, fiksētas 10 decimāls; `0.0000000000` bezmaksas/necenstai), `X-OmniRoute-Tokens-In` / `X-OmniRoute-Tokens-Out`, `X-OmniRoute-Model`, `X-OmniRoute-Provider`, `X-OmniRoute-Latency-Ms`, `X-OmniRoute-Cache-Hit` un `X-OmniRoute-Fallback-Attempts` (tikai kad > 0), kā arī `X-OmniRoute-Request-Id` un `X-OmniRoute-Version`. Šie tiek izdoti tērzēšanas pabeigšanām, `/v1/responses`, `/v1/messages`, **un multivides gala punktiem** — `/v1/embeddings`, `/v1/images/generations`, `/v1/audio/speech`, `/v1/audio/transcriptions`, `/v1/rerank`, `/v1/videos/generations`, `/v1/music/generations` un `/v1/moderations` (vienmēr izmaksas `0`). Multivides izmaksas tiek aprēķinātas katrai modalitātei (katram attēlam, katram sekundei, katram rakstzīmei, katram meklēšanas vienībai), kad pieejama cenu noteikšana, citādi `0` (neveiksme-atvērt). > **Kešatmiņas trāpījumu izmaksu semantika:** semantiskās kešatmiņas trāpījuma gadījumā (`X-OmniRoute-Cache-Hit: true`) augšupejas zvans netiek veikts, tāpēc `X-OmniRoute-Response-Cost` ir `0.0000000000` (trāpījuma **papildu** izmaksas). Sākotnējā/būtu bijusī izmaksas tiek ziņotas atsevišķi `X-OmniRoute-Cost-Saved`. Norēķinu patērētājiem jāsumē `X-OmniRoute-Response-Cost` (trāpījumi maksā neko); kešatmiņas analītika var apkopot `X-OmniRoute-Cost-Saved`. ## Ekskluzīvas pārvaldītas sesijas nomas Ekskluzīva pārvaldīta sesijas noma ir piedalīšanās, klienta neitrāls maršrutēšanas līgums: viens aktīvs īpašnieks tur vienu derīgu OmniRoute savienojumu. Tas nenomā modeli, neprasa OAuth, neidentificē konkrētu klientu un neprasa konkrētu pakalpojumu sniedzēju. Autentificētajai API atslēgai ir jābūt ar scope `lease:exclusive` un skaidru nepukstu `allowedConnections` sarakstu. Datubāzes mutācijas robeža abus laukus piemēro kopā atslēgas izveidošanas un daļēju atjauninājumu laikā. ```http POST /api/v1/session-leases Authorization: Bearer Content-Type: application/json X-OmniRoute-Lease-Owner: vlo_<43-base64url-characters> {"action":"acquire","model":"glm/glm-4.6"} ``` Veiksmīgas iegūšanas, atjaunošanas un izlaišanas atbildes parāda laika zīmogus, `state` un precīzu pozitīvu `generation`, bet nekad izvēlēto savienojumu vai akreditācijas datus. Atjaunošana un izlaišana nodrošina generāciju JSON ķermenī: ```json { "action": "renew", "generation": 1 } ``` ```json { "action": "release", "generation": 1, "reason": "OWNER_EXIT" } ``` Aktīvās nomas īpašnieks var skaidri pieprasīt privātumu drošu displeja metadatus savai pašreizējai saitei: ```json { "action": "status", "generation": 1 } ``` ```json { "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" } } ``` Šo piedalīšanās statusa darbību ierobežo neredzamais īpašnieks, autentificētā pārvaldītā API atslēga un precīza aktīvā generācija vienā datubāzes transakcijā. `displayName` ir tikai iztīrīts konfigurēts savienojuma nosaukums; tas ir `null`, kad nav droša konfigurēta nosaukuma. OmniRoute nekad neaizstāj e-pastu vai ģenerētu konta identitāti. Pakalpojumu sniedzēja vērtība ir nejutīgs displeja iezīme un nekad nav ģenerēts saderīgs pakalpojumu sniedzēja identifikators. Akreditācijas dati, marķieri, sīkfaili, izejas savienojuma vai API atslēgu id, īpašnieka haši, aizsardzības noslēpumi un iekšējie maršrutēšanas dati tiek izslēgti. Nepareizas atslēgas, nepareiza īpašnieka, novecojušas generācijas, trūkstošas, beigušās, izlaistas un anulētas meklēšanas visas atgriež to pašu `409 LEASE_FENCE_STALE` kļūdu bez savienojuma metadatiem. Klients, kas saņēma capacities-gaida atbildi, nav aktīva saite, kas jāpārbauda. Kad maršrutēšana pārejina aktīvu nomu, tā pati generācija paliek derīga un statuss atomiski atgriež jauno saiti, nekad veco. Esošie klienti paliek nemainīti, jo iegūšanas, atjaunošanas, izlaišanas un gaida atbildes saglabā to iepriekšējos formātus. Šis servera līgums nemaina parasto OpenAI Codex `/status`. Parastais Codex pašlaik ziņo savu pakalpojumu sniedzēja modeli un iebūvēto autentifikācijas/konta stāvokli, bet neizveido patvaļīgus pielāgotus pakalpojumu sniedzēja konta metadatus; vēlākai klienta integrācijai jāizsauc šī darbība un jāizlemj, kā parādīt `connection.displayName`. Katra pārvaldītā inference pieprasījuma piegādā abus kontrolparametru galvenes: ```http X-OmniRoute-Lease-Owner: vlo_<43-base64url-characters> X-OmniRoute-Lease-Generation: 1 ``` Precīzs īpašnieks, generācija, aktīvais savienojums un autentificētā API atslēga tiek aizsargāti nekavējoties pirms katra atbalstītā augšupējā mēģinājuma. Atkārtojot īpašnieku un generāciju ar citu atslēgu, tas neizdodas pat tad, kad atī slēpj atļauj to pašu savienojumu. Neapstrādāti īpašnieki netiek saglabāti, reģistrēti, saglabāti pieprasījuma momentuzņēmumā vai nosūtīti augšupējā līmenī. Īslaicīga konkurence atgriež HTTP `429` ar `Retry-After` un: ```json { "state": "WAITING_FOR_CAPACITY", "error": { "type": "lease_error", "code": "LEASE_CAPACITY_UNAVAILABLE" }, "reason": "NO_FREE_ELIGIBLE_CONNECTION", "retryAfter": 30 } ``` Šī atilde nozīmē tikai to, ka parastais derīgo kopa bija nepuksta un ikviens brīvais kandidāts bija turēts ar ārēju aktīvu nomu. neatbalstīti modeļi/pakalpojumu sniedzēji, politikas neatbilstība, atdzesēšana, kvota, veselība un citas parastās derīguma kļūdas saglabā to pašreizējās OmniRoute atbildes. ### `x-omniroute-compression` Pieprasījuma līmeņa pārsniegums saspiešanas plānam. Augstākā priekšrocība — pārspēj maršrutēšanas-kombinācijas pārsniegumu, aktīvo profilu, automātisko aktivizēšanu un paneļa noklusējumu. Vērtības: | Vērtība | Efekts | | ------------- | ------------------------------------------------------------------------------------------------------- | | `off` | Nav saspiešanas šim pieprasījumam. | | `default` | No paneļa atvasinātais noklusējuma profils (ignorē aktīvo profilu). | | `engine:` | Vērtīga dzinēja, kad iespējots, piemēram, `engine:rtk`. | | `` | Nosaukta kombinācija, vispirms atbilst pēc nosaukuma (bez lielo/mazo burtu atšķirības), pēc tam pēc id. | Piezīmes: - Nezināmas vērtības tiek ignorētas (pieprasījums nekad netiek noraidīts); risinājums nonāk pie parastā operatora prioritātes. - Ja vairākas kombinācijas dala nosaukumu, izmantojiet kombinācijas **id** noteiktai atbilstībai. - Kombinācija, kuras nosaukums ir `off` vai `default`, nevar tikt izvēlēta pēc nosaukuma (šie atslēgvārdi tiek interpretēti vispirms); atsaucieties uz šādu kombināciju pēc tās id. - Galvenais saspiešanas slēdzis ir stingra vārti: kad saspiešana ir atspējota globāli, šī galvene to nevar iespējot. Lietotais plāns tiek atbildēts atpakaļ atbildes galvenē: ``` X-OmniRoute-Compression: ; source= ``` kur `` ir viens no `request-header`, `routing-override`, `active-profile`, `auto-trigger`, `default` vai `off`. --- ## Iegultie ievadi ```bash POST /v1/embeddings Authorization: Bearer your-api-key Content-Type: application/json { "model": "nebius/Qwen/Qwen3-Embedding-8B", "input": "The food was delicious" } ``` Pieejamie pakalpojumu sniedzēji: Nebius, OpenAI, Mistral, Together AI, Fireworks, NVIDIA, **OpenRouter**, Jina AI. Kataloga identifikatori ir `provider/model` (piemērs: `jina-ai/jina-embeddings-v5-omni-small`). Tīrais Jina modeļa identifikatori, kas parādās reģistrā (piemēram, `jina-embedlings-v5-text-small`, `jina-reranker-v3.5`), arī tiek atpazīti. Jina embed/rerank/classify/segment vispirms izmanto informācijas paneļa `jina-ai` akreditācijas datus; `JINA_AI_API_KEY` ir tikai aizstājējs, kad nav informācijas paneļa atslēgas. `jina-reader` karte ir Reader / `r.jina.ai` tikai (`POST /v1/web/fetch`) un nekad nepiedāvā iegultos ievadus vai pārvērtēšanu. Reģistra modeļi, kas piedāvā vairāku modalitāšu atbalstu, arī pieņem līdz 32 pakalpojumu sniedzēju neitrālas strukturētas vienības. Mediju viību tips ir `text`, `image`, `audio`, `video` un `document`. To mediju `source` ir vai nu `{"type":"url","url":"https://..."}`, vai `{"type":"base64","data":"...","media_type":"..."}`. Jina v5 Omni (`jina-ai/jina-embeddings-v5-omni-small`, `jina-ai/jina-embeddings-v5-omni-nano` un ģimenes aizstājvārds `jina-ai/jina-embeddings-v5-omni` → omni-small) arī pieņem Jina vietējos EmbeddingsV5Request dokumentus un **nesagrozītus tos pārsūta** uz `https://api.jina.ai/v1/embeddings`: ```json { "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,..." }] } ] } ``` Vietējās `{ image | audio | video | pdf }` vērtības var būt publisks HTTPS URL, `data:` URI vai neapstrādāts base64. OmniRoute nepārvērš šos objektus par virkni un neizvelk vietējos attēlu URL — Jina izvelk publiskos medijus pati. Papildu Jina lauki (`task`, `normalized`, `truncate`, `embedding_type`) tiek pārsūtīti. Tikai teksta Jina nomenklatūras vienības joprojām noraida ne-teksta dokumentus. Drošības un transporta robežas: - Attālajiem mediju URL jābūt publiskiem HTTPS. Kanoniskās `{type,source:url}` viības tiek izvilktas servera pusē (pāradresēšanas pārbaude, noildze, lieluma ierobežojumi, publiskais DNS, savienojuma fiksācija) un iekļautas pirms pakalpojumu sniedzēja izsaukuma. Jina vietējās `{image:"https://..."}` viības tiek pārsūtītas kā ir pēc tās pašas publiskās HTTPS pārbaudes; Jina izvelk URL. - Iekļautie base64 mediji ir ierobežoti līdz 8 MiB dekodēti vienai vienībai un 16 MiB dekodēti visam pieprasījumam. Pakalpojumu sniedzēja tulkojums (kanoniskās viības nekad netiek pārsūtītas nemainītas): - Jina vairāku modalitāšu modeļi: katra augstākā līmeņa viība kļūst par vienu modalitātes atslēgu objektu (`text` / `image` / `audio` / `video` / `pdf`), izmantojot datu URI iekļautajiem medijiem; viens vektors par augstākā līmeņa vienību. - Gemini Embedding 2 ģimene: viens augstākā līmeņa masīvs kļūst par vienu vietējo `models/{model}:embedContent` pieprasījumu ar `content.parts` (`text` vai `inline_data`). - Nezināmi/dinamiski modeļi bez skaidras modalitātes metadatiem noraida strukturētu ievadu ar HTTP 400. ```json { "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" } ``` Neatbalstītas modeļa/modalitātes kombinācijas atgriež HTTP 400, nevis piespiež vienību. Neievades paplašinājuma lauki veco virkņu/žetonu pieprasījumos joprojām tiek pārsūtīti nemainīgi. ```bash # Sarakstīt visus iegulušos ievadu modeļus GET /v1/embeddings ``` --- ## Attēlu ģenerēšana ```bash POST /v1/images/generations Authorization: Bearer your-api-key Content-Type: application/json { "model": "openai/gpt-image-2", "prompt": "A beautiful sunset over mountains", "size": "1024x1024" } ``` Pieejamie pakalpojumu sniedzēji: OpenAI (GPT Image 2), xAI (Grok Image), Together AI (FLUX), Fireworks AI, Nebius (FLUX), Hyperbolic, NanoBanana, **OpenRouter**, SD WebUI (local), ComfyUI (local). ```bash # Uzskaitīt visus attēlu modeļus GET /v1/images/generations ``` --- ## Dokumenta OCR ```bash 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` izvēlas OCR pakalpojumu sniedzēju, izmantojot `provider/model` prefiksu; tīrs modeļa identifikators (piem., `mistral-ocr-latest`) tiek novirzīts uz tā reģistrēto pakalpojumu sniedzēju, bet izlaistais `model` pēc noklusējuma ir Mistral (`mistral-ocr-latest`). Reģistrētie pakalpojumu sniedzēji (`open-sse/config/ocrRegistry.ts`): | Pakalpojumu sniedzēja ID | Modeļa ID | `model` vērtība | Piezīmes | | ----------------------------- | -------------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------- | | `mistral` | `mistral-ocr-latest` | `mistral/mistral-ocr-latest` (vai tīrs `mistral-ocr-latest`) | Sinhrons — atbilde tiek atgriezta tieši no viena augšupējā izsaukuma. | | `azure-document-intelligence` | `prebuilt-read` | `azure-document-intelligence/prebuilt-read` | Asinhrons augšupējais process (`analyze` + izjautāšana) — skatīt zemāk. | | `vertex-deepseek-ocr` | `deepseek-ocr-maas` | `vertex-deepseek-ocr/deepseek-ocr-maas` | Sinhrons, izmantojot Vertex AI `openapi/chat/completions` partnera galapunktu — skatīt zemāk autentifikāciju/URL. | Visi trīs pakalpojumu sniedzēji atbild vienā Mistral formātā: ```json { "pages": [{ "index": 0, "markdown": "# Extracted text..." }], "model": "mistral-ocr-latest", "usage_info": { "pages_processed": 1 } } ``` ### Azure Document Intelligence izjautāšanas plūsma Azure Document Intelligence `analyze` API ir asinhrone: sākotnējais pieprasījums atgriež `Operation-Location` galveni tā vietā, lai atgrieztu saturu, un rezultāts ir jāizjautā. Apstrādātājs (`open-sse/handlers/ocr.ts`) izjautā šo URL katru sekundi līdz 30 mēģinājumiem, ātri neizdodas (nepatur izjautāšanu) nepareizas izjautāšanas atbildes vai `"failed"` statusa gadījumā, un atgriež `504`, ja operācija joprojām tiek izpildīta pēc mēģinājumu budžeta izsīkuma. Galīgā Azure atbilde tiek normalizēta tajā pašā `pages`/`markdown` formātā, ko izmanto Mistral, pirms tā tiek atgriezta izsaucējam, tāpēc klienta kodam nav jāparedz īpašs apstrāde pakalpojumu sniedzējam. ### Vertex AI DeepSeek OCR autentifikācija un galapunkta noskaidrošana `vertex-deepseek-ocr` izmanto to pašu Vertex AI autentifikāciju, ko OmniRoute jau atbalsta tērzēšanas/attēlu plūsmām (`open-sse/executors/vertex.ts`): savienojuma API atslēga ir vai nu Dienesta konta JSON akreditācijas dati (apmaiņā pret īslaicīgu OAuth piekļuves žetonu, izmantojot JWT-nesēja plūsmu), vai jau izdots OAuth piekļuves žetons, ko izmanto kā tādu. Augšupējā galapunkta URL ir Vertex vispārīgais `openapi/chat/completions` partnera galapunkts, kas veidots no savienojuma projekta un reģiona — skaidrs `providerSpecificData.project`/`providerSpecificData.region` vienmēr uzvar; pretējā gadījumā projekts tiek atvasināts no Dienesta konta JSON `project_id` un reģions pēc noklusējuma ir `us-central1`. Abas noskaidrošanas notiek `open-sse/handlers/ocr.ts` (`resolveVertexOcrAccessToken`, `resolveVertexOcrBaseUrl`), ko patērē `src/app/api/v1/ocr/route.ts` pirms nosūtīšanas uz `handleOcr`. ## Modeļu saraksts ```bash GET /v1/models Authorization: Bearer your-api-key → Atgriež visus tērzēšanas, iegulstēšanas un attēlu modeļus + kombinācijas OpenAI formātā ``` ### Modeļu ID prefiksi (`?prefix=`) Lielākā daļa modeļu tiek reklamēti ar **piegādātāja prefiksu**. Kuru prefiksu saņemat, nosaka karodziņš `MODELS_CATALOG_PREFIX_MODE`, un to var pārrakstīt **katram pieprasījumam** ar vaicājuma parametru — tas ir noderīgi klientam, kuram vajadzīgs tīrs saraksts, nemainot servera globālos iestatījumus visiem lietotājiem: ```bash GET /v1/models?prefix=alias # viens ID uz modeli — īsais aizstājvārda prefikss GET /v1/models?prefix=dual # abas formas (servera noklusējums) GET /v1/models?prefix=canonical # tikai pilnais piegādātāja-ID prefikss ``` | Režīms | Izdod | Piezīdes | | ----------- | -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dual` | `cc/claude-sonnet-4-6` **un** `claude/claude-sonnet-4-6` | **Noklusējums.** Abi ID vada uz to pašu modeli; saglabāti, lai klienta konfigurācijām, kas ir iekodētas jebkurā formā, turpinātu darboties. Apmēram divkāršo katalogu. | | `alias` | `cc/claude-sonnet-4-6` | Viena ieraksta uz modeli. Piegādātājiem bez atsevišķa aizstāvārda joprojām tiek izdots savs ieraksts, tāpēk nekas nav zaudēts. | | `canonical` | `claude/claude-sonnet-4-6` | Viena ieraksta uz modeli zem pilnā piegādātāja-ID prefiksa. Piegādātājiem bez atsevišķa aizstāvārda (piem., `antigravity/…`, `agy/…`) tiek izdots arī šeit viens ID, tāpēk nekas nav zaudēts. | `dual` režīma atspoguli var atpazīt arī bez vaicājuma parametra: tam ir `parent` lauks, kas norāda uz primāro ID. Klienti, kas izveido modeļu izvēlni, vajadzētu pieprasīt `?prefix=alias` — to dara [OmniCopilot VS Code paplašinājums](../guides/VSCODE-COPILOT.md). ### Domāšanas variants bez domāšanas Domāšanas spējīgiem Claude modeļiem `/v1/models` arī reklamē **domāšanas variantu bez domāšanas**, kura ID ir ar prefiksu `claude-3-omniroute-no-thinking/`: ``` claude-3-omniroute-no-thinking// ``` Šo ID izvēloties (piem., Claude Code konfigurācijā, kas vienmēr pievieno `thinking` bloku), tas tiek atpakaļ novirzīts uz reālo `/` ar aizspriedumu nomākts — `thinking:{type:"disabled"}` ceļā `/v1/messages`, vai `reasoning`/`reasoning_effort` laukiem izņemti ceļā `/v1/chat/completions`. variants tiek uzskaitīts tikai Claude modeļu saimei, kas atbalsta domāšanu **un** ievēro `disabled` (tātad, piem., tikai adaptīvie modeļi, kas noraida `disabled`, tiek izslēgti). Operatori variants var piespēst ieslēgt vai atslēgt katram modelim izmantojot `ModelSpec.noThinkingAlias`. --- ## Pakalpojumu spraudņa manifests ```bash GET /api/v1/provider-plugin-manifest ``` Atgriež JSON drošo pakalpojumu spraudņa manifestu, ko izmanto Bifrost, CLIProxyAPI un nākotnes sānu maršrutētāji. Atbilde tiek ģenerēta no TypeScript pakalpojumu reģistra un apzināti izslēdz OAuth klientu noslēpumus, izpildlaika vides risinājumu, izpildītāju funkcijas, pieprasījuma galvenes un konta datus. Šo galapunktu izmantojiet, kad sānu maršrutētājs darbojas ārpus procesa un nevar tieši importēt `open-sse/config/providerPluginManifestRegistry.ts`. --- ## Saderības galapunkti | Metode | Ceļš | Formāts | | ------ | ----------------------------------------- | --------------------------------------- | | POST | `/v1/chat/completions` | OpenAI | | POST | `/v1/messages` | Anthropic | | POST | `/v1/responses` | OpenAI Responses | | POST | `/v1/embeddings` | OpenAI | | POST | `/v1/images/generations` | OpenAI attēli | | POST | `/v1/images/edits` | OpenAI attēli (rediģēšana/aizpildīšana) | | POST | `/v1/videos/generations` | OpenAI stila video ģenerēšana | | POST | `/v1/music/generations` | OpenAI stila mūzikas ģenerēšana | | POST | `/v1/audio/transcriptions` | OpenAI Audio (STT) | | POST | `/v1/audio/speech` | OpenAI TTS (atgriež audio ķermeni) | | POST | `/v1/rerank` | Cohere/Voyage stila pārkārtošana | | POST | `/v1/classify` | Jina klasifikācija (`api.jina.ai`) | | POST | `/v1/segment` | Jina segmentācija (`segment.jina.ai`) | | POST | `/v1/moderations` | OpenAI moderēšana | | 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}/` | OpenAI kataloga aliass | | GET | `/api/v1/vscode/{token}/models` | OpenAI modeļu aliass | | POST | `/api/v1/vscode/{token}/chat/completions` | OpenAI tokenizētais aliass | | POST | `/api/v1/vscode/{token}/responses` | OpenAI Responses tokenizētais aliass | | POST | `/api/v1/vscode/{token}/api/chat` | Ollama tokenizētais aliass | | GET | `/api/v1/vscode/{token}/api/tags` | Ollama tags tokenizētais aliass | Visi POST maršruti seko vienādai formai: `Bearer your-api-key` + Zod validēts JSON ķermenis (`v1RerankSchema`, `v1ModerationSchema`, `v1AudioSpeechSchema` u.c., sk. `src/shared/validation/schemas.ts`). Pie schema kļūdas tiek atgriezts 4xx. Klientiem, kas nevar pievienot `Authorization: Bearer ...`, OmniRoute arī pieņem API atslēgas URL vai nu caur vaicājuma strites saderību (`?token=...`, `?apiKey=...`, `?api_key=...`, `?key=...`), vai arī ar tālāk dokumentētajiem īpašajiem `/api/v1/vscode/{token}/...` galapunktiem. ```bash # Pārkārtošana POST /v1/rerank { "model": "jina-ai/jina-reranker-v3.5", "query": "...", "documents": ["..."] } # Jina klasifikācija (Foundation API akreditācijas dati) POST /v1/classify { "model": "jina-embeddings-v5-text-small", "input": ["..."], "labels": ["a", "b"] } # Jina segmentācija POST /v1/segment { "content": "...", "return_chunks": true } # Jina meklēšana (s.jina.ai; pakalpojumu aliāsi: jina-search, jina-ai, jina) POST /v1/search { "query": "...", "provider": "jina-search" } # Moderēšana POST /v1/moderations { "model": "omni-moderation-latest", "input": "..." } # TTS — atgriež audio/mpeg (vai pieprasītā formāta) ķermeni POST /v1/audio/speech { "model": "openai/tts-1", "input": "Hello", "voice": "alloy" } # Attēlu rediģēšana (daudzdaļīga) POST /v1/images/edits -F image=@input.png -F prompt="..." -F mask=@mask.png # Video / mūzikas ģenerēšana (pakalpojumu prefiksā iekļauts modeļa id) POST /v1/videos/generations { "model": "runway/gen-3", "prompt": "..." } POST /v1/music/generations { "model": "suno/v3.5", "prompt": "..." } ``` ### Īpašie pakalpojumu maršruti ```bash POST /v1/providers/{provider}/chat/completions POST /v1/providers/{provider}/embeddings POST /v1/providers/{provider}/images/generations ``` Pakalpojuma prefikss tiek automātiski pievienots, ja trūkst. Nepareizi modeļi atgriež `400`. --- ## Failu API OpenAI saderīgs failu galapunkts ieplūdes/izplūdes partijai un failu mērķa augšupielādēšanai. | Metods | Ceļš | Apraksts | | ------ | ------------------------ | --------------------------------------------------------------------------------------------------------------------- | | POST | `/v1/files` | Augšupielādēt failu (multipart: `file`, `purpose`, `expires_after[anchor]`, `expires_after[seconds]`) — maks. 512 MiB | | GET | `/v1/files` | Uzskaitīt autentificētai API atslēgai piederošos failus | | GET | `/v1/files/[id]` | Iegūt faila metadatus | | DELETE | `/v1/files/[id]` | Dzēst failu | | GET | `/v1/files/[id]/content` | Strautos sūtīt neapstrādātā faila saturu | **Autentifikācija:** Nesošā API atslēga — faili tiek ierobežoti ar katru API atslēgu, izmantojot `getApiKeyRequestScope`. --- ## Partiju API OpenAI saderīga partiju apstrāde. | Metods | Ceļš | Apraksts | | ------ | ------------------------- | ---------------------------------------------------------------------------------------------------------------- | | POST | `/v1/batches` | Izveidot partiju — ķermenis validēts ar `v1BatchCreateSchema` (`input_file_id`, `endpoint`, `completion_window`) | | GET | `/v1/batches` | Uzskaitīt partijas | | GET | `/v1/batches/[id]` | Iegūt partijas statusu + `request_counts` | | DELETE | `/v1/batches/[id]` | Dzēst pabeigtu/neizdevušos partiju | | POST | `/v1/batches/[id]/cancel` | Atcelt notiekošu partiju | **Autentifikācija:** Nesošā API atslēga. Partijas tiek ierobežotas ar katru API atslēgu. --- ## Meklēšanas API Tīmekļa/meklētāja pakalpojuma abstrakcija (Tavily, Brave, Exa, Serper u.c.). | Metods | Ceļš | Apraksts | | ------ | ---------------------- | --------------------------------------------------------------------------------------------------- | | GET | `/v1/search` | Uzskaitīt konfigurētos meklētāja pakalpojumus un iespējas | | POST | `/v1/search` | Palaist meklēšanas vaicājumu — ķermenis validēts ar `v1SearchSchema`, atbalsta kešošanu/apvienošanu | | GET | `/v1/search/analytics` | Statistika par trāpījumiem/latentumu/kešatmiņu katram pakalpojumam | **Autentifikācija:** Nesošā API atslēga (`extractApiKey` + `isValidApiKey`). Meklēšanas politika tiek piemērota, izmantojot `enforceApiKeyPolicy`. ## Web Fetch API Iegūstiet saturu no URL, izmantojot konfigurētu web-fetch sniedzēju (Firecrawl, Jina Reader, Tavily Extract, TinyFish Fetch, Nimble Extract). | Metode | Ceļš | Apraksts | | ------ | --------------- | ------------------------------------------------------- | | POST | `/v1/web/fetch` | Iegūt/skrapeļot URL — ķermeni validē `v1WebFetchSchema` | **Autentifikācija:** Bearer API atslēga (`extractApiKey` + `isValidApiKey`). Politika piemērota ar `enforceApiKeyPolicy`. **Kvotu apzināts rezerves risinājums (#8297):** kad nav norādīts skaidrs `provider`, pūls (`firecrawl` → `jina-reader` → `tavily-search` → `tinyfish` → `nimble-search`) tiek parietas fiksētā prioritātes kārtībā (aizpildīt-pirmais) — tarifikācijai ierobežots, bet konfigurēts sniedzējs tiek izlaists, nevis pieprasījums tiek pārtraukts, un atkārtojams/kvotas augšteces kļūme (HTTP 429 vienmēr; 402/403 Firecrawl/Tavily/TinyFish kvotu tipa bezmaksas līmeņiem — ne Jina Reader, un nekad parasts 400 nepareizs pieprasījums) tiek nodots nākamajam neizmēģinātajam akreditētajam sniedzējam pieprasījuma laikā. Kad pūlā visi sniedzēji ir izsmelti, gala punkts atgriež vienu `429` (ar `Retry-After` galveni) iepriekšējā vispārīgā `400` vietā. Kad tiek pieprasīts skaidrs `provider`, **nav** klusā rezerves risinājuma — tarifikācijai ierobežots vai neveiksmīgs skaidrs sniedzējs parāda savu kļūdu (`429`, ja tarifikācijai ierobežots, citādi augšteces statuss). --- ## WebSocket straumēšana ```bash GET /v1/ws?handshake=1 ``` Validē WebSocket jaunināšanas rokasspiedienu un atgriež tīkla protokola parauga ziņojumus (`request`, `cancel`). Faktiskie WS kadri tiek apstrādāti ar iekļauto WS serveri ārpus Next.js maršrutu tabulas. **Autentifikācija:** Bearer API atslēga rokasspiediena laikā. ### Responses API pār WebSocket (tikai codex) ```bash # Tāds pats host:port kā HTTP API (noklusējuma 20128); jauniniet savienojumu: wscat -c "ws://localhost:20128/v1/responses?api_key=" # (vai: -H "Authorization: Bearer ") # Pirmais kads OBLIGĀTI jābūt response.create: { "type": "response.create", "model": "gpt-5.5", "input": [ { "role": "user", "content": "hi" } ] } ``` Responses-API-pār-WebSocket starpnieks ir savienots **ekskluzīvi ar `codex`** (ChatGPT aizmugure). Tas klausās tajā pašā portā kā API/dashboards ceļos `/v1/responses`, `/responses`, un `/api/v1/responses`. Pirmajā `response.create` kadā tas autentificē + sagatavo, izmantojot iekšējo `codex-responses-ws` tiltu, izvēlas codex OAuth savienojumu un tuneles uz `wss://chatgpt.com/backend-api/codex/responses` caur `wreq-js` transportu. **Ne-codex modeļi tiek noraidīti** (`codex_ws_provider_required`). Kvotas koplietošanas maršrutēšanai izmantojiet `model: "qtSd//codex/"`. Implementēts `app/server-ws.mjs` + `scripts/dev/responses-ws-proxy.mjs` + `src/app/api/internal/codex-responses-ws/route.ts`. **Autentifikācija:** Bearer API atslēga rokasspiediena laikā. Iekļautais HTTP serveris (`server-ws.mjs`) jābūt aktīvajam ievadam (tas ir pēc noklusējuma, kad `app/server-ws.mms` pastāv). #### Modeļa id: izmantojiet tīru ChatGPT id (bez `codex/` prefiksa) OpenAI **Codex CLI** validē modeļa nosaukumu klienta pusē, kad `supports_websockets = true` un **noraida sniedzēja prefiksus** kā `codex/gpt-5.5` (`The 'codex/gpt-5.5' model is not supported when using Codex with a ChatGPT account`). Nosūtīt **tīru** id (piem. `gpt-5.5`). OmniRoute tilts ir tikai codex, tāpēc tas atkārtoti izšķiro tīru id kā codex modeli (`resolveCodexWsModelInfo`) pirms tuneles uz augšteci — pat ja tīrs `gpt-5.5` citādi tiktu maršruts uz citu sniedzēju caur HTTP. #### OpenAI Codex CLI konfigurēšana Norādiet Codex CLI uz OmniRoute, pievienojot pielāgotu sniedzēju ar WebSocket atbalstu `~/.codex/config.toml` (izmantojiet atsevišķu `CODEX_HOME`, lai nesaskartos ar esošu konfigurāciju): ```toml model = "gpt-5.5" # tīrs id — NE "codex/gpt-5.5" model_provider = "omniroute" [model_providers.omniroute] name = "OmniRoute (WS)" base_url = "http://localhost:20128/v1" # bez slīpa svītra; WS URL tiek atvasināts (izmantojiet https/wss ražošanā) wire_api = "responses" # atbalstītā vērtība kopš 2026. gada februāra supports_websockets = true # iespējojot Responses-over-WS transportu env_key = "OMNIROUTE_API_KEY" # satur OmniRoute API atslēgu (Bearer) ``` ```bash export OMNIROUTE_API_KEY=sk-... # OmniRoute API atslēga (jebkura atslēga, ja REQUIRE_API_KEY=false) codex exec "Responda apenas: PONG" ``` CLI jaunina `base_url + /responses` uz WebSocket un OmniRoute to tuneles uz izvēlēto codex OAuth savienojumu. Validēts end-to-end pret lokālo serveri: ChatGPT atgriež `codex.rate_limits` + `response.created` un straumē pabeigšanu. --- ## Kvotas un problēmu pārskatīšana | Metode | Ceļš | Apraksts | | ------ | ------------------- | ------------------------------------------------------------------------------------------------ | | GET | `/v1/quotas/check` | Iepriekšēja kvotas pārbaude `provider` + `accountId` pirms reģistrētas atslēgas izsniegšanas | | POST | `/v1/issues/report` | Ziņot par kvotas/atslēgas izsniegšanas kļūdu GitHub (nepieciešams `GITHUB_ISSUES_REPO` + tokens) | **Autentifikācija:** Bearer API atslēga (`isAuthenticated`). --- ## Pašapkalpošanās lietošana (`/api/usage/om-usage`) Jebkura API atslēga var lasīt **sava** izmantošanu un kvotas — bez pārvaldības autentifikācijas. Šis ir galapunkts, ko klients (CLI, OmniCopilot panelis) izmanto, lai parādītu atslēgas turētājam viņa tēriņus. ```bash # Teksta forma (vēsturiskais līgums — vienkāršs tekstam terminalī) curl -H "Authorization: Bearer " \ http://localhost:20128/api/usage/om-usage # Strukturēta forma — ko UI izmanto curl -H "Authorization: Bearer " \ "http://localhost:20128/api/usage/om-aste?format=json" ``` Atslēgai jābūt ar **`allowCommandUsage`** iespējotu (pēc noklusējuma izslēgts — dashboard API atslēgu pārvaldītājs to pārslēdz katrai atslēgai atsevišķi). Bez tā galapunkts atbild ar `403`. `?format=json` atgriež diskriminējošu formu, lai izsaucošais nekad nelasītu datu lauku no noraidījuma. Veiksmīgā gadījumā: ```jsonc { "allowed": true, // atrodas tikai tad, ja atslēga ir pievienojusies atslēgu lietošanas ierobežojumiem (dienas/nedēļas USD): "personal": { "dailySpentUsd": 1.25, "dailyLimitUsd": 5, "dailyResetAtIso": "…", "weeklySpentUsd": 8, "weeklyLimitUsd": 20, "weeklyResetAtIso": "…" /* … */, }, // izvēlētā pakalpojumu sniedzēja kvotas kopija, vai null, kad vēl nav nekas kešots: "provider": { "connectionId": "…", "provider": "claude", "plan": "…", "quotas": {/* … */}, }, // katras savienojuma kopija, lai UI varētu parādīt vairākus pakalpojumu sniedzējus blakus: "providers": [ { "connectionId": "…", "provider": "claude" /* … */ }, { "provider": "codex" /* … */ }, ], } ``` Noraidījuma gadījumā (`401` nepareiza atslēga / `403` nav atļauts) tas pats maršruts atgriež `{ "allowed": false, "error": { "message": "…" } }` — klāt esošs, bet tukšs `personal`/`provider` (atslēga atļauta, vēl nekas nav noskaidrots) ir atšķirīgs stāvoklis no noraidījuma, un to atšķir tikai JSON forma. **Autentifikācija:** izsaucošā sava Bearer API atslēga, validēta ar `isValidApiKey` — tā _nav_ pārvaldības virsmas (`/api/keys/…`), kas paliek aiz `requireManagementAuth`. --- ## Semantiskā kešatmiņa ```bash # Iegūt kešatmiņas statistiku GET /api/cache/stats # Notīrīt visas kešatmiņas DELETE /api/cache/stats ``` Atbildes piemērs: ```json { "semanticCache": { "memorySize": 42, "memoryMaxSize": 500, "dbSize": 128, "hitRate": 0.65 }, "idempotency": { "activeKeys": 3, "windowMs": 5000 } } ``` ### Aiztures ietekme Semantiskā kešatmiņas **trāpījums** apkalpo atbildi no kešatmiņas **bez augšupēja izsaukuma**, tāpēc ziņotais `X-OmniRoute-Response-Latency` ir tuvu nullei (neatkarīgi no sākotnējās augšupējas aiztures). Aizturīgi klienti (novērtējumi, p50/p99 monitorings) jāpārbauda `X-OmniRoute-Cache-Latency` atbildes galvene: | Vērtība | Nozīme | | ----------- | ------------------------------------------------------------------ | | `synthetic` | Atbilde apkalpota no kešatmiņas; aizture nav reālā augšupēja laika | | _(nav)_ | Atbilde no reālā augšupēja izsaukuma | ### Atslēgas kešatmiņas apiešana API atslēgas var atteikties no semantiskās kešatmiņas nolasīšanas, izmantojot `cacheDefaultMode`: | Vērtība | Uzvedība | | -------- | ------------------------------------------------------------ | | `legacy` | Normāla kešatmiņas uzvedība (noklusējuma) | | `bypass` | Pilnībā izlaist kešatmiņas meklēšanu; vienmēr trāpīt augšupē | Iestatīts atslēgas izveidošanas laikā (`POST /api/keys`) vai atjaunināšanas laikā (`PATCH /api/keys/[id]`): ```json { "cacheDefaultMode": "bypass" } ``` ### Pieprasījuma apiešana Jebkurš pieprasījums var apiet kešatmiņu neatkarīgi no atslēgas iestatījumiem: ``` X-OmniRoute-No-Cache: true ``` --- ## Pārvaldības panelis un vadība Pārvaldības maršrutus (`/api/*`, izņemot publisko autentifikāciju/pieteikšanos) **neautorizē** parastas piekļuves atslēgas. Pārvaldības autentifikāciju, pierakstu lomas un curl piemērus meklē: [Pārvaldības autentifikācija](../guides/MANAGEMENT-AUTH.md). ### Autentifikācija | Galapunkts | Metode | Apraksts | | ----------------------------- | ------- | ----------------------------- | | `/api/auth/login` | POST | Pieteikšanās | | `/api/auth/logout` | POST | Iziet | | `/api/settings/require-login` | GET/PUT | Pārslēgt prasīto pieteikšanos | ### Pakalpojumu sniedzēju pārvaldība | Galapunkts | Metode | Apraksts | | ---------------------------- | --------------------- | --------------------------------------------------------------------------------------------------------------------- | | `/api/providers` | GET/POST | Sarakstīt / izveidot pakalpojumu sniedzējus | | `/api/providers/[id]` | GET/PUT/DELETE | Pārvaldīt pakalpojumu sniedzēju | | `/api/providers/[id]/test` | POST | Testēt pakalpojumu sniedzēja savienojumu | | `/api/providers/[id]/models` | GET | Sarakstīt pakalpojumu sniedzēja modeļus | | `/api/providers/validate` | POST | Validēt pakalpojumu sniedzēja konfigurāciju | | `/api/providers/bulk` | POST | Masveidā pievienot API atslēgas VIENAM pakalpojumu sniedzējam | | `/api/providers/import` | POST | Importēt nevienotu pakalpojumu sniedzēju sarakstu no parsēta CSV/JSON faila (#6836); rindiņu daļējas kļūdas rezultāti | | `/api/provider-nodes*` | Dažādas | Pakalpojumu sniedzēju mezglu pārvaldība | | `/api/provider-models` | GET/POST/PATCH/DELETE | Pielāgoti modeļi (pievienot, atjaunināt, paslēpt/rādīt, dzēst) | ### OAuth plūsmas | Galapunkts | Metode | Apraksts | | -------------------------------- | ------- | --------------------------------------- | | `/api/oauth/[provider]/[action]` | Dažādas | Pakalpojumu sniedzējam specifiskā OAuth | ### Maršrutizēšana un konfigurācija | Galapunkts | Metode | Apraksts | | --------------------- | -------- | -------------------------------- | | `/api/models/alias` | GET/POST | Modeļu aizstājvārdi | | `/api/models/catalog` | GET | Visi modeļi pēc sniedzēja + tipa | | `/api/combos*` | Dažādas | Kombo pārvaldība | | `/api/keys*` | Dažādas | API atslēgu pārvaldība | | `/api/pricing` | GET | Modeļu cenu noteikšana | ### Lietošana un analītika | Galapunkts | Metode | Apraksts | | -------------------------------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `/api/usage/history` | GET | Lietošanas vēsture | | `/api/usage/logs` | GET | Lietošanas žurnāli | | `/api/usage/request-logs` | GET | Pieprasījumu līmeņa žurnāli | | `/api/usage/[connectionId]` | GET | Lietošana pa savienojumu | | `/api/usage/token-limits` | GET/POST/DELETE | Pa API atslēgu žetonu robežbudžeti | | `/api/usage/model-latency-stats` | GET | Slīdošā pakalpojumu sniedzēja/modeļa aizture (vid/p50/p95/p99, panākumu līmenis); filtrēšana: `windowHours`/`minSamples`/`maxRows`/`provider`/`model` (#6873) | | `/api/usage/cache-performance` | GET | Ātrā kešatmiņas veselības kopsavilkums `call_logs` — rakstīšanas/lasīšanas attiecība, p50/p90/p99 rakstīšanas izmēru sadalījums, intensīvas rakstīšanas koncentrācija, pa modeļiem sadalījums, un `healthy`/`degraded`/`thrash`/`no-data` spriedums; vaicājuma parametri `range` (`1h`\|`24h`\|`7d`\|`30d`, noklusējuma `24h`) un izvēles `model` (#8827) | ### Iestatījumi | Galapunkts | Metode | Apraksts | | ------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `/api/settings` | GET/PUT/PATCH | Vispārīgie iestatījumi | | `/api/settings/proxy` | GET/PUT | Tīkla starpnieka konfigurācija | | `/api/settings/proxy/test` | POST | Testēt starpnieka savienojumu | | `/api/settings/ip-filter` | GET/PUT | IP atļauto/blokēto sarakstu filtrs | | `/api/settings/thinking-budget` | GET/PUT | Domāšanas/prātošanas **pieprasījuma** režīma pārrakstīšana (caurlaide / automātiskā noņemšana / pielāgota / adaptīva). Neatkarīga no saspiešanas. Sk. [THINKING_BUDGET.md](../guides/THINKING_BUDGET.md). | | `/api/settings/system-prompt` | GET/PUT | Globālais sistēmas piedāvājums | | `/api/settings/compression` | GET/PUT | Globālā saspiešanas konfigurācija | | `/api/settings/purge-request-history` | POST | Notīrīt pieprasījumu žurnāla rindas un vietējos zvanu žurnāla artefaktus | ### Konteksts un saspiešana | Galapunkts | Metode | Apraksts | | -------------------------------------- | -------------- | -------------------------------------------------------------------------------------------- | | `/api/compression/preview` | POST | Priekšskatīt off/lite/standard/aggressive/ultra/RTK/stacked saspiešanu | | `/api/compression/language-packs` | GET | Sarakstīt pieejamās Caveman valodu pakotnes | | `/api/compression/rules` | GET | Sarakstīt Caveman noteikumu metadatus | | `/api/context/caveman/config` | GET/PUT | Caveman specifisko iestatījumu aizstājvārds | | `/api/context/rtk/config` | GET/PUT | RTK specifiskie iestatījumi, ieskaitot pielāotos filtrus un neapstrādātā izvades saglabāšanu | | `/api/context/rtk/filters` | GET | RT filtru katalogs un pielāgoto filtru diagnostika | | `/api/context/rtk/test` | POST | Veikt RT priekšskatījumu/testu pret teksta ievadi | | `/api/context/rtk/raw-output/[id]` | GET | Lasīt saglabātu rediģētu neapstrādāto izvadi pēc指针 id | | `/api/context/combos` | GET/POST | Saspiešanas kombo saraksts/izveide | | `/api/context/combos/[id]` | GET/PUT/DELETE | Saspiešanas kombo detaļas/atjaunināšana/dzēšana | | `/api/context/combos/[id]/assignments` | GET/PUT | Piešķirt saspiešanas kombo maršrutēšanas kombo | | `/api/context/analytics` | GET | Saspiešanas analītikas aizstājvārds | ### Uzraudzība | Galapunkts | Metode | Apraksts | | ------------------------------------ | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `/api/sessions` | GET | Aktīvo sesiju izsekošana | | `/api/rate-limits` | GET | Pa kontam ātruma ierobežojumi | | `/api/monitoring/health` | GET | Veselības pārbaude + pakalpojumu sniedzēja kopsavilkums (`catalogCount`, `configuredCount`, `activeCount`, `monitoredCount`) | | `/api/cache/stats` | GET/DELETE | Kešatmiņas statistika / notīrīt | | `/api/modality-bridge/stats` | GET | Atmiņā esošie `attempts`, panākumi/`bridged`, kļūdas, kešatmiņas trāpījumi, `totalLatencyMs`, `latencySamples`, vidējā aizture (aprēķināta pēc paraugiem) `averageLatencyMs`, un pēdējās lietošanas laiks (tiek atiestatīta restartējot; pārvaldības autentifikācija) | | `/api/modality-bridge/video/runtime` | GET | Stingra uzticama atpakaļcikla pārbaude pirms pārvaldības autentifikācijas/probes; sanitizēta FFmpeg/ffprobe pieejamība un versijas (nesaglabājas) | | `/api/modality-bridge/video/extract` | POST | Iekšējais autentificētais uzticamā atpakaļcikla baitu starpnieks; 50 MiB ievade, ierobežota rinda/32 MiB izvade, `503` kapacitāte, `499` atvienošana, `504` termiņš; nav publiska augšupielādes API | ### Rezerves kopēšana un eksportēšana/importēšana | Galapunkts | Metode | Apraksts | | --------------------------- | ------ | ---------------------------------------------------- | | `/api/db-backups` | GET | Sarakstīt pieejamās rezerves kopijas | | `/api/db-backups` | PUT | Izveidot manuālu rezerves kopiju | | `/api/db-backups` | POST | Atjaunot no konkrētas rezerves kopijas | | `/api/db-backups/export` | GET | Lejupielādēt datubāzi kā .sqlite failu | | `/api/db-backups/import` | POST | Augšupielādēt .sqlite failu, lai aizstātu datubāzi | | `/api/db-backups/exportAll` | GET | Lejupielādēt pilnu rezerves kopiju kā .tar.gz arhīvu | ### Mākoņa sinhronizācija | Galapunkts | Metode | Apraksts | | ---------------------- | ------- | ------------------------------- | | `/api/sync/cloud` | Dažādas | Mākoņa sinhronizācijas darbības | | `/api/sync/initialize` | POST | Inicializēt sinhronizāciju | | `/api/cloud/*` | Dažādas | Mākoņa pārvaldība | ### Tuneļi | Galapunkts | Metode | Apraksts | | -------------------------- | ------ | --------------------------------------------------------------------------------- | | `/api/tunnels/cloudflared` | GET | Nolasīt Cloudflare Quick Tunnel uzstādīšanas/darbības statusu pārvaldības panelim | | `/api/tunnels/cloudflared` | POST | Iespējot vai atspējot Cloudflare Quick Tunnel (`action=enable/disable`) | | `/api/tunnels/ngrok` | GET | Nolasīt ngrok tuneļa darbības statusu pārvaldības panelim | | `/api/tunnels/ngrok` | POST | Iespējot vai atspējot ngrok Tuneļu (`action=enable/disable`) | ### CLI rīki | Galapunkts | Metode | Apraksts | | ---------------------------------- | ------ | --------------------------- | | `/api/cli-tools/claude-settings` | GET | Claude CLI statuss | | `/api/cli-tools/codex-settings` | GET | Codex CLI statuss | | `/api/cli-tools/droid-settings` | GET | Droid CLI statuss | | `/api/cli-tools/openclaw-settings` | GET | OpenClaw CLI statuss | | `/api/cli-tools/runtime/[toolId]` | GET | Vispārīgais CLI izpildlaiks | CLI atbildēs iekļauts: `installed`, `runnable`, `command`, `commandPath`, `runtimeMode`, `reason`. ### ACP aģenti | Galapunkts | Metode | Apraksts | | ----------------- | ------ | ------------------------------------------------------------------------ | | `/api/acp/agents` | GET | Sarakstīt visus konstatētos aģentus (iestatītos + pielāgotos) ar statusu | | `/api/acp/agents` | POST | Pievienot pielāgotu aģentu vai atsvaidzināt konstatēšanas kešatmiņu | | `/api/acp/agents` | DELETE | Noņemt pielāgoto aģentu pēc `id` vaicājuma parametra | GET atbildē iekļauts `agents[]` (id, nosaukums, binārais, versija, instalēts, protokols, isCustom) un `summary` (kopā, instalēts, nav atrasts, iebūvēts, pielāgots). ### Noturība un ātruma ierobežojumi | Galapunkts | Metode | Apraksts | | --------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------ | | `/api/resilience` | GET/PATCH | Iegūt/atjaunināt pieprasījumu rindu, savienojuma atdzišanu, pakalpojumu sniedzēja pārtraucēju un gaidīšanas iestatījumus | | `/api/resilience/reset` | POST | Atiestatīt pakalpojumu sniedzēju ķēžu pārtraucējus | | `/api/resilience/model-cooldowns` | GET | Sarakstīt aktīvos ierobežojumus pa (sniedzējs, savienojums, modelis), šķirot pēc atlikušā laika | | `/api/resilience/model-cooldowns` | DELETE | Notīrīt modeļa ierobežojumu — ķermeņa `{provider, model}` vai `{all: true}`, lai izdzēstu visu | | `/api/rate-limits` | GET | Pa kontam ātruma ierobežojuma statuss | | `/api/rate-limit` | GET | Globālā ātruma ierobežojuma konfigurācija | > Visi četri `/api/resilience/*` maršruti prasa **pārvaldības autentifikāciju** (`requireManagementAuth`). Sk. [Noturība (paplašināta)](#resilience-extended) pilnam pārtraucēja vs atdzišanas laika vs modeļa ierobežojuma salīdzinājumam. ### Vērtējumi | Galapunkts | Metode | Apraksts | | ------------ | -------- | ---------------------------------------------- | | `/api/evals` | GET/POST | Sarakstīt vērtēšanas kopas / palaist vērtēšanu | ### Politikas | Galapunkts | Metode | Apraksts | | --------------- | --------------- | --------------------------------- | | `/api/policies` | GET/POST/DELETE | Pārvaldīt maršrutēšanas politikas | ### Atbilstība | Galapunkts | Metode | Apraksts | | --------------------------- | ------ | -------------------------------------- | | `/api/compliance/audit-log` | GET | Atbilstības audita žurnāls (pēdējie N) | ### v1beta (saderīgs ar Gemini) | Galapunkts | Metode | Apraksts | | -------------------------- | ------ | ----------------------------------- | | `/v1beta/models` | GET | Sarakstīt modeļus Gemini formātā | | `/v1beta/models/{...path}` | POST | Gemini `generateContent` galapunkts | Šie galapunkti atdarina Gemini API formātu klientiem, kas sagaida natīvu Gemini SDK savietojamību. ### Iekšējās / Sistēmas API | Galapunkts | Metode | Apraksts | | ------------------------ | ------ | ------------------------------------------------------------------------- | | `/api/init` | GET | Lietojumprogrammas inicializācijas pārbaude (izmantota pirmajā palaišanā) | | `/api/tags` | GET | Ar Ollama saderīgas modeļa birkas (Ollama klientiem) | | `/api/restart` | POST | Izraisīt elegantu servera restartēšanu | | `/api/shutdown` | POST | Izraisīt elegantu servera izslēgšanu | | `/api/system/env/repair` | POST | Labot OAuth pakalpojumu sniedzēja vides mainīgos | > **Piezīme:** Šos galapunktus izmanto sistēma iekšēji vai Ollama klientu savietojamībai. Tie parasti nav paredzēti galotnes lietotāju izsaukšanai. ### OAuth vides labošana _(v3.6.1+)_ ```bash POST /api/system/env/repair Content-Type: application/json { "provider": "claude-code" } ``` Labo trūkstošus vai bojātus OAuth vides mainīgos konkrētam pakalpojumu sniedzējam. Atgriež: ```json { "success": true, "repaired": ["CLAUDE_CODE_OAUTH_CLIENT_ID", "CLAUDE_CODE_OAUTH_CLIENT_SECRET"], "backupPath": "/home/user/.omniroute/backups/env-repair-2026-04-11.bak" } ``` --- ## Audio Transcription ```bash POST /v1/audio/transcriptions Authorization: Bearer your-api-key Content-Type: multipart/form-data ``` Translē audio failus, izmantojot jebkuru konfigurētu STT pakalpojumu sniedzēju. Pirmais ceļa segments izvēlas nātīvo pakalpojumu sniedzēju (`openai/…`, `deepgram/…`). Vārtejas, kas atkārtoti eksportē citas piegādātāja modeli, izmanto kvalificētu identifikatoru (`openrouter/deepgram/nova-3`). **Pieprasījums:** ```bash curl -X POST http://localhost:20128/v1/audio/transcriptions \ -H "Authorization: Bearer your-api-key" \ -F "file=@recording.mp3" \ -F "model=openai/whisper-1" ``` **Atbilde:** ```json { "text": "Hello, this is the transcribed audio content.", "task": "transcribe", "language": "en", "duration": 12.5 } ``` **Modeļu identifikatoru piemēri:** `openai/whisper-1` (nepieciešama OpenAI atslēga), `openrouter/deepgram/nova-3` (nepieciešama OpenRouter atslēga), `deepgram/nova-3` (nepieciešama nātīvā Deepgram atslēga). Tīrs `deepgram/nova-3` pieprasījums **neizmanto** OpenRouter. **Atbalstītie formāti:** `mp3`, `wav`, `m4a`, `flac`, `ogg`, `webm`. --- ## Ollama Saderība Klientiem, kas izmanto Ollama API formātu: ```bash # Tērzēšanas galapunkts (Ollama formāts) POST /v1/api/chat # Modeļu uzskaitījums (Ollama formāts) GET /api/tags ``` Pieprasījumi automātiski tiek tulki starp Ollama un iekšējiem formātiem. ## Tokenizēti VS Code / Bezgalvenes Aliasi Izmantojiet šos aliasus, kad integrācija nevar ievadīt `Authorization` galveni un nepieciešams API atslēgu iegult pamatvietnē. ```bash # OpenAI stila kataloga aliass GET /api/v1/vscode/{token}/ GET /api/v1/vscode/{token}/models # OpenAI stila tērzēšanas aliass POST /api/v1/vscode/{token}/chat/completions POST /api/v1/vscode/{token}/responses # Ollama stila aliass POST /api/v1/vscode/{token}/api/chat GET /api/v1/vscode/{token}/api/tags ``` Piemērs: ```bash 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"}]}' ``` Piezīmes: - Tokenizētie aliasi izmanto tos pašus apstrādātājus kā `/v1/*` un `/api/tags`; atbilžu struktūras paliek identiskas. - Dodiet priekšroku `Authorization: Bearer ...`, kad klients atbalsta pielāgotas galvenes. - URL bāzētas atslēgas var parādīties reverso starpnieku žurnālos, pārlūka vēsturē un telemetrijā ārpus OmniRoute. Uztveriet tās kā saderības iespēju, nevis noklusējuma autentifikācijas režīmu. --- ## Telemetrija ```bash # Iegūt aiztures telemetrijas kopsavilkumu (p50/p95/p99 katram pakalpojumu sniedzējam) GET /api/telemetry/summary ``` **Atbilde:** ```json { "providers": { "claudeCode": { "p50": 245, "p95": 890, "p99": 1200, "count": 150 }, "github": { "p50": 180, "p95": 620, "p99": 950, "count": 320 } } } ``` --- ## Budžets ```bash # Iegūt budžeta statusu visām API atslēgām GET /api/usage/budget # Iestatīt vai atjaunināt budžetu 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" } ``` > **Shēmas piezīmes** (`setBudgetSchema`): `apiKeyId` ir obligāts; vismaz vienam no `dailyLimitUsd`, `weeklyLimitUsd` vai `monthlyLimitUsd` jābūt lielākam par nulli. Fakultatīvie lauki: `warningThreshold` (0–1), `resetInterval` (`daily` | `weekly` | `monthly`), `resetTime` (`HH:MM`). Mantotā `{keyId, limit, period}` struktūra atgriež `400 Bad Request`. ## Token limiti Katras API atslēgas **token** budžeti (atšķirīgi no iepriekš minētā USD bāzētā Budžeta). Tie tiek piemēroti pieprasījuma ceļā: kad atslēgas pašreizējais loga lietojums sasniedz limitu, pieprasījumi tiek noraidīti ar `429 Too Many Requests`. Limiti var būt noteikti konkrētam `model`, `provider` vai piemēroti `global` atslēgai; ja vairāki limiti atbilst pieprasījumam, tiek piemērots visierobežojošākais. ```bash # Uzskaitīt atslēgas token limitus (ietver aktīvo loga lietojumu) GET /api/usage/token-limits?apiKeyId=key-123 # Izveidot vai atjaunināt token limitu POST /api/usage/token-limits Content-Type: application/json { "apiKeyId": "key-123", "scopeType": "model", "scopeValue": "openai/gpt-4o", "tokenLimit": 1000000, "resetInterval": "monthly", "enabled": true } # Dzēst token limitu pēc id DELETE /api/usage/token-limits?id=tl-abc ``` > **Shēmas piezīmes** (`setTokenLimitSchema`): `apiKeyId` un `scopeType` (`model` | `provider` | `global`) ir obligāti. `scopeValue` ir obligāts, ja `scopeType` nav `global` (piemēram, modeļa id `model` mērogam, pakalpojuma sniedzēja id `provider` mērogam). `tokenLimit` jābūt pozitīvam veselam skaitlim (piespiests no virknes). Fakultatīvi: `id` (izlaidiet, lai izveidotu; norādiet, lai atjauninātu), `resetInterval` (`daily` | `weekly` | `monthly`, noklusējums `monthly`), `resetTime` (`HH:MM`), `enabled` (noklusējums `true`). `GET` atbildes papildina katru limitu ar `tokensUsed`, `remaining`, `windowStart`, `periodStartAt` un `nextResetAt`. Šis ir pārvaldības klases galapunkts (autentifikācija tiek centralizēti piemērota ar autentifikācijas cauruļvadu). ## Pieprasījumu apstrāde 1. Klients sūta pieprasījumu uz `/v1/*` 2. Maršruta apstrādātājs izsauc `handleChat`, `handleEmbedding`, `handleAudioTranscription` vai `handleImageGeneration` 3. Tiek atrisināts modelis (tiešais pakalpojuma sniedzējs/ modelis vai aizstājējs/kombinācija) 4. No lokālās datubāzes tiek izvēlētas akreditācijas dati ar konta pieejamības filtrēšanu 5. Tērzēšanai: `handleChatCore` pārbauda semantisko/paraksta kešatmiņu un atrisina kombinācijas saspiešanas iestatījumus 6. Iepriekšējā saspiešana notiek pirms pakalpojuma sniedzēja tulkošanas, kad tā ir iespējota (`lite`, Caveman, RTK vai sakārtota) 7. Pakalpojuma sniedzēja izpildītājs sūta augšupejošu pieprasījumu 8. Atbilde tiek atulkta atpakaļ klienta formātā (tērzēšanai) vai atgriezta kā tāda (iekļaušanas attēli/audio) 9. Tiekt reģistrēts lietojums, saspiešanas analītika un pieprasījumu žurnāli 10. Kļūdu gadījumā tiek piemērots atkāpšanās plāns saskaņā ar kombinācijas noteikumiem Pilna arhitektūras atsauce: [`ARCHITECTURE.md`](../architecture/ARCHITECTURE.md) --- ## Kombināciju pārvaldība Augstāka līmeņa maršrutēšanas kombinācijas (jau kopsavilkots zem `/api/combos*`) var arī kartēt 1:1 no modeļa id modeļa, ļaujot pāredzēt OpenAI stila modeļa id pārvirzīšanu uz kombināciju. | Metode | Ceļš | Apraksts | | ------ | -------------------------------- | ------------------------------------------------------------------------------------- | | GET | `/api/model-combo-mappings` | Uzskaitīt visas modelis→kombinācija kartēšanas | | POST | `/api/model-combo-mappings` | Izveidot kartēšanu — korpuss: `{pattern, comboId, priority?, enabled?, description?}` | | GET | `/api/model-combo-mappings/[id]` | Iegūt vienu kartēšanu | | PUT | `/api/model-combo-mappings/[id]` | Atjaunināt esošas kartēšanas laukus | | DELETE | `/api/model-combo-mappings/[id]` | Noņemt kartēšanu | **Autentifikācija:** pārvaldības sesija/ API atslēga (`requireManagementAuth`). ## Webhooks Izejošo webhook abonementu apraksti OmniRoute notikumiem (pieprasījuma pabeigšana, kvotu izsīkšana, atslēgu rotācija utt.). | Metode | Ceļš | Apraksts | | ------ | ------------------------- | ------------------------------------------------------------------------------ | | GET | `/api/webhooks` | Uzskaitīt webhooks (noslēpumi ir maskēti kā `...`) | | POST | `/api/webhooks` | Izveidot webhook — pamatteksts: `{url, events?: ["*"], secret?, description?}` | | GET | `/api/webhooks/[id]` | Iegūt webhook | | PUT | `/api/webhooks/[id]` | Atjaunināt url/events/secret/description | | DELETE | `/api/webhooks/[id]` | Noņemt webhook | | POST | `/api/webhooks/[id]/test` | Nosūtīt testa datu kopu uz webhook URL un atgriezt piegādes statusu | **Autentifikācija:** pārvaldības sesija/API atslēga (`requireManagementAuth`). --- ## Reģistrētās atslēgas (Automātiskā pārvaldība) Izmanto automātiskās atslēgu pārvaldības apakšsistēma, lai izsniegtu un rotētu API atslēgas pret atbalsta pakalpojumu sniedzēju/kontu, ar dienas/stundas kvotām. | Metode | Ceļš | Apraksts | | ------ | ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | GET | `/api/v1/registered-keys` | Uzskaitīt reģistrētās atslēgas (tikai maskēts prefikss) | | POST | `/api/v1/registered-keys` | Izsniegt jaunu reģistrētu atslēgu — pamatteksts: `{name, provider?, accountId?, idempotencyKey?, expiresAt?, dailyBudget?, hourlyBudget?}`. Atgriež neapstrādāto atslēgu **vienu reizi**. Atgriež `429`, ja kvota tiek atteikta. | | GET | `/api/v1/registered-keys/[id]` | Iegūt reģistrētas atslēgas metadatus (bez neapstrādāta materiāla) | | DELETE | `/api/v1/registered-keys/[id]` | Atsaukt reģistrētu atslēgu | | POST | `/api/v1/registered-keys/[id]/revoke` | Skaidrs atsaukšanas galapunkts (tāds pats efekts kā DELETE) | **Autentifikācija:** Bearer API atslēga (`isAuthenticated`). Skatīt arī `/v1/quotas/check` un `/v1/issues/report`. ## Aģentu protokols Mākoņa aģentu uzdevumi (Claude Code, Codex Cloud, OpenHands utt.), kas izpildīti attālināti OmniRoute lietotāju vārdā. | Metode | Ceļš | Apraksts | | ------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | GET | `/api/v1/agents/tasks` | Uzdevumu saraksts — fakultatīvi `?provider=`, `?status=`, `?limit=` (1–500, noklusējums 50) | | POST | `/api/v1/agents/tasks` | Izveidot uzdevumu — ķermenis validēts ar `CreateCloudAgentTaskSchema` (`providerId`, `prompt`, `source`, `options?`). Atgriež `201` ar uzdevuma apvalku | | DELETE | `/api/v1/agents/tasks?id=...` | Dzēst uzdevumu | | GET | `/api/v1/agents/tasks/[id]` | Nolasīt uzdevumu — sinhroni atsvaidzina statusu no augšējā līmeņa mākoņa aģenta, kad iestatīts `external_id` | | POST | `/api/v1/agents/tasks/[id]` | Diskriminēta darbība: `{action: "approve"}`, `{action: "message", message}` vai `{action: "cancel"}` | | DELETE | `/api/v1/agents/tasks/[id]` | Dzēst konkrētu uzdevumu pēc id | > **Autentifikācija:** katrā metodē nepieciešama pārvaldības autentifikācija (`requireCloudAgentManagementAuth`). Pirms v3.8.0 tie bija bez autentifikācijas — skatiet commit `588a0333` par izmaiņām, kas pārtrauca darbību. ```bash # Izveidot Claude Code mākoņa uzdevumu 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":"..."}}' ``` --- ## Pārvaldības starpnieki Izejošie HTTP(S)/SOCKS starpnieki, kurus var piešķirt pakalpojumu sniedzējiem, kontiem vai globāli. | Metode | Ceļš | Apraksts | | ------ | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | GET | `/api/v1/management/proxies` | Starpnieku saraksts (ar `?id=` atgriež vienu; ar `?id=&where_used=1` atgriež piešķīrumu grafiku) | | POST | `/api/v1/management/proxies` | Izveidot starpnieku — ķermenis validēts ar `createProxyRegistrySchema` | | PATCH | `/api/v1/management/proxies` | Atjaunināt starpnieku — ķermenis validēts ar `updateProxyRegistrySchema` (nepieciešams `id`) | | DELETE | `/api/v1/management/proxies?id=...&force=1` | Dzēst starpnieku (izmantojiet `force=1`, lai atvienotu piešķīrumus) | | GET | `/api/v1/management/proxies/assignments` | Piešķīrumu saraksts — filtrējams pēc `proxy_id`, `scope`, `scope_id`; padod `resolve_connection_id=`, lai atrisinātu aktīvo starpnieku savienojumam | | PUT | `/api/v1/management/proxies/assignments` | Piešķirt — ķermenis validēts ar `proxyAssignmentSchema` (`{scope, scopeId?, proxyId?}`). Notīra dispečera kešatmiņu | | PUT | `/api/v1/management/proxies/bulk-assign` | Masveida piešķiršana — ķermenis validēts ar `bulkProxyAssignmentSchema` (`{scope, scopeIds[], proxyId?}`) | | GET | `/api/v1/management/proxies/health?hours=24` | Agregēts starpņiku veselības stāvoklis (veiksmes/neveiksmju skaitītāji, latentums) pār logu | **Autentifikācija:** pārvaldības sesija/API atslēga katrā maršrutā (`requireManagementAuth`). > Uzdevuma aprakstā esošie `POST /api/v1/management/proxies/[id]/assignments` un `POST /api/v1/management/proxies/[id]/health` tiek apkalpoti ar plakanajiem `/assignments` un `/health` maršrutiem, kas parādīti iepriekš — kodu bāzē nav nekādu apakšmaršrutu ar id. --- ## Izturība (paplašināta) OmniRoute piedāvā tr neatkarīgas īslaicīgas kļūdas mehānismus; zemāk esošās pārvaldības gala punkti ļauj operatoriem tos lasīt un pārrakstīt: | Apjoms | Stāvokļa glabātuve | Lasīt | Atiestatīt / notīrīt | | ----------------------------- | ------------------------------------------------- | ----------------------------------------- | ---------------------------------------------- | | Pakalpojuma avota pārtraucējs | `domain_circuit_breakers` + atmiņā | `/api/monitoring/health` | `POST /api/resilience/reset` | | Savienojuma atdzesēšana | `rateLimitedUntil` pakalpojuma avota savienojumos | `/api/rate-limits`, `/api/providers/[id]` | (atsāknējas slinki; notīrīt caur provider PUT) | | Modeļa bloķēšana | Atmiņā reģistrētā modeļa pieejamība | `GET /api/resilience/model-cooldowns` | `DELETE /api/resilience/model-cooldowns` | `PATCH /api/resilience` pieņem pakalpojuma avota pārtraucēja pārrakstījumus sadaļās `providerBreaker.oauth` un `providerBreaker.apikey`. Katrs profils atbalsta `degradationThreshold`, `failureThreshold` un `resetTimeoutMs`; tie paši lauki ir redzami Dashboard → Settings → Resilience. ```bash # Notīrīt vienu modeļa bloķēšanu 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"}' # Notīrīt visas bloķēšanas curl -X DELETE http://localhost:20128/api/resilience/model-cooldowns \ -H "Cookie: auth_token=..." \ -d '{"all":true}' ``` Pilna konceptuālā atsauce un pārtraucēja noklusējuma vērtības: skatīt [`CLAUDE.md`](../../CLAUDE.md) → "Resilience Runtime State". --- ## Prasmes Prasmju ietvars OmniRoute paplašināšanai ar pielāgotiem izpildāmiem apstrādātājiem, kā arī tirgus integrācijām. | Metode | Ceļš | Apraksts | | ------ | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | | GET | `/api/skills` | Uzstādīto prasmju saraksts — filtrējams pēc `?q=`, `?mode=on\|off\|auto`, `?source=skillsmp\|skillssh\|local`, lapots | | GET | `/api/skills/[id]` | Iegūt vienu prasmi | | PUT | `/api/skills/[id]` | Atjaunināt prasmi (nosaukums, apraksts, režīms, shēma, apstrādātājs, tagi) | | DELETE | `/api/skills/[id]` | Atinstalēt prasmi | | POST | `/api/skills/install` | Instalēt prasmi no neapstrādāta manifesta — ķermenis: `{name, version, description, schema:{input, output}, handlerCode, apiKeyId?}` | | GET | `/api/skills/executions` | Uzskaitīt nesenās prasmju izpildes (revīzijas pēda ar ievadiem/izvadēm/ilgumu) | | GET | `/api/skills/marketplace?q=...` | Meklēt/populāro sarakstu no SkillsMP tirgus (nepieciešams `skillsmpApiKey` iestatījums) | | POST | `/api/skills/marketplace/install` | Instalēt prasmi pēc ID no SkillsMP | | GET | `/api/skills/skillssh?q=&limit=` | Meklēt skills.sh reģistrā | | POST | `/api/skills/skillssh/install` | Instalēt prasmi pēc ID no skills.sh | **Autentifikācija:** pārvaldības sesija/API atslēga. Tirgus meklēšanas maršruti pieņem vai nu pārvaldības autentifikāciju, vai Bearer API atslēgu (`isAuthenticated`). --- ## Atmiņa Pastāvīga sarunu faktisko atmiņu krātuve, kas ir ierobežota ar API atslēgas / sesijas mērogu. | Metode | Ceļš | Apraksts | | ------ | -------------------- | ----------------------------------------------------------------------------------------------------------------- | | GET | `/api/memory` | Atmiņu saraksts — `?apiKeyId=`, `?type=`, `?sessionId=`, `?q=`, ar `offset/limit` vai `page/limit` lapošanu | | POST | `/api/memory` | Izveidot atmiņu — ķermenis validēts ar Zod: `{content, key, type?, sessionId?, apiKeyId?, metadata?, expiresAt?}` | | GET | `/api/memory/[id]` | Iegūt vienu atmiņu | | DELETE | `/api/memory/[id]` | Izdzēst atmiņu | | GET | `/api/memory/health` | Atmiņu apakšsistēmas veselība (DB savienojamības, ieguldījumu aizmugures, vektoru indeksa statuss) | **Autentifikācija:** pārvaldības sesija / API atslēga (`requireManagementAuth`). `type` uzskaitījums: `FACTUAL`, `EPISODIC`, `SEMANTIC`, `PROCEDURAL` (skatīt `MemoryType` failā `src/lib/memory/types.ts`). --- ## MCP Serveris OmniRoute piegādā iebūvētu Model Context Protocol serveri ar 3 transportiem (stdio, SSE, streamable-http) un pielāgotiem rīkiem. Zemāk esošie informācijas panela galapunkti nolasa statusa/audita datus un pievada HTTP transportus. | Metode | Ceļš | Apraksts | | ------ | ---------------------- | ------------------------------------------------------------------------------------------------ | -------------------- | | GET | `/api/mcp/status` | Impulss, transports, tiešsaistes stāvoklis, pēdējais izsaukums, labākie rīki, 24h panākumu līmenis | | GET | `/api/mcp/tools` | MCP rīku saraksts ar `name`, `description`, `scopes`, `phase`, `auditLevel`, `sourceEndpoints` | | GET | `/api/mcp/sse` | Atvērt SSE straumi SSE transportam (atgriež `503`, ja MCP ir atspējots vai transports neatbilst) | | POST | `/api/mcp/sse` | Sūtīt JSON-RPC kadru SSE transportā | | GET | `/api/mcp/stream` | Atvērt Streamable HTTP transporta SSE pusi (servera uzsāktas ziņas) | | POST | `/api/mcp/stream` | Sūtīt JSON-RPC kadru Streamable HTTP transportā | | DELETE | `/api/mcp/stream` | Beigt Streamable HTTP sesiju | | GET | `/api/mcp/audit` | Vaicāt auditā žurnālu — `?limit=`, `?offset=`, `?tool=`, `?success=true|false`, `?apiKeyId=` | | GET | `/api/mcp/audit/stats` | Agregēti audita statistika (kopsummas, panākumu līmenis, vidējais ilgums, labākie rīki) | **Autentifikācija:** `sse`/`stream` transporti ievēro MCP specifisko autentifikācijas virsmu (Bearer API atslēga ar `mcp` apjomu); `status`/`tools`/`audit*` maršrutus var nolasīt no informācijas paneļa (nav nepieciešama papildu autentifikācija, izņemot piekļušanu informācijas paneļa resursdatoram). > Abi HTTP transporti ir aizsargāti ar `settings.mcpEnabled` un `settings.mcpTransport` — neatbilstība transportam atgriež `400`, MCP atspējotais stāvoklis atgriež `503`. ## A2A serveris OmniRoute nodrošina A2A (Agent-to-Agent) JSON-RPC 2.0 galapunktu plus REST apvalku pārbaudes/darbības paneļa lietošanai. ### JSON-RPC ```bash POST /a2a Authorization: Bearer your-api-key # nav obligāti, ja OMNIROUTE_API_KEY nav iestatīts Content-Type: application/json { "jsonrpc": "2.0", "id": 1, "method": "message/send", "params": { "skill": "smart-routing", "messages": [{"role": "user", "content": "Route this coding task"}] } } ``` Atbalstītās metodes (visas tiek kontrolētas ar `settings.a2aEnabled`): | Metode | Apraksts | | ---------------- | --------------------------------------------------------------- | | `message/send` | Sinhrona prasmes izpilde; atgriež `{task, artifacts, metadata}` | | `message/stream` | Straumēšanas SSE izpilde tai pašai prasmju kopai | | `tasks/get` | Iegūt uzdevumu pēc `taskId` | | `tasks/cancel` | Atcelt uzdevumu pēc `taskId` | Iebūvētās prasmes: `smart-routing`, `quota-management`, `provider-discovery`, `cost-analysis`, `health-report`. ### Aģenta karte ```bash GET /.well-known/agent.json ``` Atgriež publisko A2A aģenta karti (nosaukums, apraksts, iespējas, prasmju katalogs, autentifikācijas shēma) — publiski kešota 1 stundu. Nav nepieciešama autentifikācija. ### REST palīgrīki | Metode | Ceļš | Apraksts | | ------ | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------- | | GET | `/api/a2a/status` | A2A iespējots + uzdevumu statistika + kešotās aģenta kartes kopsavilkums | | GET | `/api/a2a/tasks` | Uzdevumu saraksts — `?state=submitted\|working\|completed\|failed\|cancelled`, `?skill=`, `?limit=` (≤200), `?offset=` | | POST | `/api/a2a/tasks` | (Nav īstenots kā REST palīgrīks — izveidojiet caur JSON-RPC `message/send`) | | GET | `/api/a2a/tasks/[id]` | Iegūt vienu uzdevumu | | POST | `/api/a2a/tasks/[id]/cancel` | Atcelt uzdevumu | **Autentifikācija:** REST palīgrīki darbojas bez pārvaldības autentifikācijas (pieejami lasīšanai no paneļa); JSON-RPC `/a2a` maršruts izmanto Bearer `OMNIROUTE_API_KEY`, ja tas ir konfigurēts. --- ## Mākoņi, Vērtēšana un Novērtēšana | Metode | Ceļš | Apraksts | | ------ | ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | | POST | `/api/cloud/auth` | Verificēt Bearer atslēgu un atgriezt maskētus pakalpojumu sniedzēju savienojumus + modeļu alosijas mākoņa sinhronizācijas klientiem | | POST | `/api/cloud/credentials/update` | Atjaunināt šifrētos akreditācijas datus mākoņa sinhronizētam pakalpojumu sniedzējam | | POST | `/api/cloud/model/resolve` | Atrisināt loģisko modeļa ID uz konkrētu pakalpojumu sniedzēju/modeli, izmantojot lokālo maršrutēšanas tabulu | | GET | `/api/cloud/models/alias` | Uzskaitīt modeļu alosijas, kādas tiek rādītas mākoņa sinhronizācijai | | GET | `/api/assess` | Lasīt jaunākās novērtēšanas kategorizācijas (katram pakalpojumu sniedzējam/modelim) | | POST | `/api/assess` | Veikt novērtēšanu — ķermenis: `{scope: {type:"all"} | {type:"provider", providerId} | {type:"model", modelId}, trigger?}` | | GET | `/api/evals` | Uzskaitīt iebūvētos vērtēšanas komplektus + jaunākos palaišanas | | POST | `/api/evals` | Sākt vērtēšanas palaišanu | | POST | `/api/evals/suites` | Izveidot pielāgotu vērtēšanas komplektu — ķermenis validēts ar `evalSuiteSaveSchema` | | GET | `/api/evals/suites/[id]` | Iegūt pielāgotu vērtēšanas komplektu | **Autentifikācija:** `/api/cloud/auth` verificē Bearer atslēgu tieši; citi `/api/cloud/*`, `/api/evals/*` un `/api/assess` maršruti prasa pārvaldības sesiju/API atslēgu. `/api/assess` POST izmanto `validateBody` ar diskriminējošas kopas shēmu. ## ACP (Agent Client Protocol) pārvaldība kā bērnu procesus. Šie galapunkti pārvalda ACP aģentu noteikšanu un pielāgoto aģentu reģistrāciju. | Metode | Ceļš | Apraksts | | ------ | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | GET | `/api/acp/agents` | Uzskaitīt visus zināmos CLI aģentus (iebūvētos + pielāgoto) ar instalācijas statusu, versiju, bināro failu | | POST | `/api/acp/agents` | Reģistrēt pielāgoto ACP aģentu vai atsvaidzināt kešatmiņu — korpuss: `{id, name, binary, versionCommand, providerAlias, spawnArgs, protocol}` vai `{action: "refresh"}` | | DELETE | `/api/acp/agents` | Noņemt pielāgoto ACP aģentu — vaicājuma parametrs: `?id=` | **Atbildes piemērs** (`GET /api/acp/agents`): ```json { "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 } ``` **Autentifikācija:** Nepieciešama pārvaldības sesija (paneļa `auth_token` sīkfailu) vai pārvaldības mēroga API atslēga. Skatiet [ACP Framework](../frameworks/ACP.md) pilnīgai informācijai. --- ## Analītika un novērošana Reāllaika analītikas galapunkti maršrutēšanas, saspiešanas un sniedzēju daudzveidības monitoringam. Tie nodrošina `/dashboard/analytics/*` lapas. ### Automātiskās maršrutēšanas analītika | Metode | Ceļš | Apraksts | | ------ | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------- | | GET | `/api/analytics/auto-routing` | Agregētā automātiskās maršrutēšanas statistika: kopējie zvani, stratēģiju sadalījums, līmeņu sadalījums, vadošie sniedzēji | | GET | `/api/analytics/auto-routing?days=7` | Laika loga statistika (noklusējums 24 stundas) | **Atbildes piemērs**: ```json { "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 } ] } ``` ### Saspiešanas analītika | Metode | Ceļš | Apraksts | | ------ | ---------------------------- | ------------------------------------------------------------------------------------------------------- | | GET | `/api/analytics/compression` | Agregētā saspiešanas statistika: ietaupītie tokeni, ietaupījumu %, režīmu sadalījums, dzinēju lietojums | **Atbildes piemērs**: ```json { "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 } } ``` ### Sniedzēju daudzveidības izsekošana | Metode | Ceļš | Apraksts | | ------ | -------------------------- | -------------------------------------------------------------------------------------------------------------------- | | GET | `/api/analytics/diversity` | Daudzveidības izsekošana, kura pamatā ir Šenona entropija: novērš vienīgus kļūmes avotus, mērot sniedzēju sadalījumu | **Atbildes piemērs**: ```json { "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 veido 40% datplūsmas — apsveriet daudzveidību"] } ``` **Autentifikācija:** Nepieciešama pārvaldības sesija vai pārvaldības mēroga API atslēga. --- ## Administrēšanas darbības Tikai administratoriem pieejamie galapunkti operatīvai pārvaldībai. | Metode | Ceļš | Apraksts | | ------ | ------------------------ | ---------------------------------------------------------------------------------------------------------- | | GET | `/api/admin/concurrency` | Nolasīt pašreizējos konkurējošo pieprasījumu ierobežojumus (globālus + katram pakalpojumu sniedzējam) | | POST | `/api/admin/concurrency` | Atjaunināt konkurences ierobežojumus — ķermenis: `{global?: number, perProvider?: Record}` | **Autentifikācija:** Nepieciešama vadības sesija ar administratora piekļuvi. --- ## CLI rīku pārvaldība Pārvaldīt CLI rīkus, kas integrējas ar OmniRoute (antigravity, chipotle, commandCode, devin-cli u.c.). Pilnu sarakstu skatiet [Pakalpojumu sniedzēju atsauces](./PROVIDER_REFERENCE.md). | Metode | Ceļš | Apraksts | | ------ | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | GET | `/api/cli-tools/all-statuses` | Visu CLI rīku statuss (instalēts, versija, pēdējoreiz redzēts) | | GET | `/api/cli-tools/status` | Viena CLI rīka statusa detaļas (`?tool=` vaicājums) | | POST | `/api/cli-tools/apply` | Ierakstīt rīka ģenerēto konfigurāciju (`dryRun` priekšskatījums; `422` + `containerEphemeralTarget`, ja iepakots; `migration` norāda veco Codex YAML) | | GET | `/api/cli-tools/backups` | Uzskaitīt CLI rīku konfigurāciju dublējumkopijas | | POST | `/api/cli-tools/backups` | Izveidot dublējumkopiju no visām CLI rīku konfigurācijām | | POST | `/api/cli-tools/backups` | Atjaunot: tas pats galapunkts ar `{tool, backupId}` ķermenī atjauno šo dublējumkopiju | | GET | `/api/cli-tools/antigravity-mitm` | Antigravity MITM starpniekservera statuss (CLI rīks "antigravity-mitm") | | POST | `/api/cli-tools/antigravity-mitm/alias` | Konfigurēt antigravity-mitm aliases | **Autentifikācija:** Nepieciešama vadības sesija. --- ## Aģentu prasmes Pārvaldīt AI aģentu prasmes (līdzīgas OpenAI pielāgotajiem GPT, bet aģentiem). | Metode | Ceļš | Apraksts | | ------ | ---------------------------- | ------------------------------------------------------------------------------------------------ | | GET | `/api/agent-skills` | Uzskaitīt visas aģentu prasmes (iestrādātās + pielāgotās) | | GET | `/api/agent-skills/[id]` | Iegūt konkrētu aģenta prasmi | | POST | `/api/agent-skills` | Izveidot pielāgotu aģenta prasmi — ķermenis: `{name, description, prompt, model?, temperature?}` | | PUT | `/api/agent-skills/[id]` | Atjaunināt pielāgotu aģenta prasmi | | DELETE | `/api/agent-skills/[id]` | Dzēst pielāgotu aģenta prasmi | | GET | `/api/agent-skills/[id]/raw` | Iegūt neapstrādātu uzvedni + metadatus (bez izpildes) | | POST | `/api/agent-skills/generate` | AI ģenerēt jaunu prasmi no dabiskās valodas apraksta | **Autentifikācija:** Nepieciešama vadības sesija vai ar vadības jomu saistīta API atslēga. --- ## Cache pārvaldība Pārvaldiet semantisko kešatmiņu un racionālo kešatmiņu. | Metode | Ceļš | Apraksts | | ------ | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------- | | GET | `/api/cache` | Kešatmiņas pārskats: kopējais ierakstu skaits, trāpījumu līmenis, lielums diskā | | GET | `/api/cache/entries` | Uzskaitīt kešatmiņas ierakstus (ar lapošanu) | | DELETE | `/api/cache/entries` | Dzēst kešatmiņas ierakstus (filtrēt pēc vaicājuma parametriem) | | GET | `/api/cache/stats` | Detalizēta kešatmiņas statistika (pēc pakalpojuma sniedzēja, pēc modeļa) | | GET | `/api/cache/reasoning` | Racionālās kešatmiņas statuss (racionālās atskaņošanai) | | DELETE | `/api/cache/reasoning` | Notīrīt racionālo kešatmiņu — vaicājuma parametri: `?toolCallId=` (viens) vai `?provider=

` vai bez parametriem (visi) | **Autentifikācija:** Nepieciešama pārvaldības sesija. --- ## Atmiņas sistēma Pārvaldiet pastāvīgo atmiņu (FTS5 + vektoru iegulšana). | Metode | Ceļš | Apraksts | | ------ | ------------------ | ------------------------------------------------------------------------------- | | GET | `/api/memory` | Uzskaitīt atmiņas ierakstus (filtrēt pēc tvēruma, tipa, meklēšanas vaicājuma) | | POST | `/api/memory` | Izveidot jaunu atmiņas ierakstu — ķermenis: `{scope, type, content, metadata?}` | | GET | `/api/memory/[id]` | Iegūt konkrētu atmiņas ierakstu | | PUT | `/api/memory/[id]` | Atjaunināt atmiņas ierakstu | | DELETE | `/api/memory/[id]` | Dzēst atmiņas ierakstu | | GET | `/api/memory?q=` | Meklēt atmiņā (FTS5 + vektori) — statistika iekļauta tajā pašā atbildē | **Autentifikācija:** Nepieciešama pārvaldības sesija vai pārvaldības tvēruma API atslēga. --- ## Tīmekļa āķi Pārvaldiet tīmekļa āķu abonementus notikumiem. | Metode | Ceļš | Apraksts | | ------ | ------------------------------- | ------------------------------------------------------------------------------- | | GET | `/api/webhooks` | Uzskaitīt visus tīmekļa āķu abonementus | | POST | `/api/webhooks` | Izveidot tīmekļa āķa abonementu — ķermenis: `{url, events[], secret?, active?}` | | GET | `/api/webhooks/[id]` | Iegūt konkrētu tīmekļa āķa abonementu | | PUT | `/api/webhooks/[id]` | Atjaunināt tīmekļa āķa abonementu | | DELETE | `/api/webhooks/[id]` | Dzēst tīmekļa āķa abonementu | | GET | `/api/webhooks/[id]/deliveries` | Uzskaitīt tīmekļa āķa piegādes vēsturi (veiksmes/neveiksmes žurnāls) | | POST | `/api/webhooks/[id]/test` | Sūtīt testa notikumu uz tīmekļa āķu | **Autentifikācija:** Nepieciešama pārvaldības sesija. Skatiet [Tīmekļa āķu framework](../frameworks/WEBHOOKS.md) pilnotiem notikumu tipiem. --- ## Prasmju ietvars Pārvaldiet prasmes (aģentu paplašinājumu ietvars). | Metode | Ceļš | Apraksts | | ------ | ------------------------ | ---------------------------------------------------------------------------------------------- | | GET | `/api/skills` | Uzskaitīt visas instalētās prasmes (iebūvētas + pielāgotas) | | POST | `/api/skills/install` | Instalēt prasmi no lokālā ceļa vai URL | | DELETE | `/api/skills/[id]` | Atinstalēt prasmi | | PUT | `/api/skills/[id]` | Iespējot vai atspējot prasmi — ķermenis: `{enabled?: boolean, mode?: "on" \| "off" \| "auto"}` | | POST | `/api/skills/executions` | Izpildīt prasmi — ķermenis: `{skillName, apiKeyId, input?, sessionId?}` | | GET | `/api/skills/executions` | Uzskaitīt izpildes vēsturi visām prasmēm (filtrēt pēc `?apiKeyId=`) | **Autentifikācija:** Nepieciešama pārvaldības sesija vai pārvaldības mērogā API atslēga. Skatiet [Prasmju ietvars](../frameworks/SKILLS.md) pilnai informācijai. --- ## Spraudņi Pārvaldiet OmniRoute spraudņus (trešo pušu paplašinājumus). | Metode | Ceļš | Apraksts | | ------ | ---------------------------------- | --------------------------------- | | GET | `/api/plugins` | Uzskaitīt instalētos spraudņus | | POST | `/api/plugins/marketplace/install` | Instalēt spraudni no tirgus | | DELETE | `/api/plugins/[name]` | Atinstalēt spraudni | | POST | `/api/plugins/[name]/activate` | Aktivizēt spraudni | | POST | `/api/plugins/[name]/deactivate` | Deaktivizēt spraudni | | GET | `/api/plugins/[name]/config` | Iegūt spraudņa konfigurāciju | | PUT | `/api/plugins/[name]/config` | Atjaunināt spraudņa konfigurāciju | **Autentifikācija:** Nepieciešama pārvaldības sesija. Skatiet [Spraudņu ietvars](../frameworks/PLUGIN_SDK.md) pilnai informācijai. --- ## Ēnu maršrutēšana Ēnu / A-B pakalpojumu sniedzēju salīdzināšana **nav patstāvīga REST saskarne** — tā tiek konfigurēta, izmantojot kombinēto maršrutēšanu (sk. [Auto-Kombo](../routing/AUTO-COMBO.md)). Katras kombinācijas salīdzināšanas metriku dati tiek nodrošināti ar `GET /api/combos/metrics`. --- ## Aizsargmehānismi Inspektējiet izpildlaika aizsargmehānismus (PII noteikšana, uzvednes injekcijas noteikšana, redzes pārraide). Aizsargmehānismi darbojas katram pieprasījumam; atslēgšana katram izsaukumam notiek ar `x-omniroute-disabled-guardrails` pieprasījuma galveni — nav saglabātas iespējošanas/atspējošanas saskarnes. | Metode | Ceļš | Apraksts | | ------ | ---------------------- | ---------------------------------------------------------------------------------------------------- | | GET | `/api/guardrails` | Uzskaitīt reģistrētos aizsargmehānismus un to statusu (nosaukums / iespējots / prioritāte) | | POST | `/api/guardrails/test` | Sausā palaist pirmsizsaukuma konveijeru uz parauga ievadi — ķermenis: `{input, disabledGuardrails?}` | **Autentifikācija:** Nepieciešama pārvaldības sesija. Skatiet [Drošība > Aizsargmehānismi](../security/GUARDRAILS.md) pilnai informācijai. --- --- ## Autentifikācija Skatiet [Vadības autentifikāciju](../guides/MANAGEMENT-AUTH.md) par četrām akreditīviju grupām (darbvirsmas sesija, lokālā CLI marķieris, `oma_live_…` piekļuves marķieris, vadības mēroga API atslēga) un to, kā tās atšķiras no inferences atslēgām. - Darbvirsmas maršruti (`/dashboard/*`) izmanto `auth_token` sīkfailu - Pieteikšanās izmanto saglabāto paroles hash; atkāpjas uz `INITIAL_PASSWORD` - `requireLogin` var pārslēgt, izmantojot `/api/settings/require-login` - `/v1/*` maršruri pēc izvēles prasa Bearer API atslēgu, ja `REQUIRE_API_KEY=true` - "vadības marķieris" / "vadības mēroga API atslēga" šajā atsaucē nozīmē vienu no grupām šajā rokasgrāmatā — nevis noteiktu papildu slepenības tipu > **Pārtraucošs mainījums (v3.8.0)** — `/api/v1/agents/tasks/*` un atdzesēšanas > vadības galapunkti tagad prasa **vadības autentifikāciju** (darbvirsmas > `auth_token` sīkfailu vai vadības mēroga API atslēgu). Klienti, kas iepriekš > izsauca šos maršrutus bez autentifikācijas, saņems `401 Unauthorized`. > Skatiet kommitu `588a0333` (`fix(auth): require management auth for agent and cooldown APIs`).