Direkt zur Dokumentation
Auf dieser Seite

Seedream 5.0 Flash API

Generieren Sie Bilder, bearbeiten Sie Referenzen oder zerlegen Sie ein Bild mit Ihrem Seevio-API-Key in Ebenen. Tasks laufen asynchron; speichern Sie die taskId und fragen Sie den Task-Endpunkt ab oder empfangen Sie einen Callback.

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

Funktionen

FeatureUnterstützte Werte
Generierungsmoditext-to-image, image-to-image, layer-decomposition
Ausgabeauflösungauto, 1K, 1.5K, 2K
Seitenverhältnis1:1, 4:3, 3:4, 16:9, 9:16, 2:3, 3:2, 21:9
ReferenzbilderÖffentliche HTTPS-URLs (PNG / JPEG / WebP) mit jeweils maximal 30 MB. Verwenden Sie keine Bilder für Text-zu-Bild, 1–10 für Bild-zu-Bild und genau eines für die Ebenenzerlegung.
PromptDer Prompt muss nach dem Entfernen führender und nachgestellter Leerzeichen 4–5000 Zeichen lang sein. Nur bei layer-decomposition darf prompt weggelassen werden oder leer sein.
Ausgabeformatpng, jpg

Preise & Credits

Die unten stehenden Preise gelten pro zurückgegebenem Bild. Bei einer normalen Generierung werden Credits für ein Bild reserviert, bei der Ebenenzerlegung für 17 Bilder. Abgerechnet wird die tatsächlich zurückgegebene Anzahl einschließlich des Basisbildes; ungenutzte Credits werden dem ursprünglichen Guthaben wieder gutgeschrieben. Fehlgeschlagene Tasks werden vollständig erstattet.

AusgabeauflösungPreise & Credits
auto2 Credits
1K2 Credits
1.5K2 Credits
2K2 Credits

Bei der Standardauflösung von 2K reserviert die Ebenenzerlegung 34 Credits. Werden vier Bilder zurückgegeben, beträgt die finale Gebühr 8 Credits, und 26 Credits werden erstattet.

Idempotenz von Anfragen wird nicht unterstützt. Jeder gültige POST-Request erstellt einen neuen, kostenpflichtigen Task. Wenn das Ergebnis einer Übermittlung unklar ist, fragen Sie die zurückgegebene taskId ab. Ein erneuter POST-Request kann einen weiteren Task erstellen.

Authentifizierung

Erstellen Sie einen API-Key im Dashboard. Der vollständige Key wird nur einmal angezeigt. Speichern Sie ihn auf Ihrem Server und senden Sie ihn bei jeder Anfrage als Bearer-Token mit.

Basis-URL

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

Setzen Sie die Umgebungsvariable SEEVIO_API_KEY, bevor Sie diese Beispiele ausführen. JavaScript-Beispiele laufen mit Node.js auf Ihrem Server; Python-Beispiele nutzen das requests-Paket.

Request-Body

FeldTypErforderlichBeschreibung & Einschränkungen
model
stringJa

Modell-ID. Um Seedream 5.0 Flash zu verwenden, setzen Sie dieses Feld auf seedream-5-0-flash.

callback_url
stringNein

Öffentlicher HTTPS-Endpunkt für POST-Callbacks bei Fertigstellung oder Fehlern. Private Netzwerke und localhost sind nicht erlaubt.

Beispiel: https://example.com/webhooks/seevio
input
objectJa

Generierungseinstellungen. Ein Prompt ist für Text-zu-Bild und Bild-zu-Bild erforderlich; für die Ebenenzerlegung ist er optional.

Eingabeparameter

FeldTypErforderlichStandardBeschreibung & Einschränkungen
input.prompt
stringBedingt—

Der Prompt muss nach dem Entfernen führender und nachgestellter Leerzeichen 4–5000 Zeichen lang sein. Nur bei layer-decomposition darf prompt weggelassen werden oder leer sein.

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

Nutzen Sie text-to-image für ein neues Bild, image-to-image zur Bearbeitung von Referenzen oder layer-decomposition, um ein einzelnes Bild in wiederverwendbare Elemente aufzuteilen.

