Lewati ke konten

Panduan Image Generation

API generasi gambar di KoboiLLM mengikuti standar OpenAI Images API, sehingga library OpenAI maupun LiteLLM yang ada bisa langsung dipakai. Panduan ini menjelaskan cara memanggil endpoint, parameter yang tersedia, contoh kode untuk berbagai bahasa, struktur respons, dan estimasi biaya untuk semua model image generation yang didukung (OpenAI gpt-image-*, Google Gemini, dan Google Imagen).


Daftar Isi

  1. Endpoint dan Otentikasi
  2. Model yang Tersedia
  3. Parameter Permintaan
  4. Generate Gambar dari Teks
  5. Edit Gambar yang Sudah Ada
  6. Struktur Respons
  7. Tarif & Estimasi Biaya
  8. Verifikasi Tagihan
  9. Penanganan Error
  10. Tips & Best Practices

1. Endpoint dan Otentikasi

Base URL:

https://lite.koboillm.com/v1

Endpoint https://api.koboillm.com/v1 juga tersedia dan identik fungsinya — pilih salah satu.

Endpoint utama:

MethodPathFungsi
POST/v1/images/generationsBuat gambar baru dari prompt teks
POST/v1/images/editsEdit / modifikasi gambar yang sudah ada

Otentikasi menggunakan header Authorization: Bearer <API_KEY>. API key diberikan saat pembuatan akun. Simpan di environment variable, jangan hard-code di source code.

Terminal window
export LITELLM_API_KEY="sk-xxxxxxxxxxxxxx"

2. Model yang Tersedia

⚠️ Disclaimer Harga

Tarif yang tercantum di dokumen ini diambil dari halaman pricing resmi OpenAI dan Google Cloud Vertex AI, diverifikasi empiris pada Mei 2026 dengan menjalankan request ke setiap model dan mencocokkan dengan billing API masing-masing provider. Provider bisa mengubah harga kapan saja tanpa notifikasi panjang. Selalu verifikasi tagihan aktual di dashboard https://lite.koboillm.com (lihat §8).

2.1 — Model OpenAI

ModelEndpoint nameBillingCocok untuk
gpt-image-1-minigpt-image-1-miniper-tokenThumbnail, generasi massal, prototipe — paling murah
gpt-image-1.5openai/gpt-image-1.5per-tokenGeneral-purpose, balance kualitas & harga — rekomendasi default
gpt-image-2openai/gpt-image-2per-tokenModel terbaru, prompt adherence terbaik, detail kompleks
gpt-image-1openai/gpt-image-1per-tokenVersi legacy, tarif sama dengan gpt-image-1-mini family
chatgpt-image-latestopenai/chatgpt-image-latestper-token”ChatGPT-style” dengan reasoning step — paling mahal, ~3× gpt-image-1.5
dall-e-3openai/dall-e-3per-image flatModel legacy DALL·E 3
dall-e-2dall-e-2per-image flatModel legacy DALL·E 2

2.2 — Model Google Gemini (token-based)

ModelEndpoint nameCocok untuk
gemini-2.5-flash-imagegemini/gemini-2.5-flash-image atau vertex_ai/gemini-2.5-flash-imageImage gen via Gemini, murah & cepat — rekomendasi Gemini
gemini-3.1-flash-image-previewgemini/gemini-3.1-flash-image-preview atau vertex_ai/gemini-3.1-flash-image-previewVersi preview lebih baru, ~1.7× lebih mahal dari 2.5-flash
gemini-3-pro-image-previewgemini/gemini-3-pro-image-preview atau vertex_ai/gemini-3-pro-image-previewVersi Pro, kualitas tertinggi di Gemini family, ~3.5× lebih mahal dari 2.5-flash

Model gemini/... dan vertex_ai/... adalah dua route yang sama ke backend. Pakai yang mana saja — keduanya menggunakan kredensial Vertex AI dan ditagih dengan tarif identik.

2.3 — Model Google Imagen (per-image flat fee)

