curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini-nano-banana-2.1",
"prompt": "Seekor kucing oranye di atas meja kayu di samping secangkir kopi, cahaya pagi yang lembut, fotografi realistis",
"size": "16:9",
"resolution": "2K",
"n": 1
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "gemini-nano-banana-2.1",
"prompt": "Seekor kucing oranye di atas meja kayu di samping secangkir kopi, cahaya pagi yang lembut, fotografi realistis",
"size": "16:9",
"resolution": "2K",
"n": 1
}
)
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/images/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "gemini-nano-banana-2.1",
prompt: "Seekor kucing oranye di atas meja kayu di samping secangkir kopi, cahaya pagi yang lembut, fotografi realistis",
size: "16:9",
resolution: "2K",
n: 1
})
});
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K..."
}
]
}
Nano banana 2.1
Nano banana 2.1 Pembuatan Gambar
Pembuatan teks ke gambar dan pengeditan gambar referensi dengan keluaran 1K / 2K / 4K serta 14 rasio aspek, tersedia dalam versi resmi dan Ext.
POST
/
v1
/
images
/
generations
curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini-nano-banana-2.1",
"prompt": "Seekor kucing oranye di atas meja kayu di samping secangkir kopi, cahaya pagi yang lembut, fotografi realistis",
"size": "16:9",
"resolution": "2K",
"n": 1
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "gemini-nano-banana-2.1",
"prompt": "Seekor kucing oranye di atas meja kayu di samping secangkir kopi, cahaya pagi yang lembut, fotografi realistis",
"size": "16:9",
"resolution": "2K",
"n": 1
}
)
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/images/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "gemini-nano-banana-2.1",
prompt: "Seekor kucing oranye di atas meja kayu di samping secangkir kopi, cahaya pagi yang lembut, fotografi realistis",
size: "16:9",
resolution: "2K",
n: 1
})
});
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K..."
}
]
}
Pemilihan model
| ID model | Penagihan | Gambar per permintaan | Ukuran gambar referensi |
|---|---|---|---|
gemini-nano-banana-2.1 | Penggunaan token aktual | 1–4 | Maksimal 20MB per gambar |
gemini-nano-banana-2.1-ext | Per gambar berdasarkan tingkat resolusi | Hanya 1 | Maksimal 20MB per gambar, total 50MB |
Endpoint ini bersifat asinkron. Pengiriman yang berhasil mengembalikan
task_id. Gunakan kueri tugas untuk mengambil status dan gambar. Lakukan polling setiap 3–5 detik dan atur batas waktu tunggu keseluruhan minimal 3 menit.curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gemini-nano-banana-2.1",
"prompt": "Seekor kucing oranye di atas meja kayu di samping secangkir kopi, cahaya pagi yang lembut, fotografi realistis",
"size": "16:9",
"resolution": "2K",
"n": 1
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "gemini-nano-banana-2.1",
"prompt": "Seekor kucing oranye di atas meja kayu di samping secangkir kopi, cahaya pagi yang lembut, fotografi realistis",
"size": "16:9",
"resolution": "2K",
"n": 1
}
)
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/images/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "gemini-nano-banana-2.1",
prompt: "Seekor kucing oranye di atas meja kayu di samping secangkir kopi, cahaya pagi yang lembut, fotografi realistis",
size: "16:9",
resolution: "2K",
n: 1
})
});
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K..."
}
]
}
Header permintaan
string
wajib
Autentikasi Bearer dengan format
Bearer <token>, dengan <token> sebagai APIMart API Key Anda.Parameter permintaan
string
wajib
ID model:
gemini-nano-banana-2.1 atau gemini-nano-banana-2.1-ext.string
wajib
Deskripsi teks untuk pembuatan atau pengeditan gambar. Mendukung bahasa Mandarin dan Inggris.
string
default:"auto"
Rasio aspek keluaran. Mendukung
1:4, 4:1, 1:8, 8:1, 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, dan 21:9. Format seperti 16x9 juga diterima.Jika dihilangkan atau diatur ke auto, model yang menentukan. Untuk gambar ke gambar, keluaran mengikuti rasio aspek gambar referensi.Versi resmi mendukung ke-14 rasio pada 1K, 2K, dan 4K. Ext mendukung 1:4, 4:1, 1:8, dan 8:1 hanya pada 1K. Pada 2K dan 4K, Ext hanya mendukung 10 rasio lainnya.string
default:"1K"
Tingkat resolusi keluaran:
1K, 2K, atau 4K. Huruf kecil juga diterima. Nilai ini turut memengaruhi penagihan.0.5K dan 512 tidak didukung dan mengembalikan HTTP 400 saat pengiriman. Nilai lain yang tidak dikenali, seperti 3K, menggunakan 1K untuk pembuatan dan penagihan. Gunakan hanya nilai yang didukung di atas.integer
default:"1"
Jumlah gambar yang dihasilkan: 1–4 untuk versi resmi; hanya 1 untuk Ext.Nilai di atas 4 langsung mengembalikan HTTP 400. Permintaan Ext dengan 2–4 gagal saat eksekusi dan menerima pengembalian dana penuh. Untuk beberapa gambar, kirim tugas Ext terpisah atau gunakan versi resmi.
string[]
Daftar gambar referensi. Hilangkan untuk teks ke gambar; sertakan untuk gambar ke gambar atau pengeditan. Setiap item mendukung:
- URL gambar HTTP(S) yang dapat diakses publik.
- Data URL Base64, seperti
data:image/png;base64,....
boolean
default:"false"
Hanya berlaku untuk
gemini-nano-banana-2.1-ext. Jika diaktifkan, sistem mencoba menyelesaikan tugas menggunakan versi resmi saat Ext gagal.Jika versi resmi benar-benar digunakan, penagihan beralih ke penggunaan token aktual versi resmi, bukan harga per gambar Ext.string
URL callback untuk pemberitahuan saat tugas berakhir. Lihat webhook tugas.
Referensi dimensi keluaran
| Rasio aspek | 1K | 2K | 4K |
|---|---|---|---|
| 1:1 | 1024×1024 | 2048×2048 | 4096×4096 |
| 2:3 | 848×1264 | 1696×2528 | 3392×5056 |
| 3:2 | 1264×848 | 2528×1696 | 5056×3392 |
| 3:4 | 896×1200 | 1792×2400 | 3584×4800 |
| 4:3 | 1200×896 | 2400×1792 | 4800×3584 |
| 4:5 | 928×1152 | 1856×2304 | 3712×4608 |
| 5:4 | 1152×928 | 2304×1856 | 4608×3712 |
| 9:16 | 768×1376 | 1536×2752 | 3072×5504 |
| 16:9 | 1376×768 | 2752×1536 | 5504×3072 |
| 21:9 | 1584×672 | 3168×1344 | 6336×2688 |
Mengedit gambar referensi
{
"model": "gemini-nano-banana-2.1-ext",
"prompt": "Tambahkan topi rajut merah pada kucing di gambar dan biarkan bagian lainnya tetap sama",
"image_urls": ["https://example.com/cat.jpg"],
"resolution": "1K"
}
size dihilangkan, keluaran mengikuti rasio aspek gambar referensi.
Pembuatan batch (hanya versi resmi)
{
"model": "gemini-nano-banana-2.1",
"prompt": "Kota bergaya cyberpunk pada malam hari, lampu neon, jalanan setelah hujan",
"size": "16:9",
"resolution": "2K",
"n": 4
}
Respons pengiriman
integer
Kode status respons.
200 menunjukkan keberhasilan.array
Hasil pengiriman tugas.
status adalah submitted. task_id digunakan untuk memeriksa status dan hasil tugas, bukan URL gambar akhir.Memeriksa hasil tugas
curl --request GET \
--url https://api.apimart.ai/v1/tasks/task_01K... \
--header 'Authorization: Bearer <token>'
{
"code": 200,
"data": {
"id": "task_01K...",
"status": "completed",
"progress": 100,
"result": {
"images": [
{
"url": ["https://example.com/generated-image.png"],
"expires_at": 1791417625
}
]
}
}
}
| Status tugas | Arti |
|---|---|
pending | Dalam antrean |
processing | Sedang dibuat |
completed | Berhasil; baca array URL gambar dari data.result.images[0].url |
failed | Gagal; alasan di data.error.message. Dana dikembalikan penuh; data.cost adalah 0 |
data.result.images[0].url. Jika 4 gambar dihasilkan, array berisi 4 tautan. Hanya gambar akhir yang dikembalikan; n=1 berarti 1 gambar akhir.
Tautan kedaluwarsa 24 jam setelah tugas selesai, sesuai expires_at. Segera unduh dan simpan gambar. Keluaran berupa PNG atau JPEG; ikuti isi file sebenarnya. data.cost dalam hasil kueri adalah biaya akhir dalam USD.
Penagihan
- Versi resmi: ditagih berdasarkan penggunaan token masukan dan keluaran aktual. Prompt dan gambar referensi dihitung sebagai masukan. Biaya dipotong di awal berdasarkan tingkat resolusi dan
n, kemudian disesuaikan dengan penggunaan aktual melalui pengembalian dana atau biaya tambahan. - Versi Ext: harga satuan tingkat resolusi × jumlah gambar aktual. Rasio aspek tidak memengaruhi tingkat resolusi. Jika
official_fallbackdiaktifkan dan versi resmi benar-benar digunakan, penagihan token versi resmi berlaku. - Lihat harga model untuk harga satuan. Permintaan yang ditolak saat pengiriman tidak membuat tugas dan tidak dikenai biaya. Tugas gagal menerima pengembalian dana penuh.
Kesalahan umum
| Kondisi | Tindakan |
|---|---|
| HTTP 400 | Periksa 0.5K / 512, n di atas 4, atau gambar referensi yang melebihi batas ukuran per gambar |
| HTTP 401 | Periksa API Key |
| HTTP 402 | Pastikan saldo mencukupi pemotongan awal |
| HTTP 429 | Batas permintaan tercapai; coba lagi dengan jeda yang bertambah |
| Tugas gagal: rasio aspek tidak didukung | Pastikan model dan resolusi mendukung size, atau gunakan auto |
| Tugas gagal: beberapa gambar diminta dengan Ext | Atur n ke 1 atau gunakan versi resmi |
| Tugas gagal: diblokir pemeriksaan keamanan konten | Ubah prompt atau gambar referensi lalu coba lagi |
| Tugas gagal: unduhan gambar referensi gagal | Pastikan URL gambar dapat diakses publik |
Nano banana 2.1 dan Gemini 3.1 Flash Image adalah model berbeda; nama model tidak dapat dipakai sebagai alias satu sama lain. Saat bermigrasi dari model terakhir, ubah resolusi
0.5K yang tidak didukung.