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

# Интеграция Codex для GPT-Image завершается ошибкой из-за неверного API-ключа

> Codex написал код gpt-image-2.5, который обращается к OpenAI, поэтому ваш ключ APIYI отклоняется. Исправьте это с помощью навыков, промпта на странице модели или веб-инструмента изображений.

## Ошибка

```text theme={null}
Authentication failed
Incorrect API key provided: sk-xxxx****************************A6Af.
You can find your API key at https://platform.openai.com/account/api-keys.
(Request ID: req_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)
```

<Info>
  **Одним предложением**: эта ошибка возвращается **собственными серверами OpenAI**, а не APIYI. Ваш код сейчас вызывает `api.openai.com`, поэтому OpenAI отклоняет ключ APIYI. **С ключом всё в порядке. Неверен адрес запроса.**
</Info>

## Как определить, что запрос так и не дошёл до APIYI

Любой из этих двух признаков однозначно это подтверждает:

| Признак                                                         | Значение                                                                                                        |
| --------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| Ошибка направляет вас на `platform.openai.com/account/api-keys` | Это стандартный текст ошибки `invalid_api_key` от OpenAI. Ошибки APIYI никогда не направляют вас на сайт OpenAI |
| ID запроса — это строка из 32 символов, начинающаяся с `req_`   | Формат ID запроса OpenAI. Вы не найдёте его в логах APIYI, потому что запрос туда никогда не поступал           |

<Note>
  Это особенно часто происходит, когда вы просите AI-ассистента для программирования написать интеграцию. Codex, Cursor, Claude Code и другие видят имя модели `gpt-image-2.5`, по умолчанию используют шаблон официального OpenAI SDK и оставляют `base_url` со значением SDK по умолчанию `https://api.openai.com/v1`. Ключ, который вы вставляете, принадлежит APIYI. Они не совпадают.
</Note>

## Три способа решения — выберите по ситуации

<Tabs>
  <Tab title="① Используете Codex / Agent для программирования: установите Skills">
    Самый простой путь — позволить Agent «изучить» APIYI до того, как он начнёт писать код. Доступны два уровня наборов навыков:

    <Steps>
      <Step title="Набор навыков для всего сайта (установите сначала его)">
        Попросите ваш Agent выполнить команду ниже, чтобы установить набор навыков APIYI. Если это не сработает, попросите его прочитать `https://docs.apiyi.com/skill.md` напрямую:

        ```bash theme={null}
        npx skills add https://docs.apiyi.com
        ```

        Этот файл написан для AI: базовые URL, аутентификация, правила именования моделей и распространённые ошибки. После установки написанный им код будет автоматически направлять `base_url` на `https://api.apiyi.com/v1`.
      </Step>

      <Step title="Специализированный навык GPT-Image">
        Страница [навыка Agent для серии GPT-Image-2.5 / 2](/ru/api-capabilities/gpt-image-2/skills) содержит готовый к использованию Skill: два файла и один скрипт для шести моделей, включая `gpt-image-2.5-flare` / `gpt-image-2.5-sunburst` / `gpt-image-2`, с переключением через `--model`. Включены преобразование текста в изображение, объединение нескольких изображений и inpainting.

        Добавьте его в Codex, OpenClaw, Claude Code или любой Agent для программирования, который может выполнять shell-команды, затем просто скажите «сгенерируй изображение ...». Вам не потребуется самостоятельно работать с базовым URL.
      </Step>
    </Steps>

    <Tip>
      Для других моделей изображений и видео также есть страницы «Agent Skill», размещённые в папке документации соответствующей модели. Найдите модель в левой навигации и найдите подстраницу с названием «Agent Skill».
    </Tip>
  </Tab>

  <Tab title="② Не программист: передайте prompt вашему AI">
    Если вы не хотите разбираться, что такое Skill, скопируйте наш готовый **prompt для интеграции** в Codex, Claude Code, Cursor или любой AI-ассистент:

    1. Откройте [обзор GPT-Image-2.5 / 2](/ru/api-capabilities/gpt-image-2/overview)
    2. Найдите раздел «Поручите интеграцию AI Agent» и нажмите кнопку копирования prompt
    3. Вставьте его в ваш AI-ассистент для программирования без изменений

    В prompt уже жёстко задано `base_url` как `https://api.apiyi.com/v1`, ключ считывается из переменной окружения `APIYI_API_KEY`, а также предусмотрены типичные проблемы с тайм-аутами, отображением base64, сжатием при загрузке и параметрами качества. AI сначала получает текстовую версию страницы документации (добавьте `.md` к любому URL документации), а затем пишет код для стека вашего проекта.

    <Note>
      Такой prompt есть на странице обзора каждой модели изображений и видео, не только GPT-Image. Для трёх более универсальных путей (чат Agent, CLI, Agent для программирования) см. [набор разработчика AI](/ru/developer-kit).
    </Note>
  </Tab>

  <Tab title="③ Интеграция не нужна: генерируйте в веб-интерфейсе">
    Если вам пока нужны только изображения и не требуется использовать их в собственной программе, полностью пропустите работу с кодом:

    1. Скопируйте ключ со страницы «Tokens» в консоли APIYI
    2. Откройте `imagen.apiyi.com` и вставьте ключ
    3. Выберите `gpt-image-2.5-flare` (текст в изображение) или `gpt-image-2.5-sunburst` (редактирование) и сгенерируйте

    Веб-инструмент использует тот же ключ и тот же API, а тарификация списывается с баланса того же аккаунта. Когда позднее вам понадобится использовать его в приложении, вернитесь к первым двум способам.
  </Tab>