ModelEndpoint nameTarif per gambarCocok untuk
imagen-3.0-fast-generate-001vertex_ai/imagen-3.0-fast-generate-001$0.02Imagen 3.0 speed-optimized — paling murah
imagen-4.0-fast-generate-001vertex_ai/imagen-4.0-fast-generate-001$0.02Imagen 4.0 speed-optimized
imagen-3.0-generate-001vertex_ai/imagen-3.0-generate-001$0.04Imagen 3.0 standard v1
imagen-3.0-generate-002vertex_ai/imagen-3.0-generate-002$0.04Imagen 3.0 standard v2
imagen-3.0-capability-001vertex_ai/imagen-3.0-capability-001$0.04Imagen 3.0 untuk inpainting/editing
imagen-4.0-generate-001vertex_ai/imagen-4.0-generate-001$0.04Imagen 4.0 standard
imagen-4.0-ultra-generate-001vertex_ai/imagen-4.0-ultra-generate-001$0.06Imagen 4.0 ultra — kualitas tertinggi

Imagen menggunakan tarif tetap per-gambar (tidak per-token). Resolusi dan parameter lain tidak mempengaruhi biaya — n=1 selalu pakai tarif di atas, n=4 × tarif tersebut.

2.4 — Cara Memilih Model

Tier harga (dari termurah ke termahal, untuk 1 gambar 1024×1024):

TierHarga/gambarModelNotes
💵$0.002–$0.033gpt-image-1-miniOpenAI, varies by quality
💵$0.02imagen-3.0-fast, imagen-4.0-fastImagen flat-fee
💵💵$0.04imagen-3.0-generate-*, imagen-4.0-generateImagen standard
💵💵$0.0387gemini-2.5-flash-imageToken-based, deterministic
💵💵$0.06imagen-4.0-ultraImagen highest quality
💵💵$0.0672gemini-3.1-flash-image-previewToken-based
💵💵💵$0.011–$0.211gpt-image-1.5, gpt-image-2, gpt-image-1OpenAI, varies by quality
💵💵💵$0.1344gemini-3-pro-image-previewToken-based, Gemini paling mahal
💵💵💵💵$0.04–$0.43chatgpt-image-latestPaling mahal — has reasoning step

Berdasarkan kebutuhan:

  • Generasi massal / batchgpt-image-1-mini low quality (~$0.002/gambar)
  • Murah & deterministic (harga selalu sama)imagen-3.0-fast atau imagen-4.0-fast ($0.02 flat)
  • Marketing / produkgpt-image-1.5 medium/high
  • Kualitas tinggi, prompt detailgpt-image-2 high atau imagen-4.0-ultra
  • Edit gambar dengan referensigpt-image-1.5 (input image cuma ~194 token vs ~1024 token di gpt-image-2)
  • Butuh konsistensi harga (tidak naik turun per token) → Imagen series (flat fee)
  • Butuh model Google ecosystemgemini-2.5-flash-image (token-based, mirip OpenAI)
  • Hindari chatgpt-image-latest untuk volume tinggi — biayanya bisa 10× gpt-image-1.5

3. Parameter Permintaan

Parameter umum (untuk kedua endpoint)

ParameterTypeValuesEffect
modelstringsalah satu dari §2Menentukan tarif tier
promptstringfree textTokenized as text_input
sizestring1024x1024, 1024x1536, 1536x1024, autoResolusi. Mempengaruhi output token count (dan biaya).
qualitystringlow, medium, high, autoMempengaruhi output token count. high ≈ 15× lebih banyak token dari low (OpenAI only).
nint1–10Jumlah gambar. Cost multiplies linearly.
response_formatstringurl (default) atau b64_jsonTidak mempengaruhi biaya.
Untuk /v1/images/edits saja:
imagefile/multipartPNG/JPEGCounted as image_input tokens
maskfile/multipartPNGSame rate as image

Catatan untuk Gemini: parameter quality tidak digunakan. Hanya OpenAI yang membedakan low/medium/high. Gemini hanya merespons size / aspect ratio.

Catatan untuk Imagen: parameter quality dan size tidak mempengaruhi biaya (flat fee per-gambar).


4. Generate Gambar dari Teks

4.1 — curl

