Seedream 5.0 Pro 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/generationsFunktioner
| Funktion | Tillåtna värden |
|---|---|
| Genereringslägen | text-to-image, image-to-image, layer-decomposition |
| Upplösning | 1K, 1.5K, 2K |
| Bildformat | 1:1, 4:3, 3:4, 16:9, 9:16, 2:3, 3:2, 21:9 |
| Referensbilder | 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. |
| Prompt | 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. |
| Utdataformat | png, 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ösning | Priser och krediter |
|---|---|
| 1K | 4 krediter |
| 1.5K | 4 krediter |
| 2K | 8 krediter |
Vid standardupplösningen 2K reserverar lageruppdelning 136 krediter. Om fyra bilder returneras blir den slutgiltiga kostnaden 32 krediter och 104 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.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 Seedream 5.0 Pro, ange seedream-5-0-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 | 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ält | Typ | Obligatorisk | Standard | Beskrivning och begränsningar |
|---|---|---|---|---|
input.prompt | string | Villkorlig | — | 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 | string | Nej | text-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 | string | Nej | 1:1 | Bildformat Tillåtna värden 1:1 | 4:3 | 3:4 | 16:9 | 9:16 | 2:3 | 3:2 | 21:9Exempel: 1:1 |
input.resolution | string | Nej | 2K | Text-till-bild och bild-till-bild stöder 1K (standardkvalitet) och 2K (hög kvalitet). Lageruppdelning stöder 1K, 1.5K och 2K. Standardvärde: 2K. Tillåtna värden 1K | 1.5K | 2KExempel: 2K |
input.output_format | string | Nej | png | Ö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 | jpgExempel: 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-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": 8
}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-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
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-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"
]
}
}'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-pro",
"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": 136
}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-pro",
"credits": 32,
"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"| 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 | Svaret 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_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[] | 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_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": "seedream-5-0-pro",
"credits": 8,
"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-pro",
"credits": 8,
"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-pro",
"credits": 8,
"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-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 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-pro",
"credits": 8,
"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-pro",
"credits": 8,
"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": 8
}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."
}
}