Назад до блогу

AI для початківцівПосібник

Помилка "Недостатньо токенів": що вона означає і як її виправити

Порожній баланс, обмеження швидкості, поганий ключ, занадто довгий запит або обірвана відповідь: зіставте свою помилку API з однією з п'яти причин, виконайте швидку перевірку, застосуйте виправлення.

Автор: CheapTokens TeamОпубліковано Оновлено 6 хв читання

Обкладинка зі словами "Недостатньо токенів?" над п'ятьма мітками: баланс, швидкість, ключ, контекст, вивід
На цій сторінці
  1. Три значення слова "токени"
  2. 1. Баланс порожній
  3. 2. Ви досягли обмеження швидкості
  4. 3. Ключ неправильний
  5. 4. Запит не вміщується в контекстне вікно
  6. 5. Відповідь обірвано
  7. Та сама проблема під різними назвами
  8. Подивіться, що насправді повертається
  9. Якщо перевірка вказує на баланс

"Недостатньо токенів" — це не одна помилка. Люди використовують цю фразу для п'яти різних проблем: баланс порожній, запити надходять занадто швидко, ключ неправильний, запит не вміщується в контекстне вікно моделі, або відповідь досягла ліміту виводу й обірвалася на півслові. Кожна має своє виправлення, і найшвидший спосіб їх розрізнити — це HTTP-статус і тіло помилки, а не формулювання повідомлення.

Знайдіть свій симптом у таблиці, виконайте перевірку, застосуйте виправлення.

Що ви бачите Ймовірна причина Перевірка Виправлення
Запит відхилено; у повідомленні згадується баланс, білінг або кредит Баланс порожній Відкрийте свій акаунт і подивіться на баланс Поповніть баланс, повторіть спробу
Працює, потім збої серіями, минає після паузи Обмеження швидкості: занадто багато запитів одночасно або за хвилину Чи проходить той самий запит після хвилинного очікування? Чи надсилаєте ви запити паралельно? Уповільніться, повторіть спробу зі зростаючою затримкою
Кожен запит збоїть одразу, навіть однорядковий запит Неправильний, прострочений або з помилкою в написанні ключ, або неправильна базова URL-адреса Порівняйте ключ у вашому коді з ключем у вашому акаунті; перевірте URL-адресу Вставте свіжий ключ, не зберігайте його у вихідному коді
Короткі запити працюють, довгі — ні Запит плюс історія перевищують контекстне вікно Оцініть розмір усього, що ви надсилаєте Скоротіть або підсумуйте історію, розділіть документ або виберіть модель із більшим вікном
Помилки немає, але відповідь обривається на півслові Відповідь досягла ліміту виводу finish_reason дорівнює "length" Збільште max_tokens до ліміту моделі, попросіть коротший формат або попросіть продовжити

Три значення слова "токени"#

Слово в повідомленні про помилку вказує на три різні величини.

  • Баланс. Токени — це те, за що ви платите, тому "закінчилися токени" часто означає "закінчилися гроші". На передплатному сервісі це баланс.
  • Ліміт за хвилину. Ліміти можуть рахуватися в запитах або в токенах за хвилину. Якщо ви досягли одного, виправлення — зачекати й надсилати менше за раз.
  • Розмір вікна. Контекстне вікно — це скільки токенів модель може прочитати за один запит, ваш запит і його відповідь разом.

І одне, чого це слово ніколи не означає: API-ключ — це не запас токенів. Ключ ідентифікує ваш акаунт. Закінчується баланс за ним або ліміт, прив'язаний до нього. Якщо ви новачок у самій одиниці, почніть з Що таке токен в AI?.

1. Баланс порожній#

Документація API DeepSeek описує HTTP 402 Insufficient Balance як "У вас закінчився баланс". API Claude використовує 402 billing_error для проблем із білінгом і оплатою. Різні назви, та сама ситуація: гроші закінчилися.

CheapTokens працює за тим самим принципом: передплатний баланс, оплата за фактом використання, один баланс для всіх моделей. Тож коли щось ламається, спершу подивіться на баланс. Це перевірка на десять секунд, і вона виключає найпоширенішу причину.

2. Ви досягли обмеження швидкості#

DeepSeek документує HTTP 429 Rate Limit Reached як занадто швидкі запити або перевищення ліміту паралельності чи QPS. Виправлення — задати темп: менше паралельних запитів і затримка повтору, що зростає (1 с, 2 с, 4 с), замість бомбардування ендпоінта.

Одна пастка. API Claude також повертає 429 rate_limit_error, коли ви досягаєте місячного ліміту витрат вашого рівня, і ця відповідь не має заголовка retry-after. Тож 429, який ніколи не минає після очікування, може стосуватися грошей, а не швидкості. Якщо очікування не допомагає, поверніться до причини 1.

3. Ключ неправильний#

HTTP 401 — це проблема з ключем в обох документаціях: DeepSeek вказує його як неправильний API-ключ, Claude — як authentication_error. Звичайні причини — зайвий пробіл або новий рядок, скопійований разом із ключем, ключ, який було видалено або перегенеровано, і ключ, надісланий на неправильну адресу. Ключ від одного сервісу не працює за URL-адресою іншого сервісу. Для CheapTokens базова URL-адреса — https://api.cheaptokens.dev/v1.

Про інші помилки, які можуть виникнути під час підключення, дивіться Поширені помилки підключення та як їх виправити.

4. Запит не вміщується в контекстне вікно#

Контекстне вікно враховує все, що модель читає за один запит: системний запит, усю історію розмови, ваше нове повідомлення й місце для відповіді. На CheapTokens вікна моделей у нашому каталозі такі:

