Ошибки и повторные запросы
Ошибки OpenAI-совместимых endpoints содержат error.message, type, code, param и request_id. Messages использует собственную формат ошибок Anthropic. Заголовок X-Request-ID помогает найти запрос при обращении в поддержку.
HTTP-коды
- 400: некорректный JSON, отсутствующий или неправильный Idempotency-Key.
- 401: ключ невалиден, отозван, истёк или принадлежит другому окружению.
- 402: недостаточно FC или превышен бюджет ключа; генерация не запускалась.
- 403: недостаточно прав, запрещённая модель или IP.
- 404: недоступная модель, чужой/отсутствующий объект или несохранённый Responses.
- 409: конфликт idempotency, уже принятый незавершённый запрос или изменившийся расчёт стоимости.
- 413 / 422: размер либо параметры запроса не соответствуют контракту.
- 429: лимит запросов, токенов или параллельных запросов; используйте Retry-After.
- 500 / 502 / 503 / 504: внутренняя ошибка, провайдер, недоступность или deadline; проверьте состояние запроса перед повтором.
Idempotency
Пример ответа с HTTP 401:
{
"error": {
"message": "Invalid API key",
"type": "authentication_error",
"code": "invalid_api_key",
"param": null,
"request_id": "req_0123456789abcdef0123456789abcdef"
}
}Одинаковые аккаунт, метод, Idempotency-Key и тело возвращает тот же запрос и результат. Изменённое тело с тем же ключом даёт 409. Рекомендуется UUID, сохранённый клиентом до запроса. Максимум 128 видимых ASCII-символов.
Не создавайте новый Idempotency-Key после неизвестного timeout. Провайдер мог принять исходный запрос. Location ведёт на /v1/requests/{id}; для чтения нужен usage:read. Повтор не должен означать новую платную попытку.
Лимиты и retry
Ответы включают X-RateLimit-Limit/Remaining для requests и tokens, reset UTC и Retry-After для 429. Лимит токенов в минуту учитывает предварительный резерв. Ротация ключа не обнуляет бюджетную группу.
Сообщения об ошибках не содержат секретов и содержимого вашего запроса. Для обращения в поддержку достаточно идентификатора запроса и времени UTC, без полного API-ключа.