Проверьте адрес списком моделей
Если этот запрос отвечает 200 и списком, base URL верный. Если 404, дело в адресе, а не в модели.
Ключ и деньги в порядке, а ответ 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, адрес верный, и остаётся проверить имя модели.
Один адрес для всех моделей, точный список имён отдаёт /v1/models по вашему ключу. Имена пишутся без точек: gpt-5-6, claude-sonnet-5.
https://api.kosareva.cloud/v1, ключ из кабинетаfrom openai import OpenAI client = OpenAI( api_key="ВАШ_API_КЛЮЧ", base_url="https://api.kosareva.cloud/v1", ) response = client.chat.completions.create( model="gpt-5-6", messages=[{"role": "user", "content": "Привет!"}], stream=True, )
import OpenAI from "openai"; const client = new OpenAI({ apiKey: "ВАШ_API_КЛЮЧ", baseURL: "https://api.kosareva.cloud/v1", }); const response = await client.chat.completions.create({ model: "gpt-5-6", messages: [{ role: "user", content: "Привет!" }], stream: true, });
curl https://api.kosareva.cloud/v1/chat/completions \ -H "Authorization: Bearer ВАШ_API_КЛЮЧ" \ -H "Content-Type: application/json" \ -d '{"model":"gpt-5-6","messages":[{"role":"user","content":"Привет!"}],"stream":true}'
адрес указан как https://api.example.com, и SDK шлёт запрос на /chat/completions без версии.
адрес заканчивается на /chat/completions или /v1/chat, SDK добавляет свой путь поверх и получает несуществующий маршрут.
опечатка в имени, модель снята с производства, или имя написано с точкой, а у сервиса принято через дефис.
обращение к endpoint генерации методом GET, например через браузер или неверно настроенный HTTP-узел.
Anthropic-путь /v1/messages отправлен на OpenAI-совместимый адрес или наоборот.
| Текст в ответе | Причина | Что делать |
|---|---|---|
| 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, дело в адресе, а не в модели.
Правильно: https://api.kosareva.cloud/v1. Неправильно: без /v1 или с /chat/completions в конце. SDK и большинство инструментов добавляют путь сами.
Не набирайте имя по памяти: у каждого сервиса свои слаги, где-то с точками, где-то с дефисами. Возьмите строку id из ответа /v1/models.
Endpoint генерации принимает только POST с телом JSON. Открытие адреса в браузере или GET-нода в конструкторе сценариев даст 404 или 405.
Claude Code и Anthropic SDK ходят на /v1/messages, OpenAI SDK и совместимые инструменты на /v1/chat/completions. Адрес должен поддерживать тот формат, которым говорит ваш инструмент.
Поле base URL должно заканчиваться на /v1, поле model содержать точный слаг. Лишний пробел или слеш в конце тоже ломают путь у некоторых версий.
Пустой список моделей после сохранения соединения обычно значит 404 на /v1/models: проверьте, что адрес с /v1 и что «Verify connection» проходит.
В HTTP-ноде метод должен быть POST, а URL полным, до /chat/completions включительно: здесь SDK ничего не добавляет.
Исключение NotFoundError. Выведите поле body: там будет либо model_not_found, либо текст про путь.
Для OpenAI SDK и совместимых инструментов да: адрес заканчивается на /v1, дальше SDK добавляет /chat/completions сам. В HTTP-ноде без SDK пишите полный путь.
Имя в каталоге и слаг в API могут отличаться: точки, дефисы, суффиксы версий. Берите id из /v1/models.
У OpenAI отсутствующая модель приходит как 404 model_not_found. Часть сервисов отдаёт 400 с тем же смыслом, поэтому смотрите message, а не только код.
Скорее всего, её сняли с обслуживания или заменили новой версией: после даты отключения поставщик перестаёт принимать это имя и отвечает 404 model_not_found. OpenAI и Anthropic объявляют такие даты заранее на страницах о снятии моделей, а актуальное имя всегда можно взять из /v1/models.
Да. У OpenAI текст так и звучит: «The model does not exist or you do not have access to it», то есть несуществующую модель и закрытую для вашего проекта сервис не различает. Если имя точно верное, проверьте, есть ли модель в ответе /v1/models по этому же ключу.
OpenAI-совместимый адрес, оплата в рублях, ключ сразу после регистрации. Пополнение картой от 50 ₽.