Проверьте адрес списком моделей
Если этот запрос отвечает 200 и списком, base URL верный. Если 404, дело в адресе, а не в модели.
curl https://api.kosareva.cloud/v1/models \ -H "Authorization: Bearer $KEY"
Ключ и деньги в порядке, а ответ 404. Почти всегда это адрес: лишний или пропущенный /v1, опечатка в имени модели или GET вместо POST.
Ошибка API с кодом 404 (not found) значит, что сервер не нашёл то, к чему вы обращаетесь: либо путь запроса, либо модель с таким именем. Ключ здесь ни при чём: до проверки ключа дело часто даже не доходит, потому что маршрут не совпал. Повторять запрос без изменений бесполезно.
Две главные причины. Первая: base URL собран неверно. У OpenAI-совместимых сервисов адрес заканчивается на /v1, а SDK сам добавляет /chat/completions. Если написать /v1/chat/completions в base URL, SDK добавит путь второй раз и получит 404; если забыть /v1, путь не найдётся вовсе. Вторая: имя модели. У OpenAI это code model_not_found: опечатка, снятая с производства модель или имя с точкой там, где сервис ждёт дефис, и наоборот.
Третья причина реже, но коварнее: метод. Запрос на /chat/completions через GET вместо POST часть серверов отдаёт как 404, а не как 405. Проверяется одной командой curl со списком моделей: если /v1/models отвечает 200, адрес верный, и остаётся проверить имя модели.
| Текст в ответе | Причина | Что делать |
|---|---|---|
| model_not_found / The model does not exist | Такой модели нет или имя с опечаткой | Возьмите точное имя из /v1/models |
| Not Found на любой запрос | base URL без /v1 или с лишним путём | Оставьте адрес до /v1 включительно, остальное добавит SDK |
| Cannot GET /v1/chat/completions | Метод GET вместо POST | Отправляйте POST с JSON-телом |
| 404 с HTML вместо JSON | Запрос ушёл не на API, а на сайт или прокси | Проверьте домен и порт в base URL |
| Unknown path / route not found | Путь другого формата API | Сверьте: /v1/chat/completions для OpenAI-формата, /v1/messages для Anthropic |
Тексты приведены по ответам сервисов на момент написания; формулировки отличаются от сервиса к сервису.
Если этот запрос отвечает 200 и списком, base URL верный. Если 404, дело в адресе, а не в модели.
curl https://api.kosareva.cloud/v1/models \ -H "Authorization: Bearer $KEY"
Правильно: https://api.kosareva.cloud/v1. Неправильно: без /v1 или с /chat/completions в конце. SDK и большинство инструментов добавляют путь сами.
from openai import OpenAI
client = OpenAI(base_url="https://api.kosareva.cloud/v1", api_key="KEY")
r = client.chat.completions.create(model="gpt-5-6", messages=[{"role": "user", "content": "Привет"}])Не набирайте имя по памяти: у каждого сервиса свои слаги, где-то с точками, где-то с дефисами. Возьмите строку id из ответа /v1/models.
Endpoint генерации принимает только POST с телом JSON. Открытие адреса в браузере или GET-нода в конструкторе сценариев даст 404 или 405.
Claude Code и Anthropic SDK ходят на /v1/messages, OpenAI SDK и совместимые инструменты на /v1/chat/completions. Адрес должен поддерживать тот формат, которым говорит ваш инструмент.
Для OpenAI SDK и совместимых инструментов да: адрес заканчивается на /v1, дальше SDK добавляет /chat/completions сам. В HTTP-ноде без SDK пишите полный путь.
Имя в каталоге и слаг в API могут отличаться: точки, дефисы, суффиксы версий. Берите id из /v1/models.
У OpenAI отсутствующая модель приходит как 404 model_not_found. Часть сервисов отдаёт 400 с тем же смыслом, поэтому смотрите message, а не только код.
Наш адрес для OpenAI-формата https://api.kosareva.cloud/v1, для Claude Code https://api.kosareva.cloud без /v1: переменная ANTHROPIC_BASE_URL. Имена моделей у нас без точек: gpt-5-6, claude-sonnet-5, gemini-3-8-flash, deepseek-v4-flash, точный список отдаёт /v1/models по вашему ключу. Если инструмент требует адрес до /chat/completions, дописывать его нужно только там, где нет SDK.
OpenAI-совместимый адрес, оплата в рублях, ключ сразу после регистрации. Пополнение картой от 50 ₽.