Формат ошибок зависит от endpoint. Используйте HTTP-статус и error.type, если он есть. error.code может быть строкой, числом или отсутствовать; error.message предназначено только для отображения.
1
2
3
4
5
6
7
{"error":{"message":"Insufficient credits. Please top up to continue.","type":"invalid_request_error","code":"insufficient_credits"}}
HTTP
Формат ошибок зависит от endpoint. Используйте HTTP-статус и error.type, если он есть. error.code может быть строкой, числом или отсутствовать; error.message предназначено только для отображения.
Код
Название
Описание
424Сбой зависимостиНастроенный вами ключ BYOK отклонён upstream-провайдером; проверьте или замените его в настройках BYOK. Ошибка появляется только в строгом режиме
400Неверный запросНеверный запрос, пустой массив сообщений или отсутствуют обязательные поля
401НесанкционированныйAPI Ключ отсутствует, недействителен или отключен.
402Требуется оплатаНедостаточно средств на счете, достигнут предел расходов на ключ или превышен предел бюджета monthly/weekly
403ЗапрещеноУчетная запись заблокирована или не имеет разрешения
404Не найденЗапрошенная модель, поколение, ключ или другой ресурс не существует.
409КонфликтРесурс не находится в требуемом состоянии, например задание видео не завершено.
410УшелЗапрошенная модель снята с производства и должна быть заменена.
413Полезная нагрузка слишком великаТело запроса превышает 10 МБ; уменьшить размер контента или разделить запрос
416Диапазон неудовлетворителенЗапрошенный диапазон байтов недействителен для созданного видеоконтента.
429Слишком много запросовПревышен лимит скорости; перед повторной попыткой проверьте заголовок Retry-After
432Бесплатная квота исчерпанаTavily-совместимые эндпоинты (/v1/search, /v1/extract, /v1/crawl, /v1/map): бесплатная квота поиска исчерпана или баланс равен нулю или отрицателен; пополните баланс, чтобы продолжить. Тело ответа в формате Tavily: {"detail":{"error":"..."}}
500Ошибка сервераВнутренняя ошибка BazaarLink
502Плохой шлюзНи один upstream-источник не обработал запрос; запрос вернёт ошибку.
503Сервис недоступенДля этой модели не настроен ни один вышестоящий поставщик; связаться с администратором
504Тайм-аут шлюзаВосходящее соединение или поток остановлены и истекло время ожидания.
Машиночитаемые коды оплаты
Ответ
A 402 может представлять собой различные элементы управления. Эти стабильные коды позволяют клиентам показывать правильное следующее действие.
Код
Описание
byok_key_invalidНастроенный вами ключ BYOK отклонён upstream-провайдером; проверьте или замените его в настройках BYOK. Ошибка появляется только в строгом режиме.
budget_cap_reachedA Достигнут предел еженедельного или ежемесячного бюджета рекомендаций; поднимите или сбросьте крышку.
credit_limit_exceededA Жесткая кредитная линия организации, осуществляющей ежемесячные платежи, исчерпана; контактный биллинг.
insufficient_creditsA пользователь или организация с предоплатой не может зарезервировать достаточный баланс; добавить кредиты.
spend_limit_exceededКлюч API достиг настроенного ежедневного, еженедельного или ежемесячного лимита расходов.
capacity_unavailableThis model is temporarily at capacity. Retry shortly; the Retry-After header says how long to wait.
Подробные коды ошибок
Если запрос API завершается неудачно, error.code сообщает конкретную причину. Две ошибки могут использовать HTTP 400, но требуют разных исправлений: «unknown_model» означает, что имя модели неверно, а «image_too_large» означает, что изображение необходимо уменьшить. Используйте таблицу ниже, чтобы найти причину и следующее действие.
Статус
Недопустимые параметры, контекст, инструменты, схемы и отказы в отношении безопасности содержимого.
Код
HTTP
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
Создание и редактирование изображений
Ввод изображения, многочастное редактирование, вывод и ошибки конвейера изображений.
Код
HTTP
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
Восходящая маршрутизация
Очистка ошибок подключения, аутентификации, регулирования и доступности поставщика.
Код
HTTP
upstream_unreachable502
upstream_auth_failed502
upstream_rate_limited429
capacity_unavailable429
upstream_unavailable502/503
byok_key_invalid424
Модерация контента
Все запросы автоматически проверяются перед отправкой модели. Запросы, нарушающие нашу политику использования, отклоняются до модели и возвращают ошибку 403.
Категории контента, которые блокируются
Модерация основана на нашей Политике допустимого использования (Acceptable Use Policy) и в первую очередь блокирует следующие категории контента:
Контент сексуальной эксплуатации
Угрозы насилия
Инструкции по совершению противоправных действий
Контент, связанный с биологической опасностью
Формат ответа 403
Запрос, заблокированный модерацией, возвращает ошибку в следующем формате:
1
2
3
4
5
6
7
{"error":{"message":"Your prompt was blocked by content moderation.","type":"invalid_request_error","code":"content_filter"}}
Заблокированные запросы не тарифицируются — вы не будете платить за отклонённый запрос.
Обжалование ложного срабатывания
Если вы считаете, что запрос был заблокирован ошибочно, обратитесь в службу поддержки, указав время запроса и (по возможности) request id — мы проверим.
Конфиденциальность
Запросы автоматически проверяются на безопасность контента; текст и изображения вашего последнего ввода могут отправляться стороннему сервису оценки безопасности контента.
Для запросов, признанных нарушающими, предположительно нарушающими, близкими к порогу или попавшими в случайную выборку, мы можем сохранять полный текст или его начальную часть как доказательство соответствия требованиям, для разрешения споров и аудита, без обещания фиксированного срока удаления.
Для остальных обычных успешных запросов промпты и ответы не сохраняются; на запросы с ключами ZDR первые два пункта не распространяются.
Ограничения ставок, бюджеты и экстренные тормоза
Эти элементы управления могут отклонить действительный запрос. Они отличаются от сбоев поставщика и требуют других действий по восстановлению.
Управление
HTTP
Как это определить
Ограничение скорости запроса429Строковый или числовой код 429; используйте заголовки Retry-After и X-RateLimit-*.
Блок штрафа за ограничение скорости429Цифровой код 429 и сообщение о временном ограничении; используйте Повтор-После.
Global проводит аварийное торможение503Цифровой код 503, сообщение о глобальном лимите расходов и повторная попытка через 30 или 300 секунд.
Org/team/member/user расходный тормоз429Цифровой код 429 и сообщение автоматического выключателя с указанием затронутой области.
Контроль выставления счетов и бюджета402Используйте коды строк стабильного платежа, перечисленные выше.
Формат ошибок зависит от endpoint. Используйте HTTP-статус и error.type, если он есть. error.code может быть строкой, числом или отсутствовать; error.message предназначено только для отображения.
Состояние видео и медиаресурсов
Проверка видео обычно возвращает числовой код 400. Отсутствующее задание возвращает 404, устаревшая модель возвращает 410, незавершенное видеоконтент возвращает 409, а недопустимый диапазон видеобайтов возвращает 416. Опрос до завершения или исправление заголовка Range перед повторной попыткой.
Политика повторных попыток
Повторять только те сбои, которые можно устранить без изменения запроса. Если присутствует Retry-After, подождите столько же; в противном случае используйте экспоненциальную задержку с джиттером. Ограничьте попытки и избегайте наслаивания ручных повторов поверх автоматических попыток SDK.
Повторить попытку с откатом
429, 502, 503 и 504. Соблюдайте параметр «Повторить попытку после», если он предусмотрен. Для запросов на создание не создавайте второе задание после неоднозначного сбоя сети, пока вы не проверите исходное задание.
Исправьте перед повторной попыткой
400, 401, 402, 403, 404, 409, 410, 413 и 416. Сначала измените запрос, учетные данные, баланс, разрешения, состояние ресурса или заголовок диапазона.
Обработка ошибок
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)
Форматы ошибок потоковой передачи
Ошибки, возникающие до потоковой передачи каких-либо токенов, возвращают стандартный ответ об ошибке HTTP с телом JSON.
После запуска потока ответ HTTP уже равен 200. Анализируйте каждый кадр данных SSE и обрабатывайте ошибку верхнего уровня или choice[0].finish_reason === "error" как неудавшийся, неполный ответ.
Если поток завершается ошибкой после начала, BazaarLink может отправить последнее SSE-событие с объектом error верхнего уровня, а затем data: [DONE]. Считайте ответ неполным и не используйте частичный вывод как завершённый результат.
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.
Поддержка
Здравствуйте! Чем мы можем помочь? Отправьте сообщение, и мы ответим в ближайшее время.