Nano Banana 2.1 API
Generate one image asynchronously per request. Supports text-to-image and image-to-image generation with your Seevio API key.
POST https://api.seevio.ai/v1/images/generationsKemampuan
| Fitur | Nilai yang didukung |
|---|---|
| Mode pembuatan | text-to-image, image-to-image |
| Resolusi output | 1K, 2K, 4K |
| Rasio aspek | auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 5:4, 4:5, 21:9, 4:1, 1:4, 8:1, 1:8 |
| Gambar referensi | Public HTTPS PNG / JPEG / WebP URLs. Image-to-image requires 1–10 images, each up to 30 MB. Text-to-image requires an empty array. |
| Perintah (Prompt) | Required non-empty prompt, up to 20000 characters. |
| Format keluaran | png, jpg |
Harga & kredit
Setiap permintaan menghasilkan satu gambar. Kredit bergantung pada resolusi di bawah. Kredit dicadangkan saat diterima, ditagih saat berhasil, dan dikembalikan jika gagal.
| Resolusi output | Harga & kredit |
|---|---|
| 1K | 2 kredit |
| 2K | 3 kredit |
| 4K | 4 kredit |
Idempotensi permintaan tidak didukung. Setiap POST yang valid akan membuat tugas berbayar baru. Jika hasil pengiriman belum pasti, lakukan kueri pada taskId yang dikembalikan; mencoba ulang POST dapat membuat tugas baru lainnya.
Autentikasi
Buat kunci API di dasbor. Kunci lengkap hanya akan ditampilkan sekali. Simpan di server Anda dan kirimkan sebagai Bearer token pada setiap permintaan.
URL Basis
https://api.seevio.aiAuthorization: Bearer sk_live_your_api_key
Content-Type: application/jsonAtur variabel lingkungan SEEVIO_API_KEY sebelum menjalankan contoh ini. Contoh JavaScript dijalankan di server Anda menggunakan Node.js; contoh Python menggunakan paket requests.
Isi permintaan
| Kolom | Tipe | Wajib | Deskripsi & batasan |
|---|---|---|---|
model | string | Ya | ID Model. Untuk menggunakan Nano Banana 2.1, atur bidang ini ke nano-banana-2-1. |
callback_url | string | Tidak | Endpoint HTTPS publik untuk callback POST selesai dan gagal. Jaringan privat dan localhost tidak diizinkan. Contoh: https://example.com/webhooks/seevio |
input | object | Ya | Pengaturan pembuatan. Harus berisi prompt yang tidak kosong. |
Parameter input
| Kolom | Tipe | Wajib | Default | Deskripsi & batasan |
|---|---|---|---|---|
input.prompt | string | Ya | — | Required non-empty prompt, up to 20000 characters. Contoh: A minimalist ceramic teapot on a stone pedestal, soft studio lighting |
input.generation_type | string | Tidak | text-to-image | Untuk pengeditan gambar, atur generation_type ke image-to-image dan cantumkan image_urls. Parameter lainnya menggunakan ketentuan yang sama. Nilai yang didukung text-to-image | image-to-image |
input.image_urls | string[] | Kondisional | [] | Public HTTPS PNG / JPEG / WebP URLs. Image-to-image requires 1–10 images, each up to 30 MB. Text-to-image requires an empty array. Contoh: ["https://example.com/teapot.png"] |
input.aspect_ratio | string | Tidak | auto | Rasio aspek Nilai yang didukung auto | 1:1 | 16:9 | 9:16 | 4:3 | 3:4 | 3:2 | 2:3 | 5:4 | 4:5 | 21:9 | 4:1 | 1:4 | 8:1 | 1:8Contoh: 1:1 |
input.resolution | string | Tidak | 2K | Gunakan salah satu resolusi output yang didukung yang tercantum di sini. Nilai yang didukung 1K | 2K | 4KContoh: 2K |
input.output_format | string | Tidak | png | Nilai yang didukung png | jpgContoh: png |
Rasio aspek default diatur ke auto. Setiap permintaan menghasilkan tepat satu gambar.
Mulai cepat
Kirim permintaan minimal ini, simpan taskId yang dikembalikan, lalu gunakan contoh kueri tugas di bawah ini. Nilai kredit dalam respons pembuatan adalah jumlah yang dicadangkan.
curl --fail-with-body https://api.seevio.ai/v1/images/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "nano-banana-2-1",
"input": {
"prompt": "A minimalist ceramic teapot on a stone pedestal, soft studio lighting",
"aspect_ratio": "1:1",
"resolution": "2K",
"output_format": "png",
"generation_type": "text-to-image"
}
}'Contoh respons pembuatan tugas
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 3
}Teks ke gambar
Generate one image asynchronously per request. Supports text-to-image and image-to-image generation with your Seevio API key.
curl --fail-with-body https://api.seevio.ai/v1/images/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "nano-banana-2-1",
"input": {
"prompt": "A minimalist ceramic teapot on a stone pedestal, soft studio lighting",
"aspect_ratio": "1:1",
"resolution": "2K",
"output_format": "png",
"generation_type": "text-to-image"
}
}'Gambar ke gambar
Untuk pengeditan gambar, atur generation_type ke image-to-image dan cantumkan image_urls. Parameter lainnya menggunakan ketentuan yang sama.
Ganti URL media example.com dengan file HTTPS Anda sendiri yang dapat diakses publik. URL contoh ini hanya menunjukkan struktur permintaan dan bukan aset sampel yang dapat diunduh.
curl --fail-with-body https://api.seevio.ai/v1/images/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "nano-banana-2-1",
"input": {
"prompt": "Change the teapot to matte sage green. Preserve its shape and the studio lighting.",
"aspect_ratio": "1:1",
"resolution": "2K",
"output_format": "png",
"generation_type": "image-to-image",
"image_urls": [
"https://example.com/teapot.png"
]
}
}'Kueri tugas
GET https://api.seevio.ai/v1/tasks/{taskId}Ganti ID contoh dengan taskId yang dikembalikan oleh pembuatan. Kueri hanya mengembalikan tugas milik pengguna dari kunci API tersebut; ID yang tidak dapat diakses atau tidak dikenal akan mengembalikan HTTP 404.
Lakukan polling setiap 10–20 detik sebagai permulaan, kurangi frekuensi pada HTTP 429, dan hentikan saat status telah selesai atau gagal. Gunakan webhook untuk produksi. Setiap contoh kode di bawah ini melakukan satu kueri.
curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer $SEEVIO_API_KEY"| Status | Nilai yang diizinkan dan persyaratan |
|---|---|
| queued | Diterima dan menunggu pengiriman. |
| generating | Pembuatan sedang berlangsung. |
| completed | Selesai dengan sukses. Unduh data.results sebelum kedaluwarsa. |
| failed | Gagal total. Periksa failed_reason dan billing_status. |
| Bidang | Tipe | Nilai yang diizinkan dan persyaratan |
|---|---|---|
| id | string | Pengidentifikasi tugas. Ini adalah taskId dari respons pembuatan. |
| created_at | number | Waktu pembuatan tugas dalam detik Unix. |
| model | string | ID model publik yang digunakan untuk tugas ini. |
| billing_status | string | reserved, charged, refunded, atau refund_failed. |
| credits | number | Kredit yang dicadangkan untuk tugas ini. Nilai ini tetap ada setelah pengembalian dana; periksa billing_status untuk menentukan hasil akhir penagihan. |
| failed_reason | string | null | Alasan kegagalan pada tugas yang gagal; jika tidak, nilainya null. Respons kueri yang gagal mengosongkan data. |
| failed_code | string | null | Kode kesalahan. Lihat failed_reason untuk detail kesalahan. |
| data | object | Ada pada kueri tugas yang tidak gagal. Berisi detail output dan pemrosesan. |
| data.results | string[] | Larik URL gambar; kosong sebelum selesai dan setelah kedaluwarsa. |
| data.image_expires_at | string | null | Waktu kedaluwarsa gambar dalam format ISO 8601, atau null jika belum tersedia. |
| data.processing_time | number | null | Durasi pemrosesan tugas dalam detik jika tersedia, jika tidak maka bernilai null. |
Dalam antrean
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1789171200,
"model": "nano-banana-2-1",
"credits": 3,
"failed_code": null,
"status": "queued",
"billing_status": "reserved",
"failed_reason": null,
"data": {
"results": [],
"image_expires_at": null,
"processing_time": null
}
}Selesai
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1789171200,
"model": "nano-banana-2-1",
"credits": 3,
"failed_code": null,
"status": "completed",
"billing_status": "charged",
"failed_reason": null,
"data": {
"results": [
"https://cdn.seevio.ai/api/images/example.png"
],
"image_expires_at": "2026-10-12T00:00:00.000Z",
"processing_time": 12
}
}Gagal
Ketika kueri mengembalikan status=failed, proses pembuatan gambar gagal. Lihat failed_reason untuk mengetahui penyebabnya dan billing_status untuk hasil pengembalian dana. Pada contoh ini, refunded berarti kredit telah dikembalikan. credits tetap menampilkan jumlah awal yang dicadangkan, dan respons tidak menyertakan data.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1789171200,
"model": "nano-banana-2-1",
"credits": 3,
"failed_code": "400",
"status": "failed",
"billing_status": "refunded",
"failed_reason": "The input or output was flagged as sensitive. Please try again with different inputs."
}Tautan hasil tersedia selama 30 hari setelah penyimpanan. Setelah masa kedaluwarsa habis, results akan kosong.
Webhook
Atur callback_url dalam permintaan buat untuk menerima POST JSON saat tugas selesai atau gagal. Kembalikan respons 2xx dalam waktu 15 detik. Pengiriman yang gagal akan dicoba kembali; proses pengiriman berulang secara idempoten berdasarkan ID tugas.
Endpoint callback Anda harus menerima permintaan POST dengan body permintaan JSON (Content-Type: application/json).
Buat tugas dengan callback
curl --fail-with-body https://api.seevio.ai/v1/images/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "nano-banana-2-1",
"input": {
"prompt": "A minimalist ceramic teapot on a stone pedestal, soft studio lighting",
"aspect_ratio": "1:1",
"resolution": "2K",
"output_format": "png",
"generation_type": "text-to-image"
},
"callback_url": "https://example.com/webhooks/seevio"
}'Panggilan balik (callback) menggunakan struktur respons kueri tugas; notifikasi kegagalan yang dananya dikembalikan juga menyertakan credits_refunded tingkat atas. Gunakan id untuk mengidentifikasi tugas dan status untuk membedakan antara tugas yang selesai dan gagal. Notifikasi dapat terkirim berulang kali: proses secara idempoten berdasarkan id dan status. Panggilan balik tidak ditandatangani; verifikasi tugas menggunakan titik akhir (endpoint) kueri yang terautentikasi. Kegagalan pengiriman notifikasi tidak menyebabkan pengembalian dana untuk tugas yang berhasil.
Tugas selesai: payload callback sukses
created_at adalah waktu pembuatan peristiwa; task_created_at adalah waktu pembuatan tugas, dalam detik Unix. Contoh menampilkan kolom yang disarankan; respons dapat memuat kolom tambahan.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1789171212,
"model": "nano-banana-2-1",
"credits": 3,
"failed_code": null,
"status": "completed",
"billing_status": "charged",
"failed_reason": null,
"data": {
"results": [
"https://cdn.seevio.ai/api/images/example.png"
],
"image_expires_at": "2026-10-12T00:00:00.000Z",
"processing_time": 12
},
"task_created_at": 1789171200
}Tugas gagal: payload callback gagal
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1789171212,
"model": "nano-banana-2-1",
"credits": 3,
"failed_code": "400",
"status": "failed",
"billing_status": "refunded",
"failed_reason": "The input or output was flagged as sensitive. Please try again with different inputs.",
"task_created_at": 1789171200,
"credits_refunded": 3
}Contoh penerima
export async function POST(request: Request) {
const callbackData = await request.json();
if (callbackData.status === "completed") {
const imageUrls = callbackData.data.results;
// Save the image URLs and mark this task as completed in your application.
console.log(callbackData.id, imageUrls);
}
if (callbackData.status === "failed") {
const { failed_reason, credits_refunded } = callbackData;
// Record the failure reason and refunded credits for this task.
console.error(callbackData.id, failed_reason, credits_refunded);
}
return new Response(null, { status: 200 });
}Contoh Next.js ini membaca body callback JSON dan menangani tugas yang berhasil serta gagal secara langsung. Tambahkan persistensi dan deduplikasi ID tugas untuk aplikasi Anda; antrekan pekerjaan yang lambat sebelum mengonfirmasi callback.
Error
Error HTTP memiliki objek error dengan kode dan pesan. Tugas yang berhasil diterima masih bisa gagal nanti; kueri tugas atau tangani callback kegagalannya.
{
"error": {
"code": "invalid_request",
"message": "input.prompt is required."
}
}| HTTP | Kolom | Tindakan |
|---|---|---|
| 400 | invalid_request | Perbaiki JSON, prompt yang hilang, rentang parameter, atau URL media sebelum mencoba lagi. |
| 401 | invalid_api_key | Periksa Bearer token dan apakah kunci API aktif. |
| 402 | insufficient_credits | Tambahkan kredit atau kurangi biaya tugas. Respons mungkin menyertakan jumlah yang diperlukan dan yang tersedia. |
| 403 | forbidden | Periksa batasan tingkat akun yang dijelaskan dalam pesan kesalahan. |
| 404 | not_found | Periksa ID tugas dan pastikan kunci tersebut milik pengguna tugas. |
| 429 | rate_limited | Tunggu interval Retry-After sebelum mencoba lagi. |
| 500 | internal_error | Periksa pesan error dan log API. Coba lagi dengan hati-hati; mengirim ulang permintaan pembuatan dapat membuat tugas berbayar lainnya. |
Error menggunakan error.code dan error.message: 400 invalid_request, 401 invalid_api_key, 402 insufficient_credits, 403 forbidden, 404 not_found, 429 rate_limited, 500 internal_error. Error 402 insufficient_credits berarti kredit Anda yang tersedia tidak mencukupi untuk permintaan ini.
Batas frekuensi
Membuat tugas: secara default, setiap kunci API mengizinkan hingga 100 permintaan per menit. Batas frekuensi kustom saat ini belum tersedia.
Kueri tugas: secara default, setiap kunci API mengizinkan hingga 120 permintaan per menit. Permintaan kueri dan permintaan pembuatan tugas dihitung secara terpisah.
Permintaan pembuatan gambar dan video berbagi batas tingkat (rate limit) kunci API yang sama.
HTTP 429 menyertakan Retry-After: 60 untuk pembuatan dan Retry-After: 5 untuk kueri. Gunakan backoff dan hindari polling lebih sering dari yang diperlukan.
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 60{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded."
}
}