GET /v1/models
Alle aktiven Modelle abfragen.
Listet alle für die aufrufende Org freigeschalteten Modelle.
Diese Liste ist org-spezifisch. Ein Org-Owner oder -Admin legt unter Einstellungen → Modelle fest, welche Modelle in seiner Organisation nutzbar sind.
GET /v1/modelsliefert deshalb genau die Modelle, die dieser Key ansprechen darf — zwei Keys verschiedener Orgs können unterschiedliche Listen sehen.Ein Modell, das hier fehlt, beantwortet
POST /v1/chat/completionsmit404 model_not_found. Es gibt bewusst kein stilles Downgrade auf ein anderes Modell — sonst könnte ein Client nicht merken, dass er eine Antwort von einem anderen Modell bekommen hat. Lade die Liste bei einem 404 neu, statt Modell-IDs fest zu verdrahten.
curl https://sovrgpt.com/api/v1/models \
-H "Authorization: Bearer $SOVR_KEY"Antwort
{
"object": "list",
"data": [
{
"id": "gemma-4-12b",
"object": "model",
"created": 1715520000,
"owned_by": "sovrgpt",
"tier": "default",
"display_name": "Gemma 4 12B",
"subtitle": "Schnellantwort · multimodal-fähig",
"capabilities": {
"reasoning": 3,
"coding": 3,
"vision": 3,
"speed": 5,
"german": 4
},
"accepts_vision": true,
"accepts_tools": true,
"context_window": 262144,
"license": "Apache 2.0",
"quality_index": 22,
"quality_index_source": "Artificial Analysis Intelligence Index",
"quality_index_as_of": "2026-08-08",
"origin_vendor": "Alibaba",
"origin_country": "CN",
"lifecycle": "active",
"cold_start_hint": "warm meist <5 s, Cold-Start gemessen ~4 min"
},
{
"id": "qwen3.8-27b",
"object": "model",
"owned_by": "sovrgpt",
"tier": "balanced",
"display_name": "Qwen 3.8 27B",
"subtitle": "Mehr Tiefe, akzeptable Latenz",
"license": "Apache 2.0"
}
/* … weitere Tiers … */
]
}Felder
Standard-OpenAI-Felder
| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Modell-ID (in chat/completions als model einsetzbar). |
object | string | Immer "model". |
created | integer | Unix-Timestamp der Modell-Aktivierung. |
owned_by | string | Immer "sovrgpt". |
SovrGPT-Erweiterungen
| Feld | Typ | Beschreibung |
|---|---|---|
kind | enum | chat / embedding / rerank / tts / stt — sagt, über welchen Endpoint das Modell adressiert wird (/v1/chat/completions, /v1/embeddings, /v1/rerank, /v1/audio/speech, /v1/audio/transcriptions). |
tier | enum | Nur bei kind: "chat": default / balanced / reasoning / vision / coder-mini / llama. |
display_name | string | Schöner Name für UIs. |
subtitle | string | Kurzer Untertitel für Picker. |
capabilities | object | 1–5-Skalen für reasoning, coding, vision, speed, german. Picker-UIs zeigen daraus Sterne / Balken. |
accepts_vision | boolean | True, wenn das Modell Bilder im Multipart-Format akzeptiert. |
context_window | integer | Kontextfenster in Token — die Obergrenze für Eingabe und Ausgabe zusammen. Streut im Katalog zwischen 16 384 und 262 144, also um Faktor 16. ⚠️ Eine zu lange Anfrage schlägt nicht fehl, sie wird oben still gekürzt — planen Sie max_tokens so, dass Eingabe + max_tokens unter diesem Wert bleibt. Siehe Hinweis unten. |
license | string | Lizenz-Label (Apache 2.0, Llama Community License, …). |
quality_index | integer | null | Unabhängiger Qualitäts-Index. null heißt „von der Quelle nicht geführt" — wir schätzen keinen Wert. Siehe Hinweis unten. |
quality_index_source | string | Quelle des Index. Entfällt, wenn quality_index null ist. |
quality_index_as_of | string | Abrufdatum des Index (ISO-8601). Entfällt, wenn quality_index null ist. |
origin_vendor | string | Organisation, die die Gewichte veröffentlicht hat (z. B. Google DeepMind). |
origin_country | string | Herkunftsland der Gewichte (ISO-3166 alpha-2, z. B. US). |
lifecycle | enum | active / legacy / planned — siehe unten. |
lifecycle_note | string | Kurzer Hinweis zum Auslaufen. Nur bei lifecycle: "legacy" gesetzt. |
cold_start_hint | string | Menschen-lesbarer Hinweis zur erwarteten Cold-Start-Dauer. |
accepts_tools | boolean | True, wenn das Modell ein tools-Array annimmt. Bei false scheitert eine Anfrage mit tools hart (HTTP 400) — sie fällt nicht auf eine Textantwort zurück. Vor dem Anhängen von Tool-Definitionen prüfen. |
effort_levels | array | Die für dieses Modell gemessenen Denk-Aufwandsstufen (low / medium / high), die reasoning_effort in /v1/chat/completions entgegennimmt. Leeres Array = kein wirksamer Regler; ein trotzdem gesendeter Wert wird nicht übersetzt. Nicht jedes Modell führt alle drei. |
is_remote | boolean | Nur bei org-eigenen Einträgen (siehe unten): der Endpunkt gehört Ihrer Organisation und liegt außerhalb der EU-Souveränität von SovrGPT. |
Zum Kontextfenster
Der Wert ist die harte Obergrenze des Modells für Eingabe plus Ausgabe zusammen.
Er ist damit der einzige Wert in dieser Liste, den Sie kennen müssen, um
max_tokens überhaupt sinnvoll setzen zu können.
🔴 Ein Überschreiten meldet sich nicht. /v1/chat/completions reicht Ihre
Anfrage unverändert an den Inferenz-Server weiter; ist sie zu lang, wird sie
dort still gekürzt — Sie bekommen HTTP 200 und eine Antwort, die den
abgeschnittenen Teil Ihres Prompts nie gesehen hat. Es gibt keinen Fehlercode
dafür. Rechnen Sie deshalb selbst:
Eingabe-Token + max_tokens < context_window⚠️ Der Wert ist pro Modell verschieden und die Spanne ist groß. Zwischen qwen3.5-9b-deepseek-v4-flash (16 384) und gemma-4-12b (262 144) liegt Faktor 16. Wer eine Integration von einem Modell auf ein anderes umstellt, stellt
damit auch das Kontextbudget um — siehe Migration.
📌 Ein kleines Fenster ist meist eine Hardware-Grenze, keine Produktentscheidung. Je größer die Gewichte eines Modells auf der Karte, desto weniger Platz bleibt für den KV-Cache — und der bestimmt das Fenster. Wenn Sie viel Kontext brauchen, nehmen Sie qwen3.8-27b (131 072) oder gemma-4-12b (262 144).
Zum Qualitäts-Index
Quelle ist der Artificial Analysis Intelligence Index. Er ist deshalb aussagekräftig, weil er alle Modelle in einem Testaufbau misst — die Werte sind also untereinander vergleichbar, anders als Zahlen aus den jeweiligen Herstellerkarten.
⚠️ Zwei Grenzen, die dazugehören: Der Index ist ein Aggregat über
englischsprachige Tests und sagt nichts über deutsche Sprachqualität.
Und er ist eine Momentaufnahme — deshalb liefern wir immer quality_index_as_of
mit. Nicht jedes Modell ist dort gelistet; in dem Fall ist quality_index null,
und wir setzen bewusst keinen Ersatzwert ein.
Zum Lebenszyklus (lifecycle)
| Wert | Bedeutung |
|---|---|
active | Die empfohlene Wahl für diese Rolle. |
legacy | Weiterhin voll nutzbar und über die API adressierbar, aber nicht mehr die empfohlene Wahl und mittelfristig auslaufend. Es gibt keinen harten Abschalttermin — bestehende Integrationen laufen unverändert weiter. lifecycle_note nennt in der Regel den Nachfolger. |
planned | Entschieden, aber noch nicht bereitgestellt. Erscheint nicht in dieser Liste und ist nicht adressierbar. |
Wer langfristig plant, sollte auf lifecycle filtern statt Modell-IDs fest zu
verdrahten.
OpenAI-Clients ignorieren unbekannte Felder — alle Erweiterungen sind additiv.
Audio-Modelle (TTS/STT) in der Liste
Auch die Sprach-Modelle erscheinen hier mit kind: "tts" bzw. kind: "stt" —
so kannst du programmatisch abfragen, welche Stimm-Engines verfügbar sind:
{ "id": "supertonic-3", "kind": "tts", "display_name": "Supertonic 3 — Text-to-Speech" }
{ "id": "cosyvoice-3", "kind": "tts", "display_name": "CosyVoice 3 — Expressive TTS + Voice-Cloning" }
{ "id": "voxtral-mini-transcribe", "kind": "stt", "display_name": "Voxtral Mini Transcribe — Speech-to-Text" }Die passende id gibst du dann als model an POST /v1/audio/speech bzw.
/v1/audio/transcriptions — siehe Audio-API.
Eigene Modelle Ihrer Organisation
Trägt Ihre Organisation unter Einstellungen → Provider einen eigenen OpenAI-kompatiblen Endpunkt ein (eigene Adresse, eigener Modellname, eigener Anzeigename), erscheint er hier wie jedes andere Modell — erkennbar an:
{
"id": "org-model:8b2f…",
"owned_by": "org",
"kind": "chat",
"tier": "remote",
"is_remote": true,
"accepts_tools": false
}- Die
idmit dem Präfixorg-model:ist die Modell-ID für/v1/chat/completions— genau wie eine Katalog-ID. owned_by: "org"stattsovrgpt: der Endpunkt gehört Ihnen, nicht uns.- Anfragen an ein solches Modell verlassen die EU-Souveränität von SovrGPT und gehen direkt an die eingetragene Adresse; es gilt deren Datenschutzerklärung.
accepts_toolsistfalseundeffort_levelsleer — über einen fremden Endpunkt ist nichts gemessen, und wir sagen nichts zu, was wir nicht geprüft haben.
Nur aktivierte Einträge erscheinen. Ein pausierter oder gelöschter Eintrag
verschwindet aus der Liste, und /v1/chat/completions antwortet für seine ID
mit HTTP 404 model_not_found — nicht mit einer stillen Ersatzantwort.
Modell nicht in der Liste?
Drei Gründe, in dieser Reihenfolge zu prüfen:
- Die Org hat es ausgeblendet. Ein Owner/Admin kuratiert unter Einstellungen → Modelle, welche Modelle das Team sieht. Häufigste Ursache — und die einzige, die du von außen nicht sehen kannst.
lifecycle: "planned"— entschieden, aber noch nicht bereitgestellt; erscheint grundsätzlich nicht in dieser Liste.- Ein org-eigener Eintrag ist pausiert oder gelöscht (siehe oben) — oder der Server hat keinen Verschlüsselungs-Schlüssel konfiguriert, dann werden org-eigene Einträge grundsätzlich nicht bedient.
Filter / Pagination
Aktuell keine Filter. Die Liste ist kurz (≤10 Einträge), Pagination
nicht nötig. Falls in Zukunft >100 Modelle aktiv sind, kommt
?limit=/?after= analog zu OpenAI.
Caching
Antworten ändern sich selten (≤ein Update pro Woche). Wir empfehlen clientseitiges Caching mit TTL = 1 Stunde. Bei Modell-Wechseln gibt es kein Push — Clients sollen nach 401/404 die Liste erneut laden.