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

/ Почему

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

  • 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. Ключи тоже разные.

/ На kosareva.cloud

Как это выглядит у нас

Наш адрес https://api.kosareva.cloud/v1 подставляется в любое поле base_url без изменений. В кабинете примеры для Python, Node.js и curl уже содержат этот адрес, а на страницах инструментов расписано, куда его вписать в Cursor, Cline, Continue, Zed и Claude Code.

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

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

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