Fehlerhüllen unterscheiden sich je Endpunkt. Verwenden Sie HTTP-Status und, falls vorhanden, error.type. error.code kann ein String oder eine Zahl sein und fehlen; error.message dient nur der Anzeige.
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
Fehlerhüllen unterscheiden sich je Endpunkt. Verwenden Sie HTTP-Status und, falls vorhanden, error.type. error.code kann ein String oder eine Zahl sein und fehlen; error.message dient nur der Anzeige.
Code
Name
Beschreibung
424Abhängigkeit fehlgeschlagenIhr selbst eingerichteter BYOK-Schlüssel wurde vom Upstream-Anbieter abgelehnt. Prüfen oder wechseln Sie ihn in den BYOK-Einstellungen. Dieser Fehler tritt nur im Strict-Modus auf
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
432Gratiskontingent erschöpftTavily-kompatible Endpunkte (/v1/search, /v1/extract, /v1/crawl, /v1/map): Das kostenlose Suchkontingent ist aufgebraucht oder das Guthaben beträgt null oder weniger; laden Sie Guthaben auf, um fortzufahren. Der Body hat Tavily-Format: {"detail":{"error":"..."}}
500ServerfehlerInterner BazaarLink-Fehler
502Bad GatewayKeine Upstream-Quelle konnte die Anfrage verarbeiten. Es wird ein Fehler zurückgegeben.
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
byok_key_invalidIhr selbst eingerichteter BYOK-Schlüssel wurde vom Upstream-Anbieter abgelehnt. Prüfen oder wechseln Sie ihn in den BYOK-Einstellungen. Dieser Fehler tritt nur im Strict-Modus auf.
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.
capacity_unavailableThis model is temporarily at capacity. Retry shortly; the Retry-After header says how long to wait.
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
capacity_unavailable429
upstream_unavailable502/503
byok_key_invalid424
Inhaltsmoderation
Alle Anfragen werden automatisch geprüft, bevor sie an das Modell gesendet werden. Anfragen, die gegen unsere Nutzungsrichtlinien verstoßen, werden abgelehnt, bevor sie das Modell erreichen, und geben einen 403-Fehler zurück.
Kategorien, die blockiert werden
Die Moderation basiert auf unserer Acceptable Use Policy und blockiert vor allem folgende Inhaltskategorien:
Sexuell ausbeuterische Inhalte
Gewaltandrohungen
Anleitungen zu rechtswidrigen Handlungen
Inhalte im Zusammenhang mit biologischen Gefahren
403-Antwortformat
Eine durch Moderation blockierte Anfrage gibt einen Fehler in folgendem Format zurück:
1
2
3
4
5
6
7
{"error":{"message":"Your prompt was blocked by content moderation.","type":"invalid_request_error","code":"content_filter"}}
Blockierte Anfragen werden nicht abgerechnet — für eine abgelehnte Anfrage entstehen keine Kosten.
Einspruch bei Fehlalarmen
Wenn Sie glauben, dass eine Anfrage fälschlicherweise blockiert wurde, wenden Sie sich mit dem Zeitpunkt der Anfrage und (falls verfügbar) der Request-ID an den Support — wir prüfen den Fall.
Datenschutz
Anfragen werden automatisch auf Inhaltssicherheit geprüft; Text und Bilder Ihrer jüngsten Eingabe können an einen Bewertungsdienst für Inhaltssicherheit eines Dritten gesendet werden.
Bei Anfragen, die als Verstoß, Verdachtsfall, nahe am Schwellenwert oder als Stichprobe eingestuft werden, können wir den vollständigen Text oder den Anfangsteil als Compliance-Nachweis, für die Streitbeilegung und für Audits speichern; eine feste Löschfrist wird nicht zugesagt.
Bei anderen gewöhnlichen erfolgreichen Anfragen werden Prompts und Antworten nicht gespeichert; für Anfragen mit ZDR-Schlüsseln gelten die ersten beiden Punkte nicht.
Ratengrenzen, Budgets und Notbremsen
These controls can reject an otherwise valid request and require different recovery actions.
Control
HTTP-Status
So identifizieren Sie es
Anforderungsratenbegrenzung429Zeichenfolgen-Code oder numerischer 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.
Fehlerhüllen unterscheiden sich je Endpunkt. Verwenden Sie HTTP-Status und, falls vorhanden, error.type. error.code kann ein String oder eine Zahl sein und fehlen; error.message dient nur der Anzeige.
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://api.bazaarlink.ai/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-4o",
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 ein Stream nach dem Start fehlschlägt, kann BazaarLink ein letztes SSE-Ereignis mit einem error-Objekt auf oberster Ebene senden, gefolgt von data: [DONE]. Behandeln Sie die Antwort als unvollständig und verwenden Sie Teilausgaben nicht als fertiges Ergebnis.
1
2
3
4
5
data: {"error":{"message":"The request could not be completed.","type":"upstream_error","code":502}}
data: [DONE]
// Branch on error.code; error.type can vary by failure path.
Support
Hi! How can we help you? Send a message and we'll get back to you soon.