Решение проблемИнструкция
Ошибка API 401 или 404: ключ, base URL или id модели
Прочитайте код ответа, найдите, что не так — ключ, base URL или id модели, — и проверьте исправление одним запросом curl.

Содержание
Запрос упал с кодом, и непонятно, за что хвататься. Коротко: 401 обычно про ключ, 404 — про то, куда вы стучитесь: адрес (base URL и путь) или id модели. Проверяйте три вещи по порядку, а исправление подтвердит одна команда curl.
На странице OpenAI с кодами ошибок (проверено 26 октября 2026) два сообщения для 401: «Invalid Authentication» и «Incorrect API key provided». Совет один: проверьте ключ или создайте новый. Для самого API страница не описывает 404, поэтому правило для 404 ниже взято из того, как устроены OpenAI-совместимые эндпоинты, а не из неё.
Как быстро отличить#
Прокрутите таблицу вправо →
| Код | Что говорит сервер | Куда смотреть сначала |
|---|---|---|
| 401 | обычно: этот ключ я не принимаю | ключ и то, у какого сервиса он выдан |
| 404 на любой модели | обычно: по этому адресу ничего нет | base URL и /v1 |
| 404 только на одной модели | обычно: адрес верный, такой id модели не знаю | id модели |
Текст сообщения зависит от сервера и от вашего инструмента (Cline, Aider, OpenCode и Continue оборачивают ошибки по-своему), поэтому начинайте с числа, а затем подтвердите проверкой curl ниже.
401: ключ не подходит к адресу#
Классическая история: вы перевели инструмент на нового провайдера, поменяли base URL, а ключ от старого оставили в конфиге. Адрес новый, ключ старый — сервер отвечает 401. Ничего не сломано, ключ просто из другого дома.
Что проверить:
- Кто выдал ключ? Тот сервис, чей адрес вы вызываете. Ключ одного сервиса на другом не работает.
- Лишние символы. Пробел или перенос строки, который приехал вместе с ключом, или кавычки внутри значения.
- Откуда инструмент берёт ключ. Переменная окружения, заданная в одном терминале, но не в том, из которого запущен редактор, — частая причина. Если есть и конфиг, и переменная, выясните, что из них главнее.
- Отозванный или удалённый ключ. Такой ключ перестаёт работать — создайте новый и подставьте его в конфиг.
Если не уверены, как устроены ключи и где их хранить, что такое API-ключ и как хранить его безопасно — простыми словами.
404 на любой модели: неверный адрес#
Base URL CheapTokens — https:/. Путь к эндпоинту инструменты и SDK добавляют сами, так что обычные промахи — с /v1:
- Нет
/v1: инструмент вызываетhttps:/./ api. cheaptokens. dev/ chat/ completions - Двойной
/v1: вы вставили полный путь в поле, которое его уже дописывает, и получилиhttps:/./ api. cheaptokens. dev/ v1/ v1/ chat/ completions - Другой формат: инструменты в стиле OpenAI и OpenAI SDK принимают адрес с
/v1. Anthropic SDK и Claude Code — адрес без/v1:https:/./ api. cheaptokens. dev
Если хочется понять, что такое base URL и какую его часть дописывает инструмент, разбор здесь. Про сторону Anthropic — Anthropic Python SDK с CheapTokens.
404 на одной модели: id модели#
Здесь спотыкаются те, кто скопировал название из таблицы цен или у другого провайдера. В таблице может быть DeepSeek-, а API нужен полный gateway-id: с префиксом разработчика и выпуском.
Прокрутите таблицу вправо →
| Что вы увидели | Что нужно API |
|---|---|
| DeepSeek-V4-Flash | deepseek- |
| GLM-5.3-Flash | zai- |
| MiniMax-M2.7 | MiniMaxAI/ |
Короткие id из меток цен API не принимает, и важна каждая буква: регистр, слэш, суффикс -0731. Берите id из документации CheapTokens, а не набирайте по памяти: у разных провайдеров одна и та же модель называется по-разному. Чтобы увидеть точные id, доступные вашему ключу, вызовите GET https:/ с тем же заголовком Authorization и скопируйте id из списка:
curl https://api.cheaptokens.dev/v1/models \
-H "Authorization: Bearer YOUR_API_KEY"Если логика имён в таблице кажется странной, в статье про названия моделей объяснено, чем алиас отличается от закреплённой версии.
Проверьте исправление одной командой curl#
Уберите инструмент из цепочки и вызовите API напрямую. Вместо заглушки подставьте свой ключ:
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-ai/DeepSeek-V4-Flash-0731",
"messages": [{"role": "user", "content": "Say hi in one word."}],
"max_tokens": 20
}'В одном запросе сидят все три подозреваемых: ключ в заголовке, base URL в первой строке, id модели в теле. Ответ в JSON с массивом choices значит, что все три верны, и дело в том, что делает ваш инструмент. Если не вышло, меняйте что-то одно за раз:
- 401 → подставьте ключ, полученный в CheapTokens, и повторите.
- 404 → сверьте URL с тем, что выше, символ за символом, затем id модели.
Когда curl работает, перенесите те же три значения в инструмент: ключ, base URL (https:/, а для Anthropic SDK и Claude Code — без /v1) и полный id модели.
Если всё ещё не работает#
- В инструменте та же ошибка, а curl в порядке. Инструмент берёт старый ключ или адрес откуда-то ещё: из второго конфига, сохранённого профиля, переменной окружения. После правки перезапустите его.
- Не уверены в id модели. Вызовите
GET /v1/modelsсо своим ключом и скопируйте id из списка. - Отказ в соединении, таймауты, ошибки сертификата. Это не 401 и не 404, смотрите частые ошибки соединения.
- Не знаете, как должен выглядеть первый запрос. Первый запрос к API разобран по шагам, полный справочник — в документации.
Привычка, которую стоит оставить: упал вызов — сначала читайте число. 401 обычно значит ключ, 404 — адрес или id модели, а проверку закрывает curl. Так разбирается большинство таких ошибок ещё до того, как вы откроете логи.



