Gambar
Create Image
Membuat gambar berdasarkan prompt
Gambaran Umum
Gunakan GET /v1/models?recommended_for=image untuk mendapatkan model gambar saat ini, kemudian kirim model yang dipilih secara eksplisit.
gpt-image-2 adalah model GPT Image dengan harga berbasis token. TokenLab mengikuti rincian penggunaan resmi OpenAI untuk input teks, input gambar, input yang di-cache, dan token output gambar; model ini tidak ditagih sebagai model dengan harga tetap per gambar.
Untuk pembuatan gambar gpt-image-2, parameter publik yang didukung adalah prompt, n, size, quality, response_format, async, background, output_format, output_compression atau compression, moderation, dan user. background menerima auto atau opaque; transparent tidak didukung. Hilangkan size atau quality agar TokenLab menggunakan auto; nilai size kustom harus menggunakan kontrak WIDTHxHEIGHT fleksibel yang didokumentasikan di bawah.
input_fidelity bukan bagian dari bidang yang didukung TokenLab saat ini untuk gpt-image-2; hilangkan bidang tersebut atau permintaan akan mengembalikan 400 unsupported_parameter.
Catatan perilaku model
Model keluarga gambar Google Gemini tidak menggunakan kontrak pemilih yang sama:
gemini-3.1-flash-image,gemini-nano-banana-2.1,gemini-3-pro-image,nano-banana-2.1, dannano-banana-promendukungaspect_ratioditambahresolution(1k,2k,4k) untuk operasi text-to-image, image-to-image, dan image-edit publik mereka.nano-banana-2mendukungaspect_ratiodanresolution(1k,2k,4k) untuk pembuatan text-to-image dan image-to-image.gemini-3.1-flash-lite-imagedannano-banana-2-litemendukung text-to-image, image-to-image, dan image-edit hanya pada resolusi1k.nano-bananamendukungaspect_ratiotetapi tidak mengekspos pemilihanresolutionpublik.- Untuk image-to-image dengan
gemini-3.1-flash-image,gemini-nano-banana-2.1,gemini-3.1-flash-lite-image, ataugemini-3-pro-image, gunakan endpoint ini denganoperation: "image-to-image"dan gambar referensi. Kirim permintaan image-edit untuk model-model ini ke/v1/images/edits. - Untuk permintaan gambar referensi Nano Banana, gunakan
nano-banana-2,nano-banana-2.1,nano-banana-2-lite, ataunano-banana-propada endpoint ini (/v1/images/generations) denganoperation: "image-to-image"danimage_urls. Permintaan image-edit untuknano-banana-2,nano-banana-2.1,nano-banana-2-lite, dannano-banana-projuga menggunakan endpoint ini, denganoperation: "image-edit". Jangan kirim permintaan gambar referensi Nano Banana ke/v1/images/edits. - Gambar referensi pada endpoint ini dapat diberikan sebagai JSON
image_url/image_urls, atau sebagai file multipartimage.images[]danfile_idtidak diterima pada/v1/images/generations; buat referensi/v1/fileshanya untuk model/v1/images/editsyang mendokumentasikanimages[].file_id.
Untuk keluarga gambar Google, lebih disarankan menggunakan aspect_ratio dan hanya kirim resolution jika model mendukungnya secara eksplisit.
Model gambar xAI Grok Imagine (grok-imagine-image, grok-imagine-image-2.0, dan versi lama grok-imagine-image-pro) mendukung aspect_ratio ditambah resolution (1k, 2k). grok-imagine-image-pro dipertahankan sebagai ID kompatibilitas untuk grok-imagine-image-2.0.
Isi Permintaan
Timeout permintaan sinkron: Beberapa permintaan gambar mengembalikan gambar akhir secara inline dan menunggu pembuatan selesai. Permintaan resolusi tinggi atau kualitas tinggi dapat memakan waktu hampir satu menit atau lebih, jadi atur timeout klien HTTP Anda setidaknya ke 120s. Jika respons pembuatan menyertakan status: "pending", task_id, atau poll_url, ikuti poll_url yang dikembalikan.
Model yang akan digunakan (contoh: gpt-image-2, flux-pro-1.1, atau nano-banana-pro). Kueri GET /v1/models?recommended_for=image untuk daftar rekomendasi saat ini.
Deskripsi teks dari gambar yang diinginkan.
URL gambar referensi HTTPS publik untuk pembuatan image-to-image. Untuk permintaan gambar referensi Nano Banana, atur operation ke image-to-image; nano-banana-pro mungkin menyertakan resolution.
URL gambar referensi HTTPS publik. Gunakan ini untuk satu atau lebih gambar referensi dalam permintaan JSON. file_id dan images[] tidak didukung pada endpoint ini.
URL gambar referensi tambahan untuk model yang membedakan input utama dari referensi.
File gambar referensi multipart untuk pembuatan image-to-image. Gunakan ini jika gambar sumber bersifat pribadi atau dilindungi header. Ini berbeda dari file_id /v1/files, yang tidak diterima pada endpoint ini.
1Jumlah gambar yang akan dibuat (1-10, tergantung model).
Ukuran gambar. Gunakan ini untuk keluarga gambar gaya OpenAI dan model lain yang menerima ukuran piksel eksak.
Untuk gpt-image-2, size menerima auto atau WIDTHxHEIGHT. Dimensi kustom harus merupakan kelipatan 16, tepi terpanjang maksimal 3840px, rasio panjang/pendek maksimal 3:1, dan total piksel harus antara 655,360 dan 8,294,400. aspect_ratio dan resolution bukan bagian dari detail model TokenLab saat ini untuk gpt-image-2.
Untuk model gambar Google dengan tingkatan resolusi (gemini-3.1-flash-image, gemini-nano-banana-2.1, gemini-3-pro-image, gemini-3.1-flash-lite-image, nano-banana-2, nano-banana-2.1, dan nano-banana-pro), size menerima ukuran output dari tabel ukuran model, seperti 1376x768 (16:9 pada 1K), atau tingkatan resolusi: 1K, 2K, atau 4K. TokenLab mengirimkan tingkatan sebagai resolution, sehingga permintaan dan harganya sama dengan resolution. Tingkatan yang tidak didukung model (contoh: 2K pada gemini-3.1-flash-lite-image), atau tingkatan yang berbeda dari resolution, akan mengembalikan 400 dengan kode invalid_image_size_contract dan allowed_resolutions model tersebut. Untuk model-model ini, bentuk yang disarankan adalah aspect_ratio dengan resolution.
Pemilih rasio aspek yang bergantung pada model.
Nilai keluarga gambar Google yang umum mencakup 1:1, 16:9, 9:16, 3:2, dan 2:3.
Resolusi output yang bergantung pada model. gemini-3.1-flash-image, gemini-nano-banana-2.1, gemini-3-pro-image, nano-banana-2, nano-banana-2.1, dan nano-banana-pro mendukung 1k, 2k, dan 4k; model gambar Grok Imagine mendukung 1k dan 2k. Hilangkan bidang ini kecuali model dan operasi yang dipilih mendukungnya secara eksplisit.
Kualitas gambar. Model GPT Image seperti gpt-image-2 menggunakan auto, low, medium, atau high. Model lain mungkin menggunakan nilai berbeda; periksa detail model sebelum mengirim nilai non-default.
Bagaimana gambar dikembalikan: url atau b64_json.
- Dihilangkan: ketika model mengembalikan byte gambar, setiap gambar ada di
data[].b64_json, dan juga didata[].urlsaat TokenLab menyimpannya. Ketika model mengembalikan tautan, setiap gambar ada didata[].url. url: setiap gambar hanya ada didata[].url.b64_json: setiap gambar hanya ada didata[].b64_jsonsebagai data Base64.
Tautan adalah URL hasil media TokenLab. Tautan tetap valid selama 30 hari. Lihat Retensi data.
falseAtur ke true dengan gpt-image-2 atau model gambar FLUX/BFL resmi untuk membuat tugas terlebih dahulu. Tugas gambar asinkron yang selesai mengembalikan URL terlepas dari response_format yang diminta; gunakan permintaan sinkron jika Anda memerlukan b64_json.
Pemilih gaya opsional. Hanya kirim ini jika model yang dipilih mendokumentasikannya secara eksplisit; hilangkan untuk gpt-image-2 kecuali metadata model menyatakan sebaliknya.
Pengidentifikasi unik untuk pengguna akhir.
Respons
Respons Inline
Timestamp Unix pembuatan.
Array gambar yang dibuat.
Setiap objek berisi:
url(string): URL hasil media TokenLab dari gambar, valid selama 30 hari. Tidak ada jikaresponse_formatadalahb64_json. Jikaresponse_formatdihilangkan, bidang ini tidak ada jika TokenLab tidak dapat menyimpan gambar.b64_json(string): Data gambar Base64. Ada jikaresponse_formatadalahb64_json, atau jika dihilangkan dan model mengembalikan byte gambar.revised_prompt(string): Revisi prompt opsional, jika model yang dipilih mengembalikannya.
Respons Tugas Asinkron
Atur async: true dengan gpt-image-2 atau model gambar FLUX/BFL resmi untuk membuat tugas alih-alih menunggu gambar akhir dalam permintaan pembuatan. Respons menyertakan status: "pending", task_id, dan poll_url. Lakukan polling /v1/tasks/{task_id} hingga tugas mencapai completed atau failed.
Tugas gambar asinkron hanya mengembalikan URL gambar akhir. Jika Anda memerlukan data gambar b64_json mentah, gunakan permintaan sinkron.
Penagihan mungkin mencadangkan jumlah estimasi saat tugas dibuat. Tugas yang selesai ditagih berdasarkan penggunaan aktual, dan tugas yang gagal atau timeout akan dirilis atau dikembalikan dananya.
Timestamp Unix pembuatan.
Pengidentifikasi tugas unik untuk polling.
Status awal: pending.
URL relatif untuk melakukan polling hasil, contoh: /v1/tasks/{id}.
Kosong saat tugas tertunda. Tugas gambar yang selesai mengembalikan URL gambar yang dibuat di data[].url.
Ketika Anda menerima status: "pending", gunakan poll_url atau GET /v1/tasks/{task_id} untuk mengambil hasilnya.
Permintaan
curl -X POST "https://api.tokenlab.sh/v1/images/generations" \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3-pro-image",
"prompt": "A cinematic portrait of a white cat sitting on a rainy windowsill",
"aspect_ratio": "16:9",
"resolution": "2k"
}'from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://api.tokenlab.sh/v1"
)
response = client.images.generate(
model="gemini-3-pro-image",
prompt="A cinematic portrait of a white cat sitting on a rainy windowsill",
extra_body={"aspect_ratio": "16:9", "resolution": "2k"}
)
print(response.data[0].url)import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'sk-your-api-key',
baseURL: 'https://api.tokenlab.sh/v1'
});
const response = await client.images.generate({
model: 'gemini-3-pro-image',
prompt: 'A cinematic portrait of a white cat sitting on a rainy windowsill',
aspect_ratio: '16:9',
resolution: '2k'
});
console.log(response.data[0].url);<?php
$ch = curl_init('https://api.tokenlab.sh/v1/images/generations');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer sk-your-api-key'
],
CURLOPT_POSTFIELDS => json_encode([
'model' => 'gemini-3-pro-image',
'prompt' => 'A cinematic portrait of a white cat sitting on a rainy windowsill',
'aspect_ratio' => '16:9',
'resolution' => '2k'
])
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
echo $data['data'][0]['url'];Contoh keluarga gambar rasio saja: untuk nano-banana, kirim aspect_ratio tetapi hilangkan resolution:
{
"model": "nano-banana",
"prompt": "A clean editorial product shot of a citrus soda can",
"aspect_ratio": "16:9"
}Contoh gambar referensi Nano Banana Pro: kirim permintaan ke /v1/images/generations, bukan /v1/images/edits. resolution bersifat opsional dan dapat diatur ke 1k, 2k, atau 4k:
{
"model": "nano-banana-pro",
"prompt": "Create a clean cinematic character image based on the reference images",
"operation": "image-to-image",
"image_urls": ["https://example.com/reference-1.png"],
"aspect_ratio": "1:1",
"resolution": "2k"
}Contoh unggahan multipart langsung untuk gambar sumber pribadi atau lokal. Jangan berikan file_id ke /v1/images/generations:
curl -X POST "https://api.tokenlab.sh/v1/images/generations" \
-H "Authorization: Bearer sk-your-api-key" \
-F "model=nano-banana-pro" \
-F "prompt=Create a clean cinematic character image based on this reference" \
-F "operation=image-to-image" \
-F "image=@reference.png" \
-F "aspect_ratio=1:1" \
-F "resolution=2k"Respons
{
"created": 1706000000,
"data": [
{
"url": "https://...",
"revised_prompt": "A fluffy white cat with bright eyes sitting peacefully on a wooden windowsill, watching raindrops stream down the glass window..."
}
]
}Memilih Model
Kueri GET /v1/models?recommended_for=image atau gunakan halaman Model untuk ketersediaan, kemampuan, dan harga saat ini.
Jangan melakukan hard-code model sebagai selalu sinkron atau selalu asinkron. Jika respons pembuatan mengembalikan status: "pending", ikuti poll_url dan lakukan polling hingga selesai.
Menangani Respons Berbasis Tugas
Untuk model gambar, selalu periksa apakah respons berisi status: "pending" / status: "processing":
import requests
import time
def generate_image(prompt, model="gpt-image-2"):
# Buat permintaan gambar
response = requests.post(
"https://api.tokenlab.sh/v1/images/generations",
headers={"Authorization": "Bearer sk-your-api-key"},
json={"model": model, "prompt": prompt, "async": True},
timeout=120
)
response.raise_for_status()
data = response.json()
# Periksa apakah berbasis tugas
if data.get("status") in ("pending", "processing"):
task_id = data["task_id"]
poll_url = data.get("poll_url")
print(f"Image task started: {task_id}")
# Polling untuk hasil
while True:
status_resp = requests.get(
f"https://api.tokenlab.sh{poll_url}" if poll_url else f"https://api.tokenlab.sh/v1/tasks/{task_id}",
headers={"Authorization": "Bearer sk-your-api-key"},
timeout=30
)
status_resp.raise_for_status()
status_data = status_resp.json()
if status_data["status"] == "completed":
return status_data["data"][0]["url"]
elif status_data["status"] == "failed":
raise Exception(status_data.get("error", "Generation failed"))
time.sleep(3)
else:
# Respons inline
return data["data"][0]["url"]
# Penggunaan
url = generate_image("a beautiful sunset over mountains", model="gpt-image-2")
print(f"Generated image: {url}")Hy Image 3.5 Preview membuat gambar persegi 1024-piksel dari teks dan mengedit gambar referensi menggunakan instruksi tertulis. Ini berguna untuk membuat draf visual dan menyempurnakan komposisi.
{
"model": "hy-image-v3.5-preview",
"prompt": "A yellow lemon on a white table",
"size": "1024x1024",
"n": 1,
"response_format": "url"
}Otorisasi
BearerAuth Autentikasi API Key. Buat atau kelola API key di Dashboard > API > API Keys.
Lokasi: header
Header
Kebijakan Pengiriman per-permintaan. Menggantikan default API key dan Workspace. Secara otomatis mencoba TokenLab Verified terlebih dahulu dan dapat beralih satu kali ke Official saja sebelum output, penerimaan permintaan, atau pembuatan sumber daya persisten.
Nilai yang tersedia
- "auto"
- "verified"
- "official"
Respons
application/json
application/json
application/json
application/json
application/json
application/json
application/json