Codex: membuat gambar dengan imagegen di penyedia kustom
Dua baris di config.toml mengaktifkan alat gambar bawaan Codex di balik relay. Berikut konfigurasi yang kami jalankan pada 29 Oktober 2026, tempat gambar disimpan, dan apa yang harus dikembalikan relay.
Di halaman ini
- Mengapa imagegen hilang di penyedia kustom
- config.toml yang mengaktifkannya
- Buat satu gambar dan temukan filenya
- Menyunting gambar yang sudah ada
- Latar transparan
- Yang harus dikembalikan relay Anda (gpt-image-2, b64_json)
- Error dan solusinya
- Codex bilang tidak punya alat gambar
- Codex meminta OPENAI_API_KEY
- failed to decode image generation response: missing field b64_json
- Permintaan gambar gagal dengan model_not_found
- Reconnecting... 1/5 (stream disconnected before completion)
- Pertanyaan umum
- Apakah imagegen butuh OPENAI_API_KEY?
- Bisa pilih model gambar, ukuran, atau kualitas lain?
- Perlu mengetik $imagegen?
- Berfungsi di aplikasi desktop Codex?
- Sumber yang diperiksa
Untuk membuat gambar dengan Codex lewat penyedia kustom (relay), cukup dua baris di config.toml: satu entri http_headers bernama x-openai-actor-authorization dengan nilai apa pun yang tidak kosong, dan requires_openai_auth = false, yang memang nilai bawaan. Dengan begitu Codex 0.165.0 mengirim permintaan gambar ke /images/generations milik relay dengan model gpt-image-2 dan menyimpan PNG ke ~/.codex/generated_images/. Pada 29 Oktober 2026, hasilnya PNG 1024×1024 dalam 29.0 detik; dengan konfigurasi yang sama tanpa header itu, alat gambar tidak pernah muncul.
Kami menguji dengan Codex CLI 0.165.0 di macOS, memakai OmniaKey, gateway API kami sendiri, sebagai penyedia kustom.
Mengapa imagegen hilang di penyedia kustom
Codex 0.165.0 memutuskan apakah model mendapat alat gambar di satu fungsi, image_generation_available, berdasarkan blok penyedia dan login yang tersimpan.
requires_openai_auth = falsetanpa header aktor: tidak ada alat gambar. Pada percobaan kami dengan konfigurasi ini, Codex menjawab: "I don’t have a built-in image generation tool available in this session." (Saya tidak punya alat pembuat gambar bawaan di sesi ini.)requires_openai_auth = falseditambah headerx-openai-actor-authorization: alat muncul. Ketiga percobaan kami dengan header itu (gambar baru, penyuntingan, dan stiker transparan) memanggil alat tersebut.requires_openai_auth = truedengan login kunci API: tidak ada alat gambar. Di kode Codex 0.165.0, pemeriksaan itu menuntut login ChatGPT, dan kunci API tidak dihitung.
Di balik gerbang itu ada dua syarat kecil, keduanya di kode Codex 0.165.0: login paket gratis ChatGPT menyembunyikan alat bahkan pada penyedia kustom, dan model chat harus menerima gambar, yang Codex anggap benar untuk nama model yang tidak dikenal daftarnya sendiri.
Saat alat tidak ada, Codex menyebut tidak punya alat gambar bawaan, seperti pada percobaan kami tanpa header, atau skill imagegen menawarkan jalur CLI cadangan yang butuh OPENAI_API_KEY.
config.toml yang mengaktifkannya
Buka ~/.codex/config.toml. Di blok penyedia untuk relay Anda, tambahkan baris http_headers dan pastikan requires_openai_auth bernilai false, nilai bawaannya.
model = "gpt-6.1-sol" # model chat yang dilayani relay Anda
model_provider = "relay"
[model_providers.relay]
name = "My relay"
base_url = "https://api.omniakey.com/v1"
env_key = "RELAY_API_KEY"
wire_api = "responses"
requires_openai_auth = false
http_headers = { "x-openai-actor-authorization" = "local-relay" }
[features]
image_generation = true # di Codex 0.165.0 sudah menyala secara bawaan
model dan model_provider adalah kunci tingkat atas, jadi harus berada di atas baris [section] pertama: TOML membaca setiap baris setelah header [section] sebagai bagian dari bagian itu.
requires_openai_auth = falsemembuat Codex memakai kunci dari lingkungan Anda, yaitu variabel yang disebut dienv_key. Halaman autentikasi OpenAI (diperiksa 29 Oktober 2026) menyebut: "Whenrequires_openai_auth = true, Codex ignoresenv_key." (Saatrequires_openai_auth = true, Codex mengabaikanenv_key.)http_headersmenyimpan header aktor. Referensi konfigurasi OpenAI menyebutnya "Static HTTP headers added to provider requests" (header HTTP statis yang ditambahkan ke permintaan penyedia), dan Codex hanya memeriksa nilainya tidak kosong (pemeriksaan di kode Codex), jadi "local-relay" cuma pengisi tempat, bukan kata sandi.[features] image_generation = truetidak wajib di 0.165.0: fiturnya stabil dan menyala secara bawaan (codex features listmencetakimage_generation stable true). Pada percobaan kami baris itu tidak ditulis.wire_api = "responses"satu-satunya nilai yang didukung referensi konfigurasi OpenAI.
Setel kuncinya lalu jalankan Codex:
export RELAY_API_KEY="your-relay-key"
codex
Kalau Codex sudah berjalan, tutup dan buka sesi baru supaya konfigurasinya terbaca.
Buat satu gambar dan temukan filenya
Percobaan kami pada 29 Oktober 2026 lewat penyedia kustom. Percobaan 2, pemeriksaan tanpa header, tidak menghasilkan gambar. Tiga percobaan lainnya masing-masing menyimpan satu PNG 1024×1024. Waktunya hanya panggilan gambar, bukan seluruh giliran.
| Percobaan | Yang kami minta | Panggilan gambar |
|---|---|---|
| 1 | Ikon aplikasi baru | 29.0 s |
| 3 | Menyunting gambar percobaan 1 | 37.6 s |
| 4 | Stiker transparan | 19.8 s |
Percobaan 1 hanya satu prompt:
Create an app icon for a note-taking app called Inkwell: a fountain pen nib over a deep blue gradient, flat vector style, no text. Generate it with your image tool, then tell me where the file was saved.
Codex membuka skill imagegen sendiri, tanpa $imagegen di prompt, lalu memanggil alatnya. Panggilan berlangsung 29.0 detik dan giliran selesai dengan satu PNG 1024×1024.
Berkasnya ada di ~/.codex/generated_images/<session id>/<call id>.png; ~/.codex adalah CODEX_HOME bawaan. Codex mencetak jalurnya karena prompt memintanya. Kalau gambarnya untuk proyek Anda, sebutkan tujuannya di prompt: skill akan menyuruh Codex memindahkan atau menyalin berkas ke sana.
Menyunting gambar yang sudah ada
PNG dari percobaan 1 pindah ke folder kerja sebagai inkwell.png, lalu kami meminta:
Edit the image ./inkwell.png: change the background to a warm orange gradient and keep the pen nib as it is. Use your built-in image tool, then tell me where the edited file was saved.
Codex meneruskan berkas itu di referenced_image_paths, jadi permintaannya ke /images/edits. Panggilan berlangsung 37.6 detik dan inkwell.png asli tidak berubah. Halaman pembuatan gambar OpenAI (diperiksa 29 Oktober 2026) menyebut: "When editing an existing image, say exactly what should change and what must stay the same." (Saat menyunting gambar yang ada, sebutkan persis apa yang harus berubah dan apa yang harus tetap sama.) Sisanya ada di panduan prompt GPT-Image 2.


