Вы направляете Codex на API-реселлера, просите модель codex сгенерировать изображение, и… он либо выдаёт 502, либо возвращает абзац, который начинается со слов «Вот как я предложил бы это оформить…», — а самого изображения так и нет.
Не спешите сомневаться в своей конфигурации. Обычно вы тут ни при чём: реселлер просто не реализовал путь генерации изображений для модели codex. Руководство короткое: сначала за несколько минут добьёмся, чтобы изображения генерировались, а потом объясним, почему большинство реселлеров с этим не справляются.
Сначала получим изображение (просто повторяйте за нами)
Настройка в один клик через клиент (рекомендуется)
Если не хочется трогать командную строку и конфигурационные файлы, это самый простой путь:
- Скачайте клиент Teamo
- Войдите в аккаунт, найдите в клиенте Codex и нажмите «Скачать и установить» (или установите Codex самостоятельно с сайта OpenAI);
- Нажмите «Подключить в один клик» — клиент автоматически подключит Codex к TeamoRouter и всё настроит, так что модель codex просто заработает;
- Когда всё готово, попросите codex сгенерировать изображение — например, «иконку погодного приложения в плоском стиле в синих тонах». Через несколько секунд изображение должно появиться.
Вы не пишете ни строчки конфигурации. Места, на которых спотыкаются чаще всего, — wire_api и переключатель генерации изображений — уже настроены за вас.
Для продвинутых: правим config.toml вручную
Предпочитаете командную строку и полный контроль? Можно подключить всё вручную (полное пошаговое описание — в руководстве по настройке Codex).
Сначала задайте API-ключ как переменную окружения:
export TEAMOROUTER_API_KEY="your-teamorouter-key"
Затем отредактируйте ~/.codex/config.toml:
model = "gpt-5-codex" # укажите точное название модели codex из вашей консоли
model_provider = "teamorouter"
[model_providers.teamorouter]
name = "TeamoRouter"
base_url = "https://api.teamorouter.com/v1" # уточните точный URL на сайте или в консоли
env_key = "TEAMOROUTER_API_KEY"
wire_api = "responses" # критично: генерация изображений должна идти через responses, а не chat
[features]
image_generation = true # включить встроенную генерацию изображений
Следите за двумя ловушками: wire_api должен быть равен responses (на chat инструмента image_generation нет), а [features].image_generation должен быть true. После настройки попросите codex сгенерировать изображение, чтобы убедиться, что всё работает.
Изображение получили? Вот почему в других местах оно не получается
Если на другом API-реселлере у вас раз за разом ничего не выходило, вы, скорее всего, попали в одну из ловушек ниже. Всем, кто запускал модель codex через реселлера, это знакомо: код, чат и отладка работают гладко, а разваливается только генерация изображений. Три классических сценария сбоя:
- Глухая 502 — запрос даже не доходит;
- Запрос проходит, но модель деградирует до обычного текста — вместо «изображения» приходит словесное описание;
- Самый жуткий вариант — по логам видно, что генерация идёт, даже
partial_imageисправно тикает, а итоговый агрегированный результат пуст.
Выглядят они по-разному, но первопричина одна: генерация изображений у модели codex не идёт через стандартный эндпоинт /v1/images/generations.
Она идёт через встроенный инструмент image_generation в Responses API, который под капотом вызывает модель серии gpt-image (например, gpt-image-2). Данные изображения возвращаются потоком по SSE в виде чанков partial_image_b64, и эти чанки нужно правильно агрегировать, чтобы восстановить изображение целиком. Этот путь требует от реселлера гораздо большего, чем обычный текст. Реселлер должен как минимум делать три вещи одновременно:
- Полностью реализовать эндпоинт
/responses— а не только куда более распространённый/v1/chat/completions; - Без искажений пробрасывать вызов инструмента
image_generation— никакой подмены моделей, никакого понижения уровня; - Правильно агрегировать потоковые чанки изображения — не терять фрагменты
partial_image_b64.
Большинство реселлеров спотыкаются на одном из этих трёх пунктов: одни проксируют только текстовый эндпоинт и вообще не реализуют /responses; другие ради экономии тихо подменяют codex более дешёвым аналогом, что сразу ломает вызов инструмента; третьи реализуют эндпоинт, но небрежно пишут агрегацию потока, так что изображение нормально генерируется у вышестоящего провайдера, но теряется на стороне реселлера. TeamoRouter работает «из коробки» именно благодаря этому: он проксирует весь этот путь полностью и без искажений, не халтурит и не подменяет модель, поэтому генерация изображений в codex просто работает, и вам не приходится самим склеивать чанки.
Изображения всё ещё нет? Проверьте три вещи
Если изображение по-прежнему не появляется, не спешите менять сервис — пройдитесь по этому списку по порядку, и причина обычно найдётся:
- Установлен ли
wire_apiвresponses? Самая частая ловушка. Многие копируют старую конфигурацию, гдеwire_apiвсё ещёchat, — а на этом пути инструментаimage_generationпопросту нет, и codex не может генерировать изображения. (Пропустите этот пункт, если подключались через клиент в один клик.) - Есть ли у вашего ключа права на изображения? Некоторые реселлеры по умолчанию включают только текстовые модели, а для изображений нужен отдельный запрос или переключатель в консоли. В TeamoRouter это включено по умолчанию; если вы используете старый ключ от другого сервиса, сначала проверьте.
- Не подменили ли codex? Если с первыми двумя пунктами всё в порядке и текст работает, а генерация изображений тихо не срабатывает, вышестоящий провайдер мог заменить codex более дешёвой моделью без поддержки вызова инструментов. Именно поэтому важен вопрос «настоящая ли модель»: от него зависит не только генерация изображений, но и то, попадает ли вообще каждый ваш вызов на настоящую модель.
FAQ
Почему Codex возвращает 502 — или просто текст, — когда я прошу его сгенерировать изображение через реселлера?
Генерация изображений идёт не через обычный chat-эндпоинт, а через инструмент image_generation в Responses API. Если реселлер не реализовал /responses, подменяет модель или не справляется с агрегацией SSE-чанков изображения, вы увидите 502, текстовое «описание» или пустое изображение.
Использует ли генерация изображений в Codex эндпоинт /v1/images/generations?
Нет. Она использует встроенный инструмент image_generation в Responses API, за которым стоит модель серии gpt-image. Изображение возвращается потоком по SSE в виде чанков partial_image_b64, и его нужно собрать заново.
Какую настройку конфигурации упускают чаще всего?
wire_api. Он должен быть равен responses — на chat инструмента image_generation не существует, поэтому изображения не генерируются. Подключение в один клик через клиент задаёт этот параметр за вас.
Нужно ли моему ключу отдельное право на изображения?
Некоторые реселлеры по умолчанию включают только текстовые модели, а для изображений нужен отдельный запрос или переключатель в консоли. В TeamoRouter это включено по умолчанию; если вы используете старый ключ от другого сервиса, сначала проверьте.
Как понять, что модель подменили?
Если текст работает нормально, а генерация изображений тихо не срабатывает, вышестоящий провайдер мог заменить codex более дешёвой моделью без поддержки вызова инструментов. Самый прямой способ этого избежать — выбрать сервис, который сохраняет модели настоящими и не понижает их уровень. Подробнее о выборе надёжного шлюза — в нашем руководстве по AI-реселлерам.
Подводим итоги
Если codex у какого-нибудь реселлера уже заставил вас пройти через ад «изображения не генерируются», вы, скорее всего, не виноваты — реселлер просто не довёл дело до конца. Следуйте шагам выше, чтобы запустить генерацию изображений, и избавьте себя от головной боли.
Примечание: TeamoRouter обеспечивает прямой доступ из материкового Китая без VPN, оплату в юанях (Alipay / WeChat Pay) и единую точку входа для Claude / GPT / Gemini; он работает с Claude Code, Codex, Cursor и Cline. Для команд доступны также высокий QPM, SLA, счета-фактуры и договоры. Сайт — teamorouter.com, клиент — на странице загрузки.