mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-05-02 16:20:26 +00:00
442 lines
16 KiB
Markdown
442 lines
16 KiB
Markdown
# API-Referenz
|
||
|
||
🌐 **Languages:** 🇺🇸 [English](../../API_REFERENCE.md) | 🇧🇷 [Português (Brasil)](../pt-BR/API_REFERENCE.md) | 🇪🇸 [Español](../es/API_REFERENCE.md) | 🇫🇷 [Français](../fr/API_REFERENCE.md) | 🇮🇹 [Italiano](../it/API_REFERENCE.md) | 🇷🇺 [Русский](../ru/API_REFERENCE.md) | 🇨🇳 [中文 (简体)](../zh-CN/API_REFERENCE.md) | 🇩🇪 [Deutsch](../de/API_REFERENCE.md) | 🇮🇳 [हिन्दी](../in/API_REFERENCE.md) | 🇹🇭 [ไทย](../th/API_REFERENCE.md) | 🇺🇦 [Українська](../uk-UA/API_REFERENCE.md) | 🇸🇦 [العربية](../ar/API_REFERENCE.md) | 🇯🇵 [日本語](../ja/API_REFERENCE.md) | 🇻🇳 [Tiếng Việt](../vi/API_REFERENCE.md) | 🇧🇬 [Български](../bg/API_REFERENCE.md) | 🇩🇰 [Dansk](../da/API_REFERENCE.md) | 🇫🇮 [Suomi](../fi/API_REFERENCE.md) | 🇮🇱 [עברית](../he/API_REFERENCE.md) | 🇭🇺 [Magyar](../hu/API_REFERENCE.md) | 🇮🇩 [Bahasa Indonesia](../id/API_REFERENCE.md) | 🇰🇷 [한국어](../ko/API_REFERENCE.md) | 🇲🇾 [Bahasa Melayu](../ms/API_REFERENCE.md) | 🇳🇱 [Nederlands](../nl/API_REFERENCE.md) | 🇳🇴 [Norsk](../no/API_REFERENCE.md) | 🇵🇹 [Português (Portugal)](../pt/API_REFERENCE.md) | 🇷🇴 [Română](../ro/API_REFERENCE.md) | 🇵🇱 [Polski](../pl/API_REFERENCE.md) | 🇸🇰 [Slovenčina](../sk/API_REFERENCE.md) | 🇸🇪 [Svenska](../sv/API_REFERENCE.md) | 🇵🇭 [Filipino](../phi/API_REFERENCE.md)
|
||
|
||
Vollständige Referenz für alle OmniRoute-API-Endpunkte.
|
||
|
||
---
|
||
|
||
## Inhaltsverzeichnis
|
||
|
||
- [Chat Completions](#chat-completions)
|
||
- [Embeddings](#embeddings)
|
||
- [Image Generation](#image-generation)
|
||
- [List Models](#list-models)
|
||
- [Compatibility Endpoints](#compatibility-endpoints)
|
||
- [Semantic Cache](#semantic-cache)
|
||
- [Dashboard & Management](#dashboard--management)
|
||
- [Request Processing](#request-processing)
|
||
- [Authentication](#authentication)
|
||
|
||
---
|
||
|
||
## Chat-Abschlüsse
|
||
|
||
```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
|
||
}
|
||
```
|
||
|
||
### Benutzerdefinierte Header
|
||
|
||
| Kopfzeile | Richtung | Beschreibung |
|
||
| ------------------------ | -------- | -------------------------------------------- |
|
||
| `X-OmniRoute-No-Cache` | Anfrage | Auf `true` setzen, um den Cache zu umgehen |
|
||
| `X-OmniRoute-Progress` | Anfrage | Für Fortschrittsereignisse auf `true` setzen |
|
||
| `Idempotency-Key` | Anfrage | Dedup-Schlüssel (5-Sekunden-Fenster) |
|
||
| `X-Request-Id` | Anfrage | Alternativer Deduplizierungsschlüssel |
|
||
| `X-OmniRoute-Cache` | Antwort | `HIT` oder `MISS` (kein Streaming) |
|
||
| `X-OmniRoute-Idempotent` | Antwort | `true` wenn dedupliziert |
|
||
| `X-OmniRoute-Progress` | Antwort | `enabled` wenn Fortschrittsverfolgung auf |
|
||
|
||
---
|
||
|
||
## Einbettungen
|
||
|
||
```bash
|
||
POST /v1/embeddings
|
||
Authorization: Bearer your-api-key
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"model": "nebius/Qwen/Qwen3-Embedding-8B",
|
||
"input": "The food was delicious"
|
||
}
|
||
```
|
||
|
||
Verfügbare Anbieter: Nebius, OpenAI, Mistral, Together AI, Fireworks, NVIDIA.
|
||
|
||
```bash
|
||
# List all embedding models
|
||
GET /v1/embeddings
|
||
```
|
||
|
||
---
|
||
|
||
## Bildgenerierung
|
||
|
||
```bash
|
||
POST /v1/images/generations
|
||
Authorization: Bearer your-api-key
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"model": "openai/dall-e-3",
|
||
"prompt": "A beautiful sunset over mountains",
|
||
"size": "1024x1024"
|
||
}
|
||
```
|
||
|
||
Verfügbare Anbieter: OpenAI (DALL-E), xAI (Grok Image), Together AI (FLUX), Fireworks AI.
|
||
|
||
```bash
|
||
# List all image models
|
||
GET /v1/images/generations
|
||
```
|
||
|
||
---
|
||
|
||
## Modelle auflisten
|
||
|
||
```bash
|
||
GET /v1/models
|
||
Authorization: Bearer your-api-key
|
||
|
||
→ Returns all chat, embedding, and image models + combos in OpenAI format
|
||
```
|
||
|
||
---
|
||
|
||
## Kompatibilitätsendpunkte
|
||
|
||
| Methode | Pfad | Formatieren |
|
||
| ------- | --------------------------- | --------------------------- |
|
||
| POST | `/v1/chat/completions` | OpenAI |
|
||
| POST | `/v1/messages` | Anthropisch |
|
||
| POST | `/v1/responses` | OpenAI-Antworten |
|
||
| POST | `/v1/embeddings` | OpenAI |
|
||
| POST | `/v1/images/generations` | OpenAI |
|
||
| GET | `/v1/models` | OpenAI |
|
||
| POST | `/v1/messages/count_tokens` | Anthropisch |
|
||
| GET | `/v1beta/models` | Zwillinge |
|
||
| POST | `/v1beta/models/{...path}` | Zwillinge generierenContent |
|
||
| POST | `/v1/api/chat` | Ollama |
|
||
|
||
### Dedizierte Anbieterrouten
|
||
|
||
```bash
|
||
POST /v1/providers/{provider}/chat/completions
|
||
POST /v1/providers/{provider}/embeddings
|
||
POST /v1/providers/{provider}/images/generations
|
||
```
|
||
|
||
Das Anbieterpräfix wird automatisch hinzugefügt, wenn es fehlt. Nicht übereinstimmende Modelle geben `400` zurück.
|
||
|
||
---
|
||
|
||
## Semantischer Cache
|
||
|
||
```bash
|
||
# Get cache stats
|
||
GET /api/cache
|
||
|
||
# Clear all caches
|
||
DELETE /api/cache
|
||
```
|
||
|
||
Antwortbeispiel:
|
||
|
||
```json
|
||
{
|
||
"semanticCache": {
|
||
"memorySize": 42,
|
||
"memoryMaxSize": 500,
|
||
"dbSize": 128,
|
||
"hitRate": 0.65
|
||
},
|
||
"idempotency": {
|
||
"activeKeys": 3,
|
||
"windowMs": 5000
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Dashboard und Verwaltung
|
||
|
||
### Authentifizierung
|
||
|
||
| Endpunkt | Methode | Beschreibung |
|
||
| ----------------------------- | ------- | --------------------------------- |
|
||
| `/api/auth/login` | POST | Anmelden |
|
||
| `/api/auth/logout` | POST | Abmelden |
|
||
| `/api/settings/require-login` | GET/PUT | Anmeldung erforderlich umschalten |
|
||
|
||
### Anbieterverwaltung
|
||
|
||
| Endpunkt | Methode | Beschreibung |
|
||
| ---------------------------- | --------------- | -------------------------------- |
|
||
| `/api/providers` | GET/POST | Anbieter auflisten/anlegen |
|
||
| `/api/providers/[id]` | GET/PUT/DELETE | Einen Anbieter verwalten |
|
||
| `/api/providers/[id]/test` | POST | Provider-Verbindung testen |
|
||
| `/api/providers/[id]/models` | GET | Anbietermodelle auflisten |
|
||
| `/api/providers/validate` | POST | Anbieterkonfiguration validieren |
|
||
| `/api/provider-nodes*` | Verschiedene | Provider-Knotenverwaltung |
|
||
| `/api/provider-models` | GET/POST/DELETE | Kundenspezifische Modelle |
|
||
|
||
### OAuth-Flows
|
||
|
||
| Endpunkt | Methode | Beschreibung |
|
||
| -------------------------------- | ------------ | -------------------------- |
|
||
| `/api/oauth/[provider]/[action]` | Verschiedene | Anbieterspezifisches OAuth |
|
||
|
||
### Routing & Konfig
|
||
|
||
| Endpunkt | Methode | Beschreibung |
|
||
| --------------------- | ------------ | -------------------------------- |
|
||
| `/api/models/alias` | GET/POST | Modell-Aliase |
|
||
| `/api/models/catalog` | GET | Alle Modelle nach Anbieter + Typ |
|
||
| `/api/combos*` | Verschiedene | Combo-Management |
|
||
| `/api/keys*` | Verschiedene | API-Schlüsselverwaltung |
|
||
| `/api/pricing` | GET | Modellpreise |
|
||
|
||
### Nutzung und Analyse
|
||
|
||
| Endpunkt | Methode | Beschreibung |
|
||
| --------------------------- | ------- | -------------------------------- |
|
||
| `/api/usage/history` | GET | Nutzungshistorie |
|
||
| `/api/usage/logs` | GET | Nutzungsprotokolle |
|
||
| `/api/usage/request-logs` | GET | Protokolle auf Anforderungsebene |
|
||
| `/api/usage/[connectionId]` | GET | Nutzung pro Verbindung |
|
||
|
||
### Einstellungen
|
||
|
||
| Endpunkt | Methode | Beschreibung |
|
||
| ------------------------------- | ------- | -------------------------------- |
|
||
| `/api/settings` | GET/PUT | Allgemeine Einstellungen |
|
||
| `/api/settings/proxy` | GET/PUT | Netzwerk-Proxy-Konfiguration |
|
||
| `/api/settings/proxy/test` | POST | Proxy-Verbindung testen |
|
||
| `/api/settings/ip-filter` | GET/PUT | IP-Zulassungs-/Blockierungsliste |
|
||
| `/api/settings/thinking-budget` | GET/PUT | Begründung des Token-Budgets |
|
||
| `/api/settings/system-prompt` | GET/PUT | Globale Systemaufforderung |
|
||
|
||
### Überwachung
|
||
|
||
| Endpunkt | Methode | Beschreibung |
|
||
| ------------------------ | ---------------- | --------------------------- |
|
||
| `/api/sessions` | GET | Aktive Sitzungsverfolgung |
|
||
| `/api/rate-limits` | GET | Tariflimits pro Konto |
|
||
| `/api/monitoring/health` | GET | Gesundheitscheck |
|
||
| `/api/cache` | ERHALTEN/LÖSCHEN | Cache-Statistiken / löschen |
|
||
|
||
### Sichern und Exportieren/Importieren
|
||
|
||
| Endpunkt | Methode | Beschreibung |
|
||
| --------------------------- | ------- | -------------------------------------------------------------- |
|
||
| `/api/db-backups` | GET | Verfügbare Backups auflisten |
|
||
| `/api/db-backups` | PUT | Erstellen Sie ein manuelles Backup |
|
||
| `/api/db-backups` | POST | Von einem bestimmten Backup wiederherstellen |
|
||
| `/api/db-backups/export` | GET | Datenbank als .sqlite-Datei herunterladen |
|
||
| `/api/db-backups/import` | POST | Laden Sie die .sqlite-Datei hoch, um die Datenbank zu ersetzen |
|
||
| `/api/db-backups/exportAll` | GET | Vollständiges Backup als .tar.gz-Archiv herunterladen |
|
||
|
||
### Cloud-Synchronisierung
|
||
|
||
| Endpunkt | Methode | Beschreibung |
|
||
| ---------------------- | ------------ | ------------------------------- |
|
||
| `/api/sync/cloud` | Verschiedene | Cloud-Synchronisierungsvorgänge |
|
||
| `/api/sync/initialize` | POST | Synchronisierung initialisieren |
|
||
| `/api/cloud/*` | Verschiedene | Cloud-Management |
|
||
|
||
### CLI-Tools
|
||
|
||
| Endpunkt | Methode | Beschreibung |
|
||
| ---------------------------------- | ------- | ----------------------- |
|
||
| `/api/cli-tools/claude-settings` | GET | Claude CLI-Status |
|
||
| `/api/cli-tools/codex-settings` | GET | Codex-CLI-Status |
|
||
| `/api/cli-tools/droid-settings` | GET | Droid-CLI-Status |
|
||
| `/api/cli-tools/openclaw-settings` | GET | OpenClaw CLI-Status |
|
||
| `/api/cli-tools/runtime/[toolId]` | GET | Generische CLI-Laufzeit |
|
||
|
||
Zu den CLI-Antworten gehören: `installed`, `runnable`, `command`, `commandPath`, `runtimeMode`, `reason`.
|
||
|
||
### Belastbarkeit und Ratenbeschränkungen
|
||
|
||
| Endpunkt | Methode | Beschreibung |
|
||
| ----------------------- | ------- | -------------------------------------- |
|
||
| `/api/resilience` | GET/PUT | Resilienzprofile abrufen/aktualisieren |
|
||
| `/api/resilience/reset` | POST | Leistungsschalter zurücksetzen |
|
||
| `/api/rate-limits` | GET | Status der Ratenbegrenzung pro Konto |
|
||
| `/api/rate-limit` | GET | Konfiguration des globalen Ratenlimits |
|
||
|
||
### Bewertungen
|
||
|
||
| Endpunkt | Methode | Beschreibung |
|
||
| ------------ | -------- | ---------------------------------------------------- |
|
||
| `/api/evals` | GET/POST | Evaluierungssuiten auflisten / Evaluierung ausführen |
|
||
|
||
### Richtlinien
|
||
|
||
| Endpunkt | Methode | Beschreibung |
|
||
| --------------- | --------------- | ----------------------------- |
|
||
| `/api/policies` | GET/POST/DELETE | Routing-Richtlinien verwalten |
|
||
|
||
### Compliance
|
||
|
||
| Endpunkt | Methode | Beschreibung |
|
||
| --------------------------- | ------- | -------------------------------------- |
|
||
| `/api/compliance/audit-log` | GET | Compliance-Audit-Protokoll (letztes N) |
|
||
|
||
### v1beta (Gemini-kompatibel)
|
||
|
||
| Endpunkt | Methode | Beschreibung |
|
||
| -------------------------- | ------- | ---------------------------------- |
|
||
| `/v1beta/models` | GET | Modelle im Gemini-Format auflisten |
|
||
| `/v1beta/models/{...path}` | POST | Gemini `generateContent` Endpunkt |
|
||
|
||
Diese Endpunkte spiegeln das API-Format von Gemini für Kunden wider, die native Gemini SDK-Kompatibilität erwarten.
|
||
|
||
### Interne/System-APIs
|
||
|
||
| Endpunkt | Methode | Beschreibung |
|
||
| --------------- | ------- | ---------------------------------------------------------------------------- |
|
||
| `/api/init` | GET | Überprüfung der Anwendungsinitialisierung (wird beim ersten Start verwendet) |
|
||
| `/api/tags` | GET | Ollama-kompatible Modell-Tags (für Ollama-Clients) |
|
||
| `/api/restart` | POST | Ordentlichen Serverneustart auslösen |
|
||
| `/api/shutdown` | POST | Ordentliches Herunterfahren des Servers auslösen |
|
||
|
||
> **Hinweis:** Diese Endpunkte werden intern vom System oder für die Ollama-Client-Kompatibilität verwendet. Sie werden normalerweise nicht von Endbenutzern aufgerufen.
|
||
|
||
---
|
||
|
||
## Audiotranskription
|
||
|
||
```bash
|
||
POST /v1/audio/transcriptions
|
||
Authorization: Bearer your-api-key
|
||
Content-Type: multipart/form-data
|
||
```
|
||
|
||
Transkribieren Sie Audiodateien mit Deepgram oder AssemblyAI.
|
||
|
||
**Anfrage:**
|
||
|
||
```bash
|
||
curl -X POST http://localhost:20128/v1/audio/transcriptions \
|
||
-H "Authorization: Bearer your-api-key" \
|
||
-F "file=@recording.mp3" \
|
||
-F "model=deepgram/nova-3"
|
||
```
|
||
|
||
**Antwort:**
|
||
|
||
```json
|
||
{
|
||
"text": "Hello, this is the transcribed audio content.",
|
||
"task": "transcribe",
|
||
"language": "en",
|
||
"duration": 12.5
|
||
}
|
||
```
|
||
|
||
**Unterstützte Anbieter:** `deepgram/nova-3`, `assemblyai/best`.
|
||
|
||
**Unterstützte Formate:** `mp3`, `wav`, `m4a`, `flac`, `ogg`, `webm`.
|
||
|
||
---
|
||
|
||
## Ollama-Kompatibilität
|
||
|
||
Für Kunden, die das API-Format von Ollama verwenden:
|
||
|
||
```bash
|
||
# Chat endpoint (Ollama format)
|
||
POST /v1/api/chat
|
||
|
||
# Model listing (Ollama format)
|
||
GET /api/tags
|
||
```
|
||
|
||
Anfragen werden automatisch zwischen Ollama und internen Formaten übersetzt.
|
||
|
||
---
|
||
|
||
## Telemetrie
|
||
|
||
```bash
|
||
# Get latency telemetry summary (p50/p95/p99 per provider)
|
||
GET /api/telemetry/summary
|
||
```
|
||
|
||
**Antwort:**
|
||
|
||
```json
|
||
{
|
||
"providers": {
|
||
"claudeCode": { "p50": 245, "p95": 890, "p99": 1200, "count": 150 },
|
||
"github": { "p50": 180, "p95": 620, "p99": 950, "count": 320 }
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Budget
|
||
|
||
```bash
|
||
# Get budget status for all API keys
|
||
GET /api/usage/budget
|
||
|
||
# Set or update a budget
|
||
POST /api/usage/budget
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"keyId": "key-123",
|
||
"limit": 50.00,
|
||
"period": "monthly"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Modellverfügbarkeit
|
||
|
||
```bash
|
||
# Get real-time model availability across all providers
|
||
GET /api/models/availability
|
||
|
||
# Check availability for a specific model
|
||
POST /api/models/availability
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"model": "claude-sonnet-4-5-20250929"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Bearbeitung der Anfrage
|
||
|
||
1. Client sendet Anfrage an `/v1/*`
|
||
2. Route-Handler-Aufrufe `handleChat`, `handleEmbedding`, `handleAudioTranscription` oder `handleImageGeneration`
|
||
3. Modell wird aufgelöst (direkter Anbieter/Modell oder Alias/Kombination)
|
||
4. Aus der lokalen Datenbank ausgewählte Anmeldeinformationen mit Kontoverfügbarkeitsfilterung
|
||
5. Für Chat: `handleChatCore` – Formaterkennung, Übersetzung, Cache-Prüfung, Idempotenzprüfung
|
||
6. Der Executor des Anbieters sendet eine Upstream-Anfrage
|
||
7. Antwort zurück ins Client-Format übersetzt (Chat) oder unverändert zurückgegeben (Einbettungen/Bilder/Audio)
|
||
8. Nutzung/Protokollierung aufgezeichnet
|
||
9. Bei Fehlern gilt ein Fallback gemäß den Combo-Regeln
|
||
|
||
Vollständige Architekturreferenz: [link](ARCHITECTURE.md)
|
||
|
||
---
|
||
|
||
## Authentifizierung
|
||
|
||
– Dashboard-Routen (`/dashboard/*`) verwenden das Cookie `auth_token`
|
||
|
||
- Bei der Anmeldung wird der gespeicherte Passwort-Hash verwendet. Fallback auf `INITIAL_PASSWORD`
|
||
- `requireLogin` umschaltbar über `/api/settings/require-login`
|
||
– `/v1/*` Routen erfordern optional einen Bearer-API-Schlüssel, wenn `REQUIRE_API_KEY=true`
|