Terminal window
curl -X POST https://lite.koboillm.com/v1/images/generations \
-H "Authorization: Bearer $LITELLM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-image-1.5",
"prompt": "Naga megah terbang di atas pegunungan berkabut saat senja",
"size": "1024x1024",
"quality": "high",
"n": 1
}'

4.2 — Python (LiteLLM SDK)

import os
from litellm import image_generation
os.environ["LITELLM_API_KEY"] = "sk-xxxxxxxxxxxxxx"
response = image_generation(
model = "openai/gpt-image-1.5",
prompt = "Naga megah terbang di atas pegunungan berkabut saat senja",
n = 1,
size = "1024x1024", # 1024x1024 | 1024x1536 | 1536x1024 | auto
quality = "high", # auto | high | medium | low
api_base = "https://lite.koboillm.com/v1",
api_key = os.environ["LITELLM_API_KEY"],
)
# Akses gambar via response.data[0].url atau response.data[0].b64_json
# Akses usage untuk verifikasi biaya
print("Usage:", response.usage)

4.3 — Python (OpenAI SDK)

LiteLLM proxy bersifat OpenAI-compatible, jadi SDK OpenAI standar bekerja dengan mengganti base_url.

from openai import OpenAI
client = OpenAI(
base_url="https://lite.koboillm.com/v1",
api_key="sk-xxxxxxxxxxxxxx",
)
response = client.images.generate(
model="openai/gpt-image-1.5",
prompt="Naga megah terbang di atas pegunungan berkabut saat senja",
size="1024x1024",
quality="high",
n=1,
)

4.4 — JavaScript / TypeScript

import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://lite.koboillm.com/v1",
apiKey: process.env.LITELLM_API_KEY,
});
const response = await client.images.generate({
model: "openai/gpt-image-1.5",
prompt: "...",
size: "1024x1024",
quality: "high",
n: 1,
});
console.log(response.usage);

4.5 — Contoh dengan model Gemini

Model Gemini juga support endpoint /v1/images/generations yang sama:

from litellm import image_generation
response = image_generation(
model = "gemini/gemini-2.5-flash-image", # atau gemini-3-pro-image-preview, dll
prompt = "Kucing oranye sedang tidur di sofa, gaya cinematic",
n = 1,
size = "1024x1024",
api_base = "https://lite.koboillm.com/v1",
api_key = os.environ["LITELLM_API_KEY"],
)
print(response.usage) # text_tokens, image_tokens — ditagih per-token

Model Gemini menerima aspect ratio 1:1, 3:2, 2:3, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, dan 21:9. Parameter quality tidak digunakan di Gemini — hanya OpenAI yang membedakan low/medium/high.

4.6 — Contoh dengan model Imagen

Imagen pakai endpoint yang sama, tapi tarifnya flat per-gambar (tidak per-token):

from litellm import image_generation
response = image_generation(
model = "vertex_ai/imagen-4.0-fast-generate-001", # $0.02/gambar
prompt = "Pemandangan gunung Indonesia dengan kabut pagi",
n = 1,
api_base = "https://lite.koboillm.com/v1",
api_key = os.environ["LITELLM_API_KEY"],
)
# Imagen tidak return token usage — biaya selalu tetap per gambar
# Cek SpendLogs di dashboard untuk verifikasi

Untuk batch generate (4 gambar sekaligus dari satu prompt):

response = image_generation(
model="vertex_ai/imagen-4.0-fast-generate-001",
prompt="...",
n=4, # akan ditagih 4 × $0.02 = $0.08
api_base="https://lite.koboillm.com/v1",
api_key=os.environ["LITELLM_API_KEY"],
)

4.7 — Contoh lengkap dengan menampilkan & menyimpan gambar (Google Colab)

