> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ruapi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Codex CLI

> Как подключить официальный Codex CLI от OpenAI к RuAPI

[Codex CLI](https://github.com/openai/codex) — официальный консольный ассистент для написания кода от OpenAI, аналог Claude Code. Он работает по OpenAI-совместимому протоколу, поэтому для подключения к RuAPI достаточно **`OPENAI_BASE_URL`** и **`OPENAI_API_KEY`**.

## Предварительные требования

<Steps>
  <Step title="Аккаунт RuAPI и API-ключ">
    Консоль → **Токены** → **Создать токен**. См. [API-ключи и безопасность](/ru/authentication).
  </Step>

  <Step title="Node.js ≥ 18">
    ```bash theme={null}
    node --version
    ```

    Установите с [nodejs.org](https://nodejs.org), если требуется.
  </Step>
</Steps>

## Установка Codex CLI

```bash theme={null}
npm install -g @openai/codex
```

Проверка:

```bash theme={null}
codex --version
```

## Настройка RuAPI

Codex CLI поддерживает два пути: **переменные окружения** или **`~/.codex/config.toml`**. Второй вариант надёжнее.

### Способ 1: `config.toml` (рекомендуется)

Откройте `~/.codex/config.toml` (или `%USERPROFILE%\.codex\config.toml` на Windows). Если файла нет — создайте:

```toml theme={null}
model_provider = "ruapi"
model = "gpt-5.4"

[model_providers.ruapi]
name = "RuAPI"
base_url = "https://www.ruapi.ai/v1"
wire_api = "chat"
env_key = "RUAPI_API_KEY"
```

Затем экспортируйте ключ (или сохраните в `~/.zshrc` / `~/.bashrc`):

<Tabs>
  <Tab title="macOS / Linux">
    ```bash theme={null}
    export RUAPI_API_KEY="sk-ваш-ключ"
    ```
  </Tab>

  <Tab title="Windows (PowerShell)">
    ```powershell theme={null}
    [Environment]::SetEnvironmentVariable("RUAPI_API_KEY", "sk-ваш-ключ", "User")
    ```
  </Tab>
</Tabs>

<Note>
  `wire_api = "chat"` означает классический `/v1/chat/completions` — самый надёжный вариант. Можно попробовать `"responses"` для нового Responses API, но не все модели на RuAPI её поддерживают.
</Note>

### Способ 2: только переменные окружения

Если не хочется править файл конфигурации:

<Tabs>
  <Tab title="macOS / Linux">
    ```bash theme={null}
    export OPENAI_BASE_URL="https://www.ruapi.ai/v1"
    export OPENAI_API_KEY="sk-ваш-ключ"
    codex
    ```
  </Tab>

  <Tab title="Windows (PowerShell)">
    ```powershell theme={null}
    $env:OPENAI_BASE_URL = "https://www.ruapi.ai/v1"
    $env:OPENAI_API_KEY  = "sk-ваш-ключ"
    codex
    ```
  </Tab>
</Tabs>

<Warning>
  В OpenAI-совместимом протоколе `base_url` / `OPENAI_BASE_URL` **обязан** заканчиваться на `/v1`. Это отличается от Anthropic.
</Warning>

## Первый запрос

```bash theme={null}
cd ~/some-project
codex
```

В интерактивном режиме:

```
> Расскажи о себе в одном предложении.
```

Нормальный ответ и запись в Консоли RuAPI → **Логи** = успех.

## Переключение моделей

Внутри сессии:

```
/model claude-opus-4-8
```

Или измените значение `model = "..."` в начале `config.toml`. Полный список — на [странице цен](https://www.ruapi.ai/pricing).

## Решение проблем

<AccordionGroup>
  <Accordion title="401 Unauthorized">
    * `OPENAI_API_KEY` (или `RUAPI_API_KEY`) должен быть **токеном RuAPI** (`sk-...`), а не официальным `sk-proj-...` от OpenAI.
    * В Консоли → **Токены** проверьте, что ключ активен и нужная модель не исключена из allowlist.
  </Accordion>

  <Accordion title="404 / model not found">
    * Опечатка. Имена моделей OpenAI на RuAPI совпадают с официальными — точные имена возьмите со страницы цен (семейства GPT-5 и GPT-5 mini).
    * `OPENAI_BASE_URL` должен заканчиваться на `/v1`.
  </Accordion>

  <Accordion title="Ошибка 'unsupported wire_api'">
    Замените `wire_api` на `"chat"` в `config.toml`. Протокол `"responses"` поддерживается только частью новых моделей.
  </Accordion>

  <Accordion title="Ошибки при tool calling / function calling">
    RuAPI передаёт вызовы инструментов без изменений. Если Codex ругается — попробуйте тот же промпт напрямую через OpenAI, чтобы исключить проблему в самом промпте.
  </Accordion>

  <Accordion title="Держать одновременно официальный аккаунт и RuAPI">
    Опишите два провайдера в `config.toml` и используйте `/provider <name>` для переключения внутри сессии, или поставьте [CC Switch](/ru/integrations/ccswitch).
  </Accordion>
</AccordionGroup>

## Продвинутое: вместе с Claude Code

Многие используют Codex (для задач, где OpenAI-модели сильнее) и Claude Code (для длинного контекста и анализа кода) одновременно. Они не мешают друг другу: настройте каждый по [Claude Code](/ru/integrations/claude-code) и этой странице — один и тот же ключ RuAPI подходит обоим.
