Sari la documentație
Pe această pagină

Seedream 5.0 Flash API

Generează imagini, editează referințe sau descompune o imagine în straturi folosind cheia ta API Seevio. Taskurile rulează asincron; salvează taskId și interoghează endpoint-ul taskului sau configurează un callback.

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

Funcționalități

FuncțieValori acceptate
Moduri de generaretext-to-image, image-to-image, layer-decomposition
Rezoluție de ieșireauto, 1K, 1.5K, 2K
Raport de aspect1:1, 4:3, 3:4, 16:9, 9:16, 2:3, 3:2, 21:9
Imagini de referințăURL-uri publice HTTPS pentru imagini PNG / JPEG / WebP, fiecare de maximum 30 MB. Nu folosi imagini pentru text-to-image, folosește între 1 și 10 pentru image-to-image și exact o imagine pentru layer-decomposition.
PromptPromptul trebuie să conțină între 4 și 5000 de caractere după eliminarea spațiilor de la început și de la sfârșit. Doar în modul layer-decomposition, câmpul prompt poate fi omis sau lăsat gol.
Format de ieșirepng, jpg

Tarife și credite

Tarifele de mai jos sunt per imagine returnată. Generarea obișnuită rezervă credite pentru o imagine, iar descompunerea în straturi pentru 17 imagini. Costul final se calculează după numărul efectiv de imagini returnate, inclusiv imaginea de bază, iar creditele neutilizate revin în soldul inițial. Costul taskurilor eșuate este rambursat integral.

Rezoluție de ieșireTarife și credite
auto2 credite
1K2 credite
1.5K2 credite
2K2 credite

La rezoluția implicită 2K, numărul de credite rezervate pentru descompunerea în straturi este 34. Dacă sunt returnate patru imagini, costul final exprimat în credite este 8, iar suma restituită este 26.

Idempotența solicitărilor nu este acceptată. Fiecare cerere POST validă creează un nou task facturabil. Dacă rezultatul trimiterii este incert, verifică taskul folosind taskId returnat; repetarea cererii POST poate crea un alt task.

Autentificare

Creează o cheie API în panoul de control. Cheia completă este afișată o singură dată. Păstreaz-o în siguranță pe serverul tău și trimite-o ca token Bearer la fiecare solicitare.

URL de bază

https://api.seevio.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

Setează variabila de mediu SEEVIO_API_KEY înainte de a rula aceste exemple. Exemplele în JavaScript rulează pe serverul tău cu Node.js; exemplele în Python utilizează pachetul requests.

Corp solicitare

CâmpTipObligatoriuDescriere și constrângeri
model
stringDa

ID model. Pentru a utiliza Seedream 5.0 Flash, setează acest câmp la seedream-5-0-flash.

callback_url
stringNu

Endpoint HTTPS public pentru callback-urile de tip POST în caz de finalizare sau eșec. Rețelele private și localhost nu sunt permise.

Exemplu: https://example.com/webhooks/seevio
input
objectDa

Setările generării. Un prompt este obligatoriu pentru modurile text-to-image și image-to-image; este opțional pentru descompunerea în straturi (layer-decomposition).

Parametri de intrare

CâmpTipObligatoriuValoare implicităDescriere și constrângeri
input.prompt
stringCondiționat—

Promptul trebuie să conțină între 4 și 5000 de caractere după eliminarea spațiilor de la început și de la sfârșit. Doar în modul layer-decomposition, câmpul prompt poate fi omis sau lăsat gol.

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

Folosește text-to-image pentru o imagine nouă, image-to-image pentru a edita referințe sau layer-decomposition pentru a separa o singură imagine în elemente reutilizabile.

Valori acceptate
text-to-image | image-to-image | layer-decomposition
input.image_urls
string[]Condiționat[]

URL-uri publice HTTPS pentru imagini PNG / JPEG / WebP, fiecare de maximum 30 MB. Nu folosi imagini pentru text-to-image, folosește între 1 și 10 pentru image-to-image și exact o imagine pentru layer-decomposition.

Exemplu: ["https://example.com/teapot.png"]
input.aspect_ratio
stringNu1:1

Raport de aspect

Valori acceptate
1:1 | 4:3 | 3:4 | 16:9 | 9:16 | 2:3 | 3:2 | 21:9
Exemplu: 1:1
input.resolution
stringNu2K

Modurile text-to-image și image-to-image acceptă rezoluțiile 1K, 1.5K și 2K. Modul layer-decomposition acceptă, de asemenea, valoarea auto. Valoare implicită: 2K.

Valori acceptate
auto | 1K | 1.5K | 2K
Exemplu: 2K
input.output_format
stringNupng

Formatul de ieșire solicitat. Pentru descompunerea pe straturi, valoarea png returnează o imagine de bază PNG, iar jpg returnează o imagine de bază JPEG. Toate straturile separate sunt returnate ca PNG, păstrând transparența.

