Лимиты и коды ошибок
API использует стандартные HTTP-коды статуса. Тело ошибки соответствует формату вашего клиента, поэтому SDK OpenAI и Anthropic читают его как есть.
Формат ошибок
Эндпоинты формата OpenAI возвращают объект error с message, type и code. Эндпоинты формата Anthropic возвращают "type": "error" с объектом error, содержащим type и message. Ошибки посреди stream отправляются как событие той же структуры.
402
{
"error": {
"message": "GeraiPoints tidak cukup, silakan top up",
"type": "insufficient_quota",
"code": "insufficient_quota"
}
}Текст в
message написан на индонезийском и может меняться. В логике программы проверяйте HTTP-код статуса и type/code, а не текст сообщения.Коды статуса
| Статус | type / code | Значение | Что делать |
|---|---|---|---|
| 400 | invalid_request_error | Некорректный запрос: тело не JSON, model пустое или messages отсутствует/пустое. Также возникает, если base URL неверен и путь превращается в /v1/v1/…. | Проверьте тело запроса и base URL. |
| 401 | authentication_error | API-ключ не передан, неверен или отозван — либо используется не на том маршруте (ключ bansos на платном эндпоинте, и наоборот). | Проверьте ключ и base URL — Аутентификация. |
| 402 | insufficient_quota | Недостаточно GeraiPoints для этого запроса. | Пополните GeraiPoints и отправьте снова. |
| 403 | permission_error | Модели нет в allowlist этого ключа, или это модель для тарифного плана, которого у вас пока нет. | Добавьте модель в allowlist ключа или используйте другой ключ. |
| 404 | model_not_found | Неизвестный id модели, или модель сейчас не открыта. Имена с префиксом вроде gp/… или openai/… тоже дают 404. | Скопируйте точный id из списка моделей. |
| 413 | — | Тело запроса слишком велико для сервера. | Сократите историю диалога или уменьшите вложения. |
| 429 | rate_limit_error | Слишком много запросов: мощности модели исчерпаны или превышен лимит плана Unlimited/Bansos. | Подождите согласно Retry-After (если есть), затем повторите с паузой. |
| 502 | api_error | Сервис модели перегружен или работает со сбоями; запрос не оплачивается. | Повторите через несколько секунд или используйте другую модель. |
| 503 | api_error | Модель на обслуживании или временно недоступна; запрос не оплачивается. | Повторите позже или используйте другую модель. |
Лимиты использования
| Тип | Лимит |
|---|---|
| Платный ключ (gk-) | Фиксированного лимита скорости на ключ нет; использование ограничено балансом GeraiPoints. 429 появляется только при исчерпании мощностей модели. |
| Unlimited plan | Лимиты на число запросов в минуту и одновременных запросов на аккаунт. Ответы 429 содержат Retry-After и x-ratelimit-*. Подробности — на странице Unlimited. |
| Бесплатный тариф (Bansos) | Дневная квота запросов и лимит в минуту. Ответы 429 содержат Retry-After и x-ratelimit-*. Остаток квоты — на странице Bansos. |
| Размер и ответ | Слишком большое тело отклоняется с кодом 413. Длина ответа (max_tokens) может быть автоматически снижена, если баланса не хватает на запрошенное значение. |
| API-ключ | Не более 20 активных ключей на аккаунт; allowlist — до 64 моделей на ключ. |
| Ключи клиентов | Лимиты проверяются до обработки: запрос, который превысил бы остаток, отклоняется. Разовый лимит исчерпан → 402 KEY_BATAS_HABIS (увеличьте лимит, чтобы добавить объём); дневной/месячный лимит достигнут → 429 KEY_BATAS_HARIAN / KEY_BATAS_BULANAN с заголовком Retry-After. Ключ на паузе → 403 KEY_DIJEDA. Модели -unli и bansos недоступны по ключам клиентов. |
Как правильно повторять
- Повторяйте только при 429, 502 и 503, с растущими паузами (например, 1, 2, 4, 8 секунд) и не более 2–3 раз.
- Не повторяйте 400, 401, 402, 403, 404 — сначала исправьте запрос, иначе результат будет тем же.
- Соблюдайте заголовок
Retry-After, если он есть. - Каждый повтор — новый оплачиваемый запрос. Если причина в timeout приложения, увеличьте timeout — см. Настройки агентных инструментов.