Nano Banana 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/generationsKeupayaan
| Ciri | Nilai yang disokong |
|---|---|
| Mod penjanaan | text-to-image, image-to-image |
| Resolusi output | input.resolution — Not accepted for this model. |
| Nisbah aspek | auto, 1:1, 9:16, 16:9, 3:4, 4:3, 3:2, 2:3, 5:4, 4:5, 21:9 |
| Imej rujukan | Public HTTPS PNG / JPEG / WebP URLs. Image-to-image requires 1–10 images, each up to 10 MB. Text-to-image requires an empty array. |
| Prompt | Required non-empty prompt, up to 5000 characters. |
| Format output | png, jpg |
Harga & kredit
Each image costs 2 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.
Pengesahan
Cipta kunci API dalam papan pemuka. Kunci lengkap hanya akan dipaparkan sekali sahaja. Simpan kunci ini pada pelayan anda dan hantarkannya sebagai token Bearer dalam setiap permintaan.
URL asas
https://api.seevio.aiAuthorization: Bearer sk_live_your_api_key
Content-Type: application/jsonTetapkan pemboleh ubah persekitaran SEEVIO_API_KEY sebelum menjalankan contoh ini. Contoh JavaScript dijalankan pada pelayan anda dengan Node.js; contoh Python menggunakan pakej requests.
Badan permintaan
| Medan | Jenis | Diperlukan | Penerangan & had |
|---|---|---|---|
model | string | Ya | ID Model. Untuk menggunakan Nano Banana, tetapkan medan ini kepada nano-banana. |
callback_url | string | Tidak | Titik akhir HTTPS awam untuk panggilan semula POST bagi status selesai dan gagal. Rangkaian peribadi dan localhost adalah tidak dibenarkan. Contoh: https://example.com/webhooks/seevio |
input | object | Ya | Tetapan penjanaan. Mesti mengandungi prom yang tidak kosong. |
Parameter input
| Medan | Jenis | Diperlukan | Nilai lalai | Penerangan & had |
|---|---|---|---|---|
input.prompt | string | Ya | — | Required non-empty prompt, up to 5000 characters. Contoh: A minimalist ceramic teapot on a stone pedestal, soft studio lighting |
input.generation_type | string | Tidak | text-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 disokong text-to-image | image-to-image |
input.image_urls | string[] | Bersyarat | [] | Public HTTPS PNG / JPEG / WebP URLs. Image-to-image requires 1–10 images, each up to 10 MB. Text-to-image requires an empty array. Contoh: ["https://example.com/teapot.png"] |
input.aspect_ratio | string | Tidak | auto | Nisbah aspek Nilai yang disokong auto | 1:1 | 9:16 | 16:9 | 3:4 | 4:3 | 3:2 | 2:3 | 5:4 | 4:5 | 21:9Contoh: 1:1 |
input.resolution | string | Tidak disokong | — | Not accepted for this model. |
input.output_format | string | Tidak | png | Nilai yang disokong png | jpgContoh: png |
Aspect ratio defaults to auto. Unknown fields, including output quantity, are rejected. Each request generates exactly one image.
Mula cepat
Hantar permintaan ringkas ini, simpan taskId yang dikembalikan, kemudian gunakan contoh pertanyaan tugasan di bawah. Nilai kredit dalam respons penciptaan ialah amaun yang ditempah.
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",
"input": {
"prompt": "A minimalist ceramic teapot on a stone pedestal, soft studio lighting",
"aspect_ratio": "1:1",
"output_format": "png",
"generation_type": "text-to-image"
}
}'Contoh respons cipta tugasan
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 2
}Teks kepada imej
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",
"input": {
"prompt": "A minimalist ceramic teapot on a stone pedestal, soft studio lighting",
"aspect_ratio": "1:1",
"output_format": "png",
"generation_type": "text-to-image"
}
}'Imej kepada imej
For image editing, set generation_type to image-to-image and provide image_urls. All other parameters use the same contract.
Gantikan URL media contoh.com dengan fail HTTPS anda sendiri yang boleh diakses secara awam. URL contoh disediakan hanya untuk menunjukkan struktur permintaan dan bukannya aset sampel yang boleh dimuat turun.
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",
"input": {
"prompt": "Change the teapot to matte sage green. Preserve its shape and the studio lighting.",
"aspect_ratio": "1:1",
"output_format": "png",
"generation_type": "image-to-image",
"image_urls": [
"https://example.com/teapot.png"
]
}
}'Tanya status tugasan
GET https://api.seevio.ai/v1/tasks/{taskId}Gantikan ID contoh dengan taskId yang dikembalikan semasa penciptaan. Pertanyaan hanya mengembalikan tugasan milik pengguna kunci API tersebut; ID yang tidak boleh diakses atau tidak dikenali akan mengembalikan ralat HTTP 404.
Lakukan pengundian (polling) setiap 10–20 saat sebagai permulaan, kurangkan kekerapan jika menerima ralat HTTP 429, dan hentikan apabila status bertukar kepada completed atau failed. Sebaik-baiknya gunakan webhook untuk persekitaran pengeluaran. Setiap contoh kod di bawah melakukan satu pertanyaan.
curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer $SEEVIO_API_KEY"| Status | Allowed values and requirements |
|---|---|
| queued | Diterima dan sedang menunggu untuk dihantar. |
| generating | Penjanaan sedang dijalankan. |
| completed | Berjaya sepenuhnya. Muat turun data.results sebelum tamat tempoh. |
| failed | Gagal sepenuhnya. Periksa failed_reason dan billing_status. |
| Field | Jenis | Allowed values and requirements |
|---|---|---|
| id | string | Pengecam tugasan. Ini ialah taskId daripada respons cipta. |
| created_at | number | Masa penciptaan tugasan dalam saat Unix. |
| model | string | ID model awam yang digunakan untuk tugasan ini. |
| billing_status | string | reserved, charged, refunded atau refund_failed. |
| credits | number | Kredit yang ditempah untuk tugasan ini. Nilai ini dikekalkan selepas bayaran balik; periksa billing_status untuk menentukan hasil pengebilan. |
| failed_reason | string | null | Punca kegagalan bagi tugasan yang gagal; bernilai null jika sebaliknya. Respons pertanyaan yang gagal mengabaikan bahagian data. |
| data | object | Ada pada pertanyaan tugasan yang tidak gagal. Mengandungi butiran output dan pemprosesan. |
| data.results | string[] | Tatasusunan URL imej; kosong sebelum selesai dan selepas tamat tempoh. |
| data.image_expires_at | string | null | Masa tamat tempoh imej dalam format ISO 8601, atau null jika belum tersedia. |
| data.processing_time | number | null | Durasi pemprosesan penyedia dalam saat apabila tersedia, jika tidak nilainya adalah null. |
Dalam baris gilir
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1789171200,
"model": "nano-banana",
"credits": 2,
"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",
"credits": 2,
"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
Apabila pertanyaan mengembalikan status=failed, ini bermakna penjanaan telah tamat tetapi gagal. Rujuk failed_reason untuk mengetahui punca kegagalan dan billing_status untuk status bayaran balik. Dalam contoh ini, refunded bermakna kredit telah dikembalikan semula. credits mengekalkan amaun asal yang diketepikan, dan respons ini tidak mengandungi data.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1789171200,
"model": "nano-banana",
"credits": 2,
"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
Tetapkan callback_url dalam permintaan cipta untuk menerima POST JSON apabila tugasan selesai atau gagal. Kembalikan respons 2xx dalam masa 15 saat. Penghantaran yang gagal akan dicuba semula; proses penghantaran berulang secara idempotensi menggunakan ID tugasan.
Pangkalan akhir (endpoint) panggilan balik anda mesti menerima permintaan POST dengan badan permintaan JSON (Content-Type: application/json).
Cipta tugasan dengan panggilan semula
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",
"input": {
"prompt": "A minimalist ceramic teapot on a stone pedestal, soft studio lighting",
"aspect_ratio": "1:1",
"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.
Tugasan selesai: muatan panggilan balik yang berjaya
created_at ialah masa penciptaan peristiwa; task_created_at ialah masa penciptaan tugasan, dalam saat Unix. Contoh menunjukkan medan yang disyorkan; respons mungkin mengandungi medan tambahan.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1789171212,
"model": "nano-banana",
"credits": 2,
"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
}Tugasan gagal: muatan panggilan balik yang gagal
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1789171212,
"model": "nano-banana",
"credits": 2,
"status": "failed",
"billing_status": "refunded",
"failed_reason": "Image generation failed.",
"task_created_at": 1789171200,
"credits_refunded": 2
}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 badan panggilan balik JSON dan mengendalikan tugasan yang selesai serta gagal secara terus. Tambahkan fungsi persistensi dan penyahduplikasian ID tugasan untuk aplikasi anda; masukkan kerja yang lambat ke dalam giliran (queue) sebelum mengesahkan panggilan balik.
Ralat
Ralat HTTP mengandungi objek ralat dengan kod dan mesej. Tugasan yang berjaya diterima masih boleh gagal kemudian; tanya status tugasan atau kendalikan panggilan semula kegagalannya.
{
"error": {
"code": "invalid_request",
"message": "input.prompt is required."
}
}| HTTP | Medan | Tindakan yang perlu diambil |
|---|---|---|
| 400 | invalid_request | Betulkan fail JSON, prom yang hilang, julat parameter atau URL media sebelum mencuba semula. |
| 401 | invalid_api_key | Semak token Bearer dan pastikan kunci API adalah aktif. |
| 402 | insufficient_credits | Tambah kredit atau kurangkan kos tugasan. Respons mungkin menyertakan amaun yang diperlukan dan amaun yang tersedia. |
| 403 | forbidden | Sila semak sekatan peringkat akaun yang dinyatakan dalam mesej ralat. |
| 404 | not_found | Semak ID tugasan dan pastikan kunci tersebut milik pengguna tugasan berkenaan. |
| 429 | rate_limited | Tunggu selang masa Retry-After sebelum mencuba semula. |
| 500 | internal_error | Periksa mesej ralat dan log API. Cuba semula dengan berhati-hati; menghantar semula permintaan cipta boleh mencipta satu lagi tugasan yang boleh dicaj. |
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.
Had kadar
Cipta tugasan: setiap kunci API membenarkan sehingga 100 permintaan seminit secara lalai. Had kadar tersuai tidak ditawarkan buat masa ini.
Kueri tugasan: setiap kunci API membenarkan sehingga 120 permintaan seminit secara lalai. Permintaan kueri dan permintaan penciptaan tugasan dikira secara berasingan.
Image and video creation requests share the same API key rate limit.
HTTP 429 menyertakan Retry-After: 60 untuk penciptaan dan Retry-After: 5 untuk pertanyaan. Gunakan fungsi undur masa (backoff) dan elakkan daripada melakukan pengundian lebih kerap daripada yang diperlukan.
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 60{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded."
}
}