Valori acceptate
png | jpg
Exemplu: png

Fiecare solicitare creează o singură sarcină. Generarea text-to-image și image-to-image returnează o singură imagine; generarea layer-decomposition returnează între 1 și 17 imagini, inclusiv imaginea de bază. Nu trimite parametrul aspect_ratio pentru layer-decomposition.

Ghid rapid

Trimite această solicitare minimă, salvează valoarea taskId returnată, apoi folosește exemplul de interogare a sarcinii de mai jos. Valoarea creditelor din răspunsul de creare reprezintă suma rezervată.

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

Exemplu de răspuns pentru crearea sarcinii

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

Text în imagine

Generează imagini, editează referințe sau descompune o imagine în straturi folosind cheia ta API Seevio. Taskurile rulează asincron; salvează taskId și interoghează endpoint-ul taskului sau configurează un 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"
  }
}'

Imagine în imagine

Pentru editarea imaginilor, setează generation_type la image-to-image și furnizează image_urls. Toți ceilalți parametri respectă aceleași specificații.

Înlocuiește URL-urile media de tip example.com cu propriile tale fișiere accesibile public prin HTTPS. URL-urile din exemplu au scop demonstrativ pentru structura solicitării și nu reprezintă resurse descărcabile.

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"
    ]
  }
}'

Descompunere în straturi

Setează generation_type pe layer-decomposition și furnizează exact un URL de imagine. Omite aspect_ratio. Parametrul output_format controlează doar formatul imaginii de bază. Straturile separate sunt returnate întotdeauna ca PNG, păstrând transparența. Salvează fiecare URL returnat în 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"
  }
}'

Descompunerea în straturi poate returna mai multe URL-uri de imagini în data.results: imaginea de bază și straturile separate. Fiecare URL indică o imagine separată. Numărul de rezultate variază în funcție de task (între 1 și 17 imagini în total); procesează întregul tablou, nu doar data.results[0]. Atât interogarea taskului finalizat, cât și webhook-ul de finalizare conțin acest tablou. Răspunsul inițial de creare conține doar taskId și creditele rezervate, nu și URL-urile imaginilor.

Exemplu de răspuns pentru crearea sarcinii

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

Descompunere în straturi finalizată: URL-uri multiple de imagini

Acest răspuns demonstrativ prezintă patru imagini generate: o imagine de bază și trei straturi. Taskul tău poate returna un număr diferit. La rezoluția solicitată de 2K, parametrul credits reprezintă taxa finală pentru toate cele patru imagini; partea neutilizată din rezervarea inițială de 17 imagini a fost returnată.

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

Procesează fiecare imagine returnată

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.

Interoghează o sarcină

GET https://api.seevio.ai/v1/tasks/{taskId}

Înlocuiește ID-ul din exemplu cu valoarea taskId returnată la crearea sarcinii. Interogările returnează doar sarcinile asociate utilizatorului cheii API; ID-urile inaccesibile sau necunoscute returnează HTTP 404.

Ca punct de pornire, interoghează la fiecare 10–20 secunde, redu frecvența în caz de HTTP 429 și oprește interogarea când statusul devine completed sau failed. Pentru mediile de producție, recomandăm utilizarea webhookurilor. Fiecare exemplu de cod de mai jos efectuează o singură interogare.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
StatusValori permise și cerințe
queuedAcceptat și în așteptare pentru procesare.
generatingGenerarea este în curs de desfășurare.
completedSucces. Descarcă elementele din data.results înainte de expirare.
failedEșec definitiv. Inspectează failed_reason și billing_status.
CâmpTipValori permise și cerințe
idstringIdentificatorul sarcinii. Acesta reprezintă valoarea taskId din răspunsul de creare.
created_atnumberData creării sarcinii, exprimată în secunde Unix.
modelstringID-ul public al modelului utilizat pentru această sarcină.
billing_statusstringstatusul facturării: reserved, charged, refunded sau refund_failed.
creditsnumberRăspunsul la crearea taskului și taskurile în curs de procesare arată creditele rezervate. La finalizare, credits indică taxa reală; creditele rezervate neutilizate au fost deja returnate. Pentru taskurile eșuate, câmpul continuă să afișeze suma rezervată inițial.
failed_reasonstring | nullMotivul eșecului pentru sarcinile eșuate; în caz contrar, are valoarea null. Răspunsurile de interogare eșuate nu conțin obiectul data.
failed_codestring | nullCod de eroare. Consultați failed_reason pentru detalii despre eroare.
dataobjectPrezent în interogările sarcinilor care nu au eșuat. Conține detalii despre rezultat și procesare.
data.resultsstring[]Toate URL-urile imaginilor generate, inclusiv imaginea de bază pentru descompunerea pe straturi. Acest câmp este gol înainte de finalizare și după expirare.
data.image_expires_atstring | nullExpirarea imaginilor în format ISO 8601 sau null dacă nu este disponibilă.
data.processing_timenumber | nullDurata de procesare a sarcinii în secunde, dacă este disponibilă; în caz contrar, null.

