Ошибки API моделей
Два формата конверта ошибок: OpenAI — на большинстве маршрутов; Anthropic — только на `POST /messages`.
Конверт OpenAI
При ошибке до или вместо успешного ответа API моделей возвращает JSON в формате OpenAI:
{
"error": {
"message": "…",
"type": "invalid_request_error",
"code": "model_not_found"
}
}HTTP status совпадает с семантикой ошибки.
Коды HTTP
| HTTP | error.type | error.code | Когда |
|---|---|---|---|
400 | invalid_request_error | — | Невалидные параметры (напр. store, previous_response_id, conversation или background в Responses; неверный provider.only / provider.host или нет подходящей строки — выбор поставщика) |
401 | invalid_request_error | — | Неверный или отсутствующий API-ключ |
402 | insufficient_quota | insufficient_balance | Недостаточно баланса / budget |
403 | invalid_request_error | — | Блокировка policy (контент, доступ) |
404 | invalid_request_error | model_not_found | Модель неизвестна или не поддерживает нужный тип запроса |
404 | invalid_request_error | invalid_realtime_credential | Realtime: credential недействителен |
404 | invalid_request_error | — | Маршрут не поддерживается (route not supported), неизвестный идентификатор задачи |
409 | invalid_request_error | request_in_progress | Гонка внутреннего id запроса (двойной сабмит соединения). Клиентский ключ идемпотентности не поддерживается |
413 | invalid_request_error | request_too_large | Тело или multipart-часть слишком велики |
429 | rate_limit_error | rate_limit_exceeded | RPM/TPM или Realtime concurrent cap |
502 | server_error | upstream_unavailable | Модель временно недоступна у поставщика |
503 | server_error | upstream_unavailable | Сервис моделей временно недоступен |
Неподдерживаемые маршруты
Запрос к Assistants, Threads, Moderations, management API и др. по OpenAI-совместимым маршрутам:
{
"error": {
"message": "route not supported",
"type": "invalid_request_error"
}
}HTTP 404. Полный список — Исключённые маршруты.
Конверт Anthropic
На POST /messages ошибки возвращаются в формате Anthropic. На GET /models тот же конверт используется, если в запросе есть заголовок anthropic-version (неверные параметры списка и отсутствующая модель). Неверный ключ на GET /models остаётся в конверте OpenAI.
{"type":"error","error":{"type":"authentication_error","message":"…"}}| HTTP | error.type | Когда |
|---|---|---|
400 | invalid_request_error | Невалидные параметры (напр. отсутствует max_tokens) |
401 | authentication_error | Неверный или отсутствующий API-ключ |
402 | invalid_request_error | Недостаточно баланса (сообщение про баланс) |
403 | permission_error | Блокировка policy |
404 | not_found_error | Модель не найдена |
429 | rate_limit_error | Превышен лимит запросов |
≥500 | api_error | Внутренняя или апстрим-ошибка |
На остальных маршрутах API моделей — конверт OpenAI, даже при использовании x-api-key. GET /models без anthropic-version тоже отвечает конвертом OpenAI.
Два ответа 400 про объект provider на POST /messages тоже приходят в конверте OpenAI. Тексты — в выборе поставщика и площадки.
Отладка
- Проверьте
Authorization: Bearer sk-…илиx-api-key: sk-…(не токен кабинета). - Убедитесь, что модель включена для ключа и вызывается тем методом, который она обслуживает. Иначе будет
404 model_not_found. - Для
POST /messagesпомните, чтоthinkingи prompt cache доступны только у native-поставщиковanthropicиru-openrouter. - Для Realtime — свежий
client_secretв query и API-ключ в заголовке. - При повторяющихся
503— напишите в службу поддержки LLM Mart.
Пример обработки (Node.js)
const res = await fetch(`${baseURL}/chat/completions`, { method: "POST", headers, body });
if (!res.ok) {
const { error } = await res.json();
console.error(res.status, error?.type, error?.code, error?.message);
}Лимиты тела запроса
| Группа маршрутов | Max body |
|---|---|
| Chat, completions, responses, embeddings, messages, decisions | 4 MiB JSON |
| Images edits/variations | 32 MiB (part 25 MiB) |
| Audio transcribe/translate | 25 MiB multipart |
| Videos | 4 MiB JSON / 100 MiB multipart |
| Realtime: создание credential | 1 MiB JSON |
Что дальше
Выбор поставщика и площадки
В JSON-теле запроса можно назвать поставщика и, отдельно, площадку. Шлюз оставляет только подходящие строки и дальше выбирает среди них как обычно: по цене, ско
Исключённые маршруты
Запросы к маршрутам вне справочника API моделей возвращают HTTP `404` и сообщение `route not supported` (конверт OpenAI).