Langkau ke dokumentasi
Pada halaman ini

Nano Banana Pro 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

Keupayaan

CiriNilai yang disokong
Mod penjanaantext-to-image, image-to-image
Resolusi output1K, 2K, 4K
Nisbah aspekauto, 1:1, 9:16, 16:9, 3:4, 4:3, 3:2, 2:3, 5:4, 4:5, 21:9
Imej rujukanPublic HTTPS PNG / JPEG / WebP URLs. Image-to-image requires 1–8 images, each up to 30 MB. Text-to-image requires an empty array.
PromptRequired non-empty prompt, up to 10000 characters.
Format outputpng, 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.

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

Tetapkan 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

MedanJenisDiperlukanPenerangan & had
model
stringYa

ID Model. Untuk menggunakan Nano Banana Pro, tetapkan medan ini kepada nano-banana-pro.

callback_url
stringTidak

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
objectYa

Tetapan penjanaan. Mesti mengandungi prom yang tidak kosong.

Parameter input

MedanJenisDiperlukanNilai lalaiPenerangan & had
input.prompt
stringYa

Required non-empty prompt, up to 10000 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 disokong
text-to-image | image-to-image
input.image_urls
string[]Bersyarat[]

Public HTTPS PNG / JPEG / WebP URLs. Image-to-image requires 1–8 images, each up to 30 MB. Text-to-image requires an empty array.

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

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

Gunakan salah satu daripada resolusi output disokong yang disenaraikan di sini.

Nilai yang disokong
1K | 2K | 4K
Contoh: 2K
input.output_format
stringTidakpng
Nilai yang disokong
png | jpg
Contoh: 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-pro",
  "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 cipta tugasan

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 4
}

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

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

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"
StatusAllowed values and requirements
queuedDiterima dan sedang menunggu untuk dihantar.
generatingPenjanaan sedang dijalankan.
completedBerjaya sepenuhnya. Muat turun data.results sebelum tamat tempoh.
failedGagal sepenuhnya. Periksa failed_reason dan billing_status.
FieldJenisAllowed values and requirements
idstringPengecam tugasan. Ini ialah taskId daripada respons cipta.
created_atnumberMasa penciptaan tugasan dalam saat Unix.
modelstringID model awam yang digunakan untuk tugasan ini.
billing_statusstringreserved, charged, refunded atau refund_failed.
creditsnumberKredit yang ditempah untuk tugasan ini. Nilai ini dikekalkan selepas bayaran balik; periksa billing_status untuk menentukan hasil pengebilan.
failed_reasonstring | nullPunca kegagalan bagi tugasan yang gagal; bernilai null jika sebaliknya. Respons pertanyaan yang gagal mengabaikan bahagian data.
dataobjectAda pada pertanyaan tugasan yang tidak gagal. Mengandungi butiran output dan pemprosesan.
data.resultsstring[]Tatasusunan URL imej; kosong sebelum selesai dan selepas tamat tempoh.
data.image_expires_atstring | nullMasa tamat tempoh imej dalam format ISO 8601, atau null jika belum tersedia.
data.processing_timenumber | nullDurasi pemprosesan penyedia dalam saat apabila tersedia, jika tidak nilainya adalah null.

Dalam baris gilir

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1789171200,
  "model": "nano-banana-pro",
  "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-pro",
  "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

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

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

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

Tugasan gagal: muatan panggilan balik yang gagal

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1789171212,
  "model": "nano-banana-pro",
  "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 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."
  }
}
HTTPMedanTindakan yang perlu diambil
400invalid_request
Betulkan fail JSON, prom yang hilang, julat parameter atau URL media sebelum mencuba semula.
401invalid_api_key
Semak token Bearer dan pastikan kunci API adalah aktif.
402insufficient_credits
Tambah kredit atau kurangkan kos tugasan. Respons mungkin menyertakan amaun yang diperlukan dan amaun yang tersedia.
403forbidden
Sila semak sekatan peringkat akaun yang dinyatakan dalam mesej ralat.
404not_found
Semak ID tugasan dan pastikan kunci tersebut milik pengguna tugasan berkenaan.
429rate_limited
Tunggu selang masa Retry-After sebelum mencuba semula.
500internal_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."
  }
}