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/generationsFunktioner
| Funktion | Tillåtna värden |
|---|---|
| Genereringslägen | text-to-image, image-to-image |
| Upplösning | 1K, 2K, 4K |
| Bildformat | 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 |
| Referensbilder | 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. |
| Prompt | Required non-empty prompt, up to 20000 characters. |
| Utdataformat | png, jpg |
Priser och krediter
Varje begäran skapar en bild. Antalet krediter beror på upplösningen nedan. Krediter reserveras när uppgiften godkänns, debiteras vid framgång och återbetalas vid fel.
| Upplösning | Priser och krediter |
|---|---|
| 1K | 2 krediter |
| 2K | 3 krediter |
| 4K | 4 krediter |
Idempotens för begäranden stöds inte. Varje giltig POST-förfrågan skapar en ny debiterbar uppgift. Om resultatet av en sändning är osäkert, sök på det returnerade taskId; att göra en ny POST-förfrågan kan skapa ytterligare en uppgift.
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 2.1, ange nano-banana-2-1 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 20000 characters. Exempel: A minimalist ceramic teapot on a stone pedestal, soft studio lighting |
input.generation_type | string | Nej | text-to-image | För bildredigering, sätt generation_type till image-to-image och ange image_urls. Alla andra parametrar följer samma struktur. 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–10 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 | 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:8Exempel: 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 |
Bildförhållandet är som standard inställt på auto. Varje begäran genererar exakt en bild.
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-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"
}
}'Exempel på svar vid skapande av uppgift
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 3
}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-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"
}
}'Bild till bild
För bildredigering, sätt generation_type till image-to-image och ange image_urls. Alla andra parametrar följer samma struktur.
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-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"
]
}
}'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 | Tillåtna värden och krav |
|---|---|
| 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. |
| Fält | Typ | Tillåtna värden och krav |
|---|---|---|
| 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. |
| failed_code | string | null | Felkod. Se failed_reason för detaljer om felet. |
| 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 | Tid för bearbetning av uppgiften i sekunder när tillgängligt, annars null. |
I kö
{
"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
}
}Slutförd
{
"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
}
}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-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."
}Resultatlänkar är tillgängliga i 30 dagar efter lagring. Efter utgångsdatumet är results tomt.
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-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"
}'Callbacks använder samma svarsstruktur som vid en statusfråga för en uppgift. Aviseringar om misslyckade uppgifter där krediterna har återbetalats innehåller även credits_refunded på toppnivå. Använd id för att identifiera uppgiften och status för att skilja slutförda uppgifter från misslyckade. Aviseringar kan upprepas: behandla dem idempotent utifrån id och status. Callbacks är osignerade; verifiera uppgiften via frågeslutpunkten som kräver autentisering. Om leveransen misslyckas återbetalas inte en uppgift som har slutförts framgångsrikt.
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-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
}Uppgiften misslyckades: callback-payload för misslyckat anrop
{
"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
}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. |
Felmeddelanden använder error.code och error.message: 400 invalid_request, 401 invalid_api_key, 402 insufficient_credits, 403 forbidden, 404 not_found, 429 rate_limited, 500 internal_error. Felet 402 insufficient_credits innebär att dina tillgängliga krediter inte räcker till för denna begäran.
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.
Begäranden om bild- och videoskapande delar samma anropsbegränsning för API-nyckeln.
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."
}
}