RU ▾
Получить API-ключ

Базовый URL API Codex: как подключить ваш клиент к нашему

Базовый URL API codex для этого сервиса — https://api.getcodexapi.com/v1, идентификатор модели — uncensored, а ваш ключ передаётся в стандартном заголовке Bearer. Любой SDK или клиент OpenAI работает после изменения этих значений.

Обновлено

Светящийся кабель, соединяющий ноутбук с серверным блоком, иллюстрирующий подключение клиента к базовому URL API

Ключевые моменты

  • Базовый URL: https://api.getcodexapi.com/v1 (включите /v1, не указывайте путь эндпоинта).
  • Идентификатор модели — uncensored, авторизация — Authorization: Bearer с вашим ключом.
  • Сначала проверьте соединение с помощью GET /v1/models, прежде чем подключать более сложное приложение.
  • Большинство сбоев вызвано удвоенным /v1, лишним путём или неверным ключом.

Три необходимых значения

Каждый клиент, совместимый с OpenAI, запрашивает те же три вещи. Вот они для этого сервиса.

НастройкаЗначение
Базовый URLhttps://api.getcodexapi.com/v1
API-ключВаш ключ со страницы API-ключ
Модельuncensored

Ключ передаётся как Authorization: Bearer YOUR_KEY. Два доступных эндпоинта: POST /v1/chat/completions и GET /v1/models. Это независимый сервис с одной моделью с открытыми весами, а не Codex от OpenAI, поэтому не вставляйте эндпоинт OpenAI или ключ OpenAI в те же настройки.

Проверьте соединение с помощью curl

Прежде чем редактировать конфигурацию приложения, убедитесь, что ключ и URL работают из терминала. Список моделей — самая дешёвая проверка, так как не требует промпта:

curl https://api.getcodexapi.com/v1/models \
  -H "Authorization: Bearer YOUR_API_KEY"

Вы должны получить список JSON, включающий модель uncensored. Затем отправьте один реальный запрос на генерацию:

curl https://api.getcodexapi.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "Say hello in five words."}]
  }'

Если оба вызова работают, проблема в последующих сбоях находится в конфигурации клиента, а не в сервисе. Заголовки ответа включают X-Request-Id, полезный для отслеживания конкретного вызова, и X-Balance-USD, показывающий оставшийся баланс.

Python с SDK OpenAI

Официальный пакет openai принимает базовый URL в конструкторе клиента. Ничего другого в вашем коде менять не нужно.

from openai import OpenAI

client = OpenAI(
    base_url="https://api.getcodexapi.com/v1",
    api_key="YOUR_API_KEY",
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "You are a concise assistant."},
        {"role": "user", "content": "Explain what a base URL is in two sentences."},
    ],
)
print(resp.choices[0].message.content)

Если вы предпочитаете не хранить конфигурацию в коде, SDK также считывает OPENAI_BASE_URL и OPENAI_API_KEY из окружения:

export OPENAI_BASE_URL="https://api.getcodexapi.com/v1"
export OPENAI_API_KEY="YOUR_API_KEY"

При установленных переменных OpenAI() без аргументов считывает их. Это удобно, так как многие сторонние инструменты, построенные на SDK, наследуют те же переменные без изменений в коде.

Node.js

JavaScript SDK использует то же имя опции, записанное как baseURL.

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.getcodexapi.com/v1",
  apiKey: process.env.API_KEY,
});

