SovrGPT Dokumentation
API

GET /v1/models

Modellliste der SovrGPT-API abfragen: Modell-IDs, Kontextfenster, Werkzeug- und Bildfähigkeit, Denk-Stufen, Herkunft und Lebenszyklus je Modell.

Listet alle Modelle, die der aufrufende Schlüssel nutzen darf: Chat, Embeddings, Reranking, Sprache und Entscheidungen. Die Antwort folgt dem OpenAI-Schema und ergänzt Felder, mit denen Sie ein passendes Modell auswählen.

Die Liste gilt je Organisation. Owner und Admins legen unter Einstellungen → Modelle fest, welche Chat-Modelle nutzbar sind; zwei Schlüssel verschiedener Organisationen können also verschiedene Listen sehen. Ein ausgeblendetes Katalogmodell beantwortet POST /v1/chat/completions mit 404 model_not_found, eine unbekannte ID ebenso (siehe Kopfzeilen). Laden Sie 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",

      "kind": "chat",
      "tier": "default",
      "display_name": "Gemma 4 12B",
      "subtitle": "Alltag – mit sehr großem Kontext",
      "capabilities": {
        "reasoning": 3,
        "coding": 3,
        "vision": 4,
        "speed": 4,
        "german": 4
      },
      "accepts_vision": true,
      "accepts_tools": true,
      "effort_levels": [],
      "context_window": 262144,
      "license": "Apache 2.0",
      "attribution": "Powered by Gemma",
      "quality_index": 22,
      "quality_index_source": "Artificial Analysis Intelligence Index",
      "quality_index_as_of": "2026-08-08",
      "origin_vendor": "Google DeepMind",
      "origin_country": "US",
      "lifecycle": "active",
      "cold_start_hint": "warm <10 s, Cold-Start gemessen ~5,5–9,5 min (332–574 s)"
    },
    {
      "id": "stackit-qwen3.8-27b",
      "object": "model",
      "owned_by": "sovrgpt",
      "tier": "hosted",
      "display_name": "Qwen 3.8 27B",
      "subtitle": "Ohne Kaltstart · Betrieb in Deutschland",
      "license": "Apache 2.0"
    }
    /* … weitere Modelle … */
  ]
}

Felder

Standard-OpenAI-Felder

FeldTypBeschreibung
idstringModell-ID, in chat/completions als model einsetzbar.
objectstringImmer "model".
createdintegerZeitpunkt der Abfrage (Unix-Sekunden). Pflichtfeld im OpenAI-Schema, ohne weitere Bedeutung.
owned_bystring"sovrgpt"; bei eigenen Modellen Ihrer Organisation "org".

SovrGPT-Erweiterungen