!pip install litellm -q
import os, base64, requests
from io import BytesIO
from IPython.display import Image, display
from litellm import image_generation
from google.colab import userdata
os.environ["LITELLM_API_KEY"] = userdata.get("LITELLM_API_KEY")
response = image_generation(
model = "openai/gpt-image-1.5",
prompt = "Pantai tropis dengan air biru jernih dan pohon kelapa, gaya fotografi",
n = 1,
size = "1024x1024",
quality = "high",
api_base = "https://lite.koboillm.com/v1",
api_key = os.environ["LITELLM_API_KEY"],
)
image_data = response.data[0]
if image_data.url:
img_bytes = requests.get(image_data.url).content
elif image_data.b64_json:
img_bytes = base64.b64decode(image_data.b64_json)
display(Image(data=img_bytes))
with open("hasil.png", "wb") as f:
f.write(img_bytes)
print(f"💾 Tersimpan ke hasil.png ({len(img_bytes)} bytes)")
print(f"📊 Usage: {response.usage}")

5. Edit Gambar yang Sudah Ada

Endpoint /v1/images/edits menerima gambar input + prompt teks. Cocok untuk:

  • Mengubah warna / tekstur bagian gambar
  • Menambah atau menghapus elemen
  • Memperluas (outpaint) gambar di luar frame
  • Membuat variasi dari satu gambar referensi

5.1 — curl (multipart form)

Terminal window
curl -X POST https://lite.koboillm.com/v1/images/edits \
-H "Authorization: Bearer $LITELLM_API_KEY" \
-F "model=openai/gpt-image-1.5" \
-F "image=@input.png" \
-F 'prompt=Ubah warna langit menjadi ungu saat senja' \
-F "size=1024x1024" \
-F "quality=high"

5.2 — Python (LiteLLM SDK)

from litellm import image_edit
with open("input.png", "rb") as f:
response = image_edit(
model = "openai/gpt-image-1.5",
image = f,
prompt = "Ubah warna langit menjadi ungu saat senja",
size = "1024x1024",
quality = "high",
api_base = "https://lite.koboillm.com/v1",
api_key = os.environ["LITELLM_API_KEY"],
)

5.3 — Python (OpenAI SDK)

from openai import OpenAI
client = OpenAI(
base_url="https://lite.koboillm.com/v1",
api_key="sk-xxxxxxxxxxxxxx",
)
with open("input.png", "rb") as f:
response = client.images.edit(
model="openai/gpt-image-1.5",
image=f,
prompt="Ubah warna langit menjadi ungu saat senja",
size="1024x1024",
quality="high",
)

Catatan: gpt-image-2 memproses input image di high fidelity, jadi 1 gambar input 1024×1024 menghasilkan ~1024 token vs ~194 token di gpt-image-1.5. Edit dengan gpt-image-2 cenderung lebih mahal dari sisi input image-nya.


6. Struktur Respons

Format respons mengikuti spec OpenAI:

{
"created": 1730000000,
"data": [
{
"url": "https://...", // atau b64_json
"b64_json": "iVBORw0KGgo..."
}
],
"usage": {
"input_tokens": 10,
"output_tokens": 4482,
"total_tokens": 4492,
"input_tokens_details": {
"text_tokens": 10,
"image_tokens": 0,
"cached_tokens": 0
},
"output_tokens_details": {
"text_tokens": 322,
"image_tokens": 4160
}
}
}

Field usage adalah kunci untuk memverifikasi biaya — semua tagihan dihitung berdasarkan token-token di sini (kecuali Imagen yang flat-fee).


7. Tarif & Estimasi Biaya

Biaya dihitung per-token, sama seperti rate publik OpenAI dan Google. Setiap request ditagih:

biaya = text_input × tarif_text_input
+ image_input × tarif_image_input (hanya untuk edits)
+ cached_input × tarif_cached (jarang)
+ output_text × tarif_output_text
+ output_image × tarif_output_image

7.1 — Tarif OpenAI per 1 juta token (USD)

ModelText inImage inCachedOutput textOutput image
gpt-image-1-mini$2.00$2.50$0.25$8.00$8.00
gpt-image-1.5$5.00$8.00$1.25$10.00$32.00
gpt-image-2$5.00$8.00$2.00$30.00$30.00
gpt-image-1$5.00$10.00$2.50$40.00$40.00
chatgpt-image-latest$10.00$20.00$2.50$64.00$64.00

gpt-image-1.5 adalah satu-satunya model OpenAI yang membedakan tarif text-output dan image-output. Sisanya pakai satu tarif untuk semua output token.

7.2 — Tarif Gemini per 1 juta token (USD)

