Lompati ke dokumentasi
Pada halaman ini

Nano Banana 2 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/generations

Kemampuan

FiturNilai yang didukung
Mode pembuatantext-to-image, image-to-image
Resolusi output1K, 2K, 4K
Rasio aspekauto, 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 referensiPublic HTTPS PNG / JPEG / WebP URLs. Image-to-image requires 1–14 images, each up to 30 MB. Text-to-image requires an empty array.
PromptRequired non-empty prompt, up to 20000 characters.
Format keluaranpng, jpg

Harga & kredit

Each image costs 4 credits, including all supported resolutions and formats. Credits are reserved on acceptance, settled on success and refunded on failure. Generation times out after 30 minutes; refund_failed means refund recovery is pending.

Request idempotency is not supported. Each valid POST creates a new billable task. If a submission outcome is uncertain, query the returned taskId; retrying POST can create another task.

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.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

Atur 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

KolomTipeWajibDeskripsi & batasan
model
stringYa

ID Model. Untuk menggunakan Nano Banana 2, atur bidang ini ke nano-banana-2.

callback_url
stringTidak

Endpoint HTTPS publik untuk callback POST selesai dan gagal. Jaringan privat dan localhost tidak diizinkan.

Contoh: https://example.com/webhooks/seevio
input
objectYa

Pengaturan pembuatan. Harus berisi prompt yang tidak kosong.

Parameter input

KolomTipeWajibDefaultDeskripsi & batasan
input.prompt
stringYa

Required non-empty prompt, up to 20000 characters.

Contoh: A minimalist ceramic teapot on a stone pedestal, soft studio lighting
input.generation_type
stringTidaktext-to-image

For image editing, set generation_type to image-to-image and provide image_urls. All other parameters use the same contract.

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–14 images, each up to 30 MB. Text-to-image requires an empty array.

Contoh: ["https://example.com/teapot.png"]
input.aspect_ratio
stringTidakauto

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:8
Contoh: 1:1
input.resolution
stringTidak2K

Gunakan salah satu resolusi output yang didukung yang tercantum di sini.

Nilai yang didukung
1K | 2K | 4K
Contoh: 2K
input.output_format
stringTidakpng
Nilai yang didukung
png | jpg
Contoh: png

Aspect ratio defaults to auto. Unknown fields, including output quantity, are rejected. Each request generates exactly one image.

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",
  "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": 4
}

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",
  "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

For image editing, set generation_type to image-to-image and provide image_urls. All other parameters use the same contract.

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",
  "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"
StatusAllowed values and requirements
queuedDiterima dan menunggu pengiriman.
generatingPembuatan sedang berlangsung.
completedSelesai dengan sukses. Unduh data.results sebelum kedaluwarsa.
failedGagal total. Periksa failed_reason dan billing_status.
FieldTipeAllowed values and requirements
idstringPengidentifikasi tugas. Ini adalah taskId dari respons pembuatan.
created_atnumberWaktu pembuatan tugas dalam detik Unix.
modelstringID model publik yang digunakan untuk tugas ini.
billing_statusstringreserved, charged, refunded, atau refund_failed.
creditsnumberKredit yang dicadangkan untuk tugas ini. Nilai ini tetap ada setelah pengembalian dana; periksa billing_status untuk menentukan hasil akhir penagihan.
failed_reasonstring | nullAlasan kegagalan pada tugas yang gagal; jika tidak, nilainya null. Respons kueri yang gagal mengosongkan data.
dataobjectAda pada kueri tugas yang tidak gagal. Berisi detail output dan pemrosesan.
data.resultsstring[]Larik URL gambar; kosong sebelum selesai dan setelah kedaluwarsa.
data.image_expires_atstring | nullWaktu kedaluwarsa gambar dalam format ISO 8601, atau null jika belum tersedia.
data.processing_timenumber | nullDurasi pemrosesan penyedia dalam detik saat tersedia, jika tidak nilainya null.

Dalam antrean

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1789171200,
  "model": "nano-banana-2",
  "credits": 4,
  "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",
  "credits": 4,
  "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",
  "credits": 4,
  "status": "failed",
  "billing_status": "refunded",
  "failed_reason": "Image generation failed."
}

Result links are provided for 30 days after storage. After expiry, results is empty.

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",
  "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"
}'

Callbacks use the task query response structure; refunded failure notifications also include top-level credits_refunded. Use id to identify the task and status to distinguish completed from failed. Notifications may repeat: process them idempotently by id and status. Callbacks are unsigned; verify the task with the authenticated query endpoint. Delivery failure does not refund a successful task.

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",
  "credits": 4,
  "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",
  "credits": 4,
  "status": "failed",
  "billing_status": "refunded",
  "failed_reason": "Image generation failed.",
  "task_created_at": 1789171200,
  "credits_refunded": 4
}

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."
  }
}
HTTPKolomTindakan
400invalid_request
Perbaiki JSON, prompt yang hilang, rentang parameter, atau URL media sebelum mencoba lagi.
401invalid_api_key
Periksa Bearer token dan apakah kunci API aktif.
402insufficient_credits
Tambahkan kredit atau kurangi biaya tugas. Respons mungkin menyertakan jumlah yang diperlukan dan yang tersedia.
403forbidden
Periksa batasan tingkat akun yang dijelaskan dalam pesan kesalahan.
404not_found
Periksa ID tugas dan pastikan kunci tersebut milik pengguna tugas.
429rate_limited
Tunggu interval Retry-After sebelum mencoba lagi.
500internal_error
Periksa pesan error dan log API. Coba lagi dengan hati-hati; mengirim ulang permintaan pembuatan dapat membuat tugas berbayar lainnya.

Errors use error.code and error.message: 400 invalid_request, 401 invalid_api_key, 402 insufficient_credits, 403 forbidden, 404 not_found, 429 rate_limited, 500 internal_error. Insufficient provider balance is not a customer 402 error.

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.

Image and video creation requests share the same API key rate limit.

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."
  }
}