BazaarLink bietet ein einheitliches, OpenAI-kompatibles Anfrage- und Antwortschema für verschiedene Modelle und Anbieter. Sie integrieren einmal und können Modelle wechseln, ohne Ihre Anwendung neu zu schreiben.
OpenAPI-Spezifikation
Die vollständige BazaarLink API ist als OpenAPI-Spezifikation in YAML und JSON dokumentiert:
Verwenden Sie die Spezifikationen mit Swagger UI, Postman oder einem OpenAPI-kompatiblen Codegenerator, um die API zu erkunden oder Clientbibliotheken zu erzeugen.
Anfragen
Anfrageformat für Chat Completions
Der Anfragekörper für Chat Completions wird an folgenden Endpunkt gesendet:
POST/api/v1/chat/completions
Die vollständige Liste unterstützter Felder finden Sie unter Parameter。
Erzwingen Sie, dass das Modell gültiges JSON gemäß einem Schema zurückgibt. Dies ist essenziell für zuverlässige Anwendungen, die Modellausgaben programmatisch verarbeiten.
json_object — einfacher JSON-Modus; das Modell liefert gültiges JSON.
json_schema — strikter Schema-Modus; die Ausgabe muss dem angegebenen JSON Schema entsprechen.
Plugins
BazaarLink leitet das plugins-Array an die gewählte Upstream-Route weiter. Die Verfügbarkeit hängt von Modell und Anbieter ab; die Modellvariante :online aktiviert zusätzlich das web-Plugin.
Fügen Sie als letzten Eintrag eine unvollständige assistant-Nachricht hinzu, um auf kompatiblen Modellrouten eine Fortsetzung anzufordern.
Funktionsweise
BazaarLink behält die letzte assistant-Nachricht bei und leitet sie weiter. Das Fortsetzungsverhalten wird vom ausgewählten Upstream-Modell und Anbieter implementiert und ist daher nicht auf jeder Route garantiert.
TypeScript
1
2
3
4
5
6
7
8
const response = await client.chat.completions.create({
model: "anthropic/claude-sonnet-4.6",
messages: [
{ role: "user", content: "What is the meaning of life?" },
// Intentional partial response; compatible routes continue from here.
{ role: "assistant", content: "My best answer is" }
]
});
Antworten
BazaarLink normalisiert Completion-Antworten verschiedener Modelle und Anbieter in ein einheitliches, OpenAI-kompatibles Format.
Format der Completion-Antwort
choices ist immer ein Array. Streaming-Antworten verwenden delta, nicht gestreamte Antworten message. Nutzungs- und Kostendaten werden, sofern verfügbar, mitgeliefert.
finish_reason verwendet normalisierte Werte wie stop, length, tool_calls, content_filter und error; native_finish_reason bewahrt den ursprünglichen Anbieterwert.
Rufen Sie detaillierte Statistiken für einen einzelnen Abschluss nach Generations-ID ab (aus der chat/completions-Antwort-ID oder dem Streaming-x-bz-gen-id-Header).
Tokens basierend auf Vorkommen bestrafen. Bereich: [-2, 2]. Standard: 0
repetition_penalty
number
Token-Wiederholung aus der Eingabe reduzieren. Bereich: (0, 2]. Standard: 1
min_p
number
Minimale Wahrscheinlichkeit relativ zum Top-Token. Bereich: [0, 1]. Standard: 0
top_a
number
Dynamisches Top-P basierend auf dem Token mit höchster Wahrscheinlichkeit. Bereich: [0, 1]. Standard: 0
seed
integer
Integer-Seed für deterministische Generierung. Nicht für alle Modelle garantiert
n
integer
Anzahl der zu generierenden Completions. Standard: 1
user
string
Endbenutzer-Kennung für Überwachung und Missbrauchserkennung. Hat keine Auswirkung auf die Abrechnung. Nur für Modelle der OpenAI-Familie — siehe Hinweis unten.
stop
string | string[]
Stoppsequenzen — Generierung stoppt bei Auftreten
logit_bias
object
Token-IDs zu Bias-Werten [-100, 100] zuordnen, die vor dem Sampling addiert werden. Nur für Modelle der OpenAI-Familie — siehe Hinweis unten.
logprobs
boolean
Log-Wahrscheinlichkeiten jedes Ausgabe-Tokens zurückgeben. Nur für Modelle der OpenAI-Familie — siehe Hinweis unten.
top_logprobs
integer
Anzahl der wahrscheinlichsten Tokens pro Position (erfordert logprobs: true). Bereich: 0–20. Nur für Modelle der OpenAI-Familie — siehe Hinweis unten.
tools
Tool[]
Liste der Tools (Funktionen), die das Modell aufrufen kann
tool_choice
string | object
Steuert die Tool-Nutzung: "auto", "none" oder bestimmtes Tool
parallel_tool_calls
boolean
Parallele Funktionsaufrufe aktivieren, wenn Tools bereitgestellt werden. Standard: true. Nur für Modelle der OpenAI-Familie — siehe Hinweis unten.
Fordert striktes, JSON-Schema-konformes Output bei Providern an, die dies unterstützen. Wird unverändert weitergegeben
reasoning
object
Provider-spezifische Reasoning-/Thinking-Konfiguration. Wird unverändert weitergegeben
reasoning_effort
string
OpenAI o-Serie Reasoning-Aufwand: "low", "medium" oder "high". Wird unverändert weitergegeben
transforms
string[]
Anzuwendende Nachrichtentransformationen, z.B. ["middle-out"]. Weglassen für automatische Anwendung bei ≤8k-Kontext-Modellen
models
string[]
Fallback-Modellliste — BazaarLink probiert jedes der Reihe nach, wenn das primäre fehlschlägt
route
string
Erweitertes Routing-Kompatibilitätsfeld — die meisten Nutzer brauchen es nicht. Für Fallback "models" verwenden.
provider
object
Erweiterte Routing-Einstellungen — die meisten Nutzer brauchen sie nicht.
user, logprobs, top_logprobs, logit_bias und parallel_tool_calls erreichen nur Modelle der OpenAI-Familie
Diese fünf Parameter werden aus der Upstream-Anfrage entfernt, sobald das aufgelöste Modell nicht als OpenAI-eigenes Modell erkannt wird — das Senden an anthropic/claude-*, google/gemini-* oder ein anderes Nicht-OpenAI-Ziel liefert 200 zurück, wobei der Parameter stillschweigend ignoriert wird, kein Fehler. Wenn Sie einen dieser Parameter setzen und die Wirkung ausbleibt, prüfen Sie, ob das Zielmodell von OpenAI stammt.
BazaarLink normalisiert genau zwei Felder — model und die Entfernung eines provider-Felds — und leitet den Rest der Upstream-Antwort unverändert weiter. Felder wie native_finish_reason, system_fingerprint und reasoning sind nur vorhanden, wenn der jeweilige Upstream-Anbieter sie befüllt; verlassen Sie sich nicht darauf, dass sie bei jedem Modell vorhanden sind. usage.cost ist die Ausnahme — es ist immer der von BazaarLink selbst abgerechnete Betrag, kein von Upstream weitergeleiteter Wert.
Generieren Sie Bilder aus Textprompts mit Modellen wie DALL·E und GPT-4o. Verwenden Sie den `modalities`-Parameter, um Bildausgabe vom Chat-Completions-Endpunkt anzufordern. Die Bildbearbeitung (Ändern eines vorhandenen Bildes) verwendet POST /v1/images/edits —— kompatibel mit OpenAI images.edit, multipart/form-data mit Ihrem/Ihren Quellbild(ern). Bearbeitungsfähige Modelle haben die Modalität text+image->image (z. B. qwen/qwen-image-edit); reine Generierungsmodelle sind text->image —— prüfen Sie die Modalität jedes Modells in GET /v1/models.
Response format
/api/v1/images/generations liefert standardmäßig OpenAI-kompatibles synchrones JSON (seit 2026-07-25) — client.images.generate() funktioniert ohne Wrapper. Mit stream: true erhalten Sie stattdessen den SSE-Event-Stream, der bei Modellen mit langer Generierungszeit Fortschritt liefert.
A. /v1/chat/completions (nativ, empfohlen)
POST/api/v1/chat/completions
The canonical streaming path. Recommended for any new integration.
1
2
3
4
5
6
7
8
9
curl -N https://bazaarlink.ai/api/v1/chat/completions \
-H "Authorization: Bearer $BL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-5.4-image-2",
"messages": [{"role":"user","content":"a red cat on a sofa"}],
"modalities": ["image","text"],
"stream": true
}'
Bild-zu-Bild: Fügen Sie einen image_url-Teil in das content-Array ein. Unterstützt Daten-URIs oder https-Bild-URLs (http:// wird abgelehnt), bis zu 8 Bilder, ~10MB pro Daten-URI. Die Nachricht mit den Bildern muss auch einen Text-Teil enthalten (die Bearbeitungsanweisung). Einige Modelle unterstützen zusätzlich image_config (z.B. {"strength": 0.7}, 0–1 — niedrigere Werte bleiben näher am Quellbild), das unverändert an das Upstream durchgereicht wird.
1
2
3
4
5
6
7
8
9
10
11
12
curl -N https://bazaarlink.ai/api/v1/chat/completions \
-H "Authorization: Bearer $BL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-5.4-image-2",
"messages": [{"role":"user","content":[
{"type":"image_url","image_url":{"url":"data:image/png;base64,..."}},
{"type":"text","text":"change the background to a night city"}
]}],
"modalities": ["image"],
"stream": true
}'
Bildbearbeitung (OpenAI-kompatibel)
POST/api/v1/images/edits
client.images.edit() des OpenAI SDK funktioniert direkt (Multipart-Upload, synchrone JSON-Antwort mit data: [{ url }]). Gleiche Limits wie Bild-zu-Bild: bis zu 8 Bilder, je 10MB; mask und response_format=b64_json werden noch nicht unterstützt.
1
2
3
4
5
curl https://bazaarlink.ai/api/v1/images/edits \
-H "Authorization: Bearer $BL_API_KEY" \
-F model="openai/gpt-5.4-image-2" \
-F image=@cat.png \
-F prompt="change the background to a night city"
B. /v1/images/generations (DALL·E-kompatibel)
POST/api/v1/images/generations
OpenAI DALL-E request shape. Sync JSON ({ created, data: [{ url }] }) is the default and works with client.images.generate() out of the box; pass stream: true to get the SSE event stream documented below instead.
1
2
3
4
5
6
7
8
curl https://bazaarlink.ai/api/v1/images/generations \
-H "Authorization: Bearer $BL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-image-2",
"prompt": "a red cat on a sofa",
"size": "1024x1024"
}'
modelerforderlich
string
Modell-ID, z. B. google/gemini-2.5-flash-image
prompterforderlich
string
Text-Prompt
size
string
Ausgabegröße (automatisch gemappt)
n
integer
Anzahl der Bilder (Standard 1)
1
2
3
4
5
6
# Streaming variant — progressive delivery for long generations
curl -N https://bazaarlink.ai/api/v1/images/generations \
-H "Authorization: Bearer $BL_API_KEY" \
-H "Accept: text/event-stream" \
-H "Content-Type: application/json" \
-d '{"model":"openai/gpt-5.4-image-2","prompt":"a red cat on a sofa","stream":true}'
Asynchroner Drei-Schritt-Ablauf (submit → poll → content). Die Videogenerierung dauert 30 s–5 min und passt damit nicht zur synchronen Anfrage/Antwort-Semantik von chat-completions — deshalb stellt BazaarLink dafür einen eigenen /api/v1/videos-Endpunkt mit Job-ID-Muster bereit: submit liefert eine vjob_*-ID → Status pollen → nach Abschluss die Bytes abrufen. Der Aufruf eines Videomodells über /chat/completions oder /images/generations gibt 400 zurück (code: wrong_endpoint_for_video). Die Abrechnung erfolgt bei completed anhand der tatsächlichen usage.cost.
Video-Aufgaben
Ein Endpunkt deckt mehrere Aufgaben ab. Welche Aufgabe ausgeführt wird, entscheiden die gesendeten Felder —— ein einzelnes Modell kann Bild-zu-Video, Keyframes und Fortsetzung. Nicht jedes Modell unterstützt jede Aufgabe; eine nicht unterstützte Anfrage gibt 400 zurück.
Text-zu-Video
prompt
Allein aus einem Text-Prompt generieren – keine Eingabemedien.
Bild-zu-Video
frame_images: [ first frame ]
Ihr Bild IST das Motiv: Es wird zum ersten Frame und wird animiert, treu zum Original. Z. B. ein Foto einer Katze → dieselbe Katze dreht in derselben Szene den Kopf.
Keyframes (erstes + letztes)
frame_images: [ first, last ]
Geben Sie ein Start- und ein Endbild an; das Modell interpoliert die Bewegung dazwischen.
Fortsetzung
input_video
Einen vorhandenen Clip verlängern. Die angeforderte Dauer muss größer als die Länge des Quellvideos sein.
Referenz-zu-Video
input_references: [ images ]
Ihre Bilder sind REFERENZEN, keine Frames: Das Modell behält Motiv/Stil bei und erzeugt eine völlig neue Szene. Z. B. ein Katzenfoto + "tanzt in einem Wald" → ein neues Video, in dem das Aussehen der Katze erhalten bleibt, Szene und Bewegung aber neu sind (1–9 Referenzen). Unterschied zu Bild-zu-Video: i2v bleibt dem exakten Bild treu; r2v inszeniert das Motiv in neuem Material.
Video-Bearbeitung
input_video + prompt
Ein vorhandenes Video bearbeiten – Szene, Stil oder Bewegung ändern. Abgerechnet nach Eingabevideo-Sekunden + Ausgabesekunden.
Referenzbilder für Referenz-zu-Video —— Motiv-/Stilführung, keine exakten Frames.
input_video
string|object
Quellvideo-URL für Fortsetzung und Video-Bearbeitung. Muss vom Upstream öffentlich abrufbar sein.
aspect_ratio
string
Seitenverhältnis, z. B. 16:9 oder 9:16. Wird ignoriert, wenn ein Eingabebild das Verhältnis vorgibt.
watermark
boolean
Wasserzeichen hinzufügen. Standard: false.
callback_url
string
Webhook-URL, die beim Erreichen des Endzustands aufgerufen wird — nur HTTPS, SSRF-geprüft. Keine Signatur in v1; als Hinweis behandeln und über GET /videos/{id} bestätigen.
Zulässige Auflösungen unterscheiden sich je Modell —— ein nicht unterstützter Wert gibt 400 mit den unterstützten Werten zurück.
Eingabebilder/-videos müssen über eine öffentliche URL erreichbar sein. Hotlink-geschützte Hosts (z. B. einige Wikis) schlagen fehl.
Eingabemedien durchlaufen die Upstream-Inhaltsmoderation und können gelegentlich abgelehnt werden.
Bei der Fortsetzung muss die angeforderte Dauer die Länge des Quellvideos überschreiten.
Das Ausgabe-Seitenverhältnis folgt dem Eingabebild —— ein quadratisches Bild ergibt ein quadratisches Video.
Die Video-Bearbeitung wird nach den Sekunden des Eingabevideos plus den Sekunden der erzeugten Ausgabe abgerechnet.
input_video (Bearbeitung / Fortsetzung) muss eine ÖFFENTLICHE URL sein. Hier erzeugte Videos werden hinter Ihrem API-Schlüssel bereitgestellt, sodass der Upstream sie nicht abrufen kann —— hosten Sie Ihr Quellvideo unter einer öffentlich erreichbaren URL.
Webhook-Payloads sind unsigniert — bestätigen Sie Status/Betrag über GET /videos/{id}, bevor Sie handeln; die dortigen unsigned_urls sind absolut (anders als die relativen Pfade der Poll-Antwort).
Unterstützte Videomodelle
Model ID
Modality
Tasks
bytedance/seedance-2.0
text+image+audio+video->video
t2v, i2v
bytedance/seedance-2.0-fast
text+image+audio+video->video
t2v, i2v
google/veo-3.1
text+image->video
t2v, i2v
openai/sora-2-pro
text+image->video
t2v, i2v
bytedance/seedance-1-5-pro
text+image->video
t2v, i2v
alibaba/happyhorse-1.0
text->video
t2v
alibaba/wan2.6-r2v-flash
text+image+video->video
r2v
alibaba/wan2.5-i2v-preview
text+image->video
i2v
alibaba/happyhorse-1.1
text->video
t2v
alibaba/wan2.7-t2v
text->video
t2v
alibaba/wan2.7-i2v
text+image+video->video
i2v, kf2v, continuation
alibaba/wan2.6-t2v
text->video
t2v
alibaba/wan2.5-t2v-preview
text->video
t2v
alibaba/wan2.2-t2v-plus
text->video
t2v
alibaba/wan2.7-r2v
text+image+video->video
r2v
alibaba/wan2.1-t2v-plus
text->video
t2v
alibaba/wan2.1-t2v-turbo
text->video
t2v
alibaba/wan2.6-i2v-flash
text+image->video
i2v
alibaba/wan2.2-i2v-flash
text+image->video
i2v
alibaba/wan2.7-videoedit
text+image+video->video
videoedit
alibaba/wan2.6-i2v
text+image->video
i2v
alibaba/wan2.2-i2v-plus
text+image->video
i2v
alibaba/wan2.6-r2v
text+image+video->video
r2v
Video-Eingaben
Senden Sie Videodateien an Modelle mit Videoeingabe-Unterstützung zur Analyse, Beschriftung oder Beantwortung von Fragen zu Szenen und Ereignissen. Funktioniert mit einer direkten URL oder einem base64-Daten-URI — eine URL ist effizienter für öffentlich zugängliche Videos, base64 für lokale Dateien oder private Videos.
Unterstützte Formate
MP4 (H.264)MPEGMOVWebM
1
2
3
4
5
6
7
8
9
10
11
12
13
response = client.chat.completions.create(
model="google/gemini-2.5-flash",
messages=[{
"role": "user",
"content": [
{
"type": "video_url",
"video_url": {"url": "https://example.com/video.mp4"},
},
{"type": "text", "text": "What is happening in this video?"},
],
}],
)
Senden Sie PDF-Dokumente direkt in Nachrichten an Modelle mit nativer PDF-Unterstützung (z. B. Claude, Gemini). BazaarLink leitet die Datei direkt an das Modell weiter — abgerechnet als normale Input-Tokens, ohne Zusatzkosten oder zusätzlichen Verarbeitungsschritt.
Ein OpenAI Responses API-kompatibler Endpunkt für zustandslose Multi-Turn-Konversationen, Tool Calling und multimodale Eingaben. Ideal für Agenten und Frameworks, die das OpenAI Python SDK ≥ 1.x mit client.responses.create() verwenden.
POST/api/v1/responses
Note
Akzeptiert die gleiche Authentifizierung und das gleiche Model-Routing wie Chat Completions.
Anfragetext
modelerforderlich
string
Modell-ID, z.B. "openai/gpt-4o" oder "anthropic/claude-3.5-sonnet"
inputerforderlich
string | Item[]
Benutzereingabe — ein einfacher String (einzelne Nachricht) oder ein Array von Eingabeelementen für Multi-Turn-/multimodale Konversationen.
instructions
string
Anweisungen auf Systemebene, äquivalent zu einer Systemnachricht. Muss bei jeder Anfrage erneut gesendet werden.
stream
boolean
Bei true werden Responses API SSE-Stream-Events zurückgegeben. Event-Typen: response.created, response.output_text.delta, response.completed.
max_output_tokens
integer
Maximale Anzahl der zu generierenden Ausgabe-Tokens (einschließlich Reasoning-Tokens für o-series-Modelle).
Tool-(Funktions-)Definitionen — gleiches JSON-Schema-Format wie Chat Completions (akzeptiert sowohl die flache Responses-Form als auch die verschachtelte Form). OpenAIs eigene integrierte gehostete Tools (web_search_preview, file_search, computer_use_preview) werden nicht unterstützt; Websuche ist über plugins: [{id:"web"}] verfügbar — nur auf manchen Modellrouten unterstützt.
tool_choice
string | object
Steuert die Tool-Nutzung: "auto", "none" oder bestimmtes Tool
parallel_tool_calls
boolean
Parallele Funktionsaufrufe aktivieren, wenn Tools bereitgestellt werden. Standard: true. Nur für Modelle der OpenAI-Familie — siehe Hinweis unten.
Fallback-Modellliste — BazaarLink probiert jedes der Reihe nach, wenn das primäre fehlschlägt
transforms
string[]
Anzuwendende Nachrichtentransformationen, z.B. ["middle-out"]. Weglassen für automatische Anwendung bei ≤8k-Kontext-Modellen
previous_response_id
string
Dieser Endpunkt ist zustandslos — die Übergabe eines Nicht-null-Werts liefert sofort 400 (invalid_prompt); er wird nie akzeptiert und ignoriert. Verwenden Sie stattdessen den zustandslosen Modus: Übergeben Sie den vollständigen Konversationsverlauf im input-Array.
provider
object
Erweiterte Routing-Einstellungen — die meisten Nutzer brauchen sie nicht.
curl https://bazaarlink.ai/api/v1/responses \
-H "Authorization: Bearer $BAZAARLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4o-mini",
"instructions": "You are a helpful assistant.",
"input": "What is the capital of Taiwan?"
}'
Ersetzen Sie messages durch input (String oder Array), verwenden Sie instructions statt einer system-role-Nachricht und lesen Sie output[0].content[0].text statt choices[0].message.content.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Chat Completions (before)
response = client.chat.completions.create(
model="openai/gpt-4o-mini",
messages=[
{"role": "system", "content": "You are helpful."},
{"role": "user", "content": "Hello"},
]
)
text = response.choices[0].message.content
# Responses API (after)
response = client.responses.create(
model="openai/gpt-4o-mini",
instructions="You are helpful.",
input="Hello"
)
text = response.output[0].content[0].text
Einschränkungen
previous_response_id oder store: true wird mit 400 (Fehlercode invalid_prompt) abgelehnt — nicht akzeptiert und ignoriert. Verwenden Sie stets den zustandslosen Modus: Übergeben Sie den vollständigen Konversationsverlauf im input-Array.
OpenAIs eigene integrierte gehostete Tools (web_search_preview, file_search, computer_use_preview) werden nicht unterstützt. Websuche ist über plugins: [{id:"web"}] verfügbar — nur auf manchen Modellrouten unterstützt.
background: true wird akzeptiert, aber ignoriert — jede Anfrage läuft synchron bis zum Abschluss.
Messages (Anthropic)
Anthropic-kompatible Nachrichten API für Claude SDK. Verwenden Sie es genau so, wie Sie es mit API von Anthropic tun würden – ändern Sie einfach den Basis-URL und den Auth-Header.
{"id":"msg_...","type":"message","role":"assistant","model":"anthropic/claude-opus-4","content":[{"type":"text","text":"Hello! How can I help you today?"}],"stop_reason":"end_turn","usage":{"input_tokens":10,"output_tokens":12,"cache_read_input_tokens":0,"cache_creation_input_tokens":0,"bz_cost":0.00042}}
// /v1/models — Response SchematypeModelsResponse = {
data: Model[];
};
typeModel = {
id: string; // Model ID (e.g. "openai/gpt-4.1")name: string; // Human-readable namecontext_length: number | null; // Max context window in tokensmodality: string | null; // e.g. "text->text", "text+image->text"architecture?: {
input_modalities?: string[];
output_modalities?: Array<
"text" | "image" | "embeddings" | "audio" |
"video" | "rerank" | "speech" | "transcription"
>;
};
pricing: {
prompt: string; // Input price per 1M tokens (USD)completion: string; // Output price per 1M tokens (USD)
};
description?: string | null; // Model descriptiontop_provider?: {
max_completion_tokens?: number;
};
supported_parameters?: string[]; // e.g. ["tools", "response_format", "reasoning"]pricing_tiers?: { // Present only for models with input-length tiersabove_prompt_tokens: number; // Ascending; strict "greater than" thresholdprompt: string; // USD per token, override tiercompletion: string; // USD per token, override tier
}[];
};
Gestaffelte Preise nach Eingabelänge
Manche Modelle wechseln zu einer anderen Preistabelle, sobald der Prompt einen Token-Schwellenwert überschreitet — die gesamte Tabelle ändert sich, nicht nur die Tokens über dem Schwellenwert. Die Schwellenwerte sind strikt: Ein Prompt mit genau N Tokens wird noch mit der Stufe unter N abgerechnet; die höhere Stufe gilt erst, wenn die Eingabe-Tokens größer als N sind.
pricing_tiers ist ein Geschwisterfeld von pricing und ist nur vorhanden, wenn ein Modell Override-Stufen oberhalb des Basispreises hat. Einträge sind nach above_prompt_tokens aufsteigend sortiert; prompt/completion sind USD pro Token (gleiche Einheit wie pricing.prompt/pricing.completion). pricing.prompt und pricing.completion bleiben immer die Basis-(niedrigste) Stufe.
Die meisten Modelle haben keine Stufen — dort fehlt der Schlüssel pricing_tiers in der Antwort einfach.
Beim Streaming werden Nutzungsdaten im letzten Chunk vor der [DONE]-Nachricht zurückgegeben, zusammen mit einem choices-Array mit leerem delta und finish_reason: "stop".
Keep-alive & letzter Chunk
Streams können SSE-Kommentarzeilen (beginnend mit einem Doppelpunkt) oder Heartbeat-Events als Keep-alives enthalten — überspringen Sie Nicht-data:-Zeilen, statt den rohen Stream mit JSON.parse zu verarbeiten. Der letzte data-Chunk enthält usage (Token-Zahlen und Kosten) vor data: [DONE]. Erfolgreiche Antworten enthalten einen X-Request-Id-Header — geben Sie ihn beim Melden von Problemen an.
1
2
3
4
5
6
7
: keepalive <- SSE comment line — ignore, do NOT JSON.parse
data: {"id":"chatcmpl-abc","choices":[{"delta":{"content":"Hi"},"index":0}]}
data: {"id":"chatcmpl-abc","choices":[{"delta":{},"finish_reason":"stop","index":0}],"usage":{...}}
data: [DONE]
Stream-Abbruch
Streaming-Anfragen können abgebrochen werden, indem die Client-Verbindung geschlossen wird — z. B. durch Aufruf von AbortController.abort() oder Schließen des Stream-Objekts. BazaarLink stoppt das Weiterleiten weiterer Chunks und bricht die ausgehende Anfrage an den Provider ab, sobald der Abbruch erkannt wird.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
importOpenAIfrom"openai";
const client = newOpenAI({
baseURL: "https://bazaarlink.ai/api/v1",
apiKey: "sk-bl-YOUR_API_KEY",
});
const controller = newAbortController();
const stream = await client.chat.completions.create(
{
model: "anthropic/claude-sonnet-4.6",
messages: [{ role: "user", content: "Write a long story." }],
stream: true,
},
{ signal: controller.signal }
);
forawait (const chunk of stream) {
const content = chunk.choices[0]?.delta?.content;
if (content) process.stdout.write(content);
}
// e.g. on a "Stop" button click:
controller.abort();
Keine Kosten für einen unterbrochenen Stream
Endet ein Stream, bevor der letzte usage-Chunk eintrifft — auch bei einem clientseitigen Abbruch — gibt es keine belastbare Token-Zählung für diese Anfrage, weshalb BazaarLink die vollständige Reservierung erstattet. Für bereits an Ihren Client ausgelieferte Inhalte vor dem Abbruch werden Sie nicht berechnet.
Kein garantierter sofortiger Stopp beim Provider
Das Schließen der Verbindung stoppt sofort die Weiterleitung und Abrechnung weiterer Token durch BazaarLink, ob der vorgelagerte Provider die Generierung auf seinen eigenen Servern jedoch augenblicklich einstellt, hängt vom jeweiligen Provider ab — manche rechnen noch kurz weiter, nachdem die Verbindung getrennt wurde.
Fehler mitten im Stream
Kein choices-Feld bei Fehler-Frames
Tritt ein Fehler auf, nachdem das Streaming bereits begonnen hat (z. B. Abbruch der Upstream-Verbindung), erhalten Sie einen SSE-Datenframe der Form {error:{message,type,code}} statt des üblichen {choices:[...]} — ohne Änderung des HTTP-Status, da die Header bereits gesendet wurden. Prüfen Sie auf ein error-Feld, bevor Sie choices[0].delta lesen. Abgerechnet werden nur die bereits gestreamten Tokens (anteilige Abrechnung).
1
2
3
4
5
data: {"id":"chatcmpl-abc","choices":[{"delta":{"content":"The capital of "},"index":0}]}
data: {"error":{"message":"Upstream connection lost.","type":"upstream_error","code":502}}
data: [DONE]
Embeddings
Embeddings sind numerische Darstellungen von Text, die semantische Bedeutung erfassen — sie wandeln Text in Vektoren (Zahlenfolgen) um, die für vielfältige Machine-Learning-Aufgaben genutzt werden können. BazaarLink bietet einen einheitlichen, zur OpenAI Embeddings API kompatiblen Endpunkt, über den Sie Embedding-Modelle mehrerer Anbieter über eine einzige Schnittstelle aufrufen können.
Was sind Embeddings?
Embeddings wandeln Text in hochdimensionale Vektoren um, bei denen semantisch ähnliche Texte im Vektorraum näher beieinanderliegen — zum Beispiel hätten "Katze" und "Kätzchen" ähnliche Embeddings, während "Katze" und "Flugzeug" weit auseinanderlägen. Diese Vektordarstellungen ermöglichen es Maschinen, Beziehungen zwischen Textabschnitten zu verstehen, und bilden damit die Grundlage vieler KI-Anwendungen.
Typische Anwendungsfälle
Anwendungsfall
Beschreibung
RAG (Abruf-erweiterte Generierung)Systeme entwickeln, die vor der Antwortgenerierung relevanten Kontext aus einer Wissensdatenbank abrufen — Embeddings finden die relevantesten Dokumente für den Kontext des LLM.
Semantische SucheDokumente und Anfragen in Embeddings umwandeln und dann die relevantesten Dokumente über Vektorähnlichkeit finden — versteht Bedeutung statt nur Schlüsselwörter abzugleichen und liefert bessere Ergebnisse als reine Schlüsselwortsuche.
EmpfehlungssystemeEmbeddings für Artikel (Produkte, Beiträge, Videos) und Nutzerpräferenzen erzeugen, um ähnliche Artikel zu empfehlen — Vektorvergleich findet semantisch verwandte Artikel auch ohne gemeinsame Schlüsselwörter.
Clustering & KlassifizierungÄhnliche Dokumente gruppieren oder Text klassifizieren, indem Embedding-Muster analysiert werden — Dokumente mit ähnlichen Embeddings gehören meist zum selben Thema oder zur selben Kategorie.
DuplikaterkennungDuplikate oder nahezu identische Inhalte durch Vergleich der Embedding-Ähnlichkeit finden — funktioniert auch bei umformuliertem Inhalt.
AnomalieerkennungUngewöhnliche oder abweichende Inhalte erkennen, indem Embeddings identifiziert werden, die deutlich vom typischen Muster des Datensatzes abweichen.
POST/api/v1/embeddings
Note
Nicht alle Upstream-Anbieter unterstützen Embeddings. Wenn Ihr konfigurierter Anbieter das angeforderte Modell nicht unterstützt, wechselt BazaarLink automatisch zum nächsten verfügbaren Anbieter.
Parameter
modelerforderlich
string
Das zu verwendende Embedding-Modell, z. B. "openai/text-embedding-3-small".
inputerforderlich
string | string[] | ContentItem[]
Zu embeddender Text — ein einzelner String, ein Array von Strings für einen Batch-Aufruf, oder (bei unterstützenden Modellen) ein Array von {content:[...]}-Elementen mit Text- und image_url-Teilen.
dimensions
integer
Angeforderte Ausgabevektorgröße. Wird nur von Modellen mit variabler Dimension unterstützt (z. B. die OpenAI text-embedding-3-Familie); wird unverändert an den Upstream-Anbieter weitergeleitet und von nicht unterstützenden Modellen ignoriert.
encoding_format
string
Angefordertes Embedding-Encoding, z. B. "float" oder "base64". Wird unverändert an den Upstream-Anbieter weitergeleitet — die Unterstützung hängt vom Modell ab.
provider
object
Provider-Routing-Einstellungen — order, allow_fallbacks, data_collection und weitere Felder, siehe Provider-Auswahl.
Einfache Anfrage
1
2
3
4
5
6
7
8
9
10
11
12
13
from openai import OpenAI
client = OpenAI(
base_url="https://bazaarlink.ai/api/v1",
api_key="sk-bl-YOUR_API_KEY",
)
response = client.embeddings.create(
model="openai/text-embedding-3-small",
input="The quick brown fox jumps over the lazy dog",
)
print(response.data[0].embedding) # 1536-dimensional vector
Batch-Verarbeitung
Senden Sie ein Array von Strings, um mehrere Texte in einer einzigen Anfrage zu embedden — günstiger und schneller als ein Aufruf pro Text.
1
2
3
4
5
6
7
8
9
10
11
response = client.embeddings.create(
model="openai/text-embedding-3-small",
input=[
"Machine learning is a subset of artificial intelligence",
"Deep learning uses neural networks with multiple layers",
"Natural language processing enables computers to understand text",
],
)
for i, item inenumerate(response.data):
print(f"Embedding {i}: {len(item.embedding)} dimensions")
Multimodale Eingabe (Bild + Text)
Modelle mit Bildeingabe-Unterstützung (output_modalities enthält "embeddings", inputModalities enthält "image") akzeptieren Eingabe-Elemente in der Form {content:[{type:"text",...}, {type:"image_url",...}]} — so können Sie ein Bild allein oder gemeinsam mit Text embedden.
Modellabhängig
Nur manche Embedding-Modelle akzeptieren Bildeingaben — prüfen Sie die unterstützten Modalitäten eines Modells auf der Modelle-Seite, bevor Sie image_url-Inhalte senden. Reine Textmodelle lehnen diese Form ab.
Steuern Sie, welcher Upstream eine Embedding-Anfrage bedient — genau wie bei Chat Completions. Die vollständige Feldreferenz finden Sie unter Provider-Auswahl.
1
2
3
4
5
6
7
8
9
{"model":"openai/text-embedding-3-small","input":"Your text here","provider":{"order":["openai"],"allow_fallbacks":true,"data_collection":"deny"}}
Embedding-Modelle finden
Es gibt keinen eigenen Endpunkt zum Auflisten von Embedding-Modellen — rufen Sie GET /api/v1/models auf und filtern Sie clientseitig nach Einträgen, deren output_modalities "embeddings" enthält, oder durchsuchen Sie die Modelle-Seite.
Einschränkungen
Kein Streaming — Embeddings werden immer als vollständige Antwort zurückgegeben, anders als bei Chat Completions.
Jedes Modell hat eine maximale Eingabelänge; Text darüber hinaus wird upstream gekürzt oder abgelehnt.
Embeddings für identische Eingaben sind deterministisch — keine Temperature oder Zufälligkeit im Spiel.
Best Practices
Wählen Sie ein Modell nach Geschwindigkeit/Qualität/Kosten — kleinere Modelle (z. B. qwen/qwen3-embedding-4b) sind günstiger und schneller; größere (z. B. openai/text-embedding-3-large) embedden meist mit höherer Genauigkeit.
Fassen Sie mehrere Texte in einer Anfrage zusammen statt einem Aufruf pro Text — weniger Roundtrips, geringerer Overhead.
Cachen Sie Ergebnisse — Embeddings für dieselbe Eingabe ändern sich nie, speichern Sie sie statt sie neu zu erzeugen.
Vergleichen Sie mit Kosinus-Ähnlichkeit, nicht mit euklidischem Abstand — sie ist skaleninvariant und funktioniert besser bei hochdimensionalen Vektoren.
Achten Sie auf die Kontextlänge jedes Modells — lange Dokumente müssen vor dem Embedding evtl. in Abschnitte zerlegt werden.
Parameter
Sampling-Parameter bestimmen den Token-Generierungsprozess. BazaarLink leitet unterstützte Parameter an den Upstream-Anbieter weiter; nicht unterstützte Parameter werden stillschweigend ignoriert.
Sampling-Parameter
Reine Passthrough — keine lokalen Standardwerte
Diese werden unverändert an den Upstream-Provider weitergegeben — BazaarLink setzt oder erzwingt niemals einen Standardwert. „Standard" unten beschreibt das Verhalten des Providers, wenn ein Feld weggelassen wird, keine Garantie von BazaarLink.
Rufen Sie detaillierte Statistiken für einen einzelnen Abschluss nach Generations-ID ab (aus der chat/completions-Antwort-ID oder dem Streaming-x-bz-gen-id-Header).
Errors: 400 (fehlende ID), 401 (Authentifizierung), 404 (Generation nicht gefunden).
API Schlüsselinformationen
Fragen Sie die Ratenbegrenzungsstufe des aktuellen API-Schlüssels und die aggregierten Nutzungszähler ab (das Antwortformat folgt den branchenüblichen Konventionen für Schlüsselinformationen API).
is_free_tier = true, wenn das Guthaben < 10 $ ist. Die Fenster sind in UTC: täglich = aktueller Tag, wöchentlich = Mo–So, monatlich = 1.–EOM. Wenn für den Schlüssel ein Ausgabenlimit pro Schlüssel festgelegt ist (über den Limit-Parameter des Schlüssels creation/update), spiegelt limit / limit_remaining / limit_reset dieses Limit und die Nutzung des entsprechenden Zeitraums wider; andernfalls ist limit null und limit_remaining fällt auf den Guthabenstand Ihres Kontos zurück. expires_at ist die Ablaufzeit des Schlüssels (null, wenn keine). is_management_key und is_provisioning_key sind Aliase für dasselbe Konzept – beide gelten für einen Verwaltungsschlüssel.
BYOK
BazaarLink bietet kein Programm zum Bringen Ihres eigenen Schlüssels (BYOK), daher gibt dieser Endpunkt keine byok_usage-Felder zurück.
Self-Service-Registrierung für KI-Agenten (Bots, autonome Systeme). Gibt einen API-Schlüssel mit Testguthaben und einem Anspruchstoken für ein Konto-Upgrade zurück.
POST/api/v1/agents/register
Rate Limit
Keine Authentifizierung erforderlich, aber IP-begrenzt auf 1 Registrierung pro 24 Stunden.
curl -X POST https://bazaarlink.ai/api/v1/agents/register \
-H "content-type: application/json" \
-d '{
"name": "My Agent",
"description": "Autonomous research bot"
}'
Antwort
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{"api_key":"sk-bl-xxxxx...","credits":0.10,"credits_usd":"$0.1000","claim_token":"abc...xyz","claim_expires":"2026-04-27T10:00:00.000Z","upgrade_url":"https://bazaarlink.ai/claim?token=...","referral_code":"aBcDeFgH","free_model":"auto:free","message":"Welcome to BazaarLink!...","referral_message":"Share referral link:...","base_url":"https://bazaarlink.ai/api/v1","docs":"https://bazaarlink.ai/llms.txt"}
Modellinferenz-Endpunkte geben eine OpenAI-kompatible Fehlerhülle zurück. Das Feld type kann variieren oder fehlen; verwenden Sie für die Programmlogik den HTTP-Status und error.code, statt die Meldung auszuwerten.
1
2
3
4
5
6
7
{"error":{"message":"Insufficient credits. Please top up to continue.","type":"invalid_request_error","code":"insufficient_credits"}}
HTTP Status und Fehlercode
Before streaming, the HTTP status identifies the broad failure class. error.code is either that number or a stable string for a specific remedy. Prefer the string code when present, otherwise use the HTTP status.
Code
Name
Beschreibung
400Bad RequestFehlerhafte Anfrage, leeres messages-Array oder fehlende Pflichtfelder
401Nicht autorisiertAPI-Schlüssel fehlt, ist ungültig oder deaktiviert
402Zahlung erforderlichUnzureichendes Kontoguthaben, Schlüssel-Ausgabenlimit erreicht oder monatliches/wöchentliches Budgetlimit überschritten
403VerbotenKonto ist gesperrt oder hat keine Berechtigung
404Nicht gefundenRequested model, generation, key, or other resource does not exist
409KonfliktResource is not in the required state, such as an incomplete video job
410GegangenRequested model has been retired and must be replaced
413Payload zu großRequest-Body überschreitet 10 MB; reduzieren Sie die Inhaltsgröße oder teilen Sie die Anfrage auf
416Range nicht erfüllbarRequested byte range is invalid for generated video content
429Zu viele AnfragenRate Limit überschritten; prüfen Sie den Retry-After-Header vor dem erneuten Versuch
500ServerfehlerInterner BazaarLink-Fehler
502Bad GatewayAlle Upstream-Anbieter fehlgeschlagen; Failover wurde versucht
503Dienst nicht verfügbarKein Upstream-Anbieter für dieses Modell konfiguriert; Admin kontaktieren
504Gateway-TimeoutUpstream connection or stream stalled and timed out
Maschinenlesbare Abrechnungscodes
A 402 can represent different controls. Use these stable codes to choose the correct action.
Code
Beschreibung
budget_cap_reachedA weekly or monthly budget cap was reached; raise or reset the cap.
credit_limit_exceededA monthly-billing organization's credit line was exhausted; contact billing.
insufficient_creditsThe prepaid balance is insufficient; add credits.
spend_limit_exceededThe API key reached its daily, weekly, or monthly spend limit.
Stable error.code catalog
These string codes are emitted by public inference and media paths. Branch on the string code when present; the HTTP status remains the broad failure class.
Modell und Endpunkt
Modellsuch-, Lebenszyklus-, Preis-, Modalitäts- und Endpunktkompatibilitätsfehler.
Code
HTTP-Status
unknown_model400
invalid_model_id400
model_not_found404
model_retired410
model_endpoint_mismatch400
embedding_on_chat_endpoint400
model_not_priced400
invalid_modality_for_model400
Anfrage und Sicherheit
Ungültige Parameter, Kontext, Tools, Schemata und Inhaltssicherheitsverweigerungen.
Code
HTTP-Status
missing_required_field400
unsupported_param400
max_tokens_invalid400
context_too_long400
tool_use_unsupported400
malformed_tool_messages400
invalid_response_format_schema400
invalid_tools_definition400
content_moderation403
content_filter403
unknown_4xx400
Bildgenerierung und -bearbeitung
Bildeingabe-, mehrteilige Bearbeitungs-, Ausgabe- und Bild-Pipeline-Fehler.
Code
HTTP-Status
invalid_image_url400
input_images_not_supported400
invalid_content_type400
mask_not_supported400
unsupported_response_format400
missing_prompt400
missing_image400
too_many_images400
invalid_image_type400
image_too_large400
invalid_n400
pipeline_error502
no_images502
Upstream-Routing
Sanitized Provider-Konnektivität, Authentifizierung, Drosselung und Verfügbarkeitsfehler.
Code
HTTP-Status
upstream_unreachable502
upstream_auth_failed502
upstream_rate_limited429
upstream_unavailable502/503
Ratengrenzen, Budgets und Notbremsen
These controls can reject an otherwise valid request and require different recovery actions.
Control
HTTP-Status
So identifizieren Sie es
Anforderungsratenbegrenzung429Numerischer Code 429; Verwenden Sie die Header „Retry-After“ und „X-RateLimit-*“.
Rate-Limit-Strafblock429Numerischer Code 429 und eine vorübergehende Einschränkungsnachricht; Verwenden Sie Retry-After.
Globale Ausgaben-Notbremse503Numerischer Code 503, Nachricht zum globalen Ausgabenlimit und Wiederholungsversuch nach 30 oder 300 Sekunden.
Scoped spend brake429Numeric code 429 and a spend circuit-breaker message naming the scope.
Abrechnungs- und Budgetkontrollen402Verwenden Sie die oben aufgeführten stabilen Abrechnungszeichenfolgencodes.
Compatibility note: rate-limit and emergency-brake paths currently emit numeric error.code values. Use HTTP status, Retry-After, and the documented response message.
Video- und Medienressourcenstatus
Video validation commonly returns numeric code 400. Missing jobs return 404, retired models 410, unfinished video content 409, and invalid video byte ranges 416.
Retry-Richtlinie
Retry only failures that may recover without changing the request. Honor Retry-After or use exponential backoff with jitter. Do not stack SDK and manual retries.
Wiederholen Sie den Vorgang mit Backoff
429, 502, 503, and 504. Check the original generation job before creating another after an ambiguous network failure.
Fix vor dem erneuten Versuch
400, 401, 402, 403, 404, 409, 410, 413, and 416. Fix the request, credentials, balance, permissions, resource state, or Range header first.
Fehlerbehandlung
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import random
import time
from openai import OpenAI, APIStatusError
client = OpenAI(
base_url="https://bazaarlink.ai/api/v1",
api_key="sk-bl-YOUR_API_KEY",
max_retries=0, # Avoid double retries; this example handles them.
)
RETRYABLE = {429, 502, 503, 504}
for attempt inrange(5):
try:
response = client.chat.completions.create(
model="openai/gpt-4.1",
messages=[{"role": "user", "content": "Hello!"}],
)
breakexcept APIStatusError as error:
if error.status_code notin RETRYABLE or attempt == 4:
raise
retry_after = error.response.headers.get("Retry-After")
delay = (
float(retry_after)
if retry_after
elsemin(8, 0.5 * (2 ** attempt)) + random.uniform(0, 0.25)
)
time.sleep(delay)
Streaming-Fehlerformate
Fehler, die vor dem Streamen von Tokens auftreten, geben eine Standard-HTTP-Fehlerantwort mit einem JSON-Body zurück.
After a stream starts, the HTTP response is already 200. Parse each SSE data frame and treat a top-level error or choices[0].finish_reason === "error" as a failed, incomplete response.
Wenn der Stream mitten in der Übertragung fehlschlägt, sendet BazaarLink ein letztes SSE-Event mit einem error-Objekt auf oberster Ebene, gefolgt von data: [DONE]. Chunks, die von manchen Upstreams unverändert weitergeleitet werden, können den Fehler stattdessen auf der Choice tragen (choices[0].finish_reason === "error") — behandeln Sie beide Fälle.
1
2
3
4
5
6
7
8
9
10
// If the stream fails mid-flight, BazaarLink emits a final SSE event
// with a top-level "error" object, followed by data: [DONE]
data: {"error":{"message":"Upstream stream interrupted. The response is incomplete.","type":"upstream_error","code":502}}
data: [DONE]
// Chunks relayed verbatim from some upstreams may instead carry the error
// inline on the choice: choices[0].finish_reason === "error" with an
// "error" object ({ code, message }) on the choice — handle both shapes.
// Branch on error.code; error.type can vary by failure path.
Versionierung
BazaarLink stellt einen einzigen stabilen API-Pfad bereit, /api/v1 — es gibt keine datumsgebundenen Versionen oder Versions-Header zu verwalten. Die API entwickelt sich fortlaufend weiter statt über nummerierte Releases.
Nicht-brechende Änderungen
Diese werden ohne vorherige Ankündigung veröffentlicht:
Neue Endpunkte
Neue Modelle im Katalog
Neue optionale Anfrageparameter
Neue Antwortfelder
Neue Schemas mit optionalen Feldern
Zusätzliche Antwortstatus-/Fehlercodes
Clients defensiv schreiben
Ignorieren Sie Antwortfelder, die Sie nicht kennen, und scheitern Sie nicht an unbekannten Werten in enum-artigen Feldern — neue kommen hinzu, wenn Katalog und Funktionsumfang wachsen.
Breaking Changes
Diese sind selten und umfassen:
Entfernen oder Umbenennen eines Endpunkts, Parameters oder Antwortfelds
Ändern des Typs eines Felds
Verpflichtendmachen eines optionalen Parameters
Wenn sie vorkommen, betrifft ein Breaking Change einen bestimmten Endpunkt statt der gesamten /api/v1-Oberfläche — es gibt keinen einzelnen Versionssprung, der alle Integrationen gleichzeitig brechen könnte. Wir veröffentlichen noch kein formelles Changelog mit einem Breaking-Tag (siehe „Aktuell bleiben" unten) — bei integrationskritischen Fällen wenden Sie sich vorab an den Support, statt sich auf undokumentiertes Verhalten zu verlassen.
Deprecation-Richtlinie
Das eine routinemäßige „Breaking"-Ereignis, mit dem Sie rechnen sollten: einzelne Modelle werden abgeschaltet, wenn Upstream-Anbieter sie deprecaten. Fragen Sie den aktuellen Status eines Modells über GET /api/v1/models ab.
1
2
3
4
5
6
7
GET https://bazaarlink.ai/api/v1/models
Authorization: Bearer sk-bl-YOUR_API_KEY
# A model within 30 days of its deprecation date shows in the catalog# with an "EOL" badge on the Models page. After the effective date it's# dropped from the catalog and calls return:# 410 { "error": { "type": "model_not_available", "code": "model_retired" } }
Aktuell bleiben
Wir veröffentlichen noch kein eigenes API-Changelog oder RSS-Feed. Prüfen Sie vorerst direkt diese Seite, verfolgen Sie den Status eines Modells über GET /api/v1/models, oder kontaktieren Sie den Support, wenn Sie für eine kritische Integration Vorlaufzeit benötigen.
Support
Support
Hi! How can we help you? Send a message and we'll get back to you soon.
API-Referenz | Chat, Embeddings und Modell-Routing