Latar transparan
Percobaan 4 meminta stiker:
Create a PNG sticker of a single fountain pen nib on a fully transparent background (no backdrop at all), flat vector style, no text. Generate it with your built-in image tool, then tell me where the file was saved.
Codex menyetel transparent_background: true, panggilan berlangsung 19.8 detik, dan 85.0% piksel PNG yang tersimpan sepenuhnya transparan. Referensi Images API OpenAI mencantumkan latar transparan untuk gpt-image-2 sebagai "in preview" (dalam pratinjau): berhasil pada percobaan kami, tetapi fiturnya masih dalam pratinjau.

Yang harus dikembalikan relay Anda (gpt-image-2, b64_json)
Codex mengirim POST <base_url>/images/generations untuk gambar baru dan POST <base_url>/images/edits untuk penyuntingan, keduanya JSON dengan model gpt-image-2, id GPT-Image 2 yang harus dilayani relay Anda. Kualitas dan ukuran dikirim sebagai "auto", background sebagai "opaque" atau "transparent", dan permintaan tidak menyertakan response_format maupun n. Semuanya menuju URL dasar dan kunci yang sama dengan permintaan chat Anda. Penyuntingan membawa gambar sumber di dalam JSON sebagai data URL, bukan mengunggah berkas.
Codex membaca balasan JSON dengan created dan daftar data yang item pertamanya memuat b64_json; kolom lain diabaikan, seperti ditunjukkan images.rs. Kegagalan penguraian diawali "failed to decode image generation response:".
Relay bisa diperiksa tanpa Codex. Simpan ini sebagai relay-check.sh:
curl -s https://api.omniakey.com/v1/images/generations \
-H "Authorization: Bearer $RELAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-image-2", "prompt": "a red apple on a white table", "background": "opaque", "quality": "auto", "size": "auto"}' \
| python3 -c 'import json,sys; r=json.load(sys.stdin); print(r.get("error") or sorted(r["data"][0]))'
Arahkan URL dasar ke relay Anda dan ekspor kuncinya sebagai RELAY_API_KEY. Pada 29 Oktober 2026, pemeriksaan ke gateway kami mengembalikan HTTP 200 dalam 25.0 detik dan mencetak:
['asset_id', 'b64_json', 'expires_at', 'revised_prompt', 'url']
Kalau b64_json tidak ada di daftar itu, Codex gagal pada balasan yang sama. Kalau relay mengembalikan error, pemeriksaan mencetak error itu.
Sebagian relay rusak di sini karena menyimpan gambar sebagai berkas. Referensi Images API yang sama (diperiksa 29 Oktober 2026) menyebut response_format sebagai "Legacy response format parameter for retired image models. Unsupported for GPT image models, which always return base64-encoded images" (parameter format balasan lama untuk model gambar yang sudah pensiun; tidak didukung model gambar GPT, yang selalu mengembalikan gambar berenkode base64), dan b64_json "Returned by default for GPT image models" (dikembalikan secara bawaan untuk model gambar GPT). Relay yang meneruskan balasan OpenAI apa adanya berfungsi; relay yang hanya mengembalikan tautan merusak Codex.
Gateway OmniaKey mengalami ini sampai perbaikan pada 29 Oktober 2026. Catatan perbaikannya menyebut Codex gagal dengan "missing field b64_json", dan sekarang gateway mempertahankan b64_json kecuali pemanggil meminta URL.
Kalau relay Anda tidak lolos pemeriksaan, OmniaKey melayani gpt-image-2 dan model chat seperti gpt-6.1-sol dengan satu kunci, dan balasan gambarnya menyertakan b64_json, seperti ditunjukkan pemeriksaan tadi. Pasang base_url = "https://api.omniakey.com/v1" di blok penyedia itu dan taruh kunci OmniaKey di variabel yang disebut env_key; sisanya dibahas di panduan Codex CLI, dan harga terbaru ada di halaman harga.
Error dan solusinya
Codex bilang tidak punya alat gambar
Salah satu syarat di bagian pertama belum terpenuhi. Tambahkan baris http_headers, biarkan requires_openai_auth = false dengan env_key Anda, lalu buka sesi baru. Masih sama? Jalankan codex login status; pada paket gratis ChatGPT, codex logout menghapus login tersimpan dan kunci dari env_key sudah cukup.
Codex meminta OPENAI_API_KEY
Alat bawaan tidak tersedia, jadi skill imagegen menawarkan jalur CLI cadangan, scripts/image_gen.py, yang butuh OPENAI_API_KEY. Perbaiki alat bawaannya dengan konfigurasi di atas; dalam mode bawaan kuncinya diambil dari env_key.
failed to decode image generation response: missing field b64_json
Relay membalas tanpa b64_json, hampir selalu berupa tautan ke berkas yang disimpan. Jalankan pemeriksaan dari bagian relay terhadapnya dan kirim hasilnya ke pengelola relay; Codex ingin string base64 di item pertama data.
Permintaan gambar gagal dengan model_not_found
Kunci Anda tidak punya gpt-image-2 di relay itu, dan Codex selalu mengirim id tersebut, tanpa pengaturan untuk mengubahnya. Gateway kami membalas model gambar yang tidak dilayaninya dengan HTTP 503 dan kode model_not_found. Pakai kunci dan relay yang mencantumkan gpt-image-2.
Reconnecting... 1/5 (stream disconnected before completion)
Permintaan chat terputus dan Codex mencoba lagi; penghitungnya menunjukkan percobaan ke berapa dari lima. Muncul sekali di percobaan 1 ("Concurrency limit exceeded for account, please retry later") dan sekali di percobaan 3 (error pengiriman data), dan kedua percobaan selesai setelah mencoba lagi. Kalau terus berulang, periksa batas relay; masalah chat dibahas di kit kompatibilitas Codex.
Pertanyaan umum
Apakah imagegen butuh OPENAI_API_KEY?
Tidak. Dalam mode bawaan kuncinya datang dari variabel yang disebut di env_key; hanya jalur CLI cadangan milik skill yang membaca OPENAI_API_KEY.
Bisa pilih model gambar, ukuran, atau kualitas lain?
Di Codex 0.165.0 tidak bisa. Alatnya mengirim gpt-image-2 dengan kualitas dan ukuran "auto", config.toml tidak punya kunci untuk itu, dan semua gambar dari percobaan kami datang 1024×1024. Untuk ukuran atau model lain, panggil langsung endpoint gambar relay Anda.
Perlu mengetik $imagegen?
Tidak. Pada percobaan kami Codex membuka skill imagegen sendiri. Dokumentasi OpenAI menyebut $imagegen di prompt memanggil skill itu secara eksplisit, yang membantu saat Codex tidak memilihnya sendiri.
Berfungsi di aplikasi desktop Codex?
Kami tidak menguji aplikasi desktop, hanya CLI. Repositori perbaikan dari komunitas menyebut Codex Desktop yang sedang berjalan tidak mengambil variabel lingkungan baru: skrip untuk macOS memasang LaunchAgent, lalu Anda menutup Codex sepenuhnya dan membuka tugas baru.
Sumber yang diperiksa
- Dokumentasi OpenAI Codex: autentikasi untuk penyedia model alternatif
- Dokumentasi OpenAI Codex: referensi konfigurasi
- Dokumentasi OpenAI Codex: pembuatan gambar
- Referensi API OpenAI: membuat gambar
- Kode Codex 0.165.0: kapan alat gambar ditawarkan
- Kode Codex 0.165.0: pemeriksaan header aktor
- Kode Codex 0.165.0: cara balasan gambar dibaca
- xianyu110/codex-imagegen-relay-fix di GitHub
Model di artikel ini
Artikel terkait
Memperbaiki GPT-5.6 tidak ditemukan di Codex
Cocokkan kesalahannya terlebih dahulu, lalu uji akses model, API, dan Codex secara terpisah.
GPT Image 2: panduan prompt, struktur, contoh, dan gambar asli
Delapan prompt dan sembilan gambar nyata: mana yang tepat huruf demi huruf, apa yang ditambahkan, dan cara memperbaikinya.
GPT-5.6 terbaik untuk Codex
Mulai dari GPT-6.1 Sol untuk coding kompleks, GPT-6 Luna untuk tugas terfokus yang berulang, dan tingkat GPT-5.6 untuk pekerjaan yang masih berjalan di sana.
Artikel terbaru
- Gemini 4 Carbon: tanggal rilis, harga, dan akses API
- GPT Image 2.5 API: membuat dan mengedit gambar dengan Python
- Kling 3.0 API: kode permintaan teks ke video dan klip nyata
- Seedream 5.0 Pro API: Membuat Gambar dengan Python
- Clapping Cat Meme AI: Buat Hewan Peliharaanmu Bertepuk Tangan dengan Image-to-Video
