Hoppa till dokumentation
På denna sida

Seedream 5.0 Flash API

Skapa bilder, redigera referenser eller dela upp en bild i lager med din Seevio API-nyckel. Uppgifterna körs asynkront; spara taskId och gör statusfrågor mot uppgiftsslutpunkten eller ta emot en callback.

POST https://api.seevio.ai/v1/images/generations

Funktioner

FunktionTillåtna värden
Genereringslägentext-to-image, image-to-image, layer-decomposition
Upplösningauto, 1K, 1.5K, 2K
Bildformat1:1, 4:3, 3:4, 16:9, 9:16, 2:3, 3:2, 21:9
ReferensbilderOffentliga HTTPS-URL:er för PNG / JPEG / WebP, vardera upp till 30 MB. Använd inga bilder för text-till-bild, 1–10 för bild-till-bild och exakt en för lageruppdelning.
PromptAnvänd 4–5 000 tecken efter att blanksteg i början och slutet har tagits bort. Endast i läget layer-decomposition får fältet prompt utelämnas eller lämnas tomt.
Utdataformatpng, jpg

Priser och krediter

Priserna nedan gäller per returnerad bild. Vanlig generering reserverar en bild. Lageruppdelning reserverar 17 bilder, debiterar det faktiska antalet returnerade bilder (inklusive basbilden) och återför oanvända krediter till det ursprungliga saldot. Misslyckade uppgifter återbetalas helt.

UpplösningPriser och krediter
auto2 krediter
1K2 krediter
1.5K2 krediter
2K2 krediter

Vid standardupplösningen 2K reserverar lageruppdelning 34 krediter. Om fyra bilder returneras blir den slutgiltiga kostnaden 8 krediter och 26 krediter återförs.

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 Seedream 5.0 Flash, ange seedream-5-0-flash 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

Inställningar för generering. En prompt krävs för text-till-bild och bild-till-bild; den är valfri för lageruppdelning.

Indataparametrar

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

Använd 4–5 000 tecken efter att blanksteg i början och slutet har tagits bort. Endast i läget layer-decomposition får fältet prompt utelämnas eller lämnas tomt.

Exempel: A minimalist ceramic teapot on a stone pedestal, soft studio lighting
input.generation_type
stringNejtext-to-image

Använd text-to-image för att skapa en ny bild, image-to-image för att redigera referensbilder eller layer-decomposition för att dela upp en bild i återanvändbara element.

Tillåtna värden
text-to-image | image-to-image | layer-decomposition
input.image_urls
string[]Villkorlig[]

Offentliga HTTPS-URL:er för PNG / JPEG / WebP, vardera upp till 30 MB. Använd inga bilder för text-till-bild, 1–10 för bild-till-bild och exakt en för lageruppdelning.

Exempel: ["https://example.com/teapot.png"]
input.aspect_ratio
stringNej1:1

Bildformat

Tillåtna värden
1:1 | 4:3 | 3:4 | 16:9 | 9:16 | 2:3 | 3:2 | 21:9
Exempel: 1:1
input.resolution
stringNej2K

Text-till-bild och bild-till-bild stöder 1K, 1.5K och 2K. Lageruppdelning accepterar även auto. Standardvärde: 2K.

Tillåtna värden
auto | 1K | 1.5K | 2K
Exempel: 2K
input.output_format
stringNejpng

Önskat utdataformat. För lageruppdelning returnerar png en PNG-basbild och jpg returnerar en JPEG-basbild. Alla uppdelade lager returneras som PNG med bevarad transparens.

Tillåtna värden
png | jpg
Exempel: png

Varje begäran skapar en uppgift. Text-till-bild och bild-till-bild returnerar en bild. Lageruppdelning (layer-decomposition) returnerar 1–17 bilder, inklusive basbilden. Ange inte aspect_ratio för layer-decomposition.

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": "seedream-5-0-flash",
  "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": 2
}

Text till bild

