Hoppa till dokumentation
På denna sida

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/generations

Funktioner

FunktionTillåtna värden
Genereringslägentext-to-image, image-to-image
Upplösning1K, 2K, 4K
Bildformatauto, 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
ReferensbilderPublic HTTPS PNG / JPEG / WebP URLs. Image-to-image requires 1–10 images, each up to 30 MB. Text-to-image requires an empty array.
PromptRequired non-empty prompt, up to 20000 characters.
Utdataformatpng, 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ösningPriser och krediter
1K2 krediter
2K3 krediter
4K4 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.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

Sä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ältTypObligatoriskBeskrivning och begränsningar
model
stringJa

Modell-ID. För att använda Nano Banana 2.1, ange nano-banana-2-1 i detta fält.

callback_url
stringNej

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
objectJa

Genereringsinställningar. Måste innehålla en prompt som inte är tom.

Indataparametrar

FältTypObligatoriskStandardBeskrivning och begränsningar
input.prompt
stringJa—

Required non-empty prompt, up to 20000 characters.

Exempel: A minimalist ceramic teapot on a stone pedestal, soft studio lighting
input.generation_type
stringNejtext-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
stringNejauto

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:8
Exempel: 1:1
input.resolution
stringNej2K

Använd en av de utdataupplösningar som stöds och listas här.

Tillåtna värden
1K | 2K | 4K
Exempel: 2K
input.output_format
stringNejpng
Tillåtna värden
png | jpg
Exempel: 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"
StatusTillåtna värden och krav
queuedMottagen och väntar på att köras.
generatingGenerering pågår.
completedLyckades. Ladda ner data.results innan giltighetstiden går ut.
failedMisslyckades. Kontrollera failed_reason och billing_status.
FältTypTillåtna värden och krav
idstringUnikt ID för uppgiften. Detta är samma taskId som i svaret vid skapandet.
created_atnumberTidpunkt då uppgiften skapades, i Unix-sekunder.
modelstringDet publika modell-ID som användes för uppgiften.
billing_statusstringreserved, charged, refunded eller refund_failed.
creditsnumberKrediter reserverade för denna uppgift. Detta värde ligger kvar efter en återbetalning; kontrollera billing_status för att se det slutgiltiga debiteringsresultatet.
failed_reasonstring | nullFelorsak för misslyckade uppgifter; annars null. Misslyckade anrop utelämnar data-objektet.
failed_codestring | nullFelkod. Se failed_reason för detaljer om felet.
dataobjectFinns med när uppgiften inte har misslyckats. Innehåller resultat och bearbetningsdetaljer.
data.resultsstring[]Lista med bild-URL:er; tom före slutförande och efter utgång.
data.image_expires_atstring | nullBildernas utgångstid i ISO 8601-format, eller null om den saknas.
data.processing_timenumber | nullTid 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."
  }
}
HTTPFältÅtgärd
400invalid_request
Korrigera din JSON, saknad prompt, felaktiga parametervärden eller medie-URL:er innan du försöker igen.
401invalid_api_key
Kontrollera din Bearer-token och att API-nyckeln är aktiv.
402insufficient_credits
Fyll på krediter eller minska uppgiftens kostnad. Svaret kan innehålla information om saldo som krävs samt ditt nuvarande saldo.
403forbidden
Kontrollera kontobegränsningen som beskrivs i felmeddelandet.
404not_found
Kontrollera uppgiftens ID och att API-nyckeln tillhör samma användare som skapade uppgiften.
429rate_limited
Vänta den tid som anges i Retry-After innan du försöker igen.
500internal_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."
  }
}