Документация API go2llm

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 exceededgo2llm, квота конкретного ключаподнять квоту ключа в кабинете go2llm или выпустить новый ключ
402 insufficient_balance, not enough spendable balancego2llm, баланс аккаунтапополнить баланс аккаунта 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 возвращает в каждом ответе: это дешевле, чем узнавать о нуле на балансе по волне ошибок в проде.

Связанные ошибки

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. Подключение — в документации, цены моделей — на странице тарифов.