Entwickeln / Referenz

Modelle & Preise

Welche Modelle ein Schlüssel aufrufen darf und wo die öffentliche Preisliste der von Noirdoc verwalteten Modelle steht.

Modelle

GET /v1/models
Authentifizierung
ja, API-Schlüssel
Format
JSON
Abrechnung
keine Modellkosten

GET /v1/models liefert die Modelle, die der aufrufende Schlüssel verwenden darf. Die Antwort hat die Form der OpenAI-Modellliste (object: "list" mit data). Die Liste enthält

  • die Modelle eigener Anbieter-Schlüssel (BYOK) Ihrer Organisation,
  • die von Noirdoc verwalteten Modelle, wenn Ihre Organisation sie nutzen darf.

Das Gateway filtert die Liste mit denselben Regeln wie die Anfragen selbst: Die Einstufung der Organisation als Berufsgeheimnisträger, die Einschränkungen des Schlüssels und seine erlaubten Modelle gelten auch hier. Gibt es dieselbe ID bei einem eigenen und einem verwalteten Anbieter, gilt der eigene.

FeldInhalt
idModell-ID, die Sie in model senden
objectimmer model
owned_bypersonal (eigener Anbieter-Schlüssel) oder platform (von Noirdoc verwaltet)
display_nameAnzeigename des Modells
endpoint_familyFamilie des Modells: chat, embeddings, stt, tts oder image_gen. Sie legt fest, über welchen Endpunkt Sie das Modell aufrufen.
legacy_public_idfrühere ID des Modells, weiterhin aufrufbar, sonst null

Die Liste ist nach id sortiert und enthält Modelle aller Endpunkt-Familien. Die Familie steht in endpoint_family: chat für /v1/chat/completions, /v1/responses und /v1/messages, embeddings für /v1/embeddings, stt für /v1/audio/transcriptions, tts für /v1/audio/speech und image_gen für /v1/images/generations. Das API-Format des Anbieters (OpenAI oder Anthropic) steht nicht in der Liste. Rufen Sie ein Modell über einen Endpunkt einer anderen Familie oder eines anderen API-Formats auf, antwortet das Gateway mit dem Fehlercode wrong_endpoint_for_model.

Shell
curl https://api.noirdoc.de/v1/models \
  -H "Authorization: Bearer $NOIRDOC_API_KEY"
Python
for model in client.models.list():
    print(model.id)
TypeScript
for await (const model of client.models.list()) {
  console.log(model.id);
}
JSON
{
  "object": "list",
  "data": [
    {
      "id": "qwen3.8-27b",
      "object": "model",
      "owned_by": "platform",
      "display_name": "Qwen 3.8 27B",
      "endpoint_family": "chat",
      "legacy_public_id": null
    }
  ]
}

Preise

GET /v1/prices
Authentifizierung
nein, öffentlich
Format
JSON
Abrechnung
keine

GET /v1/prices ist die öffentliche Preisliste der von Noirdoc verwalteten Modelle. Der Endpunkt braucht keinen Schlüssel. Er enthält nur aktive Modelle mit vollständigem Preis. Modelle eigener Anbieter-Schlüssel stehen nie darin.

Die Liste hat eine Zeile je Modell und Anbieter. Bieten mehrere Anbieter dieselbe Modell-ID an, erscheint die ID mehrfach, mit dem jeweiligen Anbieter und Preis. Welchen Anbieter das Gateway wählt, erklärt Anbieter & Routing.

FeldInhalt
public_idModell-ID für model
legacy_public_idfrühere ID dieser Zeile, weiterhin aufrufbar und an diesen Anbieter gebunden, sonst null
provider_slug, provider_display_nameAnbieter dieser Zeile
price_input, price_outputPreis für Eingabe und Ausgabe
price_cache_read, price_cache_write, price_cache_write_1hPreise für Prompt-Cache, sonst null
long_context_thresholdEingabe-Tokens, ab denen die *_long-Preise für die ganze Anfrage gelten, sonst null
price_input_long, price_output_long, price_cache_read_long, price_cache_write_longPreise über der Schwelle; null heißt: der normale Preis gilt
price_unitEinheit der Preise
price_currencyWährung, EUR
Shell
curl https://api.noirdoc.de/v1/prices
Python
import httpx

response = httpx.get("https://api.noirdoc.de/v1/prices")
prices = response.json()["data"]
TypeScript
const res = await fetch("https://api.noirdoc.de/v1/prices");
const { data: prices } = await res.json();
JSON
{
  "object": "list",
  "data": [
    {
      "public_id": "qwen3.8-27b",
      "legacy_public_id": null,
      "provider_slug": "<anbieter-slug>",
      "provider_display_name": "<Anbieter>",
      "price_input": 0.3,
      "price_output": 2.2,
      "price_cache_read": null,
      "price_cache_write": null,
      "price_cache_write_1h": null,
      "long_context_threshold": null,
      "price_input_long": null,
      "price_output_long": null,
      "price_cache_read_long": null,
      "price_cache_write_long": null,
      "price_unit": "per1MTokens",
      "price_currency": "EUR"
    }
  ]
}

Preiseinheiten

price_unit sagt, worauf sich die Beträge beziehen. Welche Felder gefüllt sind, hängt von der Familie des Modells ab.

price_unitBedeutungFamilieGefüllte Preise
per1MTokenspro 1 Mio. TokensChat, EmbeddingsChat: price_input und price_output; Embeddings: nur price_input
per1MCharspro 1 Mio. Zeichen EingabetextSprachausgabeprice_input
perMinutepro Minute AudioTranskriptionprice_input oder price_output
perImagepro erzeugtem BildBilderprice_output
perMpxpro angefangenem Megapixel (1024 × 1024 Pixel) je BildBilderprice_output
perFirstMpxerstes Megapixel eines Bildes; price_input trägt, falls gesetzt, den Preis jedes weiteren MegapixelsBilderprice_output, optional price_input