const stream = await client.chat.completions.create({
  model: "uncensored",
  messages: [{ role: "user", content: "Write a haiku about version control." }],
  stream: true,
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}

Потоковая передача возвращается как server-sent events с stream: true, а использование ресурсов включено в конец. Имейте в виду, что потоковый запрос занимает один слот параллельных запросов до завершения потока, поэтому оставленный без закрытия поток продолжает учитываться в лимите.

Приложения с экраном настроек

Настольные инструменты и редакторы обычно называют это поле одним из трёх способов: «Base URL», «API Base» или «OpenAI-compatible endpoint». Все они требуют одну и ту же строку. Несколько замечаний, которые экономят время:

  • Выберите тип провайдера OpenAI или «кастомный OpenAI-compatible», а не специфичный для поставщика.
  • Введите имя модели вручную, если в приложении есть поле свободного ввода. uncensored — точный идентификатор.
  • Если в приложении есть кнопка «тестовое соединение», она обычно вызывает список моделей, который поддерживает этот API.
  • Некоторые приложения кэшируют список моделей от предыдущего провайдера. Удалите старую запись и добавьте новую, если выпадающий список выглядит неверно.

Пример работы в конкретном редакторе см. в руководстве по подключению Cursor или на странице API для кодирования для общего обзора. Полный справочник параметров доступен в документации API.

После успешного подключения сохраните точные значения в доступном месте: URL, имя модели и дату создания ключа. Команды часто теряют час позже из-за копии конфигурации, содержащей старое значение. Один общий пример файла в репозитории с заполнителем вместо реального ключа предотвращает это.

Распространённые ошибки и их исправление

URL превращается в /v1/v1

Некоторые клиенты автоматически добавляют /v1. Если запросы не работают и в журнале клиента показан путь с /v1/v1/chat/completions, удалите /v1 из базового URL, который вы ввели. Обратное также случается: клиент, который не добавляет его автоматически, требует его в настройках. Журнал пути запроса быстро разрешает этот вопрос.

Вы указали полный эндпоинт в базовом URL

Базовый URL заканчивается на /v1. Не вводите туда /chat/completions. SDK добавляет путь для каждого вызова.

Лишний слэш в конце или опечатка в хосте

Большинство SDK терпят лишний слэш, но некоторые старые инструменты собирают пути простым конкатенированием и получают двойной слэш. Удалите его, если видите странные ответы 404.

Неверный ключ или ключ другого сервиса

Ключ OpenAI здесь не сработает, а наш — там. Ошибки аутентификации почти всегда означают проблему копирования-вставки, например, пропущенный символ или пробел в конце.

Это работает в curl, но не в вашем приложении

Если curl успешен, а приложение выдает ошибку с тем же URL и ключом, разница в окружении. Проверьте, работает ли приложение за прокси или в контейнере без исходящего доступа, считывает ли оно старую переменную окружения, например, устаревший OPENAI_BASE_URL, оставшийся от другого проекта, и не переопределяет ли файл конфигурации значение, установленное в коде. Вывод финального URL, который вызовет клиент, непосредственно перед запросом, решает большинство таких случаев за минуту.

HTTP 429

Это означает достижение лимита. Код ошибки rate_limited — запросы в минуту, а concurrency — слишком много одновременных запросов. Полный ключ позволяет 8 одновременных запросов и 300 в минуту; пробный ключ — 2 и 60. При временной перегрузке вы также получаете 429 с заголовком Retry-After: 5, поэтому подождите пять секунд и попробуйте снова.

LangChain и хранение URL в одном месте

Фреймворки, построенные на клиенте OpenAI, принимают те же значения. В интеграции LangChain с OpenAI аргументы называются следующим образом:

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="uncensored",
    base_url="https://api.getcodexapi.com/v1",
    api_key="YOUR_API_KEY",
)
print(llm.invoke("Name three uses of a base URL.").content)

Какой бы фреймворк вы ни использовали, не разбрасывайте URL по коду. Поместите его в одну переменную окружения или один файл настроек и считывайте оттуда. Так при переключении между пробным и рабочим ключом или между машинами нужно изменить только одну строку. Это также позволяет не хранить ключи в репозитории: храните ключ в переменной окружения или в менеджере секретов, никогда в зафиксированном файле.

Если вы искали собственный эндпоинт OpenAI для продуктов Codex, то это не он. Их базовый URL и аутентификация описаны в документации OpenAI, поэтому следуйте их текущей документации. Адрес на этой странице принадлежит независимому сервису и принимает только ключи, выданные здесь.

Что можно отправлять после подключения

Эндпоинт поддерживает потоковую передачу, вызов функций (tools, tool_choice, с результатами в виде сообщений role: "tool") и JSON-режим через response_format: {"type": "json_object"}. Параметры temperature, top_p, stop, seed и штрафы передаются напрямую. Контекстное окно составляет 100 000 токенов для промпта и завершения, а максимальный размер тела запроса — 8 МБ.

Это только текст. Нет генерации изображений или аудио, нет эмбеддингов и нет дообучения, поэтому функция клиента, зависящая от этих возможностей, не будет работать с этим базовым URL. Использование оплачивается за токен: $0,15 за 1 млн входных токенов и $0,50 за 1 млн выходных токенов; на странице цен приведены рабочие примеры.

Вопросы и ответы

Какой базовый URL?

Это https://api.getcodexapi.com/v1. Используйте его как базовый URL в любом SDK или приложении, совместимом с OpenAI, установив модель в значение uncensored.

Это официальный эндпоинт OpenAI Codex?

Нет. Это независимый API, совместимый с OpenAI, работающий на одной модели с открытыми весами. Он не управляется компанией OpenAI или каким-либо другим поставщиком моделей.

Почему я получаю ошибку 404 после изменения базового URL?

Обычно неверен путь: либо удвоенный /v1, либо путь к эндпоинту включён в базовый URL. Проверьте журнал запросов вашего клиента и внесите корректировки.

Нужен ли мне специальный SDK?

Нет. Работают стандартные SDK OpenAI для Python и Node, а также обычный HTTP с помощью curl. Вам нужно изменить только базовый URL, ключ и имя модели.

Ваш ключ — всего в одной форме

Создайте аккаунт, скопируйте ключ, измените базовый URL. Это вся настройка.

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