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/generationsFunktioner
| Funktion | Tillåtna värden |
|---|---|
| Genereringslägen | text-to-image, image-to-image |
| Upplösning | 1K, 2K, 4K |
| Bildformat | auto, 1:1, 9:16, 16:9, 3:4, 4:3, 3:2, 2:3, 5:4, 4:5, 21:9 |
| Referensbilder | 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. |
| Prompt | Required non-empty prompt, up to 10000 characters. |
| Utdataformat | png, jpg |
Priser och krediter
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.
Autentisering
Skapa en API-nyckel i instrumentpanelen. Den fullständiga nyckeln visas bara en gång. Spara den säkert på din server och skicka den som en Bearer-token i varje anrop.
Bas-URL
https://api.seevio.aiAuthorization: Bearer sk_live_your_api_key
Content-Type: application/jsonSätt miljövariabeln SEEVIO_API_KEY innan du kör dessa exempel. JavaScript-exemplen körs på din server med Node.js; Python-exemplen använder requests-paketet.
Anropskropp
| Fält | Typ | Obligatorisk | Beskrivning och begränsningar |
|---|---|---|---|
model | string | Ja | Modell-ID. För att använda Nano Banana Pro, ange nano-banana-pro i detta fält. |
callback_url | string | Nej | Offentlig HTTPS-slutpunkt för POST-callbacks vid slutförda eller misslyckade uppgifter. Privata nätverk och localhost är inte tillåtna. Exempel: https://example.com/webhooks/seevio |
input | object | Ja | Genereringsinställningar. Måste innehålla en prompt som inte är tom. |
Indataparametrar
| Fält | Typ | Obligatorisk | Standard | Beskrivning och begränsningar |
|---|---|---|---|---|
input.prompt | string | Ja | — | Required non-empty prompt, up to 10000 characters. Exempel: A minimalist ceramic teapot on a stone pedestal, soft studio lighting |
input.generation_type | string | Nej | text-to-image | For image editing, set generation_type to image-to-image and provide image_urls. All other parameters use the same contract. Tillåtna värden text-to-image | image-to-image |
input.image_urls | string[] | Villkorlig | [] | 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. Exempel: ["https://example.com/teapot.png"] |
input.aspect_ratio | string | Nej | auto | Bildformat Tillåtna värden auto | 1:1 | 9:16 | 16:9 | 3:4 | 4:3 | 3:2 | 2:3 | 5:4 | 4:5 | 21:9Exempel: 1:1 |
input.resolution | string | Nej | 2K | Använd en av de utdataupplösningar som stöds och listas här. Tillåtna värden 1K | 2K | 4KExempel: 2K |
input.output_format | string | Nej | png | Tillåtna värden png | jpgExempel: png |
Aspect ratio defaults to auto. Unknown fields, including output quantity, are rejected. Each request generates exactly one image.
Snabbstart
Skicka detta minimala anrop, spara det returnerade taskId-värdet och använd sedan exemplet för statuskontroll nedan. Kreditvärdet i svaret är det belopp som reserveras.
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"
}
}'Exempel på svar vid skapande av uppgift
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 4
}Text till bild
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"
}
}'Bild till bild
For image editing, set generation_type to image-to-image and provide image_urls. All other parameters use the same contract.
Ersätt exempel-URL:erna för media med egna, offentligt tillgängliga HTTPS-filer. Exempel-URL:erna visar endast anropets struktur och är inte nedladdningsbara filer.
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"
]
}
}'Fråga efter en uppgift
GET https://api.seevio.ai/v1/tasks/{taskId}Ersätt exempel-ID:t med det taskId som returnerades när uppgiften skapades. Statusfrågor returnerar endast uppgifter som tillhör API-nyckelns användare; okända eller oåtkomliga ID:n returnerar HTTP 404.
Gör en statuskontroll var 10:e till 20:e sekund som utgångspunkt. Vid HTTP 429 bör du vänta längre, och sluta när statusen är completed eller failed. Använd webhooks i produktionsmiljö. Varje kodexempel nedan utför en enskild sökning.
curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer $SEEVIO_API_KEY"| Status | Allowed values and requirements |
|---|---|
| queued | Mottagen och väntar på att köras. |
| generating | Generering pågår. |
| completed | Lyckades. Ladda ner data.results innan giltighetstiden går ut. |
| failed | Misslyckades. Kontrollera failed_reason och billing_status. |
| Field | Typ | Allowed values and requirements |
|---|---|---|
| id | string | Unikt ID för uppgiften. Detta är samma taskId som i svaret vid skapandet. |
| created_at | number | Tidpunkt då uppgiften skapades, i Unix-sekunder. |
| model | string | Det publika modell-ID som användes för uppgiften. |
| billing_status | string | reserved, charged, refunded eller refund_failed. |
| credits | number | Krediter reserverade för denna uppgift. Detta värde ligger kvar efter en återbetalning; kontrollera billing_status för att se det slutgiltiga debiteringsresultatet. |
| failed_reason | string | null | Felorsak för misslyckade uppgifter; annars null. Misslyckade anrop utelämnar data-objektet. |
| data | object | Finns med när uppgiften inte har misslyckats. Innehåller resultat och bearbetningsdetaljer. |
| data.results | string[] | Lista med bild-URL:er; tom före slutförande och efter utgång. |
| data.image_expires_at | string | null | Bildernas utgångstid i ISO 8601-format, eller null om den saknas. |
| data.processing_time | number | null | Leverantörens bearbetningstid i sekunder om tillgänglig, annars null. |
I kö
{
"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
}
}Slutförd
{
"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
}
}Misslyckades
När statusförfrågan returnerar status=failed har genereringen misslyckats. Läs failed_reason för att se orsaken och billing_status för återbetalningsresultatet. I detta exempel innebär refunded att krediterna har återförts. credits visar det ursprungliga reserverade beloppet, och svaret innehåller inte 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.
Webhooks
Ange callback_url i anropet för att ta emot en JSON-POST när uppgiften slutförs eller misslyckas. Svara med en 2xx-statuskod inom 15 sekunder. Misslyckade leveranser försöks igen; hantera dubbletter i din kod baserat på uppgiftens ID (idempotens).
Ditt callback-ändpunkt måste acceptera POST-anrop med JSON-body (Content-Type: application/json).
Skapa en uppgift med 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-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.
Uppgiften slutförd: callback-payload för lyckat anrop
created_at är händelsens skapandetid; task_created_at är uppgiftens skapandetid, i Unix-sekunder. Exemplen visar rekommenderade fält; svar kan innehålla ytterligare fält.
{
"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
}Uppgiften misslyckades: callback-payload för misslyckat anrop
{
"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
}Exempel på mottagarkod
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 });
}Detta Next.js-exempel läser callback-anropets JSON-body och hanterar slutförda och misslyckade uppgifter direkt. Lägg till persistens och deduplicering av uppgifts-ID:n för din applikation. Köa långsamma processer innan du bekräftar callback-anropet.
Felmeddelanden
HTTP-fel returnerar ett error-objekt med code och message. En uppgift som har tagits emot utan fel kan fortfarande misslyckas senare; kontrollera uppgiftens status eller hantera webhooken för misslyckade uppgifter.
{
"error": {
"code": "invalid_request",
"message": "input.prompt is required."
}
}| HTTP | Fält | Åtgärd |
|---|---|---|
| 400 | invalid_request | Korrigera din JSON, saknad prompt, felaktiga parametervärden eller medie-URL:er innan du försöker igen. |
| 401 | invalid_api_key | Kontrollera din Bearer-token och att API-nyckeln är aktiv. |
| 402 | insufficient_credits | Fyll på krediter eller minska uppgiftens kostnad. Svaret kan innehålla information om saldo som krävs samt ditt nuvarande saldo. |
| 403 | forbidden | Kontrollera kontobegränsningen som beskrivs i felmeddelandet. |
| 404 | not_found | Kontrollera uppgiftens ID och att API-nyckeln tillhör samma användare som skapade uppgiften. |
| 429 | rate_limited | Vänta den tid som anges i Retry-After innan du försöker igen. |
| 500 | internal_error | Kontrollera felmeddelandet och API-loggarna. Försök igen med försiktighet; att skicka om ett anrop kan skapa ytterligare en debiterbar uppgift. |
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.
Anropsbegränsningar
Skapa uppgifter: Varje API-nyckel tillåter som standard upp till 100 anrop per minut. Anpassade anropsgränser är inte tillgängliga för närvarande.
Söka uppgifter: Varje API-nyckel tillåter som standard upp till 120 anrop per minut. Sökanrop och anrop för att skapa uppgifter räknas separat.
Image and video creation requests share the same API key rate limit.
HTTP 429 returnerar Retry-After: 60 för skapande och Retry-After: 5 för statusfrågor. Använd gradvis fördröjning (backoff) och undvik att göra statuskontroller oftare än nödvändigt.
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 60{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded."
}
}