Unterstützte Werte
text-to-image | image-to-image | layer-decomposition
input.image_urls
string[]Bedingt[]

Öffentliche HTTPS-URLs (PNG / JPEG / WebP) mit jeweils maximal 30 MB. Verwenden Sie keine Bilder für Text-zu-Bild, 1–10 für Bild-zu-Bild und genau eines für die Ebenenzerlegung.

Beispiel: ["https://example.com/teapot.png"]
input.aspect_ratio
stringNein1:1

Seitenverhältnis

Unterstützte Werte
1:1 | 4:3 | 3:4 | 16:9 | 9:16 | 2:3 | 3:2 | 21:9
Beispiel: 1:1
input.resolution
stringNein2K

Text-zu-Bild und Bild-zu-Bild unterstützen 1K, 1.5K und 2K. Layer-decomposition akzeptiert zudem auto. Standard: 2K.

Unterstützte Werte
auto | 1K | 1.5K | 2K
Beispiel: 2K
input.output_format
stringNeinpng

Gewünschtes Ausgabeformat. Bei der Ebenenzerlegung gibt png ein PNG-Basisbild und jpg ein JPEG-Basisbild zurück. Alle separierten Ebenen werden immer als PNG unter Beibehaltung der Transparenz ausgegeben.

Unterstützte Werte
png | jpg
Beispiel: png

Jede Anfrage erstellt genau einen Task. Text-to-Image und Image-to-Image liefern jeweils ein Bild zurück; Ebenenzerlegung liefert 1–17 Bilder zurück, einschließlich des Basisbildes. Senden Sie für die Ebenenzerlegung keinen aspect_ratio-Parameter.

Schnellstart

Senden Sie diese minimale Anfrage, speichern Sie die zurückgegebene taskId und nutzen Sie das untenstehende Beispiel zur Task-Abfrage. Der Credits-Wert in der Erstellungsantwort entspricht dem reservierten Betrag.

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

Beispiel für die Antwort beim Erstellen eines Tasks

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

Text zu Bild

Generieren Sie Bilder, bearbeiten Sie Referenzen oder zerlegen Sie ein Bild mit Ihrem Seevio-API-Key in Ebenen. Tasks laufen asynchron; speichern Sie die taskId und fragen Sie den Task-Endpunkt ab oder empfangen Sie einen 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 zu Bild

Setzen Sie für die Bildbearbeitung generation_type auf image-to-image und geben Sie image_urls an. Für alle anderen Parameter gilt dieselbe Struktur.

Ersetzen Sie die Medien-URLs von example.com durch Ihre eigenen, öffentlich zugänglichen HTTPS-Dateien. Die Beispiel-URLs dienen nur zur Veranschaulichung der Request-Struktur und sind keine herunterladbaren Beispieldateien.

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

Ebenenzerlegung

Setzen Sie generation_type auf layer-decomposition und geben Sie genau eine Bild-URL an. Lassen Sie aspect_ratio weg. output_format steuert nur das Format des Basisbildes. Die getrennten Ebenen werden immer als PNG unter Beibehaltung der Transparenz zurückgegeben. Speichern Sie jede in data.results zurückgegebene URL.

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

Die Ebenenzerlegung kann mehrere Bild-URLs in data.results zurückgeben: das Basisbild sowie die freigestellten Ebenen. Jede URL zeigt auf ein eigenes Bild. Die Anzahl variiert je nach Task (insgesamt 1–17 Bilder); verarbeiten Sie das gesamte Array und nicht nur data.results[0]. Sowohl die Abfrage eines abgeschlossenen Tasks als auch der Webhook bei Abschluss enthalten dieses Array. Die erste Erstellungsantwort enthält taskId und reservierte Credits, noch keine Bild-URLs.

Beispiel für die Antwort beim Erstellen eines Tasks

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

Abgeschlossene Ebenenzerlegung: Mehrere Bild-URLs

