Batch 1 of the locale expansion: Greek, Croatian, Serbian, Lithuanian, Estonian, Latvian, Slovenian, Maltese and Irish across the dashboard catalog, docs mirrors, CLI catalog, README, locale index and the site. 42 → 51 locales. Also fixes the ICU literal escape the translation backend dropped around angle placeholders, four translations that invented or renamed a placeholder, the language bars that linked to mirrors that do not exist, and the migration count drift (171 → 172). ⚠️ base-red inherited: #12732 — the four unit shards and Fast Quality Gates fail identically on unrelated PRs cut from the same base.
156 KiB
API_REFERENCE (Ελληνικά)
🌐 Languages: 🇺🇸 English · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇮🇩 id · 🇮🇹 it · 🇯🇵 ja · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇳🇱 nl · 🇳🇴 no · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇻🇳 vi · 🇨🇳 zh-CN · 🇹🇼 zh-TW
title: "API Reference" version: 3.8.51 lastUpdated: 2026-08-31
Αναφορά API
🌐 Languages: 🇺🇸 English · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇮🇩 id · 🇮🇹 it · 🇯🇵 ja · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇳🇱 nl · 🇳🇴 no · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇻🇳 vi · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Βασική αναφορά για το OmniRoute API. Καλύπτει την δημόσια επιφάνεια /v1 και τα πιο χρησιμοποιούμενα endpoints διαχείρισης· το αναγνώσιμο από μηχανές docs/openapi.yaml και το δέντρο διαδρομών κάτω από src/app/api/ αποτελούν τις εξαντλητικές πηγές.
Πίνακας Περιεχομένων
- Ολοκληρώσεις Συνομιλίας
- Αποκλειστικές Μισθώσεις Διαχειριζόμενης Συνεδρίας
- Ενσωματώσεις
- Δημιουργία Εικόνων
- OCR Εγγράφων
- Λίστα Μοντέλων
- Μανιφέστο Πρόσθετου Παρόχου
- Endpoints Συμβατότητας
- API Αρχείων
- API Δεσμίδων
- API Αναζήτησης
- Ροή WebSocket
- Ποσοστώσεις & Αναφορά Προβλημάτων
- Σημασιολογική Κρυφή Μνήμη
- Πίνακας Ελέγχου & Διαχείριση
- Διαχείριση Combo
- Webhooks
- Εγγεγραμμένα Κλειδιά (Αυτόματη Διαχείριση)
- Πρωτόκολλο Πρακτόρων
- Διαχειριστικές Διαμεσολαβήσεις
- Ανθεκτικότητα (εκτεταμένη)
- Δεξιότητες
- Μνήμη
- MCP Server
- A2A Server
- Νέφος, Αξιολογήσεις & Εκτίμηση
- Επεξεργασία Αιτημάτων
- Αυθεντικοποίηση
Ολοκλήρωση Συνομιλιών
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
}
Προσαρμοσμένες Κεφαλίδες
| Κεφαλίδα | Κατεύθυνση | Περιγραφή |
|---|---|---|
X-OmniRoute-No-Cache |
Αίτημα | Ορίστε σε true για παράκαμψη της κρυφής μνήμης |
x-omniroute-no-memory |
Αίτημα | Ορίστε σε true για παράλειψη της έγχυσης μνήμης + δεξιοτήτων για αυτό το αίτημα (αντικατοπτρίζει το no-cache· αποφεύγει το ανά-κλήση κόστος tokens) |
X-OmniRoute-Progress |
Αίτημα | Ορίστε σε true για συμβάντα προόδου |
X-Session-Id |
Αίτημα | Κλειδί σταθερής συνεδρίας για εξωτερική συγγένεια συνεδρίας |
x_session_id |
Αίτημα | Η παραλλαγή με κάτω παύλα γίνεται επίσης αποδεκτή (άμεσο HTTP) |
X-OmniRoute-Session-Id |
Αίτημα | Ετικέτα συνεδρίας/συνομιλίας που παρέχεται από τον καλούντα (τροφοδοτεί επίσης τη μνήμη). Όταν υπάρχει, αποθηκεύεται αυτούσια στο call_logs.session_tag για αποδοχή κόστους ανά συνεδρία (#8249) — δεν συντίθεται ποτέ όταν απουσιάζει |
Idempotency-Key |
Αίτημα | Κλειδί αποκλεισμού διπλοτύπων (παράθυρο 5s) |
X-Request-Id |
Αίτημα | Εναλλακτικό κλειδί αποκλεισμού διπλοτύπων |
X-OmniRoute-Cache |
Απόκριση | HIT ή MISS (μη ροϊκό) |
X-OmniRoute-Idempotent |
Απόκριση | true εάν απαλείφθηκαν διπλότυπα |
X-OmniRoute-Progress |
Απόκριση | enabled εάν η παρακολούθηση προόδου είναι ενεργή |
X-OmniRoute-Session-Id |
Απόκριση | Πραγματικό αναγνωριστικό συνεδρίας που χρησιμοποιείται από το OmniRoute |
X-OmniRoute-Request-Id |
Απόκριση | Αναγνωριστικό συσχέτισης αιτήματος (όταν είναι γνωστό) |
X-OmniRoute-Version |
Απόκριση | Έκδοση κατασκευής OmniRoute (πάντα παρούσα) |
X-OmniRoute-Cost-Saved |
Απόκριση | Δολάρια USD που εξοικονομήθηκαν από την κρυφή μνήμη σε HIT (μόνο για επιτυχίες κρυφής μνήμης) |
X-OmniRoute-Decision |
Απόκριση | Ίχνος δρομολόγησης: strategy=<name>; provider=<alias>; latency_ms=<n> (<name> είναι η στρατηγική συνδυασμού, ή single για μη-συνδυαστικό αίτημα) — πάντα παρόν στις αποκρίσεις ολοκλήρωσης |
Σημείωση Nginx: εάν βασίζεστε σε κεφαλίδες με κάτω παύλα (για παράδειγμα
x_session_id), ενεργοποιήστε τοunderscores_in_headers on;.
Κεφαλίδες τηλεμετρίας κόστους: οι μη ροϊκές αποκρίσεις επιτυχίας φέρουν επίσης το σύνολο κεφαλίδων τηλεμετρίας κόστους
X-OmniRoute-*—X-OmniRoute-Response-Cost(USD, σταθερά 10 δεκαδικά·0.0000000000για δωρεάν/μη τιμολογημένα),X-OmniRoute-Tokens-In/X-OmniRoute-Tokens-Out,X-OmniRoute-Model,X-OmniRoute-Provider,X-OmniRoute-Latency-Ms,X-OmniRoute-Cache-Hit, καιX-OmniRoute-Fallback-Attempts(μόνο όταν > 0), καθώς καιX-OmniRoute-Request-IdκαιX-OmniRoute-Version. Αυτές εκπέμπονται από ολοκληρώσεις συνομιλιών,/v1/responses,/v1/messages, και τα τελικά σημεία πολυμέσων —/v1/embeddings,/v1/images/generations,/v1/audio/speech,/v1/audio/transcriptions,/v1/rerank,/v1/videos/generations,/v1/music/generations, και/v1/moderations(πάντα κόστος0). Το κόστος πολυμέσων υπολογίζεται ανά τρόπο (ανά εικόνα, ανά δευτερόλεπτο, ανά χαρακτήρα, ανά μονάδα αναζήτησης) όταν υπάρχουν διαθέσιμες τιμές, διαφορετικά0(ανοιχτή αποτυχία).
Σημασιολογία κόστους επιτυχίας κρυφής μνήμης: σε σημασιολογική HIT κρυφής μνήμης (
X-OmniRoute-Cache-Hit: true) δεν πραγματοποιείται upstream κλήση, οπότε τοX-OmniRoute-Response-Costείναι0.0000000000(το επιπλέον κόστος εξυπηρέτησης της επιτυχίας). Το αρχικό/υποθετικό κόστος αναφέρεται ξεχωριστά στοX-OmniRoute-Cost-Saved. Οι καταναλωτές χρέωσης θα πρέπει να αθροίζουν τοX-OmniRoute-Response-Cost(οι επιτυχίες δεν έχουν κόστος)· η ανάλυση κρυφής μνήμης μπορεί να συγκεντρώνει τοX-OmniRoute-Cost-Saved.
Αποκλειστικές Μισθώσεις Διαχειριζόμενης Συνεδρίας
Η αποκλειστική μίσθωση διαχειριζόμενης συνεδρίας είναι ένα προαιρετικό, ουδέτερο ως προς τον πελάτη συμβόλαιο δρομολόγησης: ένας ενεργός κάτοχος διατηρεί μία επιλέξιμη σύνδεση OmniRoute. Δεν μισθώνει μοντέλο, δεν απαιτεί OAuth, δεν αναγνωρίζει συγκεκριμένο πελάτη και δεν απαιτεί συγκεκριμένο πάροχο.
Το κλειδί API που χρησιμοποιείται για την πιστοποίηση πρέπει να έχει εμβέλεια lease:exclusive και μια ρητή μη κενή λίστα allowedConnections. Το όριο μετάλλαξης της βάσης δεδομένων επιβάλλει και τα δύο πεδία μαζί κατά τη δημιουργία κλειδιού και τις μερικές ενημερώσεις.
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"}
Οι επιτυχείς αποκρίσεις απόκτησης, ανανέωσης και αποδέσμευσης εκθέτουν χρονικές σφραγίδες, state και την ακριβή θετική generation, αλλά ποτέ την επιλεγμένη σύνδεση ή τα διαπιστευτήρια. Η ανανέωση και η αποδέσμευση παρέχουν την generation στο σώμα JSON:
{ "action": "renew", "generation": 1 }
{ "action": "release", "generation": 1, "reason": "OWNER_EXIT" }
Ένας ενεργός κάτοχος μίσθωσης μπορεί να ζητήσει ρητά μεταδεδομένα εμφάνισης που διασφαλίζουν την ιδιωτικότητα για την τρέχουσα δέσμευσή του:
{ "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"
}
}
Αυτή η προαιρετική ενέργεια κατάστασης φράσσεται από τον αδιαφανή κάτοχο, το πιστοποιημένο διαχειριζόμενο κλειδί API και την ακριβή ενεργή generation σε μία συναλλαγή βάσης δεδομένων. Το displayName είναι μόνο το διαμορφωμένο όνομα σύνδεσης μετά από περικοπή κενών· είναι null όταν δεν υπάρχει ασφαλές διαμορφωμένο όνομα. Το OmniRoute δεν υποκαθιστά ποτέ μια διεύθυνση email ή μια δημιουργημένη ταυτότητα λογαριασμού. Η τιμή του παρόχου είναι μια μη ευαίσθητη ετικέτα εμφάνισης και ποτέ ένα δημιουργημένο αναγνωριστικό συμβατού παρόχου. Διαπιστευτήρια, tokens, cookies, ακατέργαστα αναγνωριστικά σύνδεσης ή κλειδιού API, κατακερματισμοί κατόχου, μυστικά φράγματος και εσωτερικά δεδομένα δρομολόγησης εξαιρούνται.
Οι αναζητήσεις με λάθος κλειδί, λάθος κάτοχο, παρωχημένη generation, ανύπαρκτη, ληγμένη, αποδεσμευμένη ή ακυρωμένη μίσθωση επιστρέφουν όλες το ίδιο σφάλμα 409 LEASE_FENCE_STALE χωρίς μεταδεδομένα σύνδεσης. Ένας πελάτης που έλαβε την απόκριση αναμονής χωρητικότητας δεν έχει ενεργή δέσμευση για επιθεώρηση. Όταν η δρομολόγηση μεταβαίνει μια ενεργή μίσθωση, η ίδια generation παραμένει έγκυρη και η κατάσταση επιστρέφει ατομικά τη νέα δέσμευση, ποτέ την παλιά. Οι υπάρχοντες πελάτες παραμένουν αμετάβλητοι, καθώς οι αποκρίσεις απόκτησης, ανανέωσης, αποδέσμευσης και αναμονής διατηρούν τα προηγούμενα σχήματά τους.
Αυτό το συμβόλαιο διακομιστή δεν αλλάζει το stock OpenAI Codex /status. Το stock Codex αναφέρει αυτήν τη στιγμή τον πάροχο μοντέλου και την ενσωματωμένη κατάσταση πιστοποίησης/λογαριασμού, αλλά δεν αποδίδει αυθαίρετα μεταδεδομένα λογαριασμού προσαρμοσμένου παρόχου· μια μεταγενέστερη ενσωμάτωση πελάτη πρέπει να καλέσει αυτήν την ενέργεια και να αποφασίσει πώς θα εμφανίσει το connection.displayName.
Κάθε διαχειριζόμενο αίτημα συμπερασμού παρέχει έπειτα και τις δύο κεφαλίδες ελέγχου:
X-OmniRoute-Lease-Owner: vlo_<43-base64url-characters>
X-OmniRoute-Lease-Generation: 1
Ο ακριβής κάτοχος, η generation, η ενεργή σύνδεση και το πιστοποιημένο κλειδί API φράσσονται αμέσως πριν από κάθε υποστηριζόμενη απόπειρα upstream. Η αναπαραγωγή κατόχου και generation με άλλο κλειδί αποτυγχάνει ακόμη και όταν αυτό το κλειδί επιτρέπει την ίδια σύνδεση. Οι ακατέργαστοι κάτοχοι δεν διατηρούνται, δεν καταγράφονται, δεν αποθηκεύονται στο στιγμιότυπο αιτήματος και δεν προωθούνται upstream.
Η προσωρινή διαμάχη επιστρέφει HTTP 429 με Retry-After και:
{
"state": "WAITING_FOR_CAPACITY",
"error": { "type": "lease_error", "code": "LEASE_CAPACITY_UNAVAILABLE" },
"reason": "NO_FREE_ELIGIBLE_CONNECTION",
"retryAfter": 30
}
Αυτή η απόκριση σημαίνει μόνο ότι το κανονικό επιλέξιμο σύνολο ήταν μη κενό και κάθε ελεύθερος υποψήφιος κατεχόταν από μια ξένη ενεργή μίσθωση. Μη υποστηριζόμενα μοντέλα/πάροχοι, αναντιστοιχία πολιτικής, περίοδος ψύξης, ποσόστωση, υγεία και άλλες συνήθεις αποτυχίες επιλεξιμότητας διατηρούν τις υπάρχουσες αποκρίσεις OmniRoute.
x-omniroute-compression
Παράκαμψη ανά αίτημα του πλάνου συμπίεσης. Υψηλότερη προτεραιότητα — υπερισχύει της παράκαμψης combo δρομολόγησης, του ενεργού προφίλ, της αυτόματης ενεργοποίησης και της Προεπιλογής πίνακα. Τιμές:
| Τιμή | Αποτέλεσμα |
|---|---|
off |
Καμία συμπίεση για αυτό το αίτημα. |
default |
Το προεπιλεγμένο προφίλ που προκύπτει από τον πίνακα (αγνοεί το ενεργό προφίλ). |
engine:<id> |
Μεμονωμένη μηχανή όταν είναι ενεργοποιημένη, π.χ. engine:rtk. |
<combo> |
Ένα ονομαστό combo, αντιστοιχισμένο κατ' όνομα (χωρίς διάκριση πεζών/κεφαλαίων) πρώτα, έπειτα κατά id. |
Σημειώσεις:
- Άγνωστες τιμές αγνοούνται (το αίτημα δεν απορρίπτεται ποτέ)· η επίλυση διαπερνά στην κανονική προτεραιότητα χειριστή.
- Αν πολλά combo μοιράζονται ένα όνομα, περάστε το id του combo για ντετερμινιστική αντιστοίχιση.
- Ένα combo με όνομα
offήdefaultδεν μπορεί να επιλεγεί κατ' όνομα (αυτές οι λέξεις-κλειδιά ερμηνεύονται πρώτα)· αναφερθείτε σε τέτοιο combo μέσω του id του. - Ο κεντρικός διακόπτης συμπίεσης είναι αυστηρή πύλη: όταν η συμπίεση είναι απενεργοποιημένη καθολικά, αυτή η κεφαλίδα δεν μπορεί να την ενεργοποιήσει.
Το εφαρμοσμένο πλάνο αντηχείται πίσω στην κεφαλίδα απόκρισης:
X-OmniRoute-Compression: <mode>; source=<source>
όπου <source> είναι ένα από τα εξής: request-header, routing-override, active-profile, auto-trigger, default ή off.
Ενσωματώσεις (Embeddings)
POST /v1/embeddings
Authorization: Bearer your-api-key
Content-Type: application/json
{
"model": "nebius/Qwen/Qwen3-Embedding-8B",
"input": "The food was delicious"
}
Διαθέσιμοι πάροχοι: Nebius, OpenAI, Mistral, Together AI, Fireworks, NVIDIA, OpenRouter, Jina AI.
Τα αναγνωριστικά καταλόγου έχουν τη μορφή provider/model (παράδειγμα: jina-ai/jina-embeddings-v5-omni-small). Επίσης αναλύονται αναγνωριστικά μοντέλων Jina χωρίς πρόθεμα που εμφανίζονται στο μητρώο (για παράδειγμα jina-embeddings-v5-text-small, jina-reranker-v3.5). Για τις λειτουργίες embed/rerank/classify/segment της Jina χρησιμοποιούνται κατά προτεραιότητα τα διαπιστευτήρια jina-ai του πίνακα ελέγχου· το JINA_AI_API_KEY αποτελεί εναλλακτική μόνο όταν δεν υπάρχει κλειδί πίνακα ελέγχου. Η κάρτα jina-reader αφορά αποκλειστικά το Reader / r.jina.ai (POST /v1/web/fetch) και δεν εξυπηρετεί ποτέ embeddings ή rerank.
Τα μοντέλα του μητρώου που διαφημίζουν υποστήριξη πολλαπλών τρόπων (multimodal) δέχονται επίσης έως 32 δομημένα στοιχεία ανεξάρτητα παρόχου. Οι τύποι στοιχείων πολυμέσων είναι text, image, audio, video και document. Η πηγή (source) πολυμέσων τους είναι είτε {"type":"url","url":"https://..."} είτε {"type":"base64","data":"...","media_type":"..."}.
Το Jina v5 Omni (jina-ai/jina-embeddings-v5-omni-small, jina-ai/jina-embeddings-v5-omni-nano, και το ψευδώνυμο οικογένειας jina-ai/jina-embeddings-v5-omni → omni-small) δέχεται επίσης την εγγενή τεκμηρίωση EmbeddingsV5Request της Jina και τα προωθεί αυτούσια στο https://api.jina.ai/v1/embeddings:
{
"model": "jina-ai/jina-embeddings-v5-omni-small",
"task": "retrieval.query",
"normalized": true,
"input": [
{ "text": "a red bicycle" },
{ "image": "https://example.com/bike.png" },
{
"content": [{ "text": "caption" }, { "image": "data:image/png;base64,..." }]
}
]
}
Οι εγγενείς τιμές { image | audio | video | pdf } μπορεί να είναι δημόσιο URL HTTPS, URI data: ή ακατέργαστο base64. Το OmniRoute δεν μετατρέπει αυτά τα αντικείμενα σε συμβολοσειρές ούτε ανακτά εγγενή URL εικόνων — η Jina ανακτά τα δημόσια πολυμέσα μόνη της. Επιπλέον πεδία Jina (task, normalized, truncate, embedding_type) προωθούνται. Τα SKU Jina αποκλειστικά κειμένου εξακολουθούν να απορρίπτουν έγγραφα που δεν είναι κείμενο.
Ασφάλεια και όρια μεταφοράς:
- Τα URL απομακρυσμένων πολυμέσων πρέπει να είναι δημόσια HTTPS. Τα κανονικά στοιχεία
{type,source:url}ανακτώνται από την πλευρά του διακομιστή (επαναεπικύρωση ανακατευθύνσεων, χρονικό όριο, όρια μεγέθους, δημόσιο DNS, σύνδεση pinning) και ενσωματώνονται πριν από την κλήση παρόχου. Τα εγγενή στοιχεία Jina{image:"https://..."}προωθούνται ως έχουν μετά τον ίδιο έλεγχο δημοσίου HTTPS· η Jina ανακτά το URL. - Τα ενσωματωμένα πολυμέσα base64 περιορίζονται σε 8 MiB αποκωδικοποιημένα ανά στοιχείο και 16 MiB αποκωδικοποιημένα συνολικά στο αίτημα.
Μετάφραση παρόχου (τα κανονικά στοιχεία δεν προωθούνται ποτέ αναλλοίωτα):
- Μοντέλα Jina πολλαπλών τρόπων: κάθε στοιχείο ανώτατου επιπέδου γίνεται ένα αντικείμενο με κλειδί βάσει τρόπου (
text/image/audio/video/pdf) χρησιμοποιώντας URI data για ενσωματωμένα πολυμέσα· ένα διάνυσμα ανά στοιχείο ανώτατου επιπέδου. - Οικογένεια Gemini Embedding 2: ένας πίνακας ανώτατου επιπέδου γίνεται ένα ενιαίο εγγενές αίτημα
models/{model}:embedContentμεcontent.parts(textήinline_data). - Άγνωστα/δυναμικά μοντέλα χωρίς ρητά μεταδεδομένα τρόπου απορρίπτουν δομημένη εισαγωγή με HTTP 400.
{
"model": "jina-ai/jina-embeddings-v5-omni-small",
"input": [
{ "type": "text", "text": "A red bicycle" },
{
"type": "image",
"source": { "type": "url", "url": "https://example.com/bicycle.png" }
}
],
"dimensions": 512,
"encoding_format": "float"
}
Οι μη υποστηριζόμενοι συνδυασμοί μοντέλου/τρόπου επιστρέφουν HTTP 400 αντί να μετατρέπουν το στοιχείο. Τα πεδία επέκτασης που δεν αφορούν εισαγωγή σε κληροδοτημένα αιτήματα συμβολοσειράς/token συνεχίζουν να διαβιβάζονται αναλλοίωτα.
# Εμφάνιση όλων των μοντέλων embedding
GET /v1/embeddings
Δημιουργία Εικόνων
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"
}
Διαθέσιμοι πάροχοι: OpenAI (GPT Image 2), xAI (Grok Image), Together AI (FLUX), Fireworks AI, Nebius (FLUX), Hyperbolic, NanoBanana, OpenRouter, SD WebUI (τοπικά), ComfyUI (τοπικά).
# Λίστα όλων των μοντέλων εικόνας
GET /v1/images/generations
OCR Εγγράφων
POST /v1/ocr
Authorization: Bearer your-api-key
Content-Type: application/json
{
"model": "mistral/mistral-ocr-latest",
"document": {
"type": "document_url",
"document_url": "https://example.com/invoice.pdf"
}
}
Το model επιλέγει τον πάροχο OCR μέσω ενός προθέματος provider/model· ένα απλό αναγνωριστικό μοντέλου (π.χ. mistral-ocr-latest) επιλύεται στον καταχωρημένο πάροχό του, και αν το model παραλειφθεί, προεπιλέγεται το Mistral (mistral-ocr-latest). Καταχωρημένοι πάροχοι (open-sse/config/ocrRegistry.ts):
| Αναγνωριστικό παρόχου | Αναγνωριστικό μοντέλου | Τιμή model |
Σημειώσεις |
|---|---|---|---|
mistral |
mistral-ocr-latest |
mistral/mistral-ocr-latest (ή απλό mistral-ocr-latest) |
Σύγχρονο — η απόκριση επιστρέφεται απευθείας από την ενιαία κλήση upstream. |
azure-document-intelligence |
prebuilt-read |
azure-document-intelligence/prebuilt-read |
Ασύγχρονο upstream (analyze + polling) — δείτε παρακάτω. |
vertex-deepseek-ocr |
deepseek-ocr-maas |
vertex-deepseek-ocr/deepseek-ocr-maas |
Σύγχρονο, μέσω του endpoint συνεργάτη openapi/chat/completions του Vertex AI — δείτε παρακάτω για auth/URL. |
Και οι τρεις πάροχοι αποκρίνονται με το ίδιο σώμα σε μορφή Mistral:
{
"pages": [{ "index": 0, "markdown": "# Extracted text..." }],
"model": "mistral-ocr-latest",
"usage_info": { "pages_processed": 1 }
}
Ροή polling του Azure Document Intelligence
Το analyze API του Azure Document Intelligence είναι ασύγχρονο: το αρχικό αίτημα επιστρέφει μια κεφαλίδα Operation-Location αντί για σώμα απόκρισης, και το αποτέλεσμα πρέπει να ανακτηθεί μέσω polling. Ο χειριστής (open-sse/handlers/ocr.ts) εκτελεί polling σε αυτό το URL κάθε δευτερόλεπτο για έως 30 προσπάθειες, αποτυγχάνει αμέσως (σταματά το polling) σε μη-ok απόκριση polling ή κατάσταση "failed", και επιστρέφει 504 αν η λειτουργία εξακολουθεί να εκτελείται μετά την εξάντληση του προϋπολογισμού προσπαθειών. Η τελική απόκριση Azure κανονικοποιείται στο ίδιο σχήμα pages/markdown που χρησιμοποιεί το Mistral πριν επιστραφεί στον καλούντα, οπότε ο κώδικας του πελάτη δεν χρειάζεται να χειριστεί τον πάροχο ως ειδική περίπτωση.
Επίλυση auth και endpoint του Vertex AI DeepSeek OCR
Το vertex-deepseek-ocr επαναχρησιμοποιεί την ίδια αυθεντικοποίηση Vertex AI που υποστηρίζει ήδη το OmniRoute για κίνηση chat/εικόνας (open-sse/executors/vertex.ts): το κλειδί API της σύνδεσης είναι είτε διαπιστευτήριο JSON Λογαριασμού Υπηρεσίας (που ανταλλάσσεται για ένα βραχύβιο OAuth access token μέσω της ροής JWT-bearer) είτε ένα ήδη εκδοθέν OAuth access token που χρησιμοποιείται ως έχει. Η URL του upstream endpoint είναι το γενικό endpoint συνεργάτη openapi/chat/completions του Vertex, που δημιουργείται από το project και την περιοχή της σύνδεσης — ένα ρητό providerSpecificData.project/providerSpecificData.region υπερισχύει πάντα· διαφορετικά, το project προέρχεται από το project_id του JSON Λογαριασμού Υπηρεσίας και η περιοχή προεπιλέγεται σε us-central1. Και οι δύο επιλύσεις πραγματοποιούνται στο open-sse/handlers/ocr.ts (resolveVertexOcrAccessToken, resolveVertexOcrBaseUrl), και καταναλώνονται από το src/app/api/v1/ocr/route.ts πριν από την αποστολή στο handleOcr.
Λίστα Μοντέλων
GET /v1/models
Authorization: Bearer your-api-key
→ Επιστρέφει όλα τα μοντέλα chat, embedding και εικόνας + συνδυασμούς σε μορφή OpenAI
Προθήματα αναγνωριστικού μοντέλου (?prefix=)
Τα περισσότερα μοντέλα διαφημίζονται με ένα πρόθημα παρόχου. Το πρόθημα που λαμβάνετε ελέγχεται από
τη σημαία δυνατότητας MODELS_CATALOG_PREFIX_MODE, και μπορεί να παρακαμφθεί ανά αίτημα με μια
παράμετρο ερωτήματος — χρήσιμο για έναν πελάτη που θέλει μια καθαρή λίστα χωρίς να αλλάξει τη ρύθμιση ολόκληρου του διακομιστή για όλους:
GET /v1/models?prefix=alias # ένα αναγνωριστικό ανά μοντέλο — το σύντομο πρόθημα alias
GET /v1/models?prefix=dual # και οι δύο μορφές (προεπιλογή διακομιστή)
GET /v1/models?prefix=canonical # μόνο το πλήρες πρόθημα provider-id
| Λειτουργία | Εκπέμπει | Σημειώσεις |
|---|---|---|
dual |
cc/claude-sonnet-4-6 και claude/claude-sonnet-4-6 |
Προεπιλογή. Και τα δύο αναγνωριστικά δρομολογούνται στο ίδιο μοντέλο· διατηρούνται ώστε οι ρυθμίσεις πελατών που έχουν κωδικοποιήσει οποιαδήποτε μορφή να συνεχίσουν να λειτουργούν. Περίπου διπλασιάζει τον κατάλογο. |
alias |
cc/claude-sonnet-4-6 |
Μία εγγραφή ανά μοντέλο. Οι πάροχοι χωρίς διακριτό alias εξακολουθούν να εκπέμπουν την εγγραφή τους, οπότε δεν χάνεται τίποτα. |
canonical |
claude/claude-sonnet-4-6 |
Μία εγγραφή ανά μοντέλο υπό το πλήρες πρόθημα provider-id. Οι πάροχοι χωρίς διακριτό alias (π.χ. antigravity/…, agy/…) εκπέμπουν και εδώ το μοναδικό τους αναγνωριστικό, οπότε δεν χάνεται τίποτα. |
Ένας καθρέφτης σε λειτουργία dual μπορεί επίσης να αναγνωριστεί χωρίς την παράμετρο ερωτήματος: φέρει ένα πεδίο parent
που δείχνει στο κύριο αναγνωριστικό.
Οι πελάτες που εμφανίζουν επιλογέα μοντέλου θα πρέπει να ζητούν ?prefix=alias — αυτό κάνει και η
επέκταση OmniCopilot VS Code.
Παραλλαγές μοντέλων χωρίς thinking
Για μοντέλα Claude με δυνατότητα thinking, το /v1/models διαφημίζει επίσης μια παραλλαγή χωρίς thinking της οποίας το αναγνωριστικό φέρει πρόθημα claude-3-omniroute-no-thinking/:
claude-3-omniroute-no-thinking/<provider>/<model>
Η επιλογή αυτού του αναγνωριστικού (π.χ. σε ρύθμιση Claude Code που επισυνάπτει πάντα ένα μπλοκ thinking) επιστρέφει στο πραγματικό <provider>/<model> με κατεσταλμένο το συλλογισμό — thinking:{type:"disabled"} στο μονοπάτι /v1/messages, ή με τα πεδία reasoning/reasoning_effort αφαιρεμένα στο μονοπάτι /v1/chat/completions. Η παραλλαγή εμφανίζεται μόνο για μοντέλα της οικογένειας Claude που υποστηρίζουν thinking και τιμούν το disabled (έτσι π.χ. τα μοντέλα που λειτουργούν μόνο σε προσαρμοστική λειτουργία και απορρίπτουν το disabled εξαιρούνται). Οι διαχειριστές μπορούν να επιβάλουν την ενεργοποίηση ή απενεργοποίηση της παραλλαγής ανά μοντέλο μέσω του ModelSpec.noThinkingAlias.
Manifest Πρόσθετου Παρόχου
GET /api/v1/provider-plugin-manifest
Επιστρέφει το JSON-safe manifest πρόσθετου παρόχου που χρησιμοποιείται από το Bifrost, το CLIProxyAPI και μελλοντικούς δρομολογητές sidecar. Η απόκριση δημιουργείται από το μητρώο παρόχων TypeScript και σκόπιμα εξαιρεί τα μυστικά OAuth client, την επίλυση περιβάλλοντος χρόνου εκτέλεσης, τις συναρτήσεις εκτέλεσης, τις κεφαλίδες αιτημάτων και τα δεδομένα λογαριασμού.
Χρησιμοποιήστε αυτό το endpoint όταν ένα sidecar εκτελείται εκτός διεργασίας και δεν μπορεί να εισάγει
το open-sse/config/providerPluginManifestRegistry.ts απευθείας.
Endpoints Συμβατότητας
| Μέθοδος | Διαδρομή | Μορφή |
|---|---|---|
| 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 (edit/inpaint) |
| POST | /v1/videos/generations |
Δημιουργία βίντεο τύπου OpenAI |
| POST | /v1/music/generations |
Δημιουργία μουσικής τύπου OpenAI |
| POST | /v1/audio/transcriptions |
OpenAI Audio (STT) |
| POST | /v1/audio/speech |
OpenAI TTS (επιστρέφει σώμα ήχου) |
| POST | /v1/rerank |
Rerank τύπου Cohere/Voyage |
| POST | /v1/classify |
Jina classify (api.jina.ai) |
| POST | /v1/segment |
Jina segmenter (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}/ |
Ψευδώνυμο καταλόγου OpenAI |
| GET | /api/v1/vscode/{token}/models |
Ψευδώνυμο μοντέλων OpenAI |
| POST | /api/v1/vscode/{token}/chat/completions |
Tokenized ψευδώνυμο OpenAI |
| POST | /api/v1/vscode/{token}/responses |
Tokenized ψευδώνυμο OpenAI Responses |
| POST | /api/v1/vscode/{token}/api/chat |
Tokenized ψευδώνυμο Ollama |
| GET | /api/v1/vscode/{token}/api/tags |
Tokenized ψευδώνυμο ετικετών Ollama |
Όλες οι διαδρομές POST ακολουθούν το ίδιο σχήμα: Bearer your-api-key + σώμα JSON επικυρωμένο από Zod (v1RerankSchema, v1ModerationSchema, v1AudioSpeechSchema, κ.λπ., βλ. src/shared/validation/schemas.ts). Επιστρέφεται 4xx σε αποτυχία σχήματος.
Για clients που δεν μπορούν να επισυνάψουν Authorization: Bearer ..., το OmniRoute δέχεται επίσης κλειδιά API στο URL είτε μέσω συμβατότητας query-string (?token=..., ?apiKey=..., ?api_key=..., ?key=...) είτε μέσω των αφιερωμένων endpoints /api/v1/vscode/{token}/... που τεκμηριώνονται παρακάτω.
# Rerank
POST /v1/rerank { "model": "jina-ai/jina-reranker-v3.5", "query": "...", "documents": ["..."] }
# Jina classify (διαπιστευτήρια Foundation API)
POST /v1/classify { "model": "jina-embeddings-v5-text-small", "input": ["..."], "labels": ["a", "b"] }
# Jina segmenter
POST /v1/segment { "content": "...", "return_chunks": true }
# Jina search (s.jina.ai; ψευδώνυμα παρόχου: jina-search, jina-ai, jina)
POST /v1/search { "query": "...", "provider": "jina-search" }
# Moderations
POST /v1/moderations { "model": "omni-moderation-latest", "input": "..." }
# TTS — επιστρέφει σώμα audio/mpeg (ή ζητούμενη μορφή)
POST /v1/audio/speech { "model": "openai/tts-1", "input": "Hello", "voice": "alloy" }
# Επεξεργασία εικόνας (multipart)
POST /v1/images/edits -F image=@input.png -F prompt="..." -F mask=@mask.png
# Δημιουργία βίντεο / μουσικής (αναγνωριστικό μοντέλου με πρόθεμα παρόχου)
POST /v1/videos/generations { "model": "runway/gen-3", "prompt": "..." }
POST /v1/music/generations { "model": "suno/v3.5", "prompt": "..." }
Αφιερωμένες Διαδρομές Παρόχου
POST /v1/providers/{provider}/chat/completions
POST /v1/providers/{provider}/embeddings
POST /v1/providers/{provider}/images/generations
Το πρόθεμα παρόχου προστίθεται αυτόματα αν λείπει. Μη αντιστοιχισμένα μοντέλα επιστρέφουν 400.
Files API
Endpoint αρχείων συμβατό με OpenAI για μαζική εισαγωγή/εξαγωγή δεδομένων και μεταφορτώσεις αρχείων ανά σκοπό.
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| POST | /v1/files |
Μεταφόρτωση αρχείου (multipart: file, purpose, expires_after[anchor], expires_after[seconds]) — μέγιστο 512 MiB |
| GET | /v1/files |
Λίστα αρχείων για το εκάστοτε κλειδί API |
| GET | /v1/files/[id] |
Ανάκτηση μεταδεδομένων αρχείου |
| DELETE | /v1/files/[id] |
Διαγραφή αρχείου |
| GET | /v1/files/[id]/content |
Ροή επιστροφής του ακατέργαστου περιεχομένου αρχείου |
Πιστοποίηση: Bearer API key — τα αρχεία έχουν εμβέλεια ανά κλειδί API μέσω getApiKeyRequestScope.
Batches API
Μαζική επεξεργασία συμβατή με OpenAI.
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| POST | /v1/batches |
Δημιουργία παρτίδας — το σώμα επικυρώνεται από το v1BatchCreateSchema (input_file_id, endpoint, completion_window) |
| GET | /v1/batches |
Λίστα παρτίδων |
| GET | /v1/batches/[id] |
Ανάκτηση κατάστασης παρτίδας + request_counts |
| DELETE | /v1/batches/[id] |
Διαγραφή ολοκληρωμένης/αποτυχημένης παρτίδας |
| POST | /v1/batches/[id]/cancel |
Ακύρωση παρτίδας που βρίσκεται σε εξέλιξη |
Πιστοποίηση: Bearer API key. Οι παρτίδες έχουν εμβέλεια ανά κλειδί API.
Search API
Αφαιρετικό επίπεδο παρόχου αναζήτησης ιστού (Tavily, Brave, Exa, Serper, κ.λπ.).
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /v1/search |
Λίστα διαμορφωμένων παρόχων αναζήτησης και δυνατοτήτων τους |
| POST | /v1/search |
Εκτέλεση ερωτήματος αναζήτησης — το σώμα επικυρώνεται από το v1SearchSchema, υποστηρίζει προσωρινή αποθήκευση/συνένωση |
| GET | /v1/search/analytics |
Στατιστικά επισκέψεων/καθυστέρησης/κρυφής μνήμης ανά πάροχο |
Πιστοποίηση: Bearer API key (extractApiKey + isValidApiKey). Η πολιτική αναζήτησης επιβάλλεται μέσω enforceApiKeyPolicy.
API Ανάκτησης Ιστού
Εξαγωγή περιεχομένου από URL μέσω ενός ρυθμισμένου παρόχου ανάκτησης ιστού (Firecrawl, Jina Reader, Tavily Extract, TinyFish Fetch, Nimble Extract).
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| POST | /v1/web/fetch |
Ανάκτηση/scrape ενός URL — το σώμα επικυρώνεται από το v1WebFetchSchema |
Έλεγχος ταυτότητας: Bearer API key (extractApiKey + isValidApiKey). Η πολιτική επιβάλλεται μέσω enforceApiKeyPolicy.
Εναλλακτική δρομολόγηση με επίγνωση ορίου χρήσης (#8297): όταν δεν δίνεται ρητός provider, η ομάδα
(firecrawl → jina-reader → tavily-search → tinyfish → nimble-search) διατρέχεται
με σταθερή σειρά προτεραιότητας (πλήρωση-πρώτα) — ένας πάροχος με περιορισμό ρυθμού αλλά ρυθμισμένος παρακάμπτεται
αντί να διακόπτεται το αίτημα, και μια αποτυχία upstream που επιδέχεται επανάληψη/υπέρβαση ορίου
(HTTP 429 πάντα· 402/403 για δωρεάν επίπεδα τύπου ορίου Firecrawl/Tavily/TinyFish —
όχι για το Jina Reader, και ποτέ για ένα απλό κακό αίτημα 400) μεταφέρεται στον
επόμενο αδοκίμαστο πάροχο με διαπιστευτήρια κατά τη στιγμή του αιτήματος. Όταν εξαντληθούν όλοι οι πάροχοι
στην ομάδα, το endpoint επιστρέφει έναν μόνο κωδικό 429 (με κεφαλίδα Retry-After)
αντί του προηγούμενου γενικού 400. Όταν ζητείται ρητός provider, δεν υπάρχει
αθόρυβη εναλλακτική δρομολόγηση — ένας ρητός πάροχος με περιορισμό ρυθμού ή αποτυχία εκθέτει το δικό του σφάλμα
(429 αν υπάρχει περιορισμός ρυθμού, αλλιώς η κατάσταση upstream).
Ροή WebSocket
GET /v1/ws?handshake=1
Επικυρώνει μια χειραψία αναβάθμισης WebSocket και επιστρέφει τα παραδείγματα μηνυμάτων πρωτοκόλλου wire (request, cancel). Τα πραγματικά WS frames διαχειρίζεται ο ενσωματωμένος WS server εκτός του πίνακα διαδρομών Next.js.
Έλεγχος ταυτότητας: Bearer API key κατά τη χειραψία.
Responses API μέσω WebSocket (μόνο codex)
# Ίδιος host:port με το HTTP API (προεπιλογή 20128)· αναβάθμιση της σύνδεσης:
wscat -c "ws://localhost:20128/v1/responses?api_key=<OMNIROUTE_API_KEY>"
# (ή: -H "Authorization: Bearer <OMNIROUTE_API_KEY>")
# Το πρώτο frame ΠΡΕΠΕΙ να είναι response.create:
{ "type": "response.create", "model": "gpt-5.5", "input": [ { "role": "user", "content": "hi" } ] }
Ένας διακομιστής μεσολάβησης Responses-API-over-WebSocket είναι συνδεδεμένος αποκλειστικά στο codex (backend
ChatGPT). Ακούει στην ίδια θύρα με το API/dashboard στις διαδρομές /v1/responses,
/responses και /api/v1/responses. Στο πρώτο frame response.create εκτελεί
έλεγχο ταυτότητας + προετοιμασία μέσω της εσωτερικής γέφυρας codex-responses-ws, επιλέγει μια
σύνδεση codex OAuth και δρομολογεί σε wss://chatgpt.com/backend-api/codex/responses
μέσω της μεταφοράς wreq-js. Τα μοντέλα που δεν είναι codex απορρίπτονται (codex_ws_provider_required).
Για δρομολόγηση με κοινή χρήση ορίου χρησιμοποιήστε model: "qtSd/<group>/codex/<model>". Υλοποιείται στα
app/server-ws.mjs + scripts/dev/responses-ws-proxy.mjs + src/app/api/internal/codex-responses-ws/route.ts.
Έλεγχος ταυτότητας: Bearer API key κατά τη χειραψία. Ο ενσωματωμένος HTTP server (server-ws.mjs)
πρέπει να είναι το ενεργό σημείο εισόδου (είναι, από προεπιλογή, όταν υπάρχει το app/server-ws.mjs).
Αναγνωριστικό μοντέλου: χρησιμοποιήστε το ανεπεξέργαστο αναγνωριστικό ChatGPT (χωρίς πρόθεμα codex/)
Το Codex CLI της OpenAI επικυρώνει το όνομα μοντέλου από την πλευρά του πελάτη όταν
supports_websockets = true και απορρίπτει αναγνωριστικά με πρόθεμα παρόχου όπως
codex/gpt-5.5 (The 'codex/gpt-5.5' model is not supported when using Codex with a ChatGPT account). Στείλτε το ανεπεξέργαστο αναγνωριστικό (π.χ. gpt-5.5). Η γέφυρα του OmniRoute είναι
αποκλειστικά codex, οπότε επαναλύει ένα ανεπεξέργαστο αναγνωριστικό ως μοντέλο codex
(resolveCodexWsModelInfo) πριν τη δρομολόγηση upstream — ακόμα και αν ένα ανεπεξέργαστο
gpt-5.5 θα δρομολογούταν διαφορετικά σε άλλον πάροχο μέσω HTTP.
Ρύθμιση του OpenAI Codex CLI
Κατευθύνετε το Codex CLI στο OmniRoute προσθέτοντας έναν προσαρμοσμένο πάροχο με υποστήριξη WebSocket
στο ~/.codex/config.toml (χρησιμοποιήστε ξεχωριστό CODEX_HOME για να αποφύγετε την τροποποίηση
υπάρχουσας ρύθμισης):
model = "gpt-5.5" # ανεπεξέργαστο αναγνωριστικό — ΟΧΙ "codex/gpt-5.5"
model_provider = "omniroute"
[model_providers.omniroute]
name = "OmniRoute (WS)"
base_url = "http://localhost:20128/v1" # χωρίς τελεία κάθετο· το URL του WS προκύπτει αυτόματα (χρησιμοποιήστε https/wss στην παραγωγή)
wire_api = "responses" # η μόνη υποστηριζόμενη τιμή από τον Φεβρουάριο 2026
supports_websockets = true # ενεργοποιεί τη μεταφορά Responses-over-WS
env_key = "OMNIROUTE_API_KEY" # περιέχει το API key του OmniRoute (Bearer)
export OMNIROUTE_API_KEY=sk-... # ένα API key του OmniRoute (οποιοδήποτε key αν REQUIRE_API_KEY=false)
codex exec "Responda apenas: PONG"
Το CLI αναβαθμίζει το base_url + /responses σε WebSocket και το OmniRoute το δρομολογεί
στην επιλεγμένη σύνδεση codex OAuth. Επικυρώθηκε από άκρο σε άκρο έναντι του τοπικού
server: το ChatGPT επιστρέφει codex.rate_limits + response.created και μεταδίδει
ροή την ολοκλήρωση.
Ποσοστώσεις & Αναφορά Προβλημάτων
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /v1/quotas/check |
Προ-επικύρωση ποσοστώσεων για ένα provider + accountId πριν από την έκδοση εγγεγραμμένου κλειδιού |
| POST | /v1/issues/report |
Αναφορά αποτυχίας ποσοστώσεων/έκδοσης κλειδιού στο GitHub (απαιτεί GITHUB_ISSUES_REPO + token) |
Αυθεντικοποίηση: Bearer API key (isAuthenticated).
Αυτοεξυπηρέτηση χρήσης (/api/usage/om-usage)
Οποιοδήποτε API key μπορεί να διαβάσει τη δική του χρήση και ποσοστώσεις — χωρίς διαχειριστική αυθεντικοποίηση. Αυτό είναι το endpoint που χρησιμοποιεί ένας client (CLI, ο πίνακας OmniCopilot) για να εμφανίσει στον κάτοχο κλειδιού τις δαπάνες του.
# Μορφή κειμένου (το ιστορικό συμβόλαιο — απλό κείμενο για τερματικό)
curl -H "Authorization: Bearer <your-api-key>" \
http://localhost:20128/api/usage/om-usage
# Δομημένη μορφή — αυτό που καταναλώνει ένα UI
curl -H "Authorization: Bearer <your-api-key>" \
"http://localhost:20128/api/usage/om-usage?format=json"
Το κλειδί πρέπει να έχει ενεργοποιημένο το allowUsageCommand (απενεργοποιημένο εκ προεπιλογής — ο διαχειριστής API-key του dashboard το εναλλάσσει ανά κλειδί). Χωρίς αυτό, το endpoint απαντά με 403.
Το ?format=json επιστρέφει ένα διακριτό σχήμα ώστε ο καλών να μην διαβάζει ποτέ ένα πεδίο δεδομένων από μια άρνηση. Σε επιτυχία:
{
"allowed": true,
// υπάρχει μόνο όταν το κλειδί έχει επιλέξει όρια χρήσης ανά κλειδί (ημερήσιο/εβδομαδιαίο USD):
"personal": {
"dailySpentUsd": 1.25,
"dailyLimitUsd": 5,
"dailyResetAtIso": "…",
"weeklySpentUsd": 8,
"weeklyLimitUsd": 20,
"weeklyResetAtIso": "…" /* … */,
},
// το στιγμιότυπο ποσοστώσεων του επιλεγμένου provider, ή null όταν δεν έχει αποθηκευτεί τίποτα ακόμα:
"provider": {
"connectionId": "…",
"provider": "claude",
"plan": "…",
"quotas": {/* … */},
},
// το στιγμιότυπο κάθε σύνδεσης, ώστε ένα UI να μπορεί να εμφανίσει πολλούς providers παράλληλα:
"providers": [
{ "connectionId": "…", "provider": "claude" /* … */ },
{ "provider": "codex" /* … */ },
],
}
Σε άρνηση (401 μη έγκυρο κλειδί / 403 δεν επιτρέπεται), η ίδια διαδρομή επιστρέφει
{ "allowed": false, "error": { "message": "…" } } — ένα παρόν-αλλά-κενό personal/provider
(το κλειδί επιτρέπεται, δεν έχει μαθευτεί τίποτα ακόμα) είναι διαφορετική κατάσταση από μια άρνηση, και μόνο η μορφή JSON τις διακρίνει.
Αυθεντικοποίηση: το Bearer API key του καλούντος, επικυρωμένο με isValidApiKey — αυτή δεν είναι η διεπαφή διαχείρισης (/api/keys/…), η οποία παραμένει πίσω από το requireManagementAuth.
Σημασιολογική Κρυφή Μνήμη
# Λήψη στατιστικών κρυφής μνήμης
GET /api/cache/stats
# Εκκαθάριση όλων των κρυφών μνημών
DELETE /api/cache/stats
Παράδειγμα απόκρισης:
{
"semanticCache": {
"memorySize": 42,
"memoryMaxSize": 500,
"dbSize": 128,
"hitRate": 0.65
},
"idempotency": {
"activeKeys": 3,
"windowMs": 5000
}
}
Επίπτωση στην καθυστέρηση
Μια ΕΠΙΤΥΧΊΑ σημασιολογικής κρυφής μνήμης εξυπηρετεί την απόκριση από την κρυφή μνήμη χωρίς κλήση upstream, οπότε η αναφερόμενη X-OmniRoute-Response-Latency είναι σχεδόν μηδενική
(ανεξαρτήτως της αρχικής καθυστέρησης upstream). Οι clients που είναι ευαίσθητοι στην καθυστέρηση
(benchmarking, παρακολούθηση p50/p99) θα πρέπει να ελέγχουν την
κεφαλίδα απόκρισης X-OmniRoute-Cache-Latency:
| Τιμή | Σημασία |
|---|---|
synthetic |
Η απόκριση εξυπηρετήθηκε από κρυφή μνήμη· η καθυστέρηση δεν είναι πραγματικός χρόνος upstream |
| (απούσα) | Απόκριση από πραγματική κλήση upstream |
Παράκαμψη κρυφής μνήμης ανά κλειδί
Τα API keys μπορούν να εξαιρεθούν από τις αναγνώσεις σημασιολογικής κρυφής μνήμης μέσω του cacheDefaultMode:
| Τιμή | Συμπεριφορά |
|---|---|
legacy |
Κανονική συμπεριφορά κρυφής μνήμης (προεπιλογή) |
bypass |
Παράλειψη αναζήτησης στην κρυφή μνήμη· πάντα κλήση upstream |
Ορίζεται κατά τη δημιουργία κλειδιού (POST /api/keys) ή ενημέρωση (PATCH /api/keys/[id]):
{ "cacheDefaultMode": "bypass" }
Παράκαμψη ανά αίτημα
Οποιοδήποτε αίτημα μπορεί να παρακάμψει την κρυφή μνήμη ανεξαρτήτως ρυθμίσεων κλειδιού:
X-OmniRoute-No-Cache: true
Πίνακας Ελέγχου & Διαχείριση
Οι διαδρομές διαχείρισης (/api/* εκτός από δημόσια auth/login) δεν εξουσιοδοτούνται από
κανονικά κλειδιά API συμπέρασης. Οικογένειες διαπιστευτηρίων, εμβέλειες και παραδείγματα curl:
Αυθεντικοποίηση Διαχείρισης.
Αυθεντικοποίηση
| Τελικό Σημείο | Μέθοδος | Περιγραφή |
|---|---|---|
/api/auth/login |
POST | Σύνδεση |
/api/auth/logout |
POST | Αποσύνδεση |
/api/settings/require-login |
GET/PUT | Εναλλαγή απαίτησης σύνδεσης |
Διαχείριση Παρόχων
| Τελικό Σημείο | Μέθοδος | Περιγραφή |
|---|---|---|
/api/providers |
GET/POST | Λίστα / δημιουργία παρόχων |
/api/providers/[id] |
GET/PUT/DELETE | Διαχείριση παρόχου |
/api/providers/[id]/test |
POST | Δοκιμή σύνδεσης παρόχου |
/api/providers/[id]/models |
GET | Λίστα μοντέλων παρόχου |
/api/providers/validate |
POST | Επικύρωση διαμόρφωσης παρόχου |
/api/providers/bulk |
POST | Μαζική προσθήκη κλειδιών API για ΕΝΑΝ πάροχο |
/api/providers/import |
POST | Εισαγωγή ετερογενούς ΛΙΣΤΑΣ παρόχων από αναλυμένο αρχείο CSV/JSON (#6836)· αποτελέσματα μερικής αποτυχίας ανά γραμμή |
/api/provider-nodes* |
Διάφορες | Διαχείριση κόμβων παρόχου |
/api/provider-models |
GET/POST/PATCH/DELETE | Προσαρμοσμένα μοντέλα (προσθήκη, ενημέρωση, απόκρυψη/εμφάνιση, διαγραφή) |
Ροές OAuth
| Τελικό Σημείο | Μέθοδος | Περιγραφή |
|---|---|---|
/api/oauth/[provider]/[action] |
Διάφορες | OAuth ειδικό για κάθε πάροχο |
Δρομολόγηση & Διαμόρφωση
| Τελικό Σημείο | Μέθοδος | Περιγραφή |
|---|---|---|
/api/models/alias |
GET/POST | Ψευδώνυμα μοντέλων |
/api/models/catalog |
GET | Όλα τα μοντέλα ανά πάροχο + τύπο |
/api/combos* |
Διάφορες | Διαχείριση συνδυασμών |
/api/keys* |
Διάφορες | Διαχείριση κλειδιών API |
/api/pricing |
GET | Τιμολόγηση μοντέλων |
Χρήση & Αναλυτικά
| Τελικό Σημείο | Μέθοδος | Περιγραφή |
|---|---|---|
/api/usage/history |
GET | Ιστορικό χρήσης |
/api/usage/logs |
GET | Αρχεία καταγραφής χρήσης |
/api/usage/request-logs |
GET | Αρχεία καταγραφής σε επίπεδο αιτήματος |
/api/usage/[connectionId] |
GET | Χρήση ανά σύνδεση |
/api/usage/token-limits |
GET/POST/DELETE | Προϋπολογισμοί ορίου token ανά κλειδί API |
/api/usage/model-latency-stats |
GET | Κυλιόμενο συνολικό στατιστικό καθυστέρησης ανά πάροχο/μοντέλο (avg/p50/p95/p99, ποσοστό επιτυχίας)· φίλτρα: windowHours/minSamples/maxRows/provider/model (#6873) |
/api/usage/cache-health |
GET | Σύνοψη υγείας cache ερωτημάτων σε call_logs — αναλογία εγγραφής/ανάγνωσης, κατανομή μεγέθους εγγραφής p50/p90/p99, συγκέντρωση μεγάλων εγγραφών, ανάλυση ανά μοντέλο και ετυμηγορία healthy/degraded/thrash/no-data· παράμετροι ερωτήματος range (1h|24h|7d|30d, προεπιλογή 24h) και προαιρετικό model (#8827) |
Ρυθμίσεις
| Τελικό Σημείο | Μέθοδος | Περιγραφή |
|---|---|---|
/api/settings |
GET/PUT/PATCH | Γενικές ρυθμίσεις |
/api/settings/proxy |
GET/PUT | Διαμόρφωση διακομιστή μεσολάβησης δικτύου |
/api/settings/proxy/test |
POST | Δοκιμή σύνδεσης διακομιστή μεσολάβησης |
/api/settings/ip-filter |
GET/PUT | Λίστα επιτρεπόμενων/αποκλεισμένων IP |
/api/settings/thinking-budget |
GET/PUT | Λειτουργία επανεγγραφής αιτήματος σκέψης/συλλογισμού (passthrough / auto-strip / custom / adaptive). Ανεξάρτητο από τη συμπίεση. Βλ. THINKING_BUDGET.md. |
/api/settings/system-prompt |
GET/PUT | Καθολική προτροπή συστήματος |
/api/settings/compression |
GET/PUT | Καθολική διαμόρφωση συμπίεσης |
/api/settings/purge-request-history |
POST | Εκκαθάριση γραμμών αρχείου αιτημάτων και τοπικών τεχνουργημάτων αρχείου κλήσεων |
Πλαίσιο & Συμπίεση
| Τελικό Σημείο | Μέθοδος | Περιγραφή |
|---|---|---|
/api/compression/preview |
POST | Προεπισκόπηση συμπίεσης off/lite/standard/aggressive/ultra/RTK/stacked |
/api/compression/language-packs |
GET | Λίστα διαθέσιμων πακέτων γλώσσας Caveman |
/api/compression/rules |
GET | Λίστα μεταδεδομένων κανόνων Caveman |
/api/context/caveman/config |
GET/PUT | Ψευδώνυμο ρυθμίσεων ειδικών για Caveman |
/api/context/rtk/config |
GET/PUT | Ρυθμίσεις ειδικές για RTK, συμπεριλαμβανομένων προσαρμοσμένων φίλτρων και διατήρησης ακατέργαστης εξόδου |
/api/context/rtk/filters |
GET | Κατάλογος φίλτρων RTK και διαγνωστικά προσαρμοσμένων φίλτρων |
/api/context/rtk/test |
POST | Εκτέλεση προεπισκόπησης/δοκιμής RTK σε ωφέλιμο φορτίο κειμένου |
/api/context/rtk/raw-output/[id] |
GET | Ανάγνωση διατηρημένης επεξεργασμένης ακατέργαστης εξόδου με αναγνωριστικό δείκτη |
/api/context/combos |
GET/POST | Λίστα/δημιουργία συνδυασμών συμπίεσης |
/api/context/combos/[id] |
GET/PUT/DELETE | Λεπτομέρεια/ενημέρωση/διαγραφή συνδυασμού συμπίεσης |
/api/context/combos/[id]/assignments |
GET/PUT | Ανάθεση συνδυασμών συμπίεσης σε συνδυασμούς δρομολόγησης |
/api/context/analytics |
GET | Ψευδώνυμο αναλυτικών συμπίεσης |
Παρακολούθηση
| Τελικό Σημείο | Μέθοδος | Περιγραφή |
|---|---|---|
/api/sessions |
GET | Παρακολούθηση ενεργών συνεδριών |
/api/rate-limits |
GET | Όρια ρυθμού ανά λογαριασμό |
/api/monitoring/health |
GET | Έλεγχος υγείας + σύνοψη παρόχου (catalogCount, configuredCount, activeCount, monitoredCount) |
/api/cache/stats |
GET/DELETE | Στατιστικά cache / εκκαθάριση |
/api/modality-bridge/stats |
GET | Στη μνήμη attempts, επιτυχίες/bridged, αποτυχίες, επιτυχίες cache, totalLatencyMs, latencySamples, averageLatencyMs με αριθμητή δείγμα, και χρόνος τελευταίας χρήσης (επαναφορά κατά επανεκκίνηση· διαχείριση auth) |
/api/modality-bridge/video/runtime |
GET | Αυστηρός έλεγχος αξιόπιστου loopback πριν από διαχείριση auth/probe· εκκαθαρισμένη διαθεσιμότητα και εκδόσεις FFmpeg/ffprobe (no-store) |
/api/modality-bridge/video/extract |
POST | Εσωτερικός αυθεντικοποιημένος αξιόπιστος μεσίτης byte loopback· είσοδος 50 MiB, ουρά με όριο/έξοδος 32 MiB, 503 χωρητικότητα, 499 αποσύνδεση, 504 προθεσμία· δεν είναι δημόσιο API μεταφόρτωσης |
Αντίγραφα Ασφαλείας & Εξαγωγή/Εισαγωγή
| Τελικό Σημείο | Μέθοδος | Περιγραφή |
|---|---|---|
/api/db-backups |
GET | Λίστα διαθέσιμων αντιγράφων ασφαλείας |
/api/db-backups |
PUT | Δημιουργία χειροκίνητου αντιγράφου ασφαλείας |
/api/db-backups |
POST | Επαναφορά από συγκεκριμένο αντίγραφο ασφαλείας |
/api/db-backups/export |
GET | Λήψη βάσης δεδομένων ως αρχείο .sqlite |
/api/db-backups/import |
POST | Μεταφόρτωση αρχείου .sqlite για αντικατάσταση βάσης δεδομένων |
/api/db-backups/exportAll |
GET | Λήψη πλήρους αντιγράφου ασφαλείας ως αρχείο .tar.gz |
Συγχρονισμός Cloud
| Τελικό Σημείο | Μέθοδος | Περιγραφή |
|---|---|---|
/api/sync/cloud |
Διάφορες | Λειτουργίες συγχρονισμού cloud |
/api/sync/initialize |
POST | Αρχικοποίηση συγχρονισμού |
/api/cloud/* |
Διάφορες | Διαχείριση cloud |
Τούνελ
| Τελικό Σημείο | Μέθοδος | Περιγραφή |
|---|---|---|
/api/tunnels/cloudflared |
GET | Ανάγνωση κατάστασης εγκατάστασης/εκτέλεσης Cloudflare Quick Tunnel για τον πίνακα ελέγχου |
/api/tunnels/cloudflared |
POST | Ενεργοποίηση ή απενεργοποίηση του Cloudflare Quick Tunnel (action=enable/disable) |
/api/tunnels/ngrok |
GET | Ανάγνωση κατάστασης εκτέλεσης ngrok Tunnel για τον πίνακα ελέγχου |
/api/tunnels/ngrok |
POST | Ενεργοποίηση ή απενεργοποίηση του ngrok Tunnel (action=enable/disable) |
Εργαλεία CLI
| Τελικό Σημείο | Μέθοδος | Περιγραφή |
|---|---|---|
/api/cli-tools/claude-settings |
GET | Κατάσταση Claude CLI |
/api/cli-tools/codex-settings |
GET | Κατάσταση Codex CLI |
/api/cli-tools/droid-settings |
GET | Κατάσταση Droid CLI |
/api/cli-tools/openclaw-settings |
GET | Κατάσταση OpenClaw CLI |
/api/cli-tools/runtime/[toolId] |
GET | Γενικό χρόνος εκτέλεσης CLI |
Οι αποκρίσεις CLI περιλαμβάνουν: installed, runnable, command, commandPath, runtimeMode, reason.
Πράκτορες ACP
| Τελικό Σημείο | Μέθοδος | Περιγραφή |
|---|---|---|
/api/acp/agents |
GET | Λίστα όλων των εντοπισμένων πρακτόρων (ενσωματωμένοι + προσαρμοσμένοι) με κατάσταση |
/api/acp/agents |
POST | Προσθήκη προσαρμοσμένου πράκτορα ή ανανέωση cache εντοπισμού |
/api/acp/agents |
DELETE | Αφαίρεση προσαρμοσμένου πράκτορα με παράμετρο ερωτήματος id |
Η απόκριση GET περιλαμβάνει agents[] (id, name, binary, version, installed, protocol, isCustom) και summary (total, installed, notFound, builtIn, custom).
Ανθεκτικότητα & Όρια Ρυθμού
| Τελικό Σημείο | Μέθοδος | Περιγραφή |
|---|---|---|
/api/resilience |
GET/PATCH | Λήψη/ενημέρωση ουράς αιτημάτων, ψύξη σύνδεσης, διακόπτη παρόχου και ρυθμίσεων αναμονής |
/api/resilience/reset |
POST | Επαναφορά διακοπτών κυκλώματος παρόχου |
/api/resilience/model-cooldowns |
GET | Λίστα ενεργών κλειδαριών ανά (πάροχο, σύνδεση, μοντέλο), ταξινομημένων κατά υπολειπόμενο χρόνο |
/api/resilience/model-cooldowns |
DELETE | Εκκαθάριση κλειδαριάς μοντέλου — σώμα {provider, model} ή {all: true} για διαγραφή όλων |
/api/rate-limits |
GET | Κατάσταση ορίου ρυθμού ανά λογαριασμό |
/api/rate-limit |
GET | Καθολική διαμόρφωση ορίου ρυθμού |
Και οι τέσσερις διαδρομές
/api/resilience/*απαιτούν διαχείριση auth (requireManagementAuth). Βλ. Ανθεκτικότητα (εκτεταμένη) για πλήρη ανάλυση του διακόπτη κυκλώματος παρόχου έναντι ψύξης σύνδεσης έναντι κλειδαριάς μοντέλου.
Αξιολογήσεις
| Τελικό Σημείο | Μέθοδος | Περιγραφή |
|---|---|---|
/api/evals |
GET/POST | Λίστα σετ αξιολόγησης / εκτέλεση αξιολόγησης |
Πολιτικές
| Τελικό Σημείο | Μέθοδος | Περιγραφή |
|---|---|---|
/api/policies |
GET/POST/DELETE | Διαχείριση πολιτικών δρομολόγησης |
Συμμόρφωση
| Τελικό Σημείο | Μέθοδος | Περιγραφή |
|---|---|---|
/api/compliance/audit-log |
GET | Αρχείο ελέγχου συμμόρφωσης (τελευταία N εγγραφές) |
v1beta (Συμβατό με Gemini)
| Τελικό Σημείο | Μέθοδος | Περιγραφή |
|---|---|---|
/v1beta/models |
GET | Λίστα μοντέλων σε μορφή Gemini |
/v1beta/models/{...path} |
POST | Τελικό σημείο generateContent Gemini |
Αυτά τα τελικά σημεία αντικατοπτρίζουν τη μορφή API του Gemini για πελάτες που αναμένουν εγγενή συμβατότητα SDK Gemini.
Εσωτερικά / APIs Συστήματος
| Τελικό Σημείο | Μέθοδος | Περιγραφή |
|---|---|---|
/api/init |
GET | Έλεγχος αρχικοποίησης εφαρμογής (χρησιμοποιείται κατά την πρώτη εκτέλεση) |
/api/tags |
GET | Ετικέτες μοντέλων συμβατές με Ollama (για πελάτες Ollama) |
/api/restart |
POST | Εκκίνηση ομαλής επανεκκίνησης διακομιστή |
/api/shutdown |
POST | Εκκίνηση ομαλής τερματισμού διακομιστή |
/api/system/env/repair |
POST | Επιδιόρθωση μεταβλητών περιβάλλοντος παρόχου OAuth |
Σημείωση: Αυτά τα τελικά σημεία χρησιμοποιούνται εσωτερικά από το σύστημα ή για συμβατότητα με πελάτες Ollama. Συνήθως δεν καλούνται από τελικούς χρήστες.
Επιδιόρθωση Περιβάλλοντος OAuth (v3.6.1+)
POST /api/system/env/repair
Content-Type: application/json
{
"provider": "claude-code"
}
Επιδιορθώνει ελλείπουσες ή κατεστραμμένες μεταβλητές περιβάλλοντος OAuth για έναν συγκεκριμένο πάροχο. Επιστρέφει:
{
"success": true,
"repaired": ["CLAUDE_CODE_OAUTH_CLIENT_ID", "CLAUDE_CODE_OAUTH_CLIENT_SECRET"],
"backupPath": "/home/user/.omniroute/backups/env-repair-2026-04-11.bak"
}
Μεταγραφή Ήχου
POST /v1/audio/transcriptions
Authorization: Bearer your-api-key
Content-Type: multipart/form-data
Μεταγράψτε αρχεία ήχου χρησιμοποιώντας οποιονδήποτε διαμορφωμένο πάροχο STT. Το πρώτο τμήμα της διαδρομής επιλέγει τον εγγενή πάροχο (openai/…, deepgram/…). Τα gateways που επανεξάγουν το μοντέλο άλλου προμηθευτή χρησιμοποιούν ένα αναγνωριστικό με προσδιορισμό (openrouter/deepgram/nova-3).
Αίτημα:
curl -X POST http://localhost:20128/v1/audio/transcriptions \
-H "Authorization: Bearer your-api-key" \
-F "file=@recording.mp3" \
-F "model=openai/whisper-1"
Απόκριση:
{
"text": "Hello, this is the transcribed audio content.",
"task": "transcribe",
"language": "en",
"duration": 12.5
}
Παραδείγματα αναγνωριστικών μοντέλου: openai/whisper-1 (απαιτεί κλειδί OpenAI), openrouter/deepgram/nova-3 (απαιτεί κλειδί OpenRouter), deepgram/nova-3 (απαιτεί εγγενές κλειδί Deepgram). Ένα απλό αίτημα deepgram/nova-3 δεν χρησιμοποιεί το OpenRouter.
Υποστηριζόμενες μορφές: mp3, wav, m4a, flac, ogg, webm.
Συμβατότητα Ollama
Για πελάτες που χρησιμοποιούν τη μορφή API του Ollama:
# Τελικό σημείο συνομιλίας (μορφή Ollama)
POST /v1/api/chat
# Καταχώριση μοντέλων (μορφή Ollama)
GET /api/tags
Τα αιτήματα μεταφράζονται αυτόματα μεταξύ της μορφής Ollama και της εσωτερικής μορφής.
Ψευδώνυμα Tokenized VS Code / Χωρίς Επικεφαλίδα
Χρησιμοποιήστε αυτά τα ψευδώνυμα όταν μια ενσωμάτωση δεν μπορεί να εισάγει μια επικεφαλίδα Authorization και χρειάζεται το κλειδί API ενσωματωμένο στη βασική διεύθυνση URL.
# Ψευδώνυμο καταλόγου τύπου OpenAI
GET /api/v1/vscode/{token}/
GET /api/v1/vscode/{token}/models
# Ψευδώνυμα συνομιλίας τύπου OpenAI
POST /api/v1/vscode/{token}/chat/completions
POST /api/v1/vscode/{token}/responses
# Ψευδώνυμα τύπου Ollama
POST /api/v1/vscode/{token}/api/chat
GET /api/v1/vscode/{token}/api/tags
Παράδειγμα:
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"}]}'
Σημειώσεις:
- Τα tokenized ψευδώνυμα επαναχρησιμοποιούν τους ίδιους χειριστές με τα
/v1/*και/api/tags· τα σχήματα απόκρισης παραμένουν πανομοιότυπα. - Προτιμήστε το
Authorization: Bearer ...όποτε ο πελάτης υποστηρίζει προσαρμοσμένες επικεφαλίδες. - Τα διακριτικά βάσει URL ενδέχεται να εμφανίζονται σε αρχεία καταγραφής reverse-proxy, ιστορικό προγράμματος περιήγησης και τηλεμετρία εκτός του OmniRoute. Αντιμετωπίστε τα ως επιλογή συμβατότητας και όχι ως προεπιλεγμένη λειτουργία ελέγχου ταυτότητας.
Τηλεμετρία
# Λήψη περίληψης τηλεμετρίας καθυστέρησης (p50/p95/p99 ανά πάροχο)
GET /api/telemetry/summary
Απόκριση:
{
"providers": {
"claudeCode": { "p50": 245, "p95": 890, "p99": 1200, "count": 150 },
"github": { "p50": 180, "p95": 620, "p99": 950, "count": 320 }
}
}
Προϋπολογισμός
# Λήψη κατάστασης προϋπολογισμού για όλα τα κλειδιά API
GET /api/usage/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"
}
Σημειώσεις σχήματος (
setBudgetSchema): ΤοapiKeyIdείναι υποχρεωτικό· τουλάχιστον ένα από ταdailyLimitUsd,weeklyLimitUsdήmonthlyLimitUsdπρέπει να είναι μεγαλύτερο από μηδέν. Προαιρετικά πεδία:warningThreshold(0–1),resetInterval(daily|weekly|monthly),resetTime(HH:MM). Το παλαιό σχήμα{keyId, limit, period}επιστρέφει400 Bad Request.
Όρια Token
Προϋπολογισμοί token ανά κλειδί API (διαφορετικοί από τον παραπάνω προϋπολογισμό σε USD). Επιβάλλονται ενσωματωμένα στη διαδρομή αιτήματος: όταν η χρήση του τρέχοντος παραθύρου ενός κλειδιού φτάσει το όριό του, τα αιτήματα απορρίπτονται με 429 Too Many Requests. Τα όρια μπορούν να εφαρμοστούν σε συγκεκριμένο model, σε provider, ή globalα σε ολόκληρο το κλειδί· όταν πολλά όρια ταιριάζουν σε ένα αίτημα, ισχύει το πιο περιοριστικό.
# Λίστα ορίων token ενός κλειδιού (περιλαμβάνει την τρέχουσα χρήση παραθύρου)
GET /api/usage/token-limits?apiKeyId=key-123
# Δημιουργία ή ενημέρωση ορίου token
POST /api/usage/token-limits
Content-Type: application/json
{
"apiKeyId": "key-123",
"scopeType": "model",
"scopeValue": "openai/gpt-4o",
"tokenLimit": 1000000,
"resetInterval": "monthly",
"enabled": true
}
# Διαγραφή ορίου token με βάση το id
DELETE /api/usage/token-limits?id=tl-abc
Σημειώσεις σχήματος (
setTokenLimitSchema): ΤαapiKeyIdκαιscopeType(model|provider|global) είναι υποχρεωτικά. ΤοscopeValueείναι υποχρεωτικό εκτός αν τοscopeTypeείναιglobal(π.χ. ένα model id για το εύροςmodel, ένα provider id για το εύροςprovider). ΤοtokenLimitπρέπει να είναι θετικός ακέραιος (μετατρέπεται αυτόματα από string). Προαιρετικά:id(παράλειψη για δημιουργία, παροχή για ενημέρωση),resetInterval(daily|weekly|monthly, προεπιλογήmonthly),resetTime(HH:MM),enabled(προεπιλογήtrue). Οι αποκρίσειςGETεμπλουτίζουν κάθε όριο μεtokensUsed,remaining,windowStart,periodStartAtκαιnextResetAt. Πρόκειται για endpoint διαχείρισης (η αυθεντικοποίηση επιβάλλεται κεντρικά από το pipeline authz).
Επεξεργασία Αιτήματος
- Ο client αποστέλλει αίτημα στο
/v1/* - Ο handler διαδρομής καλεί
handleChat,handleEmbedding,handleAudioTranscriptionήhandleImageGeneration - Το μοντέλο επιλύεται (απευθείας provider/model ή alias/combo)
- Τα διαπιστευτήρια επιλέγονται από την τοπική βάση δεδομένων με φιλτράρισμα διαθεσιμότητας λογαριασμού
- Για chat: το
handleChatCoreελέγχει τη σημασιολογική/υπογραφής κρυφή μνήμη και επιλύει τις ρυθμίσεις συμπίεσης combo - Η προληπτική συμπίεση εκτελείται πριν τη μετάφραση provider όταν είναι ενεργοποιημένη (
lite, Caveman, RTK ή σε στοίβα) - Ο εκτελεστής provider αποστέλλει το upstream αίτημα
- Η απόκριση μεταφράζεται πίσω στη μορφή client (chat) ή επιστρέφεται αυτούσια (embeddings/images/audio)
- Καταγράφονται η χρήση, τα αναλυτικά συμπίεσης και τα αρχεία καταγραφής αιτημάτων
- Το fallback εφαρμόζεται σε σφάλματα σύμφωνα με τους κανόνες combo
Πλήρης αναφορά αρχιτεκτονικής: ARCHITECTURE.md
Διαχείριση Combo
Τα combo δρομολόγησης υψηλότερου επιπέδου (ήδη συνοψισμένα στο /api/combos*) μπορούν επίσης να αντιστοιχιστούν 1:1 από ένα μοτίβο model id, επιτρέποντας διαφανή ανακατεύθυνση ενός model id τύπου OpenAI σε ένα combo.
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/model-combo-mappings |
Λίστα όλων των αντιστοιχίσεων model→combo |
| POST | /api/model-combo-mappings |
Δημιουργία αντιστοίχισης — body: {pattern, comboId, priority?, enabled?, description?} |
| GET | /api/model-combo-mappings/[id] |
Ανάκτηση μίας μεμονωμένης αντιστοίχισης |
| PUT | /api/model-combo-mappings/[id] |
Ενημέρωση πεδίων μιας υπάρχουσας αντιστοίχισης |
| DELETE | /api/model-combo-mappings/[id] |
Αφαίρεση αντιστοίχισης |
Αυθεντικοποίηση: session/κλειδί API διαχείρισης (requireManagementAuth).
Webhooks
Εξερχόμενες συνδρομές webhook για συμβάντα OmniRoute (ολοκλήρωση αιτήματος, εξάντληση ορίου, εναλλαγή κλειδιών, κ.λπ.).
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/webhooks |
Λίστα webhooks (τα μυστικά εμφανίζονται μασκαρισμένα ως <prefix>...) |
| POST | /api/webhooks |
Δημιουργία webhook — σώμα: {url, events?: ["*"], secret?, description?} |
| GET | /api/webhooks/[id] |
Ανάκτηση ενός webhook |
| PUT | /api/webhooks/[id] |
Ενημέρωση url/events/secret/description |
| DELETE | /api/webhooks/[id] |
Αφαίρεση ενός webhook |
| POST | /api/webhooks/[id]/test |
Αποστολή δοκιμαστικού ωφέλιμου φορτίου στο URL του webhook και επιστροφή κατάστασης παράδοσης |
Αυθεντικοποίηση: Συνεδρία διαχείρισης / κλειδί API (requireManagementAuth).
Καταχωρημένα Κλειδιά (Αυτόματη Διαχείριση)
Χρησιμοποιείται από το υποσύστημα αυτόματης διαχείρισης κλειδιών για την έκδοση και εναλλαγή κλειδιών API έναντι ενός υποστηρικτικού παρόχου/λογαριασμού, με ημερήσια/ωριαία όρια.
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/v1/registered-keys |
Λίστα καταχωρημένων κλειδιών (μόνο μασκαρισμένο πρόθεμα) |
| POST | /api/v1/registered-keys |
Έκδοση νέου καταχωρημένου κλειδιού — σώμα: {name, provider?, accountId?, idempotencyKey?, expiresAt?, dailyBudget?, hourlyBudget?}. Επιστρέφει το ακατέργαστο κλειδί μία φορά. Επιστρέφει 429 σε άρνηση ορίου. |
| GET | /api/v1/registered-keys/[id] |
Ανάκτηση μεταδεδομένων ενός καταχωρημένου κλειδιού (χωρίς ακατέργαστο υλικό) |
| DELETE | /api/v1/registered-keys/[id] |
Ανάκληση ενός καταχωρημένου κλειδιού |
| POST | /api/v1/registered-keys/[id]/revoke |
Ρητό τελικό σημείο ανάκλησης (ίδιο αποτέλεσμα με DELETE) |
Αυθεντικοποίηση: Bearer κλειδί API (isAuthenticated). Δείτε επίσης /v1/quotas/check και /v1/issues/report.
Πρωτόκολλο Agents
Εργασίες cloud agent (Claude Code, Codex Cloud, OpenHands, κ.λπ.) που εκτελούνται απομακρυσμένα εκ μέρους των χρηστών του OmniRoute.
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/v1/agents/tasks |
Λίστα εργασιών — προαιρετικά ?provider=, ?status=, ?limit= (1–500, προεπιλογή 50) |
| POST | /api/v1/agents/tasks |
Δημιουργία εργασίας — το σώμα επικυρώνεται από το CreateCloudAgentTaskSchema (providerId, prompt, source, options?). Επιστρέφει 201 με φάκελο εργασίας |
| DELETE | /api/v1/agents/tasks?id=... |
Διαγραφή εργασίας |
| GET | /api/v1/agents/tasks/[id] |
Ανάγνωση εργασίας — συγχρονισμένη ανανέωση κατάστασης από τον upstream cloud agent όταν έχει οριστεί external_id |
| POST | /api/v1/agents/tasks/[id] |
Διαφοροποιημένη ενέργεια: {action: "approve"}, {action: "message", message}, ή {action: "cancel"} |
| DELETE | /api/v1/agents/tasks/[id] |
Διαγραφή συγκεκριμένης εργασίας βάσει id |
Πιστοποίηση: απαιτείται πιστοποίηση διαχείρισης σε κάθε μέθοδο (
requireCloudAgentManagementAuth). Πριν από την έκδοση v3.8.0 αυτές ήταν χωρίς πιστοποίηση — βλ. commit588a0333για την ανατρεπτική αλλαγή.
# Δημιουργία εργασίας cloud task τύπου Claude Code
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":"..."}}'
Διακομιστές Μεσολάβησης Διαχείρισης
Εξερχόμενοι διακομιστές μεσολάβησης HTTP(S)/SOCKS που μπορούν να ανατεθούν σε παρόχους, λογαριασμούς ή καθολικά.
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/v1/management/proxies |
Λίστα διακομιστών μεσολάβησης (με ?id= επιστρέφει έναν· με ?id=&where_used=1 επιστρέφει το γράφο αναθέσεων) |
| POST | /api/v1/management/proxies |
Δημιουργία διακομιστή μεσολάβησης — το σώμα επικυρώνεται από το createProxyRegistrySchema |
| PATCH | /api/v1/management/proxies |
Ενημέρωση διακομιστή μεσολάβησης — το σώμα επικυρώνεται από το updateProxyRegistrySchema (απαιτεί id) |
| DELETE | /api/v1/management/proxies?id=...&force=1 |
Διαγραφή διακομιστή μεσολάβησης (χρησιμοποιήστε force=1 για αποσύνδεση αναθέσεων) |
| GET | /api/v1/management/proxies/assignments |
Λίστα αναθέσεων — φιλτράρισμα βάσει proxy_id, scope, scope_id· περάστε resolve_connection_id=<id> για επίλυση του ενεργού διακομιστή μεσολάβησης σύνδεσης |
| PUT | /api/v1/management/proxies/assignments |
Ανάθεση — το σώμα επικυρώνεται από το proxyAssignmentSchema ({scope, scopeId?, proxyId?}). Εκκαθαρίζει την κρυφή μνήμη dispatcher |
| PUT | /api/v1/management/proxies/bulk-assign |
Μαζική ανάθεση — το σώμα επικυρώνεται από το bulkProxyAssignmentSchema ({scope, scopeIds[], proxyId?}) |
| GET | /api/v1/management/proxies/health?hours=24 |
Συγκεντρωτική υγεία διακομιστή μεσολάβησης (αριθμοί επιτυχιών/αποτυχιών, λανθάνουσα καθυστέρηση) σε ένα χρονικό παράθυρο |
Πιστοποίηση: session/κλειδί API διαχείρισης σε κάθε διαδρομή (requireManagementAuth).
Τα
POST /api/v1/management/proxies/[id]/assignmentsκαιPOST /api/v1/management/proxies/[id]/healthπου αναφέρονται στην περιγραφή εργασίας εξυπηρετούνται από τις επίπεδες διαδρομές/assignmentsκαι/healthπου εμφανίζονται παραπάνω — δεν υπάρχουν υποδιαδρομές ανά id στη βάση κώδικα.
Ανθεκτικότητα (εκτεταμένη)
Το OmniRoute εκθέτει τρεις ανεξάρτητους μηχανισμούς προσωρινής αποτυχίας· τα παρακάτω endpoints διαχείρισης επιτρέπουν στους διαχειριστές να τους διαβάζουν και να τους παρακάμπτουν:
| Εύρος | Αποθήκευση κατάστασης | Ανάγνωση | Επαναφορά / εκκαθάριση |
|---|---|---|---|
| Breaker παρόχου | domain_circuit_breakers + στη μνήμη |
/api/monitoring/health |
POST /api/resilience/reset |
| Cooldown σύνδεσης | rateLimitedUntil στις συνδέσεις παρόχου |
/api/rate-limits, /api/providers/[id] |
(επανενεργοποιείται lazily· εκκαθάριση μέσω PUT παρόχου) |
| Κλείδωμα μοντέλου | Μητρώο διαθεσιμότητας μοντέλων στη μνήμη | GET /api/resilience/model-cooldowns |
DELETE /api/resilience/model-cooldowns |
Το PATCH /api/resilience δέχεται παρακάμψεις του breaker παρόχου μέσω των providerBreaker.oauth και providerBreaker.apikey. Κάθε προφίλ υποστηρίζει τα degradationThreshold, failureThreshold και resetTimeoutMs· τα ίδια πεδία εκτίθενται στο Dashboard → Settings → Resilience.
# Εκκαθάριση κλειδώματος ενός μεμονωμένου μοντέλου
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"}'
# Διαγραφή όλων των κλειδωμάτων
curl -X DELETE http://localhost:20128/api/resilience/model-cooldowns \
-H "Cookie: auth_token=..." \
-d '{"all":true}'
Πλήρης εννοιολογική αναφορά και προεπιλογές breaker: δείτε CLAUDE.md → "Resilience Runtime State".
Skills
Πλαίσιο Skills για την επέκταση του OmniRoute με προσαρμοσμένους εκτελέσιμους χειριστές, καθώς και ενσωματώσεις marketplace.
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/skills |
Λίστα εγκατεστημένων skills — με δυνατότητα φιλτραρίσματος βάσει ?q=, ?mode=on|off|auto, ?source=skillsmp|skillssh|local, με σελιδοποίηση |
| GET | /api/skills/[id] |
Ανάκτηση ενός skill |
| PUT | /api/skills/[id] |
Ενημέρωση skill (όνομα, περιγραφή, mode, schema, handler, tags) |
| DELETE | /api/skills/[id] |
Απεγκατάσταση ενός skill |
| POST | /api/skills/install |
Εγκατάσταση skill από ακατέργαστο manifest — body: {name, version, description, schema:{input, output}, handlerCode, apiKeyId?} |
| GET | /api/skills/executions |
Λίστα πρόσφατων εκτελέσεων skill (ιστορικό ελέγχου με εισόδους/εξόδους/διάρκεια) |
| GET | /api/skills/marketplace?q=... |
Αναζήτηση/λίστα δημοφιλών από το marketplace SkillsMP (απαιτεί ρύθμιση skillsmpApiKey) |
| POST | /api/skills/marketplace/install |
Εγκατάσταση skill βάσει id από το SkillsMP |
| GET | /api/skills/skillssh?q=&limit= |
Αναζήτηση στο μητρώο skills.sh |
| POST | /api/skills/skillssh/install |
Εγκατάσταση skill βάσει id από το skills.sh |
Αυθεντικοποίηση: session/API key διαχείρισης. Οι διαδρομές αναζήτησης marketplace δέχονται είτε αυθεντικοποίηση διαχείρισης είτε Bearer API key (isAuthenticated).
Μνήμη
Μόνιμο αποθηκευτικό σύστημα συνομιλιακής/πραγματολογικής μνήμης, με εμβέλεια ανά κλειδί API / συνεδρία.
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/memory |
Λίστα μνημών — ?apiKeyId=, ?type=, ?sessionId=, ?q=, με σελιδοποίηση offset/limit ή page/limit |
| POST | /api/memory |
Δημιουργία μνήμης — το σώμα επικυρώνεται από το Zod: {content, key, type?, sessionId?, apiKeyId?, metadata?, expiresAt?} |
| GET | /api/memory/[id] |
Ανάκτηση μίας μνήμης |
| DELETE | /api/memory/[id] |
Διαγραφή μιας μνήμης |
| GET | /api/memory/health |
Κατάσταση υποσυστήματος μνήμης (συνδεσιμότητα ΒΔ, backend ενσωματώσεων, κατάσταση διανυσματικού ευρετηρίου) |
Αυθεντικοποίηση: συνεδρία/κλειδί API διαχείρισης (requireManagementAuth). Απαρίθμηση type: FACTUAL, EPISODIC, SEMANTIC, PROCEDURAL (βλ. MemoryType στο src/lib/memory/types.ts).
MCP Server
Το OmniRoute διαθέτει ενσωματωμένο διακομιστή Model Context Protocol με 3 μεταφορές (stdio, SSE, streamable-http) και εργαλεία περιορισμένης εμβέλειας. Τα παρακάτω endpoints του πίνακα ελέγχου διαβάζουν δεδομένα κατάστασης/ελέγχου και δρομολογούν διαμέσου των μεταφορών HTTP.
| Μέθοδος | Διαδρομή | Περιγραφή | |
|---|---|---|---|
| GET | /api/mcp/status |
Παλμός, μεταφορά, κατάσταση σύνδεσης, τελευταία κλήση, κορυφαία εργαλεία, ποσοστό επιτυχίας 24ώρου | |
| GET | /api/mcp/tools |
Λίστα εργαλείων MCP με name, description, scopes, phase, auditLevel, sourceEndpoints |
|
| GET | /api/mcp/sse |
Άνοιγμα ροής SSE για τη μεταφορά SSE (επιστρέφει 503 εάν το MCP είναι απενεργοποιημένο ή υπάρχει αναντιστοιχία μεταφοράς) |
|
| POST | /api/mcp/sse |
Αποστολή πλαισίου JSON-RPC μέσω της μεταφοράς SSE | |
| GET | /api/mcp/stream |
Άνοιγμα της πλευράς SSE της μεταφοράς Streamable HTTP (μηνύματα που εκκινούνται από τον διακομιστή) | |
| POST | /api/mcp/stream |
Αποστολή πλαισίου JSON-RPC μέσω της μεταφοράς Streamable HTTP | |
| DELETE | /api/mcp/stream |
Τερματισμός συνεδρίας Streamable HTTP | |
| GET | /api/mcp/audit |
Αναζήτηση στο αρχείο καταγραφής ελέγχου — ?limit=, ?offset=, ?tool=, `?success=true |
false, ?apiKeyId=` |
| GET | /api/mcp/audit/stats |
Συγκεντρωτικά στατιστικά ελέγχου (σύνολα, ποσοστό επιτυχίας, μέση διάρκεια, κορυφαία εργαλεία) |
Αυθεντικοποίηση: οι μεταφορές sse/stream τηρούν την επιφάνεια αυθεντικοποίησης ειδικά για το MCP (κλειδί API τύπου Bearer με εμβέλεια mcp)· οι διαδρομές status/tools/audit* είναι αναγνώσιμες από τον πίνακα ελέγχου (δεν απαιτείται πρόσθετη αυθεντικοποίηση πέραν της πρόσβασης στον κεντρικό υπολογιστή του πίνακα ελέγχου).
Και οι δύο μεταφορές HTTP ελέγχονται από τις παραμέτρους
settings.mcpEnabledκαιsettings.mcpTransport— αναντιστοιχία μεταφοράς επιστρέφει400, ενώ απενεργοποιημένη κατάσταση MCP επιστρέφει503.
A2A Server
Το OmniRoute παρέχει ένα A2A (Agent-to-Agent) JSON-RPC 2.0 endpoint καθώς και ένα REST wrapper για επιθεώρηση/χρήση από το dashboard.
JSON-RPC
POST /a2a
Authorization: Bearer your-api-key # προαιρετικό εκτός αν το OMNIROUTE_API_KEY είναι ορισμένο
Content-Type: application/json
{
"jsonrpc": "2.0",
"id": 1,
"method": "message/send",
"params": {
"skill": "smart-routing",
"messages": [{"role": "user", "content": "Route this coding task"}]
}
}
Υποστηριζόμενες μέθοδοι (όλες ελεγχόμενες από το settings.a2aEnabled):
| Μέθοδος | Περιγραφή |
|---|---|
message/send |
Σύγχρονη εκτέλεση skill· επιστρέφει {task, artifacts, metadata} |
message/stream |
Streaming SSE εκτέλεση του ίδιου συνόλου skill |
tasks/get |
Ανάκτηση εργασίας βάσει taskId |
tasks/cancel |
Ακύρωση εργασίας βάσει taskId |
Ενσωματωμένα skills: smart-routing, quota-management, provider-discovery, cost-analysis, health-report.
Agent Card
GET /.well-known/agent.json
Επιστρέφει το δημόσιο A2A agent card (όνομα, περιγραφή, δυνατότητες, κατάλογος skill, σχήμα αυθεντικοποίησης) — αποθηκεύεται δημόσια στην cache για 1 ώρα. Δεν απαιτείται αυθεντικοποίηση.
REST βοηθητικά endpoints
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/a2a/status |
Κατάσταση ενεργοποίησης A2A + στατιστικά εργασιών + σύνοψη agent card από cache |
| GET | /api/a2a/tasks |
Λίστα εργασιών — ?state=submitted|working|completed|failed|cancelled, ?skill=, ?limit= (≤200), ?offset= |
| POST | /api/a2a/tasks |
(Δεν υλοποιείται ως REST helper — δημιουργία μέσω JSON-RPC message/send) |
| GET | /api/a2a/tasks/[id] |
Ανάκτηση μίας εργασίας |
| POST | /api/a2a/tasks/[id]/cancel |
Ακύρωση εργασίας |
Αυθεντικοποίηση: τα REST βοηθητικά endpoints λειτουργούν χωρίς αυθεντικοποίηση διαχείρισης (ανάγνωση από dashboard)· η διαδρομή JSON-RPC /a2a χρησιμοποιεί Bearer OMNIROUTE_API_KEY εφόσον έχει ρυθμιστεί.
Cloud, Evals & Assess
| Μέθοδος | Διαδρομή | Περιγραφή | ||
|---|---|---|---|---|
| POST | /api/cloud/auth |
Επαλήθευση ενός Bearer key και επιστροφή κρυφών συνδέσεων παρόχου + ψευδώνυμα μοντέλων για clients cloud συγχρονισμού | ||
| POST | /api/cloud/credentials/update |
Ενημέρωση κρυπτογραφημένων διαπιστευτηρίων για έναν πάροχο που συγχρονίζεται με το cloud | ||
| POST | /api/cloud/model/resolve |
Επίλυση ενός λογικού αναγνωριστικού μοντέλου σε συγκεκριμένο πάροχο/μοντέλο χρησιμοποιώντας τον τοπικό πίνακα δρομολόγησης | ||
| GET | /api/cloud/models/alias |
Λίστα ψευδωνύμων μοντέλων όπως εκτίθενται στο cloud sync | ||
| GET | /api/assess |
Ανάγνωση των τελευταίων κατηγοριοποιήσεων αξιολόγησης (ανά πάροχο/μοντέλο) | ||
| POST | /api/assess |
Εκτέλεση αξιολόγησης — body: `{scope: {type:"all"} | {type:"provider", providerId} | {type:"model", modelId}, trigger?}` |
| GET | /api/evals |
Λίστα ενσωματωμένων σουιτών eval + πιο πρόσφατες εκτελέσεις | ||
| POST | /api/evals |
Εκκίνηση εκτέλεσης eval | ||
| POST | /api/evals/suites |
Δημιουργία προσαρμοσμένης σουίτας eval — body επικυρωμένο από evalSuiteSaveSchema |
||
| GET | /api/evals/suites/[id] |
Ανάκτηση προσαρμοσμένης σουίτας eval |
Αυθεντικοποίηση: το /api/cloud/auth επικυρώνει απευθείας ένα Bearer key· οι υπόλοιπες διαδρομές /api/cloud/*, /api/evals/* και /api/assess απαιτούν session διαχείρισης ή API key. Το POST /api/assess χρησιμοποιεί validateBody με ένα σχήμα scope discriminated-union.
Διαχείριση ACP (Πρωτόκολλο Πελάτη Πράκτορα)
ως θυγατρικές διεργασίες. Αυτά τα endpoints διαχειρίζονται την ανίχνευση πρακτόρων ACP και την εγγραφή προσαρμοσμένων πρακτόρων.
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/acp/agents |
Λίστα όλων των γνωστών πρακτόρων CLI (ενσωματωμένοι + προσαρμοσμένοι) με κατάσταση εγκατάστασης, έκδοση, δυαδικό αρχείο |
| POST | /api/acp/agents |
Εγγραφή προσαρμοσμένου πράκτορα ACP ή ανανέωση κρυφής μνήμης — σώμα: {id, name, binary, versionCommand, providerAlias, spawnArgs, protocol} ή {action: "refresh"} |
| DELETE | /api/acp/agents |
Αφαίρεση προσαρμοσμένου πράκτορα ACP — παράμετρος ερωτήματος: ?id=<agentId> |
Παράδειγμα απόκρισης (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
}
Αυθεντικοποίηση: Απαιτεί σύνοδο διαχείρισης (cookie auth_token του dashboard) ή κλειδί API με εύρος διαχείρισης.
Δείτε το ACP Framework για πλήρεις λεπτομέρειες.
Αναλυτικά & Παρατηρησιμότητα
Endpoints αναλυτικών σε πραγματικό χρόνο για την παρακολούθηση δρομολόγησης, συμπίεσης και ποικιλομορφίας παρόχων. Αυτά τροφοδοτούν τις σελίδες /dashboard/analytics/*.
Αναλυτικά αυτόματης δρομολόγησης
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/analytics/auto-routing |
Συγκεντρωτικά στατιστικά αυτόματης δρομολόγησης: συνολικές κλήσεις, κατανομή στρατηγικής, κατανομή βαθμίδας, κορυφαίοι πάροχοι |
| GET | /api/analytics/auto-routing?days=7 |
Στατιστικά με χρονικό παράθυρο (προεπιλογή 24ω) |
Παράδειγμα απόκρισης:
{
"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 }
]
}
Αναλυτικά συμπίεσης
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/analytics/compression |
Συγκεντρωτικά στατιστικά συμπίεσης: tokens που αποθηκεύτηκαν, ποσοστό εξοικονόμησης, κατανομή λειτουργίας, χρήση μηχανής |
Παράδειγμα απόκρισης:
{
"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
}
}
Παρακολούθηση ποικιλομορφίας παρόχων
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/analytics/diversity |
Παρακολούθηση ποικιλομορφίας βάσει εντροπίας Shannon: αποτρέπει μεμονωμένα σημεία αποτυχίας μετρώντας την κατανομή παρόχων |
Παράδειγμα απόκρισης:
{
"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"]
}
Αυθεντικοποίηση: Απαιτεί σύνοδο διαχείρισης ή κλειδί API με εύρος διαχείρισης.
Λειτουργίες Διαχειριστή
Τερματικά σημεία αποκλειστικά για διαχειριστές, για επιχειρησιακή διαχείριση.
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/admin/concurrency |
Ανάγνωση τρεχόντων ορίων ταυτόχρονης εκτέλεσης (καθολικά + ανά πάροχο) |
| POST | /api/admin/concurrency |
Ενημέρωση ορίων ταυτόχρονης εκτέλεσης — σώμα: {global?: number, perProvider?: Record<string, number>} |
Πιστοποίηση: Απαιτεί διαχειριστική συνεδρία με εμβέλεια διαχειριστή.
Διαχείριση Εργαλείων CLI
Διαχείριση εργαλείων CLI που ενσωματώνονται με το OmniRoute (antigravity, chipotle, commandCode, devin-cli, κ.λπ.). Δείτε την Αναφορά Παρόχου για την πλήρη λίστα.
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/cli-tools/all-statuses |
Κατάσταση όλων των εργαλείων CLI (εγκατεστημένα, έκδοση, τελευταία εμφάνιση) |
| GET | /api/cli-tools/status |
Λεπτομέρειες κατάστασης για ένα εργαλείο CLI (ερώτημα ?tool=) |
| POST | /api/cli-tools/apply |
Εγγραφή της παραγόμενης ρύθμισης ενός εργαλείου (dryRun για προεπισκόπηση· 422 + containerEphemeralTarget όταν είναι σε container· migration σημειώνει παλαιό Codex YAML) |
| GET | /api/cli-tools/backups |
Λίστα αντιγράφων ασφαλείας ρυθμίσεων εργαλείων CLI |
| POST | /api/cli-tools/backups |
Δημιουργία αντιγράφου ασφαλείας όλων των ρυθμίσεων εργαλείων CLI |
| POST | /api/cli-tools/backups |
Επαναφορά: το ίδιο τερματικό με {tool, backupId} στο σώμα επαναφέρει το συγκεκριμένο αντίγραφο ασφαλείας |
| GET | /api/cli-tools/antigravity-mitm |
Κατάσταση proxy MITM του Antigravity (το εργαλείο CLI "antigravity-mitm") |
| POST | /api/cli-tools/antigravity-mitm/alias |
Ρύθμιση ψευδωνύμων antigravity-mitm |
Πιστοποίηση: Απαιτεί διαχειριστική συνεδρία.
Δεξιότητες Πράκτορα
Διαχείριση δεξιοτήτων πράκτορα ΤΝ (παρόμοιο με τα custom GPTs του OpenAI αλλά για πράκτορες).
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/agent-skills |
Λίστα όλων των δεξιοτήτων πράκτορα (ενσωματωμένες + προσαρμοσμένες) |
| GET | /api/agent-skills/[id] |
Λήψη συγκεκριμένης δεξιότητας πράκτορα |
| POST | /api/agent-skills |
Δημιουργία προσαρμοσμένης δεξιότητας πράκτορα — σώμα: {name, description, prompt, model?, temperature?} |
| PUT | /api/agent-skills/[id] |
Ενημέρωση προσαρμοσμένης δεξιότητας πράκτορα |
| DELETE | /api/agent-skills/[id] |
Διαγραφή προσαρμοσμένης δεξιότητας πράκτορα |
| GET | /api/agent-skills/[id]/raw |
Λήψη ακατέργαστης προτροπής + μεταδεδομένων (χωρίς εκτέλεση) |
| POST | /api/agent-skills/generate |
Δημιουργία νέας δεξιότητας με ΤΝ από περιγραφή σε φυσική γλώσσα |
Πιστοποίηση: Απαιτεί διαχειριστική συνεδρία ή κλειδί API με εμβέλεια διαχείρισης.
Διαχείριση Κρυφής Μνήμης
Διαχείριση της σημασιολογικής κρυφής μνήμης και της κρυφής μνήμης συλλογισμού.
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/cache |
Επισκόπηση κρυφής μνήμης: συνολικές εγγραφές, ποσοστό επιτυχίας, μέγεθος στο δίσκο |
| GET | /api/cache/entries |
Λίστα αποθηκευμένων εγγραφών (με σελιδοποίηση) |
| DELETE | /api/cache/entries |
Διαγραφή εγγραφών κρυφής μνήμης (φιλτράρισμα μέσω παραμέτρων ερωτήματος) |
| GET | /api/cache/stats |
Λεπτομερή στατιστικά κρυφής μνήμης (ανά πάροχο, ανά μοντέλο) |
| GET | /api/cache/reasoning |
Κατάσταση κρυφής μνήμης συλλογισμού (για αναπαραγωγή συλλογισμού) |
| DELETE | /api/cache/reasoning |
Εκκαθάριση κρυφής μνήμης συλλογισμού — παράμετροι: ?toolCallId=<id> (μεμονωμένη) ή ?provider=<p> ή χωρίς παραμέτρους (όλες) |
Αυθεντικοποίηση: Απαιτεί σύνοδο διαχείρισης.
Σύστημα Μνήμης
Διαχείριση μόνιμης μνήμης (FTS5 + διανυσματικές ενσωματώσεις).
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/memory |
Λίστα εγγραφών μνήμης (φιλτράρισμα κατά εύρος, τύπο, ερώτημα αναζήτησης) |
| POST | /api/memory |
Δημιουργία νέας εγγραφής μνήμης — σώμα: {scope, type, content, metadata?} |
| GET | /api/memory/[id] |
Ανάκτηση συγκεκριμένης εγγραφής μνήμης |
| PUT | /api/memory/[id] |
Ενημέρωση εγγραφής μνήμης |
| DELETE | /api/memory/[id] |
Διαγραφή εγγραφής μνήμης |
| GET | /api/memory?q= |
Αναζήτηση μνήμης (FTS5 + διανυσματική) — τα στατιστικά συμπεριλαμβάνονται στην ίδια απόκριση |
Αυθεντικοποίηση: Απαιτεί σύνοδο διαχείρισης ή κλειδί API περιορισμένο στη διαχείριση.
Webhooks
Διαχείριση συνδρομών webhook για συμβάντα.
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/webhooks |
Λίστα όλων των συνδρομών webhook |
| POST | /api/webhooks |
Δημιουργία συνδρομής webhook — σώμα: {url, events[], secret?, active?} |
| GET | /api/webhooks/[id] |
Ανάκτηση συγκεκριμένης συνδρομής webhook |
| PUT | /api/webhooks/[id] |
Ενημέρωση συνδρομής webhook |
| DELETE | /api/webhooks/[id] |
Διαγραφή συνδρομής webhook |
| GET | /api/webhooks/[id]/deliveries |
Λίστα ιστορικού παράδοσης για ένα webhook (αρχείο καταγραφής επιτυχίας/αποτυχίας) |
| POST | /api/webhooks/[id]/test |
Αποστολή δοκιμαστικού συμβάντος σε ένα webhook |
Αυθεντικοποίηση: Απαιτεί σύνοδο διαχείρισης.
Δείτε το Πλαίσιο Webhooks για πλήρη λίστα τύπων συμβάντων.
Πλαίσιο Δεξιοτήτων
Διαχείριση Δεξιοτήτων (το πλαίσιο αgentic επεκτάσεων).
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/skills |
Λίστα όλων των εγκατεστημένων δεξιοτήτων (ενσωματωμένες + προσαρμοσμένες) |
| POST | /api/skills/install |
Εγκατάσταση δεξιότητας από τοπική διαδρομή ή URL |
| DELETE | /api/skills/[id] |
Απεγκατάσταση δεξιότητας |
| PUT | /api/skills/[id] |
Ενεργοποίηση ή απενεργοποίηση δεξιότητας — σώμα: {enabled?: boolean, mode?: "on" | "off" | "auto"} |
| POST | /api/skills/executions |
Εκτέλεση δεξιότητας — σώμα: {skillName, apiKeyId, input?, sessionId?} |
| GET | /api/skills/executions |
Λίστα ιστορικού εκτελέσεων για όλες τις δεξιότητες (φίλτρο με ?apiKeyId=) |
Αυθεντικοποίηση: Απαιτεί διαχειριστική συνεδρία ή κλειδί API με εμβέλεια διαχείρισης.
Δείτε το Πλαίσιο Δεξιοτήτων για πλήρεις λεπτομέρειες.
Πρόσθετα
Διαχείριση πρόσθετων OmniRoute (επεκτάσεις τρίτων).
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/plugins |
Λίστα εγκατεστημένων πρόσθετων |
| POST | /api/plugins/marketplace/install |
Εγκατάσταση πρόσθετου από την αγορά |
| DELETE | /api/plugins/[name] |
Απεγκατάσταση πρόσθετου |
| POST | /api/plugins/[name]/activate |
Ενεργοποίηση πρόσθετου |
| POST | /api/plugins/[name]/deactivate |
Απενεργοποίηση πρόσθετου |
| GET | /api/plugins/[name]/config |
Λήψη ρυθμίσεων πρόσθετου |
| PUT | /api/plugins/[name]/config |
Ενημέρωση ρυθμίσεων πρόσθετου |
Αυθεντικοποίηση: Απαιτεί διαχειριστική συνεδρία.
Δείτε το Πλαίσιο Πρόσθετων για πλήρεις λεπτομέρειες.
Shadow Routing
Η σκιώδης / σύγκριση A-B μεταξύ παρόχων δεν αποτελεί ανεξάρτητη REST επιφάνεια — ρυθμίζεται μέσω της σύνθετης δρομολόγησης (δείτε Auto-Combo). Τα μετρικά σύγκρισης ανά combo εξυπηρετούνται από το GET /api/combos/metrics.
Προστατευτικές Ράβδοι
Επιθεώρηση των προστατευτικών ράβδων χρόνου εκτέλεσης (ανίχνευση PII, ανίχνευση έγχυσης prompt, γεφύρωση όρασης). Οι προστατευτικές ράβδοι εκτελούνται σε κάθε αίτημα· η εξαίρεση ανά κλήση γίνεται μέσω της κεφαλίδας αιτήματος x-omniroute-disabled-guardrails — δεν υπάρχει μόνιμη επιφάνεια ενεργοποίησης/απενεργοποίησης.
| Μέθοδος | Διαδρομή | Περιγραφή |
|---|---|---|
| GET | /api/guardrails |
Λίστα των καταχωρημένων προστατευτικών ράβδων και της κατάστασής τους (όνομα / ενεργό / προτεραιότητα) |
| POST | /api/guardrails/test |
Δοκιμαστική εκτέλεση της αγωγής προ-κλήσης σε δείγμα εισόδου — σώμα: {input, disabledGuardrails?} |
Αυθεντικοποίηση: Απαιτεί διαχειριστική συνεδρία.
Δείτε Ασφάλεια > Προστατευτικές Ράβδοι για πλήρεις λεπτομέρειες.
Αυθεντικοποίηση
Δείτε Αυθεντικοποίηση Διαχείρισης για τις τέσσερις
οικογένειες διαπιστευτηρίων (συνεδρία dashboard, τοπικό CLI token, oma_live_… Access
Token, API key με εύρος manage) και τον τρόπο που διαφέρουν από τα κλειδιά inference.
- Οι διαδρομές Dashboard (
/dashboard/*) χρησιμοποιούν cookieauth_token - Η σύνδεση χρησιμοποιεί αποθηκευμένο hash κωδικού πρόσβασης· εναλλακτικά το
INITIAL_PASSWORD - Το
requireLoginεναλλάσσεται μέσω/api/settings/require-login - Οι διαδρομές
/v1/*απαιτούν προαιρετικά Bearer API key ότανREQUIRE_API_KEY=true - Ο όρος «management token» / «management-scoped API key» σε αυτή την αναφορά σημαίνει μία από τις οικογένειες που περιγράφονται στον οδηγό — όχι κάποιον απροσδιόριστο επιπλέον τύπο μυστικού
Αλλαγή που διακόπτει συμβατότητα (v3.8.0) — Τα
/api/v1/agents/tasks/*και τα endpoints διαχείρισης cooldown απαιτούν πλέον auth διαχείρισης (cookieauth_tokendashboard ή API key με εύρος management). Οι πελάτες που καλούσαν προηγουμένως αυτές τις διαδρομές χωρίς αυθεντικοποίηση θα λαμβάνουν401 Unauthorized. Δείτε commit588a0333(fix(auth): require management auth for agent and cooldown APIs).