Skapa bilder, redigera referenser eller dela upp en bild i lager med din Seevio API-nyckel. Uppgifterna körs asynkront; spara taskId och gör statusfrågor mot uppgiftsslutpunkten eller ta emot en 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": "seedream-5-0-flash",
  "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": "seedream-5-0-flash",
  "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"
    ]
  }
}'

Lageruppdelning

Ställ in generation_type till layer-decomposition och ange exakt en bild-URL. Utelämna aspect_ratio. output_format styr endast formatet på basbilden. Uppdelade lager returneras alltid som PNG med bevarad transparens. Spara varje URL som returneras i data.results.

curl --fail-with-body https://api.seevio.ai/v1/images/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedream-5-0-flash",
  "input": {
    "generation_type": "layer-decomposition",
    "image_urls": [
      "https://example.com/teapot.png"
    ],
    "resolution": "2K",
    "output_format": "png"
  }
}'

Lageruppdelning kan returnera flera bild-URL:er i data.results: basbilden samt de separerade lagren. Varje URL pekar på en enskild bild. Antalet resultat varierar per uppgift (1–17 bilder totalt); bearbeta hela arrayen i stället för att bara läsa data.results[0]. Både svaret på statusfrågan för en slutförd uppgift och webhooken vid slutförande innehåller denna array. Det första svaret när uppgiften skapas innehåller taskId och reserverade krediter, inte bild-URL:er.

Exempel på svar vid skapande av uppgift

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

Slutförd lageruppdelning: flera bild-URL:er

Detta illustrativa exempel visar fyra skapade bilder: en basbild och tre lager. Din uppgift kan returnera ett annat antal. Vid den begärda upplösningen 2K är credits den slutgiltiga kostnaden för alla fyra bilder; den oanvända delen av den ursprungliga reservationen för 17 bilder har återförts.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1789171200,
  "model": "seedream-5-0-flash",
  "credits": 8,
  "failed_code": null,
  "status": "completed",
  "billing_status": "charged",
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/images/example/base.png",
      "https://cdn.seevio.ai/api/images/example/layer-1.png",
      "https://cdn.seevio.ai/api/images/example/layer-2.png",
      "https://cdn.seevio.ai/api/images/example/layer-3.png"
    ],
    "image_expires_at": "2026-10-12T00:00:00.000Z",
    "processing_time": 12
  }
}

Bearbeta varje returnerad bild

const response = await fetch(
  "https://api.seevio.ai/v1/tasks/TASK_ID",
  { headers: { Authorization: `Bearer ${process.env.SEEVIO_API_KEY}` } }
);
if (!response.ok) throw new Error(await response.text());
const task = await response.json();

if (task.status === "completed") {
  // Process every returned image, including the base image.
  // The number of URLs varies; do not read only results[0].
  for (const [index, imageUrl] of task.data.results.entries()) {
    console.log({ taskId: task.id, index, imageUrl });
    // Download or store this image in your application.
  }
} else if (task.status === "failed") {
  throw new Error(task.failed_reason || "Image generation failed.");
}
// If queued or generating, poll again after at least 5 seconds.

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.
creditsnumberSvaret när uppgiften skapas och pågående uppgifter visar reserverade krediter. När uppgiften slutförts visar credits den faktiska kostnaden; oanvända reserverade krediter har redan återförts. Misslyckade uppgifter behåller det ursprungliga reserverade beloppet.
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[]Alla webbadresser till de genererade bilderna, inklusive basbilden för lageruppdelning. Tomt innan uppgiften är slutförd och efter att giltighetstiden har gått ut.
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": "seedream-5-0-flash",
  "credits": 2,
  "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": "seedream-5-0-flash",
  "credits": 2,
  "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": "seedream-5-0-flash",
  "credits": 2,
  "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": "seedream-5-0-flash",
  "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": "seedream-5-0-flash",
  "credits": 2,
  "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": "seedream-5-0-flash",
  "credits": 2,
  "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": 2
}

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."
  }
}