Diese Beispielantwort zeigt vier ausgegebene Bilder: ein Basisbild und drei Ebenen. Ihr Task kann eine andere Anzahl zurückgeben. Bei der angeforderten 2K-Auflösung entspricht credits der finalen Gebühr für alle vier Bilder; der ungenutzte Teil der ursprünglichen Reservierung für 17 Bilder wurde erstattet.

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

Verarbeiten Sie jedes zurückgegebene 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.

Task abfragen

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

Ersetzen Sie die Beispiel-ID durch die bei der Erstellung zurückgegebene taskId. Abfragen liefern nur Tasks zurück, die dem User des API-Keys gehören; bei unzugänglichen oder unbekannten IDs wird HTTP 404 zurückgegeben.

Fragen Sie anfangs alle 10–20 Sekunden ab, drosseln Sie die Frequenz bei HTTP 429 und stoppen Sie, sobald der Status completed oder failed lautet. Nutzen Sie für die Produktion bevorzugt Webhooks. Jedes Codebeispiel unten führt eine einzelne Abfrage aus.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
StatusZulässige Werte und Anforderungen
queuedAkzeptiert und wartet auf die Verarbeitung.
generatingGenerierung läuft.
completedErfolgreich abgeschlossen. Laden Sie data.results vor dem Ablaufdatum herunter.
failedFehlgeschlagen. Prüfen Sie failed_reason und billing_status.
FeldTypZulässige Werte und Anforderungen
idstringTask-ID. Entspricht der taskId aus der Erstellungsantwort.
created_atnumberErstellungszeitpunkt des Tasks als Unix-Zeitstempel (Sekunden).
modelstringDie für diesen Task verwendete öffentliche Modell-ID.
billing_statusstringreserved, charged, refunded oder refund_failed.
creditsnumberDie Erstellungsantwort und ausstehende Tasks zeigen die reservierten Credits. Nach Abschluss entspricht credits der tatsächlichen Gebühr; ungenutzte reservierte Credits wurden bereits erstattet. Bei fehlgeschlagenen Tasks zeigt das Feld weiterhin den ursprünglich reservierten Betrag an.
failed_reasonstring | nullFehlerursache bei fehlgeschlagenen Tasks; andernfalls null. Fehlgeschlagene Abfrage-Antworten enthalten keine data.
failed_codestring | nullFehlercode. Details zum Fehler stehen in failed_reason.
dataobjectVorhanden bei erfolgreich abgeschlossenen oder laufenden Tasks. Enthält die Ausgabe und Verarbeitungsdetails.
data.resultsstring[]Alle URLs der ausgegebenen Bilder, einschließlich des Basisbildes für die Ebenenzerlegung. Leer vor Abschluss und nach Ablauf der Gültigkeit.
data.image_expires_atstring | nullAblaufzeit der Bilder im ISO-8601-Format, sonst null.
data.processing_timenumber | nullDauer der Aufgabenverarbeitung in Sekunden, falls verfügbar, andernfalls null.

In der Warteschlange

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

Abgeschlossen

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

Fehlgeschlagen

Wenn die Abfrage status=failed zurückgibt, wurde die Generierung erfolglos beendet. Unter failed_reason finden Sie die Ursache und unter billing_status das Erstattungsergebnis. In diesem Beispiel bedeutet refunded, dass die Credits zurückerstattet wurden. credits behält den ursprünglich reservierten Betrag bei, und die Antwort enthält keine 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."
}

Ergebnis-Links werden nach der Speicherung 30 Tage lang bereitgestellt. Nach Ablauf dieser Frist bleibt das Feld results leer.

Webhooks

Setzen Sie callback_url in der Erstellungsanfrage, um einen JSON-POST zu erhalten, sobald der Task abgeschlossen ist oder fehlschlägt. Antworten Sie innerhalb von 15 Sekunden mit einem 2xx-Statuscode. Fehlgeschlagene Zustellungen werden wiederholt; verarbeiten Sie doppelte Zustellungen idempotent anhand der Task-ID.

Ihr Callback-Endpunkt muss POST-Anfragen mit einem JSON-Body (Content-Type: application/json) akzeptieren.