</Tabs>

## Исправьте сами: одна строка

Если у вас уже есть код, сгенерированный Codex, минимальное изменение — добавить `base_url` в клиент. Всё остальное оставьте без изменений:

<CodeGroup>
  ```python Python theme={null}
  from openai import OpenAI

  client = OpenAI(
      api_key="sk-your-apiyi-key",
      base_url="https://api.apiyi.com/v1",  # ← add this line
  )

  result = client.images.generate(
      model="gpt-image-2.5-flare",
      prompt="A shiba inu wearing an astronaut helmet, cyberpunk style",
      size="1024x1024",
      quality="medium",
  )
  ```

  ```javascript Node.js theme={null}
  import OpenAI from "openai";

  const client = new OpenAI({
    apiKey: "sk-your-apiyi-key",
    baseURL: "https://api.apiyi.com/v1", // ← add this line
  });

  const result = await client.images.generate({
    model: "gpt-image-2.5-flare",
    prompt: "A shiba inu wearing an astronaut helmet, cyberpunk style",
    size: "1024x1024",
    quality: "medium",
  });
  ```

  ```bash Переменные окружения theme={null}
  # Override the SDK default without touching code
  export OPENAI_API_KEY="sk-your-apiyi-key"
  export OPENAI_BASE_URL="https://api.apiyi.com/v1"
  ```
</CodeGroup>

Затем убедитесь, что запрос действительно достигает APIYI. Список моделей в ответе означает, что всё готово:

```bash theme={null}
curl https://api.apiyi.com/v1/models \
  -H "Authorization: Bearer sk-your-apiyi-key"
```

## Дополнительные вопросы

<AccordionGroup>
  <Accordion title="Я изменил base_url, но всё равно получаю ту же ошибку. Почему?">
    Проверьте по порядку:

    1. **Несколько расположений конфигурации**: проекты, сгенерированные Codex, часто задают URL в `.env`, файле конфигурации и конструкторе клиента. Изменение одного из них оставляет остальные со значением по умолчанию
    2. **Приоритет переменных окружения**: если `OPENAI_BASE_URL` уже задана в вашей системе иначе, она переопределяет всё, что не указано в коде. Выполните `echo $OPENAI_BASE_URL` для проверки
    3. **Нет перезапуска**: запущенный процесс по-прежнему использует старую конфигурацию
    4. **Правописание**: `apiyi`, а не `apiyii` или `apiyl`

    Самое простое подтверждение — сам текст ошибки. Пока в нём по-прежнему отображается `platform.openai.com`, запрос всё ещё отправляется в OpenAI.
  </Accordion>

  <Accordion title="Codex сообщает, что уже переключился на APIYI, но ошибка не изменилась.">
    Отправьте ему точный текст ошибки вместе с этой страницей. На каждой странице документации в правом верхнем углу есть кнопка «Копировать страницу». Вставьте содержимое страницы и ошибку в AI, и он сможет определить, какая конфигурация не вступила в силу. Это самый быстрый способ устранения неполадок.
  </Accordion>

  <Accordion title="Что делать, если ключ всё ещё отклоняется после того, как запрос достигает APIYI?">
    Только тогда следует проверить сам ключ: откройте страницу «Tokens» в консоли и убедитесь, что ключ включён, баланс достаточен и его не блокирует белый список моделей. Полный контрольный список приведён в разделе [Почему мой API Key недействителен?](/ru/faq/invalid-api-key).
  </Accordion>

  <Accordion title="Какое имя модели следует использовать для gpt-image-2.5?">
    По умолчанию используйте `gpt-image-2.5-flare` для преобразования текста в изображение и `gpt-image-2.5-sunburst` для редактирования и дорисовки. Обе модели имеют одинаковую цену и параметры. Для высокообъёмных задач с низкой стоимостью используйте обратный канал `gpt-image-2.5-all`. Сравнительная таблица на странице [Навык агента серии GPT-Image](/ru/api-capabilities/gpt-image-2/skills) охватывает все шесть вариантов.
  </Accordion>
</AccordionGroup>

## Связанные материалы

<CardGroup cols={2}>
  <Card title="Почему мой API Key недействителен?" icon="key" href="/ru/faq/invalid-api-key">
    Почему базовый URL и ключ должны соответствовать друг другу: примеры для всех языков.
  </Card>

  <Card title="Как настроить базовый URL?" icon="link" href="/ru/faq/base-url-config">
    /v1 для OpenAI, корневой домен для Claude, /v1beta для Gemini.
  </Card>

  <Card title="Доступна ли интеграция в один клик?" icon="plug" href="/ru/faq/one-click-integration">
    Передайте документацию своему AI-помощнику для написания кода и позвольте ему выполнить интеграцию.
  </Card>

  <Card title="Обзор GPT-Image-2.5 / 2" icon="sparkles" href="/ru/api-capabilities/gpt-image-2/overview">
    Параметры, тарификация, промпт для интеграции и распространённые ошибки.
  </Card>
</CardGroup>
