Это руководство основано на проверках в реальном времени текущего API CometAPI. Мы напрямую подтвердили ошибки
400, 401 и сбои пути/base URL. Мы не воспроизводили 413, 429, 500, 503, 504 или 524 в ограниченных тестах, поэтому рекомендации для этих статусов намеренно даны с осторожностью.Быстрая диагностика
| Status | Что это обычно означает | Повторять запрос? | Первое действие |
|---|---|---|---|
400 | Валидация запроса не прошла до того, как запрос был успешно маршрутизирован. | Нет | Проверьте model, messages, структуру JSON и типы полей. |
401 | API key отсутствует, имеет неверный формат или недействителен. | Нет | Проверьте Authorization: Bearer <COMETAPI_KEY>. |
403 | Доступ был заблокирован или текущий запрос не разрешён. | Обычно нет | Повторите запрос с заведомо рабочим запросом и сначала уберите поля, специфичные для модели. |
| Ошибка пути | Неверный base URL или неверный путь endpoint. В Comet это может проявляться как редирект 301 или HTML, а не как корректный JSON 404. | Нет | Используйте строго https://api.cometapi.com/v1 и отключите автоматический переход по редиректам во время отладки. |
429 | Ограничение скорости запросов или временная перегрузка. | Да | Используйте exponential backoff с jitter. |
500, 503, 504, 524 | Сбой платформы или сбой класса timeout. | Да | Повторите запрос с backoff и сохраните request id. |
Структура ошибки
Текущая JSON-структура ошибки, возвращаемая CometAPI, выглядит так:request id внутри error.message. Сохраняйте это значение, если вам потребуется обратиться в поддержку.
400 Bad Request
Вот что мы наблюдали в реальном API, когда model был пропущен:
400 обычно означает, что тело запроса не прошло валидацию до того, как платформа смогла направить его нужному провайдеру модели.
Типичные причины:
- Отсутствуют обязательные поля, такие как
modelилиmessages - Неверная структура JSON
- Поле отправлено с неправильным типом
- Используются параметры, специфичные для провайдера, которые выбранный endpoint не принимает
- Начните с минимального заведомо рабочего запроса.
- Возвращайте необязательные поля по одному.
- Сравните тело запроса со схемой endpoint в API reference.
your-model-id на любой актуальный идентификатор модели со страницы CometAPI Models page.
401 Invalid Token
Вот что мы наблюдали в реальном API при использовании недействительного ключа:
- Заголовок должен быть строго
Authorization: Bearer <COMETAPI_KEY>. - Убедитесь, что ваше приложение не загружает старый ключ из
.env, истории shell или хранилища секретов в развернутом окружении. - Если один ключ не работает, а другой работает с тем же запросом, считайте это проблемой токена, а не проблемой endpoint.
403 Forbidden
Мы не воспроизвели стабильный 403 в ограниченных тестах, поэтому не стоит считать один старый шаблон сообщения исчерпывающим объяснением.
В текущей документации Comet 403 чаще всего рассматривается как одна из следующих ситуаций:
- Запрос блокируется правилом на стороне платформы, например фильтрацией WAF
- token или route не имеют права использовать запрошенную model или форму запроса
- Выбранная model отклоняет один из переданных вами расширенных параметров
- Повторите запрос с очень простым текстовым запросом к заведомо рабочей model.
- Удалите расширенные поля и provider-specific параметры, затем постепенно добавляйте их обратно.
- Если ответ включает request id, сохраните его перед обращением в поддержку.
Неверный Base URL или неверный путь
Это та область, где старая страница была наименее точной. При проверках текущих endpoint’ов Comet:- Отправка запроса на
https://api.cometapi.com/chat/completionsвозвращала редирект301наhttps://www.cometapi.com/chat/completions - Отправка запроса на несуществующий API route, такой как
https://api.cometapi.com/v1/not-a-real-endpoint, тоже возвращала редирект301наhttps://www.cometapi.com/v1/not-a-real-endpoint
- Редирект
- Не-JSON HTML-ответ, если ваш клиент следует редиректам
- Ошибка парсинга внутри вашего SDK
- Запрос, который вообще не доходит до API-слоя корректным образом
- Убедитесь, что base URL включает
/v1. - Убедитесь, что путь endpoint’а в точности соответствует документации.
- На время отладки проблем с путями отключите автоматическое следование редиректам.
413 Request Entity Too Large
Мы не воспроизвели 413 в ограниченном тесте даже с чрезмерно большим JSON request body размером 8 MiB, поэтому старое объяснение, что prompt был слишком длинным, было слишком узким.
Если вы всё же видите 413, сначала рассматривайте это как проблему размера запроса. Обычные причины:
- Большие payload’ы в base64
- Слишком большие изображения или аудио, встроенные inline
- Очень большие multipart или JSON body
- Уменьшите или сожмите прикреплённый контент.
- Разделите большие задачи на более мелкие запросы.
- Не предполагайте, что единственная причина — это длина обычного текста.
429 Too Many Requests
Мы не воспроизвели 429 во время ограниченной проверки параллелизма с 24 параллельными запросами GET /v1/models, поэтому точный порог явно зависит от route, model и текущего состояния платформы.
Считайте 429 ошибкой, которую можно повторно запрашивать:
- Используйте exponential backoff с jitter.
- Уменьшите burst-параллелизм.
- Не отключайте логирование запросов, чтобы видеть, какой route и какая model начинают насыщаться первыми.
500, 503, 504 и 524
Мы не воспроизвели эти статусы в ограниченных тестах. Их следует документировать как ошибки на стороне сервера или сбои класса timeout, а не как ошибки пользователя.
Практические пояснения:
500: внутренний сбой платформы или ошибка на стороне provider503: route или сервис provider временно недоступен504и524: сбои класса timeout между платформой, edge или сервисом provider
- Повторите запрос с backoff.
- Сохраните
request id, endpoint, model и timestamp. - Если одна и та же ошибка повторяется после нескольких попыток, обратитесь в поддержку, передав этот контекст.
Перед тем как обращаться в поддержку
Сначала соберите следующие данные:- HTTP-метод
- Путь endpoint
- Название модели
- Очищенный JSON тела запроса (это самый полезный пункт для большинства API-вызовов)
- Параметры запроса, если проблемный запрос их использовал
- Точное тело ответа, если ваш клиент его сохранил
- Полный HTTP-статус
- Точное значение
error.message - Любой
request id - Примерная временная метка
- Работает ли тот же запрос с другой моделью или другим токеном
- Имена полей и текстовые значения, которые вы отправляли вместе с файлом
- Имя файла, тип файла и примерный размер файла
- Был ли файл загружен напрямую, указан по URL или встроен как base64