În așteptare

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

Finalizat

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

Eșuat

Atunci când interogarea returnează status=failed, procesul de generare s-a încheiat fără succes. Consultați failed_reason pentru a afla cauza și billing_status pentru rezultatul rambursării. În acest exemplu, refunded înseamnă că toate creditele au fost returnate. Parametrul credits păstrează valoarea inițială rezervată, iar răspunsul nu include obiectul 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."
}

Linkurile către rezultate sunt disponibile timp de 30 de zile de la stocare. După expirare, câmpul results va fi gol.

Webhookuri

Setează parametrul callback_url în solicitarea de creare pentru a primi un POST JSON atunci când sarcina se finalizează sau eșuează. Returnează un răspuns de tip 2xx în decurs de 15 secunde. Livrările eșuate vor fi reîncercate; procesează livrările repetate în mod idempotent pe baza ID-ului sarcinii.

Endpoint-ul dumneavoastră de callback trebuie să accepte solicitări de tip POST cu un corp de solicitare JSON (Content-Type: application/json).

Creează o sarcină cu 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"
}'

Callback-urile folosesc structura răspunsului la interogarea unui task; notificările de eșec cu rambursare includ și credits_refunded la nivelul superior. Folosește id pentru a identifica taskul și status pentru a distinge finalizarea cu succes de eșec. Notificările se pot repeta: procesează-le idempotent pe baza id și status. Callback-urile nu sunt semnate; verifică taskul prin endpoint-ul de interogare care necesită autentificare. Eșecul livrării notificării nu duce la rambursarea unui task finalizat cu succes.

Sarcină finalizată: payload de callback reușit

created_at este momentul creării evenimentului; task_created_at este momentul creării sarcinii, în secunde Unix. Exemplele arată câmpurile recomandate; răspunsurile pot conține câmpuri suplimentare.

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

Sarcină eșuată: payload de callback eșuat

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

Exemplu de receptor

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 });
}

Acest exemplu de Next.js citește corpul JSON al callback-ului și gestionează direct sarcinile finalizate și cele eșuate. Adăugați persistență și deduplicare a ID-urilor de sarcini pentru aplicația dumneavoastră; puneți în coadă procesele lente înainte de a confirma callback-ul.

Erori

Erorile HTTP conțin un obiect error cu proprietățile code și message. O sarcină acceptată cu succes poate eșua ulterior; interoghează sarcina sau gestionează callback-ul de eșec primit.

{
  "error": {
    "code": "invalid_request",
    "message": "input.prompt is required."
  }
}
HTTPCâmpSoluție recomandată
400invalid_request
Corectează codul JSON, promptul lipsă, limitele parametrilor sau URL-ul media înainte de a reîncerca.
401invalid_api_key
Verifică tokenul Bearer și dacă cheia API este activă.
402insufficient_credits
Adaugă credite sau redu costul sarcinii. Răspunsul poate include sumele necesare și cele disponibile.
403forbidden
Verificați restricția la nivel de cont descrisă în mesajul de eroare.
404not_found
Verifică ID-ul sarcinii și asigură-te că cheia aparține utilizatorului care a creat sarcina.
429rate_limited
Așteaptă intervalul indicat în antetul Retry-After înainte de a reîncerca.
500internal_error
Inspectează mesajul de eroare și jurnalele API. Reîncearcă cu atenție; retrimiterea unei solicitări de creare poate genera o nouă sarcină facturabilă.

Erorile folosesc structura error.code și error.message: 400 invalid_request, 401 invalid_api_key, 402 insufficient_credits, 403 forbidden, 404 not_found, 429 rate_limited, 500 internal_error. O eroare de tipul 402 insufficient_credits înseamnă că nu aveți suficiente credite disponibile pentru această solicitare.

Limite de rată

Crearea de sarcini: în mod implicit, fiecare cheie API permite maximum 100 de solicitări pe minut. Limitele personalizate de rată nu sunt disponibile în prezent.

Interogarea sarcinilor: în mod implicit, fiecare cheie API permite maximum 120 de solicitări pe minut. Solicitările de interogare și cele de creare a sarcinilor sunt contorizate separat.

Solicitările de creare a imaginilor și videoclipurilor folosesc aceeași limită de frecvență a cererilor pentru cheia API.

Codul HTTP 429 include Retry-After: 60 pentru creare și Retry-After: 5 pentru interogări. Folosește o strategie de backoff și evită interogările mai frecvente decât este necesar.

HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 60
{
  "error": {
    "code": "rate_limited",
    "message": "Rate limit exceeded."
  }
}