SovrGPT Docs
API

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/models liefert 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/completions mit 404 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": "qwen3.5-9b",
      "object": "model",
      "created": 1715520000,
      "owned_by": "sovrgpt",

      "tier": "default",
      "display_name": "Qwen 3.5 9B",
      "subtitle": "Schnellantwort · multimodal-fähig",
      "capabilities": {
        "reasoning": 3,
        "coding": 3,
        "vision": 3,
        "speed": 5,
        "german": 4
      },
      "accepts_vision": true,
      "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 typisch 30–90 s"
    },
    {
      "id": "qwen3.6-27b",
      "object": "model",
      "owned_by": "sovrgpt",
      "tier": "balanced",
      "display_name": "Qwen 3.6 27B",
      "subtitle": "Mehr Tiefe, akzeptable Latenz",
      "license": "Apache 2.0"
    }
    /* … weitere Tiers … */
  ]
}

Felder

Standard-OpenAI-Felder

FeldTypBeschreibung
idstringModell-ID (in chat/completions als model einsetzbar).
objectstringImmer "model".
createdintegerUnix-Timestamp der Modell-Aktivierung.
owned_bystringImmer "sovrgpt".

SovrGPT-Erweiterungen

FeldTypBeschreibung
kindenumchat / 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).
tierenumNur bei kind: "chat": default / balanced / premium / reasoning / vision / coder-mini / coder / coder-max / llama.
display_namestringSchöner Name für UIs.
subtitlestringKurzer Untertitel für Picker.
capabilitiesobject1–5-Skalen für reasoning, coding, vision, speed, german. Picker-UIs zeigen daraus Sterne / Balken.
accepts_visionbooleanTrue, wenn das Modell Bilder im Multipart-Format akzeptiert.
licensestringLizenz-Label (Apache 2.0, Llama Community License, …).
quality_indexinteger | nullUnabhängiger Qualitäts-Index. null heißt „von der Quelle nicht geführt" — wir schätzen keinen Wert. Siehe Hinweis unten.
quality_index_sourcestringQuelle des Index. Entfällt, wenn quality_index null ist.
quality_index_as_ofstringAbrufdatum des Index (ISO-8601). Entfällt, wenn quality_index null ist.
origin_vendorstringOrganisation, die die Gewichte veröffentlicht hat (z. B. Google DeepMind).
origin_countrystringHerkunftsland der Gewichte (ISO-3166 alpha-2, z. B. US).
lifecycleenumactive / legacy / planned — siehe unten.
lifecycle_notestringKurzer Hinweis zum Auslaufen. Nur bei lifecycle: "legacy" gesetzt.
cold_start_hintstringMenschen-lesbarer Hinweis zur erwarteten Cold-Start-Dauer.

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)

WertBedeutung
activeDie empfohlene Wahl für diese Rolle.
legacyWeiterhin 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.
plannedEntschieden, 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.

Modell nicht in der Liste?

Drei Gründe, in dieser Reihenfolge zu prüfen:

  1. 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.
  2. lifecycle: "planned" — entschieden, aber noch nicht bereitgestellt; erscheint grundsätzlich nicht in dieser Liste.
  3. Externe (BYO-Key-)Modelle brauchen zusätzlich einen hinterlegten Provider-Key der Org.

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.

GET /v1/models