Gambar

Create Image

Membuat gambar berdasarkan prompt

POST
/v1/images/generations

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, dan nano-banana-pro mendukung aspect_ratio ditambah resolution (1k, 2k, 4k) untuk operasi text-to-image, image-to-image, dan image-edit publik mereka.
  • nano-banana-2 mendukung aspect_ratio dan resolution (1k, 2k, 4k) untuk pembuatan text-to-image dan image-to-image.
  • gemini-3.1-flash-lite-image dan nano-banana-2-lite mendukung text-to-image, image-to-image, dan image-edit hanya pada resolusi 1k.
  • nano-banana mendukung aspect_ratio tetapi tidak mengekspos pemilihan resolution publik.
  • Untuk image-to-image dengan gemini-3.1-flash-image, gemini-nano-banana-2.1, gemini-3.1-flash-lite-image, atau gemini-3-pro-image, gunakan endpoint ini dengan operation: "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, atau nano-banana-pro pada endpoint ini (/v1/images/generations) dengan operation: "image-to-image" dan image_urls. Permintaan image-edit untuk nano-banana-2, nano-banana-2.1, nano-banana-2-lite, dan nano-banana-pro juga menggunakan endpoint ini, dengan operation: "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 multipart image. images[] dan file_id tidak diterima pada /v1/images/generations; buat referensi /v1/files hanya untuk model /v1/images/edits yang mendokumentasikan images[].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.

modelstringwajib

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.

promptstringwajib

Deskripsi teks dari gambar yang diinginkan.

image_urlstring

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.

image_urlsstring[]

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.

reference_image_urlsstring[]

URL gambar referensi tambahan untuk model yang membedakan input utama dari referensi.

imagefile

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.

nintegerbawaan: 1

Jumlah gambar yang akan dibuat (1-10, tergantung model).

sizestring

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.

aspect_ratiostring

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.

resolutionstring

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.

qualitystring

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.

response_formatstring

Bagaimana gambar dikembalikan: url atau b64_json.

  • Dihilangkan: ketika model mengembalikan byte gambar, setiap gambar ada di data[].b64_json, dan juga di data[].url saat TokenLab menyimpannya. Ketika model mengembalikan tautan, setiap gambar ada di data[].url.
  • url: setiap gambar hanya ada di data[].url.
  • b64_json: setiap gambar hanya ada di data[].b64_json sebagai data Base64.

Tautan adalah URL hasil media TokenLab. Tautan tetap valid selama 30 hari. Lihat Retensi data.

asyncbooleanbawaan: false

Atur 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.

stylestring

Pemilih gaya opsional. Hanya kirim ini jika model yang dipilih mendokumentasikannya secara eksplisit; hilangkan untuk gpt-image-2 kecuali metadata model menyatakan sebaliknya.

userstring

Pengidentifikasi unik untuk pengguna akhir.

Respons

Respons Inline

createdinteger

Timestamp Unix pembuatan.

dataarray

Array gambar yang dibuat.

Setiap objek berisi:

  • url (string): URL hasil media TokenLab dari gambar, valid selama 30 hari. Tidak ada jika response_format adalah b64_json. Jika response_format dihilangkan, bidang ini tidak ada jika TokenLab tidak dapat menyimpan gambar.
  • b64_json (string): Data gambar Base64. Ada jika response_format adalah b64_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.

createdinteger

Timestamp Unix pembuatan.

task_idstring

Pengidentifikasi tugas unik untuk polling.

statusstring

Status awal: pending.

poll_urlstring

URL relatif untuk melakukan polling hasil, contoh: /v1/tasks/{id}.

dataarray

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
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"
  }'
Python
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)
JavaScript
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
<?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
AuthorizationBearer <token>

Autentikasi API Key. Buat atau kelola API key di Dashboard > API > API Keys.

Lokasi: header

Header

X-TokenLab-Delivery-Policy?string

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"

Body permintaan

Respons

application/json

application/json

application/json

application/json

application/json

application/json

application/json