FeldTypBeschreibung
kindenumchat / embedding / rerank / tts / stt / decision: über welchen Endpunkt das Modell angesprochen wird (/v1/chat/completions, /v1/embeddings, /v1/rerank, /v1/audio/speech, /v1/audio/transcriptions, /v1/decisions).
tierenumNur bei kind: "chat": default / balanced / reasoning / vision / coder-mini / llama für selbst betriebene Modelle, hosted für Partner-Modelle, remote für eigene Modelle Ihrer Organisation.
display_namestringAnzeigename.
subtitlestringKurzer Untertitel für Auswahllisten.
descriptionstringLängere Beschreibung.
capabilitiesobjectSkalen 1–5 für reasoning, coding, vision, speed, german.
accepts_visionbooleantrue, wenn das Modell Bilder (image_url im content-Array) annimmt.
accepts_audiobooleantrue, wenn das Modell Audio als Eingabe annimmt.
accepts_toolsbooleantrue, wenn das Modell Werkzeugaufrufe (tools) beherrscht. Bei false ist das nicht geprüft: Eine Anfrage mit tools kann mit HTTP 400 scheitern, oder das Modell ruft keine Werkzeuge auf. Vor dem Anhängen von Werkzeugen prüfen.
effort_levelsarrayDie für dieses Modell gemessenen Denk-Stufen (low / medium / high) für reasoning_effort in /v1/chat/completions. Leeres Array = kein wirksamer Regler; ein trotzdem gesendeter Wert wird nicht übersetzt.
context_windowintegerKontextfenster in Token: die Obergrenze für Eingabe und Ausgabe zusammen. Im Katalog zwischen 16 384 und 1 000 000. Eine zu lange Anfrage schlägt nicht fehl, sondern wird still gekürzt, siehe unten.
licensestringLizenz (Apache 2.0, MIT, Llama CL, …).
attributionstringPflichthinweis oder Betrieb, z. B. Built with Llama oder bei Partner-Modellen das Rechenzentrum.
quality_indexinteger | nullUnabhängiger Qualitätsindex. null heißt „von der Quelle nicht geführt“; wir schätzen keinen Wert.
quality_index_sourcestringQuelle des Index. Fehlt, wenn quality_index null ist.
quality_index_as_ofstringAbrufdatum des Index (ISO 8601). Fehlt, wenn quality_index null ist.
origin_vendorstringWer die Gewichte veröffentlicht hat (z. B. Google DeepMind).
origin_countrystringHerkunftsland der Gewichte (ISO 3166 alpha-2, z. B. US).
lifecycleenumactive / legacy, siehe unten.
lifecycle_notestringHinweis zum Auslaufen. Nur bei lifecycle: "legacy".
cold_start_hintstringErwartete Kaltstart-Dauer als Text.
betabooleanNur vorhanden (true), wenn das Modell noch erprobt wird.
pricingobjectVerkaufspreis in Euro netto je 1 Mio. Einheiten, { "currency": "EUR", "unit": "token", "input_per_million": 5.3, "output_per_million": 26.1 }. unit ist token (Chat, Embeddings, Rerank), second (Transkription) oder character (Sprachausgabe). null-Werte: kein Preis hinterlegt bzw. keine Ausgabe berechnet. Fehlt bei der Decision Engine (sie kostet den Preis ihrer Laufzeit) und solange die Preisliste nicht veröffentlicht ist. Die ganze Liste liefert GET /v1/pricing.
dimensionsintegerNur bei kind: "embedding": Standardlänge der Vektoren (z. B. 1024 bei bge-m3, 4096 bei den STACKIT-Einbettern). Welche kürzeren Längen ein Modell über den Parameter dimensions liefert, steht unten.
is_remotebooleanNur bei eigenen Modellen Ihrer Organisation, siehe unten.

Die Textfelder (subtitle, description, cold_start_hint) sind deutschsprachig. OpenAI-Clients ignorieren unbekannte Felder; alle Erweiterungen sind additiv.

Zum Kontextfenster

Der Wert ist die harte Obergrenze des Modells für Eingabe plus Ausgabe. Nur mit ihm können Sie max_tokens sinnvoll setzen.

Eine Überschreitung meldet sich nicht. /v1/chat/completions reicht Ihre Anfrage unverändert an den Modellserver 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. Einen Fehlercode dafür gibt es nicht. Rechnen Sie deshalb selbst:

Eingabe-Token  +  max_tokens   <   context_window

Die Spanne ist groß: von 16 384 (qwen3.5-9b-deepseek-v4, llama-3.1-8b) bis 1 000 000 (tensorx-deepseek-v4.1-flash). Wer eine Integration auf ein anderes Modell umstellt, stellt damit auch das Kontextbudget um, siehe Migration. Viel Kontext bieten z. B. gemma-4-12b (262 144), stackit-qwen3.8-27b (262 144) und tensorx-deepseek-v4.1-flash (1 000 000).

Zum Qualitätsindex

Quelle ist der Artificial Analysis Intelligence Index. Er misst alle Modelle im selben Testaufbau; die Werte sind daher untereinander vergleichbar, anders als Zahlen aus Herstellerangaben.

Zwei Grenzen: Der Index beruht auf englischsprachigen Tests und sagt nichts über die Qualität auf Deutsch. Und er ist eine Momentaufnahme, deshalb liefern wir immer quality_index_as_of mit. Nicht gelistete Modelle haben quality_index: null.

Zum Lebenszyklus (lifecycle)

WertBedeutung
activeDie empfohlene Wahl für diese Rolle.
legacyWeiter voll nutzbar, aber nicht mehr empfohlen und mittelfristig auslaufend. Es gibt keinen festen Abschalttermin; lifecycle_note nennt meist den Nachfolger.

Wird ein Modell zurückgezogen, verschwindet es aus der Liste, und /v1/chat/completions antwortet mit 404 model_withdrawn samt Nachfolger. Wer langfristig plant, filtert auf lifecycle, statt Modell-IDs fest zu verdrahten.

Embedding-, Audio- und Entscheidungsmodelle

Auch diese Modelle stehen in der Liste, mit dem passenden kind: bge-m3, nomic-embed-code, stackit-qwen3-vl-embedding-8b und stackit-e5-mistral-7b (embedding), bge-reranker-base (rerank), sovr-decision-v1 und sovr-decision-v2 (decision) sowie die Sprachmodelle.

