Direkt zur Dokumentation
Auf dieser Seite

Dokumentation

Mit der Seevio API entwickeln

Fügen Sie Ihrem Produkt Videogenerierung hinzu. Wählen Sie ein Modell, senden Sie eine Anfrage und rufen Sie das Ergebnis via Polling oder Webhook ab.

Modell auswählen

Jede Modellreferenz enthält alle Parameter, Preise und Beispiele. Sie können eine Integration direkt von einer einzigen Modellseite aus abschließen.

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.

Schnellstart

Dieses Beispiel generiert ein 5-sekündiges 720p-Video mit Seedance 2.5. Öffnen Sie eine Modellreferenz, um alle Generierungsmodi und Parametergrenzen zu sehen.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}'

Beispiel für die Antwort beim Erstellen eines Tasks

Nach der Annahme der oben genannten Anfrage gibt die API diese JSON-Antwort zurück. taskId ist die Aufgabenkennung für nachfolgende Statusabfragen; credits ist die Anzahl der für diese Aufgabe reservierten Credits. Diese Antwort bestätigt lediglich die Erstellung der Aufgabe, nicht die Fertigstellung des Videos. Sie müssen den Status der Aufgabe abfragen (Polling) oder einen Webhook verwenden, um die Videoergebnisse zu erhalten.

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

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"
StatusBeschreibung & Einschränkungen
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.
FeldTypBeschreibung & Einschränkungen
idstring
Task-ID. Entspricht der taskId aus der Erstellungsantwort.
created_atnumber
Erstellungszeitpunkt des Tasks als Unix-Zeitstempel (Sekunden).
modelstring
Die für diesen Task verwendete öffentliche Modell-ID.
billing_statusstring
reserved, charged, refunded oder refund_failed.
creditsnumber
Für diesen Task reservierte Credits. Dieser Wert bleibt auch nach einer Rückerstattung erhalten; prüfen Sie billing_status, um das genaue Abrechnungsergebnis zu sehen.
failed_reasonstring | null
Fehlerursache bei fehlgeschlagenen Tasks; andernfalls null. Fehlgeschlagene Abfrage-Antworten enthalten keine data.
dataobject
Vorhanden bei erfolgreich abgeschlossenen oder laufenden Tasks. Enthält die Ausgabe und Verarbeitungsdetails.
data.resultsstring[]
Array mit Video-URLs. Leer bis zur Fertigstellung oder nach Ablauf des Videos.
data.video_expires_atstring | null
Ablaufdatum des Videos als ISO 8601-Zeitstempel, oder null, solange es noch nicht verfügbar ist. Speichern Sie das Ergebnis vor diesem Zeitpunkt.
data.last_frame_urlstring | null
URL des letzten Frames, sofern angefordert und verfügbar, andernfalls null.
data.processing_timenumber | null
Verarbeitungsdauer des Anbieters in Sekunden, sofern verfügbar, andernfalls null.

Abgeschlossener Task: Abfrage-Antwort mit Video-Ergebnissen

Wenn die Abfrage status=completed zurückgibt, ist die Videogenerierung abgeschlossen. Rufen Sie die Video-URLs aus data.results ab und laden Sie diese vor data.video_expires_at herunter. billing_status=charged zeigt an, dass die reservierten Credits abgebucht wurden.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "completed",
  "billing_status": "charged",
  "credits": 100,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

Fehlgeschlagener Task: Abfrage-Antwort mit Fehler- und Abrechnungsdetails

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": 1788652800,
  "model": "seedance-2-5",
  "status": "failed",
  "billing_status": "refunded",
  "credits": 100,
  "failed_reason": "provider_failed"
}

Webhooks

Für Produktivintegrationen können Sie beim Erstellen eines Tasks eine callback_url angeben. Jede Modellreferenz enthält Callback-Payloads und ein Empfänger-Beispiel.

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/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  },
  "callback_url": "https://example.com/webhooks/seevio"
}'

Webhook-Payloads unterscheiden sich von den Antworten der Task-Abfrage: billing_status und credits fehlen; Fehlerdetails befinden sich in data.failed_reason und data.credits_refunded. Das Feld created_at im Webhook entspricht der Event-Erstellungszeit in Unix-Sekunden.

Task abgeschlossen: Payload für erfolgreichen Callback

Wenn die Generierung erfolgreich war, enthält der Callback status=completed. Verwenden Sie id zur Identifizierung des Tasks und data.results, um die Video-URLs abzurufen. Laden Sie die Ergebnisse vor data.video_expires_at herunter und speichern Sie diese.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "completed",
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

Task fehlgeschlagen: Payload für fehlgeschlagenen Callback

Wenn die Generierung fehlschlägt, enthält der Callback status=failed. Verwenden Sie id zur Identifizierung des Tasks, data.failed_reason für die Fehlerursache und data.credits_refunded für die Anzahl der erstatteten Credits.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "failed",
  "data": {
    "failed_reason": "provider_failed",
    "credits_refunded": 100
  }
}

Empfänger-Beispiel

export async function POST(request: Request) {
  const callbackData = await request.json();

  if (callbackData.status === "completed") {
    const videoUrls = callbackData.data.results;
    // Save the video URLs and mark this task as completed in your application.
    console.log(callbackData.id, videoUrls);
  }

  if (callbackData.status === "failed") {
    const { failed_reason, credits_refunded } = callbackData.data;
    // 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.