ModelText inImage inOutput textOutput imageOutput token per gambar 1024²
gemini-2.5-flash-image$0.30$0.30$2.50$30.001.290 token
gemini-3.1-flash-image-preview$0.50$0.50$3.00$60.001.120 token
gemini-3-pro-image-preview$2.00$2.00$12.00$120.001.120 token

Untuk Gemini, jumlah token output per-gambar bersifat deterministic — sama setiap kali untuk resolusi yang sama.

Jumlah output token per resolusi (Gemini 3.1 Flash & 3 Pro):

ResolusiToken output
512×512 (~0.25MP)747
1024×1024 (~1MP)1.120
2K (~4MP)1.680
4K (~16MP)2.520 (3.1 Flash) / 2.000 (3 Pro)

7.3 — Tarif Imagen (per gambar, flat fee)

ModelTarif/gambar
imagen-3.0-fast-generate-001$0.02
imagen-4.0-fast-generate-001$0.02
imagen-3.0-generate-001$0.04
imagen-3.0-generate-002$0.04
imagen-3.0-capability-001$0.04
imagen-4.0-generate-001$0.04
imagen-4.0-ultra-generate-001$0.06

Imagen tidak menggunakan token math — biaya tetap per gambar terlepas dari resolusi atau panjang prompt.

7.4 — Jumlah output token OpenAI per (kualitas, ukuran)

OpenAI menghasilkan jumlah output image token yang tetap (deterministik) berdasarkan kombinasi quality dan size. Hasil empiris:

Untuk gpt-image-1, gpt-image-1-mini, gpt-image-1.5, chatgpt-image-latest:

Quality1024×10241024×15361536×1024
low272408400
medium1.0561.5841.568
high4.1606.2406.208

Untuk gpt-image-2:

Quality1024×10241024×15361536×1024
low196152150
medium1.6801.3041.296
high6.6565.2165.184

Untuk gpt-image-2, render non-square (1024×1536 atau 1536×1024) bisa lebih murah dari render square 1024×1024 di kualitas yang sama.

7.5 — Tabel biaya per gambar OpenAI (n=1, hasil empiris)

gpt-image-1-mini (paling murah)

Quality1024×10241024×15361536×1024
low$0.0022$0.0033$0.0032
medium$0.0085$0.0127$0.0126
high$0.0333$0.0499$0.0497

gpt-image-1.5

Quality1024×10241024×15361536×1024
low$0.0111$0.0156$0.0153
medium$0.0376$0.0551$0.0544
high$0.1375$0.2039$0.2026

gpt-image-2

Quality1024×10241024×15361536×1024
low$0.0059$0.0048$0.0048
medium$0.0527$0.0412$0.0412
high$0.2108$0.1647$0.1647

gpt-image-1

Quality1024×10241024×15361536×1024
low$0.0109$0.0164$0.0161
medium$0.0423$0.0634$0.0628
high$0.1665$0.2497$0.2484

chatgpt-image-latest (paling mahal — ada thinking step)

Quality1024×10241024×15361536×1024
low$0.0422$0.0525$0.0523
medium$0.0957$0.1254$0.1268
high$0.2946$0.4297$0.4216

Untuk n>1, kalikan dengan n.

7.6 — Tabel biaya per gambar Gemini (n=1, hasil empiris)

Gemini tidak punya parameter quality — biaya hanya ditentukan resolusi.

Model1024×10242K (~4MP)4K (~16MP)
gemini-2.5-flash-image$0.0387n/an/a
gemini-3.1-flash-image-preview$0.0672$0.101$0.150
gemini-3-pro-image-preview$0.1344$0.134$0.240

Untuk n>1, kalikan dengan n. Imagen flat fee — lihat §7.3.

7.7 — Contoh perhitungan

Contoh A — gpt-image-1.5 low/1024×1024:

"usage": {
"input_tokens": 10,
"output_tokens": 402,
"input_tokens_details": { "text_tokens": 10, "image_tokens": 0 },
"output_tokens_details": { "text_tokens": 130, "image_tokens": 272 }
}
KomponenTokenTarifBiaya
Text input10$5/M$0.00005
Output text130$10/M$0.00130
Output image272$32/M$0.00870
Total$0.01005

