kosareva.cloud

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. Суть везде одна: это адрес, к которому дописывается путь запроса, и проверяется он одной командой к списку моделей.

/ На kosareva.cloud

Base URL, который работает из России

Наш адрес вставляется в любое поле base_url как есть, с /v1 на конце. Для Claude Code — тот же адрес без /v1.

Адрес
https://api.kosareva.cloud/v1, ключ из кабинета
Оплата
Карта РФ или СБП от 50 ₽, компаниям — по счёту
Доступ
Без VPN, запросы идут с российских IP
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}'
/ Почему

Типичные ошибки после смены адреса

404 Not Found

Нет /v1 на конце или, наоборот, дописан /chat/completions. Проверьте адрес целиком.

401 invalid api key

Адрес сменили, а ключ остался от старого сервиса. Ключ и адрес должны быть от одного провайдера.

Подключение к api.openai.com

Переменная OPENAI_BASE_URL задана, но в коде явно передан старый base_url: параметр в коде побеждает переменную.

Слэш на конце

Некоторые клиенты дописывают путь без проверки и получают адрес с двумя слэшами подряд.

http вместо https

Запрос уходит, но сервис отвечает редиректом, который SDK не умеет проходить с POST.

/ Что делать

Куда вписать

01

Python

Параметр base_url в конструкторе или переменная окружения OPENAI_BASE_URL.

from openai import OpenAI
client = OpenAI(
    api_key="ВАШ_КЛЮЧ",
    base_url="https://api.kosareva.cloud/v1",
)
02

Node.js

Параметр baseURL, регистр важен.

import OpenAI from 'openai';
const client = new OpenAI({
  apiKey: 'ВАШ_КЛЮЧ',
  baseURL: 'https://api.kosareva.cloud/v1',
});
03

Переменные окружения

Подхватываются любым официальным SDK без правки кода.

export OPENAI_BASE_URL=https://api.kosareva.cloud/v1
export OPENAI_API_KEY=ВАШ_КЛЮЧ
04

Проверка

Список моделей по новому адресу. Если 200, адрес и ключ верны.

curl https://api.kosareva.cloud/v1/models \
  -H "Authorization: Bearer ВАШ_КЛЮЧ"
/ По инструментам

Где это чинится в разных инструментах

Cursor

Settings, Models, поле Override OpenAI Base URL, рядом OpenAI API Key. Помните: из России у Cursor закрыто своё облако, и подмена адреса лечит только чат.

Cline

Провайдер OpenAI Compatible, поле Base URL. Model ID вписывается руками, например claude-sonnet-5.

Continue

В config.yaml у модели поле apiBase. Провайдер openai.

Claude Code

Другой формат: переменные ANTHROPIC_BASE_URL и ANTHROPIC_AUTH_TOKEN, адрес без /v1.

n8n

В credentials типа OpenAI есть поле Base URL. В ноде HTTP Request адрес пишется целиком, с /chat/completions.

LangChain

Параметр base_url у ChatOpenAI, либо переменная OPENAI_BASE_URL.

/ FAQ

Частые вопросы

Нужен ли /v1 на конце?

Для SDK OpenAI и большинства инструментов да. Исключение Claude Code: там адрес без /v1.

Сменил base_url, а ответы всё равно от OpenAI

В коде остался явный base_url или второй клиент создаётся в другом месте. Поищите api.openai.com по проекту.

Можно ли держать два адреса в одном проекте?

Да, два экземпляра клиента с разными base_url. Ключи тоже разные.

Прописал OPENAI_BASE_URL в .env, а SDK его не видит

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 на конце. Пошагово — на странице Нейросеть для Скайрима.

Работает ли новый base_url для эмбеддингов и картинок?

Да, адрес общий для всего клиента: запросы к embeddings, images и audio пойдут туда же, куда и чат. Но ответят только те методы, которые сервис поддерживает, на остальные придёт ошибка, чаще всего 404. Какие методы есть у нас, написано в документации.

Ключ, который работает из России

OpenAI-совместимый адрес, оплата в рублях, ключ сразу после регистрации. Пополнение картой от 50 ₽.

Получить ключ