insufficient_quota у OpenAI: чем это не похоже на квоту и баланс go2llm
Сообщение You exceeded your current quota, please check your plan and billing details с кодом insufficient_quota — это ответ прямого API OpenAI, а не go2llm. Он означает, что на аккаунте OpenAI кончились оплаченные кредиты или организация не привязала способ оплаты, и ожидание не поможет: нужно действие в биллинге именно OpenAI. У go2llm похожая по смыслу ситуация выглядит иначе и называется по-другому — либо 402 insufficient_balance (кончились деньги на аккаунте go2llm), либо 429 quota (исчерпана долларовая квота конкретного ключа go2llm). Три разные вещи под похожими словами, и первый шаг — понять, какая из них у вас на экране.
Страница составлена 2026-09-29, обновлена 2026-09-29.
Как выглядит ошибка
Прямой OpenAI API на исчерпанном биллинге отвечает статусом 429:
{
"error": {
"message": "You exceeded your current quota, please check your plan and billing details.",
"type": "insufficient_quota",
"param": null,
"code": "insufficient_quota"
}
}
go2llm на исчерпанной долларовой квоте ключа отвечает похожим статусом, но другим кодом и другим текстом:
{
"error": {
"type": "quota",
"code": "quota",
"message": "quota exceeded",
"request_id": "gw_2c6f9a01e8b3407fa4d2c8b91f0e6a53"
}
}
А на исчерпанном балансе аккаунта go2llm — статусом 402, а не 429:
{
"error": {
"type": "insufficient_balance",
"message": "not enough spendable balance"
}
}
Если в ответе буквально написано insufficient_quota и упомянуты plan and billing — запрос ушёл на api.openai.com, а не на go2llm: у go2llm такого кода вообще нет в таблице ошибок.
Причины
1. На аккаунте OpenAI закончились оплаченные кредиты
Самый частый случай для тех, кто действительно работает с прямым API OpenAI. Пробный грант израсходован, автопополнение не настроено или карта отклонена — сервис отказывает всем запросам организации сразу, независимо от конкретного ключа.
2. У проекта OpenAI выставлен лимит расходов в $0
Организации на платформе OpenAI могут ограничивать расход по отдельным проектам. Лимит в $0 или исчерпанный лимит проекта даёт тот же insufficient_quota, даже если на основном аккаунте организации деньги есть.
3. Base URL по ошибке указывает на OpenAI, а не на go2llm
Если в переменных окружения или конфиге клиента остался https://api.openai.com/v1 вместо https://go2llm.tech/v1 — например, после копирования конфига из старого проекта, — запрос физически уходит в OpenAI со своим собственным ключом или без него, и биллинг там не связан с балансом go2llm никак.
4. Спутаны переменные окружения двух разных провайдеров
В коде, который умеет работать и с OpenAI, и с go2llm, легко перепутать OPENAI_API_KEY от настоящего OpenAI-аккаунта с ключом go2llm — оба выглядят как непрозрачная строка, и без явной проверки base_url в момент вызова легко не заметить подмену.
5. Ожидалась долларовая квота ключа go2llm, а не биллинг OpenAI
Часть пользователей видит 429 от go2llm с кодом quota, ищет по нему в интернете и находит статьи про insufficient_quota у OpenAI — коды похожи по смыслу, но это два разных механизма на двух разных сервисах, и инструкции для одного не подходят другому.
Как починить по шагам
Шаг 1. Определите, чей это ответ. Смотрите на error.code и на наличие error.request_id с префиксом gw_ — если префикс есть, ответ от go2llm, и insufficient_quota там просто не существует как код.
curl -s -o /dev/null -w "%{http_code}\n" https://go2llm.tech/v1/chat/completions \
-H "Authorization: Bearer $GO2LLM_API_KEY" \
-H "content-type: application/json" \
-d '{"model":"gpt-5.6-luna","max_tokens":8,"messages":[{"role":"user","content":"1"}]}'
Если этот запрос к go2llm.tech проходит нормально, а падает другой код с insufficient_quota — проблема в конфиге именно того кода, а не в go2llm.
Шаг 2. Проверьте фактический base_url в клиенте прямо перед вызовом, а не в конфиге на бумаге:
from openai import OpenAI
import os
client = OpenAI(api_key=os.environ["GO2LLM_API_KEY"], base_url="https://go2llm.tech/v1")
print(client.base_url) # должно быть https://go2llm.tech/v1, а не api.openai.com
Шаг 3. Если это действительно прямой OpenAI и нужен именно он — пополнение баланса или лимита проекта делается в биллинге самого OpenAI, это вне зоны go2llm, и мы туда не вмешиваемся и это не настраиваем за клиента.
Шаг 4. Если цель — просто получить ответ модели без разбирательств с чужим биллингом, переключитесь на go2llm тем же кодом, минимальной правкой двух строк:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["GO2LLM_API_KEY"],
base_url="https://go2llm.tech/v1",
)
response = client.chat.completions.create(
model="gpt-5.6-luna",
messages=[{"role": "user", "content": "Ответь: OK"}],
)
print(response.choices[0].message.content)
При регистрации на баланс go2llm начисляется $1 — этого достаточно, чтобы сделать первый запрос без пополнения.
Чем три похожие ошибки отличаются на практике
| Что видите | Кто вернул | Что делать |
|---|---|---|
429 insufficient_quota, текст про plan and billing | прямой OpenAI API | пополнить биллинг или лимит проекта в OpenAI, это не go2llm |
429 quota, quota exceeded | go2llm, квота конкретного ключа | поднять квоту ключа в кабинете go2llm или выпустить новый ключ |
402 insufficient_balance, not enough spendable balance | go2llm, баланс аккаунта | пополнить баланс аккаунта go2llm |
Квота ключа и баланс аккаунта у go2llm — разные вещи: у ключа может быть щедрая квота при пустом балансе аккаунта, и наоборот. Подробный разбор баланса — 402 insufficient_balance, подробный разбор quota и rate_limit — 429 rate_limit_error.
Как избежать в будущем
Не храните ключи двух разных провайдеров в переменных с похожими именами без явного префикса — GO2LLM_API_KEY и OPENAI_DIRECT_API_KEY, а не два OPENAI_API_KEY в разных файлах конфигурации. Логируйте base_url при инициализации клиента в проде — это одна строка, которая сразу показывает, куда на самом деле уходят запросы. Следите за расходом по usage.cost_usd, который go2llm возвращает в каждом ответе: это дешевле, чем узнавать о нуле на балансе по волне ошибок в проде.
Связанные ошибки
- 402 insufficient_balance — баланс аккаунта go2llm, а не квота или биллинг OpenAI.
- 429 rate_limit_error — лимит запросов в минуту и квота ключа go2llm.
- 401 authentication_error — если проблема в самом ключе, а не в деньгах.
- Справочник всех кодов go2llm и docs/errors.
FAQ
Есть ли у go2llm код insufficient_quota? Нет. У go2llm под похожую ситуацию заведены два разных кода: 429 quota для квоты ключа и 402 insufficient_balance для баланса аккаунта. insufficient_quota — код именно OpenAI.
Пополнение баланса go2llm решит insufficient_quota от OpenAI? Нет, это разные сервисы с разным биллингом. Пополнение баланса go2llm решает 402 у go2llm. Если запрос физически уходит на api.openai.com, там нужно решать вопрос в биллинге OpenAI или переключить base_url на go2llm.
Можно ли ретраить insufficient_quota? Нет, ни у OpenAI, ни у аналогов этой ситуации на go2llm. Ни исчерпанный биллинг OpenAI, ни исчерпанная квота ключа, ни нулевой баланс go2llm сами не восстанавливаются ожиданием — везде нужно действие: пополнение или смена лимита.
Как узнать баланс и квоту своего ключа на go2llm без входа в кабинет? GET /v1/me с тем же ключом в заголовке возвращает квоту, потрачено, лимит RPM и отдельно баланс аккаунта — оба числа в одном ответе, без пароля от кабинета.
Получить ключ и сделать первый запрос за 3 минуты → go2llm.tech. При регистрации начисляется $1. Подключение — в документации, цены моделей — на странице тарифов.