Contoh B — gemini-2.5-flash-image, prompt 4 token, output 1.290 token:

"usage": {
"input_tokens": 4,
"output_tokens": 1290,
"total_tokens": 1294
}
KomponenTokenTarifBiaya
Text input4$0.30/M$0.0000012
Output image1.290$30/M$0.0387
Total$0.0387

Contoh C — imagen-4.0-generate-001:

Imagen tidak melaporkan token (selalu nol di response). Tarif tetap $0.04/gambar. Untuk n=2, total $0.08.


8. Verifikasi Tagihan

Setiap request menghasilkan satu baris di Spend Logs yang menyimpan usage lengkap. Kamu bisa memverifikasi tagihan apapun:

  1. Buka dashboard di https://lite.koboillm.com
  2. Login dengan API key kamu
  3. Buka menu Spend Logs
  4. Cari baris dengan request_id (didapat dari response.id setiap call)
  5. Lihat field metadata.usage_object — itu data token mentah dari provider
  6. Kalikan dengan tarif di §7.1 / §7.2 / §7.3 — hasilnya harus sama dengan kolom spend (selisih maksimal 1 sen).

Jika tagihan kelihatan tidak sesuai, hubungi tim platform dengan request_id-nya.


9. Penanganan Error

HTTP codeKemungkinan sebabTindakan
401API key salah/expiredCek key, hubungi platform jika perlu rotasi
403Budget tim sudah terlampauiTop up atau hubungi platform
400Parameter tidak valid (size/quality di luar spec)Periksa nilai sesuai §3
429Rate limit terlampauiTunggu, lalu retry dengan exponential backoff
500 / 502Error dari OpenAI / proxyRetry. Jika persistent, hubungi platform
524Cloudflare timeout (jarang)Request terlalu lama. Coba quality lebih rendah atau ukuran kecil dulu

Contoh struktur error

{
"error": {
"message": "Team budget exceeded: $5.00 spent of $5.00 limit.",
"type": "budget_exceeded",
"code": "403"
}
}

Retry dengan backoff (Python)

import time, random
def with_retry(fn, max_retries=3):
for attempt in range(max_retries):
try:
return fn()
except Exception as e:
if attempt == max_retries - 1:
raise
wait = (2 ** attempt) + random.random()
print(f"Retry dalam {wait:.1f}s setelah error: {e}")
time.sleep(wait)

10. Tips & Best Practices

Pemilihan model

  • Untuk thumbnail / generasi massalgpt-image-1-mini di low quality. ~$0.002 per gambar.
  • Harga konsisten (tidak naik turun per token) → Imagen series, flat fee per gambar.
  • Marketing / produk umumgpt-image-1.5 di medium atau high.
  • Detail kompleks, prompt panjanggpt-image-2 di high atau imagen-4.0-ultra.
  • Hindari chatgpt-image-latest untuk volume tinggi — biayanya bisa 10× lebih mahal dari gpt-image-1.5 setara.

Optimasi biaya

  • Mulai dengan quality=low untuk preview/iterasi prompt, lalu naik ke high setelah prompt-nya pas.
  • n=1 lebih efisien — generate ulang manual lebih murah dari batch.
  • Untuk edit, gunakan gpt-image-1.5 (input image cuma ~194 token vs ~1024 token di gpt-image-2).
  • Imagen fast variants ($0.02) lebih murah dari Imagen generate ($0.04), cocok untuk thumbnail.

Latency

  • low quality: 5–15 detik (OpenAI)
  • medium quality: 15–45 detik (OpenAI)
  • high quality: 30–90 detik (OpenAI, bisa lebih untuk gpt-image-2 dan chatgpt-image-latest)
  • Gemini: 5–60 detik tergantung resolusi
  • Imagen: 5–15 detik untuk fast, 10–30 detik untuk standard/ultra

Privasi & data

  • Jangan kirim PII (data pribadi) di prompt — semua dilewati ke provider.
  • Output gambar tidak disimpan di server proxy. Download segera atau simpan ke storage sendiri jika ingin permanen.

Pertanyaan?