Модель Контекстне вікно Максимальний вивід за відповідь
DeepSeek-V4-Flash 380K 32 768 токенів
GLM-5.3-Flash 390K 8 192 токени
MiniMax-M2.7 200K 8 192 токени

Чат не має власної пам'яті. Клієнт надсилає всю історію знову з кожним запитом, тому кожен запит більший за попередній. Ось вигаданий чат, щоб показати зростання (округлі числа, для ілюстрації): системний запит на 1 000 токенів, і кожен хід додає близько 500 токенів питання і 1 500 токенів відповіді, разом 2 000.

1 000 + 30 × 2 000 = 61 000 токенів

Це розмір історії після 30 ходів. Кожен із цих токенів знову зараховується як вхідний у наступному запиті. 31-й запит несе цю історію на 61 000 токенів плюс нове питання на 500 токенів, тож його вхід — 61 500 токенів. З відповіддю на 1 500 токенів на MiniMax-M2.7 це коштує $0.0033. Ось усі три моделі для того самого запиту, з ціною OpenRouter для порівняння:

Модель Вартість OpenRouter
GLM-5.3-Flash $0.0013 $0.0027
DeepSeek-V4-Flash $0.0011 $0.0032
MiniMax-M2.7 $0.0033 $0.0203

61 500 вхідних і 1 500 вихідних токенів загалом. Ціни за 1 млн токенів актуальні та змінюються разом із нашими тарифами; стовпець OpenRouter показує довідкові ціни для того самого навантаження.

Той самий чат заповнює найменше вікно приблизно за сто ходів:

(200 000 − 1 000) / 2 000 = 99,5

Коли воно переповнюється, провайдер відхиляє запит. Код статусу залежить від провайдера, тому читайте тіло помилки. Наприклад, 413 request_too_large у Claude стосується розміру запиту в байтах (32 МБ для Messages), це інший ліміт, ніж токенне вікно.

Що робити:

  • Відкиньте найстаріші ходи або замініть їх коротким підсумком.
  • Не вставляйте весь документ, коли завданню потрібен один розділ.
  • Перейдіть на модель із більшим вікном, якщо вам справді потрібен повний текст.

5. Відповідь обірвано#

Тут немає помилки, і саме це робить цей випадок заплутаним. Модель просто зупинилася, бо досягла max_tokens або власного ліміту виводу моделі. У форматі Chat Completions ознака — finish_reason: "length" у виборі.

На CheapTokens DeepSeek-V4-Flash може повертати до 32 768 токенів за відповідь; GLM-5.3-Flash і MiniMax-M2.7 — до 8 192. Якщо ваш max_tokens нижчий за це, збільште його. Якщо ви вже на ліміті, розділіть роботу ("напиши частину 1 з 3") або попросіть модель продовжити з останнього речення.

Вивід MiniMax-M2.7 коштує $0.15 за 1M токенів, і це дешевше, ніж на OpenRouter за вивід.

Та сама проблема під різними назвами#

Провайдери позначають ті самі причини по-різному. Ось що каже їхня документація станом на 20 жовтня 2026 року:

Проблема API DeepSeek API Claude
Баланс порожній 402 Insufficient Balance 402 billing_error
Обмеження швидкості 429 Rate Limit Reached 429 rate_limit_error (також місячний ліміт витрат рівня)
Поганий ключ 401 401 authentication_error
Запит занадто великий не вказано як окремий код 413 request_too_large (байти, не токени)
Ліміт витрат, який ви встановили самі не вказано 400 invalid_request_error

Джерела: Коди помилок DeepSeek, Помилки API Claude. Жодна сторінка не показує дату публікації, тож дата перевірки — наша.

Висновок: не вгадуйте за формулюванням. Помилки повертаються як JSON з об'єктом error, що містить type і message. Зіставляйте за статусом і типом, бо текст повідомлення змінюється.

Подивіться, що насправді повертається#

Цей фрагмент виводить статус і тіло невдалого запиту та finish_reason успішного. Це діагностичний начерк, а не журнал тестів: запустіть його зі своїм ключем і прочитайте, що отримаєте.

python
# Placeholders: YOUR_API_KEY, MODEL_ID (a model id you have access to)
from openai import OpenAI, APIStatusError

client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.cheaptokens.dev/v1")

try:
    r = client.chat.completions.create(
        model="MODEL_ID",
        messages=[{"role": "user", "content": "Write a long checklist."}],
        max_tokens=1000,
    )
except APIStatusError as e:
    # Read the status and the body, not the wording of the message
    print("status:", e.status_code)
    print("body:", e.body)
else:
    print("finish_reason:", r.choices[0].finish_reason)  # "length" = cut off
    print("usage:", r.usage)  # prompt_tokens and completion_tokens

Якщо перевірка вказує на баланс#

Поповніть баланс і надішліть запит знову. Ціни на CheapTokens фіксовані для кожної моделі, немає пікових годин, і один баланс покриває всі моделі, тож вам не потрібне окреме поповнення для кожної. Поточні тарифи тут:

Модель Контекст Вхід $/1М Вихід $/1М OpenRouter вхід OpenRouter вихід
GLM-5.3-Flash reasoning 390K $0.02 $0.04 $0.0413 $0.0758
DeepSeek-V4-Flash 380K $0.015 $0.10 $0.0475 $0.1568
MiniMax-M2.7 180K $0.05 $0.15 $0.30 $1.20

Ціни в USD за 1 млн токенів. Показники OpenRouter наведено для порівняння, вони можуть змінюватися.

Підставте свій обсяг у таблицю витрат, перш ніж поповнювати. Поповніть свій баланс, коли цифри виглядають правильно, а якщо ви хочете спершу оцінити більше навантаження, дивіться Як оцінити вартість AI-агента.