API gambar GPT Image 2 dan Gemini

Buat gambar dengan GPT Image 2 melalui Images API kompatibel OpenAI atau dengan Nano Banana Pro dan Nano Banana 2 melalui API native Gemini.

Halaman ini menyatukan dua kontrak API pembuatan gambar yang terpisah. Keduanya memakai API Key dan Credits Modelflare yang sama, tetapi format permintaan dan responsnya tidak dapat dipertukarkan.

  • gpt-image-2 memakai kontrak kompatibel OpenAI /v1/images/generations dan /v1/images/edits.
  • gemini-3-pro-image dan gemini-3.1-flash-image memakai kontrak native Gemini generateContent.

Pilih keluarga model sebelum menyalin contoh dan jangan mencampur field Gemini dengan GPT Images.

1. GPT Image 2 — Images API kompatibel OpenAI

Buat PNG atau edit gambar referensi dari URL publik maupun unggahan lokal dengan gpt-image-2 melalui Images API yang kompatibel dengan OpenAI. Setiap permintaan menghasilkan satu gambar dan mendukung kualitas medium atau high, URL bertanda tangan singkat atau base64, serta SSE opsional.

Pilih endpoint dan mode

  • Gunakan https://origin.modelflare.dev/v1 untuk JSON sinkron yang mungkin memerlukan beberapa menit.
  • Gunakan https://modelflare.dev/v1 dengan stream=true untuk permintaan panjang melalui Cloudflare; heartbeat SSE menjaga koneksi sampai gambar akhir siap.
  • Jangan mengalihkan POST yang sedang berjalan antar-host.

Permintaan sinkron

curl https://origin.modelflare.dev/v1/images/generations \
  -H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-image-2","prompt":"Kabin tenang di tepi danau saat fajar","n":1,"quality":"medium","size":"1024x1024","response_format":"url","output_format":"png"}'

Respons URL berisi tautan privat bertanda tangan Modelflare yang kedaluwarsa setelah satu jam. Gunakan response_format=b64_json untuk menerima PNG tervalidasi tanpa menyimpan objek keluaran API.

Halaman langsung Model & Harga menampilkan titik harga medium dan high untuk ukuran umum. Penagihan memakai kualitas dan dimensi persis yang diminta tanpa pengali grup perutean biasa, lalu mencatat biaya akhir di log penggunaan.

Edit gambar referensi

Kirim satu atau beberapa URL gambar HTTP(S) yang dapat diakses publik ke POST /v1/images/edits. Setiap item images hanya berisi satu image_url:

curl https://origin.modelflare.dev/v1/images/edits \
  -H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-image-2","prompt":"Ubah latar menjadi studio foto putih yang bersih","images":[{"image_url":"https://example.com/input.png"}],"size":"2048x2048","response_format":"url"}'

Atau unggah satu file PNG, JPEG, atau WebP lokal dengan multipart/form-data:

curl https://origin.modelflare.dev/v1/images/edits \
  -H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
  -F "model=gpt-image-2" \
  -F "prompt=Ubah latar menjadi studio foto putih yang bersih" \
  -F "image=@/path/to/input.png" \
  -F "size=2048x2048" \
  -F "response_format=url"

Permintaan multipart harus berisi tepat satu file gambar dan total ukurannya tidak boleh melebihi 20 MiB. URL referensi atau file unggahan dikirim ke penyedia upstream yang dipilih; URL harus tetap dapat diakses saat diambil. Modelflare tidak menyimpan kedua jenis referensi tersebut sebagai aset keluaran API.

Permintaan SSE

curl -N https://modelflare.dev/v1/images/generations \
  -H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-image-2","prompt":"Kucing putih berlari di jalan neon saat hujan","n":1,"quality":"high","size":"1024x1024","response_format":"url","stream":true}'

Komentar SSE hanya heartbeat. Hentikan setelah image_generation.completed dan data: [DONE].

Kolom yang didukung: model, prompt, n=1, quality=medium|high, WIDTHxHEIGHT yang valid, response_format=url|b64_json, output_format=png, dan stream opsional. /v1/images/edits menerima array images yang tidak kosong dengan satu image_url HTTP(S) publik per item, atau tepat satu PNG, JPEG, atau WebP yang valid dalam kolom multipart image. Permintaan pembuatan menolak referensi; beberapa file unggahan, input data/base64, mask, input_fidelity, variasi, gambar parsial, dan kolom tak dikenal ditolak. Credits yang dicadangkan untuk permintaan gagal dikembalikan melalui jalur refund idempoten berdasarkan Request ID.

Gunakan API Key biasa. Key yang dipatok ke kanal ditolak, dan Key dengan batas model harus menyertakan gpt-image-2.


2. Gemini Image — API native Gemini

Gunakan Nano Banana Pro atau Nano Banana 2 dengan format native Gemini. Model ini tidak memakai /v1/images/generations.

Endpoint dan permintaan panjang

Permintaan streaming

Contoh ini memakai Nano Banana 2. Ganti model di URL menjadi gemini-3-pro-image untuk memakai Nano Banana Pro.

curl -N "https://modelflare.dev/v1beta/models/gemini-3.1-flash-image:streamGenerateContent?alt=sse" \
  -H "x-goog-api-key: YOUR_MODELFLARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{"text": "Create a clean blue circle centered on a white background. No text."}]
    }],
    "generationConfig": {
      "responseModalities": ["TEXT", "IMAGE"],
      "imageConfig": {"aspectRatio": "1:1", "imageSize": "1K"}
    }
  }'

Kontrak respons

Setiap event SSE data: berisi JSON native Gemini. Base64 gambar akhir berada di candidates[].content.parts[].inlineData.data dan MIME di inlineData.mimeType. Part teks juga dapat muncul. Selesai saat finishReason=STOP atau stream ditutup; image_generation.completed tidak digunakan di sini.

Model, resolusi, dan perkiraan harga

Model Resolusi Perkiraan harga per gambar
Nano Banana Pro 1K / 2K US$0.06720
Nano Banana Pro 4K US$0.12000
Nano Banana 2 0.5K US$0.02241
Nano Banana 2 1K US$0.03360
Nano Banana 2 2K US$0.05040
Nano Banana 2 4K US$0.07560

Gunakan huruf K besar pada imageSize. Harga di atas adalah perkiraan untuk satu gambar; biaya akhir dapat sedikit berubah sesuai isi permintaan dan dicatat di log penggunaan.

Gunakan API Key Modelflare biasa melalui x-goog-api-key. Key harus dapat memakai grup gemini-image dan menyertakan model yang dipilih jika batas model diaktifkan.