Die Embedding-Modelle im Vergleich (POST /v1/embeddings):

Modell-IDBetriebStandardlängeParameter dimensionsEingabe je Text
bge-m3 (Standard)selbst betrieben, EU1024wird ignoriert–
nomic-embed-codeselbst betrieben, EU3584wird ignoriert–
stackit-qwen3-vl-embedding-8b🇩🇪 STACKIT, kein Kaltstart4096256, 384, 768, 1024 oder 1536 (gekürzt und neu normiert); 4096 oder weglassen für die volle Längebis 32 000 Token
stackit-e5-mistral-7b🇩🇪 STACKIT, kein Kaltstart4096nur 4096 oder weglassenlaut Modellkarte für bis 4 096 Token trainiert

Ohne model und bei den OpenAI-Namen (text-embedding-3-small usw.) rechnet weiterhin bge-m3; Ihre vorhandenen Vektoren behalten also ihren Raum. Ein anderer Wert für dimensions als in der Tabelle endet bei den STACKIT-Einbettern mit 400 (param: "dimensions"). Je Anfrage nehmen sie höchstens 2048 Texte an. Bei stackit-e5-mistral-7b stellen Sie Suchanfragen eine Aufgabenzeile voran (Instruct: … Query: …), Dokumente bleiben ohne. Die STACKIT-Einbetter erscheinen nur, wenn sie auf dem Server eingerichtet sind; ohne Einrichtung antwortet /v1/embeddings für sie mit 503 model_not_available.

Die Sprachmodelle:

{ "id": "supertonic-3",  "kind": "tts", "display_name": "Supertonic 3 — Text-to-Speech" }
{ "id": "cosyvoice-3",   "kind": "tts", "display_name": "CosyVoice 3 — Ausdrucksstarkes TTS + Stimmklon" }
{ "id": "voxtral-mini-tts", "kind": "tts", "display_name": "Voxtral Mini TTS — Stimmenkatalog" }
{ "id": "voxtral-mini-transcribe", "kind": "stt", "display_name": "Voxtral Mini Transcribe — Speech-to-Text" }

Die id geben Sie als model an POST /v1/audio/speech bzw. /v1/audio/transcriptions, siehe Audio-API. Diese Einträge hängen nicht von der Modellauswahl der Organisation ab.

Eigene Modelle Ihrer Organisation

Trägt Ihre Organisation unter Einstellungen → Provider-Keys einen eigenen OpenAI-kompatiblen Endpunkt ein (eigene Adresse, eigener Modellname, eigener Anzeigename), erscheint er hier so:

{
  "id": "org-model:8b2f…",
  "owned_by": "org",
  "kind": "chat",
  "tier": "remote",
  "is_remote": true,
  "accepts_tools": false
}
  • Die id mit dem Präfix org-model: setzen Sie in /v1/chat/completions ein wie eine Katalog-ID.
  • owned_by: "org": Der Endpunkt gehört Ihnen.
  • Anfragen an ein solches Modell gehen direkt an die eingetragene Adresse, außerhalb unseres Betriebs. Es gilt die Datenschutzerklärung des dortigen Anbieters.
  • accepts_tools ist false; effort_levels und context_window fehlen. Über fremde Endpunkte sagen wir 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 404 model_not_found.

Modell nicht in der Liste?

Mögliche Gründe, in dieser Reihenfolge zu prüfen:

  1. Die Organisation hat es ausgeblendet. Owner und Admins wählen unter Einstellungen → Modelle, welche Modelle das Team sieht. Das ist der häufigste Grund, und von außen sehen Sie ihn nicht.
  2. Es ist geplant (lifecycle: "planned"), aber noch nicht bereitgestellt. Solche Modelle erscheinen nie in der Liste.
  3. Es wurde zurückgezogen. /v1/chat/completions antwortet dann mit 404 model_withdrawn und nennt den Nachfolger.
  4. Ein eigenes Modell der Organisation ist pausiert oder gelöscht, oder auf dem Server fehlt der Verschlüsselungsschlüssel. Dann werden eigene Modelle grundsätzlich nicht bedient.

Filter und Seitenaufteilung

Es gibt keine Filter und keine Seitenaufteilung; die Liste hat derzeit rund 30 Einträge. Kommt eine Seitenaufteilung, folgt sie dem OpenAI-Muster (?limit=/?after=).

Caching

Die Liste ändert sich selten. Cachen Sie sie clientseitig etwa eine Stunde. Änderungen melden wir nicht aktiv; laden Sie die Liste nach einem 404 (model_not_found, model_withdrawn) neu.

GET /v1/models