Task mit Callback erstellen

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 nutzen die Struktur der Task-Abfrageantwort. Benachrichtigungen über erstattete Fehler enthalten zusätzlich das Top-Level-Feld credits_refunded. Verwenden Sie id zur Identifizierung des Tasks und status, um zwischen erfolgreich abgeschlossen und fehlgeschlagen zu unterscheiden. Benachrichtigungen können mehrfach gesendet werden: Verarbeiten Sie diese idempotent nach id und status. Callbacks sind nicht signiert. Verifizieren Sie den Task über den authentifizierten Abfrage-Endpunkt. Ein Fehlschlagen der Zustellung führt nicht zur Erstattung eines erfolgreichen Tasks.

Task abgeschlossen: Payload für erfolgreichen Callback

created_at ist die Ereigniszeit, task_created_at die Erstellungszeit der Aufgabe, jeweils in Unix-Sekunden. Die Beispiele zeigen empfohlene Felder; Antworten können weitere Felder enthalten.

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

Task fehlgeschlagen: Payload für fehlgeschlagenen Callback

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

Empfänger-Beispiel

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

Dieses Next.js-Beispiel liest den JSON-Callback-Body aus und verarbeitet erfolgreiche sowie fehlgeschlagene Tasks direkt. Fügen Sie für Ihre eigene Anwendung Datenpersistenz und Task-ID-Deduplizierung hinzu. Stellen Sie zeitaufwendige Prozesse in eine Warteschlange, bevor Sie den Callback bestätigen.

Fehler

HTTP-Fehler enthalten ein error-Objekt mit code und message. Auch ein erfolgreich angenommener Task kann später noch fehlschlagen; fragen Sie den Task ab oder verarbeiten Sie den Callback für Fehler.

{
  "error": {
    "code": "invalid_request",
    "message": "input.prompt is required."
  }
}
HTTPFeldVorgehensweise
400invalid_request
Korrigieren Sie das JSON, den fehlenden Prompt, den Parameterbereich oder die Medien-URL, bevor Sie es erneut versuchen.
401invalid_api_key
Überprüfen Sie das Bearer-Token und ob der API-Key aktiv ist.
402insufficient_credits
Laden Sie Credits auf oder reduzieren Sie die Task-Kosten. Die Antwort kann den benötigten und den verfügbaren Betrag enthalten.
403forbidden
Überprüfen Sie die in der Fehlermeldung beschriebene Einschränkung auf Kontoebene.
404not_found
Überprüfen Sie die Task-ID und ob der Key dem Besitzer des Tasks gehört.
429rate_limited
Warten Sie das Retry-After-Intervall ab, bevor Sie es erneut versuchen.
500internal_error
Prüfen Sie die Fehlermeldung und die API-Protokolle. Gehen Sie bei erneuten Versuchen vorsichtig vor; das erneute Senden einer Erstellungsanfrage kann einen weiteren kostenpflichtigen Task auslösen.

Fehler verwenden error.code und error.message: 400 invalid_request, 401 invalid_api_key, 402 insufficient_credits, 403 forbidden, 404 not_found, 429 rate_limited, 500 internal_error. Der Fehler 402 insufficient_credits bedeutet, dass Ihr verfügbares Guthaben für diese Anfrage nicht ausreicht.

Rate Limits

Tasks erstellen: Pro API-Schlüssel sind standardmäßig bis zu 100 Anfragen pro Minute zulässig. Individuelle Ratenbegrenzungen sind derzeit nicht verfügbar.

Tasks abfragen: Pro API-Schlüssel sind standardmäßig bis zu 120 Anfragen pro Minute zulässig. Abfragen und Erstellungsanfragen werden separat gezählt.

Anfragen zur Bild- und Videoerstellung teilen sich das gleiche Ratenlimit des API-Keys.

HTTP 429 enthält Retry-After: 60 bei der Erstellung und Retry-After: 5 bei Abfragen. Nutzen Sie Backoff-Verfahren und vermeiden Sie unnötig häufiges Polling.

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