Python
Параметр base_url в конструкторе или переменная окружения OPENAI_BASE_URL.
Одна строка, которая переключает весь код с одного сервиса на другой. И одна из самых частых причин загадочных 404. Разбираем.
Коротко: Base URL — адрес сервера, к которому SDK OpenAI дописывает пути вроде /chat/completions или /models. По умолчанию это https://api.openai.com/v1. Если заменить base_url на адрес любого OpenAI-совместимого сервиса, тот же код начнёт ходить туда, и менять больше ничего не нужно, кроме ключа.
Главная тонкость в хвосте адреса. SDK добавляет путь к тому, что вы указали, поэтому base_url должен заканчиваться на /v1 без слэша на конце: https://api.kosareva.cloud/v1. Если написать без /v1, запрос уйдёт на /chat/completions в корне и вернёт 404. Если дописать /chat/completions самому, путь задвоится.
Параметр называется по-разному: base_url в Python, baseURL в Node.js, OPENAI_BASE_URL в переменных окружения, Override OpenAI Base URL в Cursor, Base URL в Cline и Continue. Суть везде одна: это адрес, к которому дописывается путь запроса, и проверяется он одной командой к списку моделей.
Наш адрес вставляется в любое поле base_url как есть, с /v1 на конце. Для Claude Code — тот же адрес без /v1.
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}'
Нет /v1 на конце или, наоборот, дописан /chat/completions. Проверьте адрес целиком.
Адрес сменили, а ключ остался от старого сервиса. Ключ и адрес должны быть от одного провайдера.
Переменная OPENAI_BASE_URL задана, но в коде явно передан старый base_url: параметр в коде побеждает переменную.
Некоторые клиенты дописывают путь без проверки и получают адрес с двумя слэшами подряд.
Запрос уходит, но сервис отвечает редиректом, который SDK не умеет проходить с POST.
Параметр base_url в конструкторе или переменная окружения OPENAI_BASE_URL.
Параметр baseURL, регистр важен.
Подхватываются любым официальным SDK без правки кода.
Список моделей по новому адресу. Если 200, адрес и ключ верны.
Settings, Models, поле Override OpenAI Base URL, рядом OpenAI API Key. Помните: из России у Cursor закрыто своё облако, и подмена адреса лечит только чат.
Провайдер OpenAI Compatible, поле Base URL. Model ID вписывается руками, например claude-sonnet-5.
В config.yaml у модели поле apiBase. Провайдер openai.
Другой формат: переменные ANTHROPIC_BASE_URL и ANTHROPIC_AUTH_TOKEN, адрес без /v1.
В credentials типа OpenAI есть поле Base URL. В ноде HTTP Request адрес пишется целиком, с /chat/completions.
Параметр base_url у ChatOpenAI, либо переменная OPENAI_BASE_URL.
Для SDK OpenAI и большинства инструментов да. Исключение Claude Code: там адрес без /v1.
В коде остался явный base_url или второй клиент создаётся в другом месте. Поищите api.openai.com по проекту.
Да, два экземпляра клиента с разными base_url. Ключи тоже разные.
SDK читает переменные окружения процесса, а сам файл .env не открывает. Загрузите его до создания клиента: в Python вызовом load_dotenv() из пакета python-dotenv, в Node.js пакетом dotenv или флагом --env-file при запуске. Если ключ из .env подхватывается, а адрес нет, проверьте имя: старое OPENAI_API_BASE нынешние версии SDK не читают.
Зависит от мода. SkyrimNet отправляет запрос ровно на вписанный адрес, поэтому ему нужен полный путь: https://api.kosareva.cloud/v1/chat/completions. Mantella допишет путь сама, ей нужен адрес с /v1 на конце. Пошагово — на странице Нейросеть для Скайрима.
Да, адрес общий для всего клиента: запросы к embeddings, images и audio пойдут туда же, куда и чат. Но ответят только те методы, которые сервис поддерживает, на остальные придёт ошибка, чаще всего 404. Какие методы есть у нас, написано в документации.
OpenAI-совместимый адрес, оплата в рублях, ключ сразу после регистрации. Пополнение картой от 50 ₽.