Bild & Video – Schnellstart
Bild & Video – Schnellstart
Erfahren Sie, wie Sie Bilder und Videos aus Text-Prompts und Referenzmedien generieren.
Die Bild & Video API ist asynchron. Sie übermitteln eine Generierung und laden das Ergebnis nach Abschluss über eine signierte URL herunter. Bilder und Videos haben separate Endpunkte, aber Anfrage- und Antwortstruktur sind für beide gleich.
Es gibt zwei Wege, das Ergebnis abzurufen. Die Webhook-Zustellung ist die empfohlene Methode und wird in den folgenden Beispielen verwendet: ElevenLabs ruft Ihren Endpunkt auf, sobald eine Generierung einen endgültigen Status erreicht. So entsteht keine Wartezeit. Polling ist die Alternative, wenn Sie keinen Endpunkt für einen Callback haben. Jedes Beispiel zeigt, wie Sie darauf zurückgreifen können.
Die Bild & Video API erfordert den Pro-Tarif oder höher. Aufrufe aus einem Workspace unterhalb dieser Stufe werden
mit dem Fehler 402 paid_plan_required abgelehnt. Ihr API-Schlüssel benötigt außerdem für den Workspace die Berechtigung Bild & Video oder
Flows.
Bild generieren
API-Schlüssel erstellen
Erstellen Sie hier im Dashboard einen API-Schlüssel, den Sie für den sicheren Zugriff auf die API verwenden.
Speichern Sie den Schlüssel als verwaltetes Secret und übergeben Sie ihn je nach Präferenz an die SDKs entweder als Umgebungsvariable über eine .env-Datei oder direkt in der Konfiguration Ihrer App.
SDK installieren
SDK
CLI
Wir verwenden außerdem die Bibliothek dotenv, um unseren API-Schlüssel aus einer Umgebungsvariable zu laden.
Generierung übermitteln
Jedes Modell hat eine eigene Anfrageklasse. Deren Felder entsprechen den Parametern, die das Modell akzeptiert. Beim Wechsel des Modells können sich daher die verfügbaren Felder ändern. Unbekannte Felder werden abgelehnt, nicht ignoriert.
webhook fordert die Zustellung des fertigen Ergebnisses an die Webhooks Ihres Workspace an. Der Aufruf
wird daher zurückgegeben, sobald die Generierung eingereiht wurde. Dies erfordert einen Webhook, der Generierungsereignisse abonniert hat.
Informationen zur Einrichtung finden Sie unter Bild & Video-
Webhooks. Alternativ lassen Sie das Feld weg und verwenden Polling.
SDK
CLI
Die Antwort enthält nur die Generierungs-ID. Eine neu erstellte Generierung hat immer den Status
pending:
Ergebnis abrufen
Da die Anfrage webhook verwendet, sendet ElevenLabs ein flows_generation-Ereignis an Ihren
Endpunkt, sobald die Generierung completed oder failed erreicht. Die data des Ereignisses entsprechen
der Antwort des GET-Endpunkts. Unter Bild & Video-Webhooks erfahren Sie,
wie Sie den empfangenden Handler implementieren.
Wenn Sie keinen Endpunkt für Callbacks haben, entfernen Sie webhook aus der obigen Anfrage und verwenden Sie stattdessen Polling.
Rufen Sie die Generierung ab, bis ihr Status completed oder failed lautet. Warten Sie bei einem Bild zwischen den Anfragen
mindestens zwei Sekunden – die Intervalle je Modalität finden Sie unter Polling-Richtlinien.
In beiden Fällen enthält eine abgeschlossene Generierung dieselben Felder:
Video generieren
Videogenerierungen verwenden flows.video und folgen demselben Muster aus Übermitteln und Abrufen. Ein Video kann
mehrere Minuten dauern. Deshalb verwendet dieses Beispiel die Webhook-Zustellung mit webhook, statt auf das
Ergebnis zu warten.
Der Aufruf wird zurückgegeben, sobald die Generierung eingereiht ist. Das fertige Ergebnis wird an jeden
Webhook in Ihrem Workspace zugestellt, der Generierungsereignisse abonniert hat. Die Videoausgabe ist MP4. Daher meldet die abgeschlossene Nutzlast
für content_mime_type den Wert video/mp4. Informationen zum Konfigurieren eines
Webhooks und zum Implementieren des empfangenden Handlers finden Sie unter Bild & Video-Webhooks.
webhook erfordert mindestens einen Workspace-Webhook, der Generierungsereignisse abonniert hat. Ohne einen solchen
wird der Erstellungsaufruf abgelehnt, statt eine Generierung zu starten, deren Ergebnis nirgendwo zugestellt werden kann. Entfernen Sie
das Feld, um auf Polling mit flows.video.get zurückzugreifen, und führen Sie Polling höchstens einmal pro 10
Sekunden durch.
Ergebnisse abrufen
Webhooks und Polling liefern dieselbe Nutzlast. Die Wahl hängt also davon ab, wie Sie darauf warten, nicht davon, was Sie erhalten.
Verwenden Sie Webhooks, wo immer möglich. Nutzen Sie Polling, wenn Sie keinen Callback empfangen können, und halten Sie sich dabei an die unten genannten Intervalle.
Webhook-Ziele auswählen
webhook akzeptiert zwei Formen. WebhookTarget_All erreicht jeden Webhook, der
Generierungsereignisse abonniert hat. Das ist der richtige Standard, da er auch funktioniert, wenn
Webhooks rotiert oder ersetzt werden. WebhookTarget_Ids beschränkt die Zustellung auf bestimmte
Webhooks. Das ist sinnvoll, wenn ein Workspace an mehrere Empfänger verteilt und ein bestimmter Job
nur einen davon erreichen soll:
Jede ID muss bereits Generierungsereignisse abonniert haben. Die Angabe eines nicht abonnierten Webhooks wird abgelehnt und nicht stillschweigend ignoriert. Die zugestellte Nutzlast ist identisch mit der Rückgabe des GET-Endpunkts. Ein Handler, der für einen geschrieben wurde, funktioniert daher auch für den anderen. Der Webhook-Leitfaden erklärt die Konfiguration eines Webhooks, die Signaturprüfung und die Ereignisverarbeitung.
Richtlinien für Polling
Die Laufzeit einer Generierung hängt vom Modell, der Auflösung und bei Videos von der Dauer ab. Fragen Sie daher in einem Intervall ab, das zu Ihrer Anfrage passt, statt in einer festen Schleife:
- Bilder: Fragen Sie höchstens alle 2 Sekunden ab. Die meisten sind innerhalb weniger Sekunden fertig.
- Videos: Fragen Sie höchstens alle 10 Sekunden ab. Rechnen Sie mit Minuten statt Sekunden und passen Sie das
Intervall an
duration_secsundresolutionan.
Für beide gelten zwei Regeln. Erhöhen Sie das Intervall, wenn eine Generierung lange läuft — durch Verdopplung bis auf etwa eine Minute vermeiden Sie, dass eine langsame Generierung Hunderte Anfragen auslöst. Begrenzen Sie außerdem die Schleife, damit eine festhängende Generierung in Ihrem eigenen Code mit einem Timeout endet und nicht in einer unbegrenzten Schleife.
Schnelleres Polling bringt nichts: Der Status einer Generierung ändert sich nicht früher, nur weil Sie zweimal fragen. Dauerhaft aggressives Polling kann 429-Antworten zurückgeben, die Sie mit exponentiellem Backoff behandeln sollten.
Lebenszyklus einer Generierung
Eine Generierung durchläuft vier Status. Die beiden Endstatus enthalten unterschiedliche Felder.
Prüfen Sie daher status, bevor Sie den Rest der Antwort lesen.
content_url ist eine signierte URL, die etwa eine Stunde nach Rückgabe der Antwort abläuft. Rufen
Sie die Generierung erneut ab, um eine aktuelle URL zu erhalten, statt die signierte URL selbst zu speichern.
Fehler behandeln
Eine fehlgeschlagene Generierung meldet eine Kategorie in failure_reason zusammen mit einer
menschenlesbaren error_message:
Fehlgeschlagene Generierungen werden nicht berechnet. Parameterprobleme, die im Voraus erkannt werden können — ein nicht unterstütztes Feld, ein Wert außerhalb des zulässigen Bereichs eines Modells oder eine ungültige Kombination von Referenzeingaben — werden stattdessen von der Erstellungsanfrage abgelehnt, bevor eine Generierung beginnt.
Preise
Generierungen werden in Credits berechnet. Die Kosten hängen vom Modell, den gewählten Parametern wie Auflösung und Dauer sowie den bereitgestellten Eingaben ab. Eine Generierung kostet über die API genauso viel wie in der ElevenLabs-App, in der die Kosten vor dem Absenden angezeigt werden. Unter Bild & Video im Playground erfahren Sie, wie die Kosten für eine bestimmte Kombination aus Modell und Einstellungen angezeigt werden.
Ihre Generierungen auflisten
Jeder Endpunkt listet die über ihn erstellten Generierungen auf, die neuesten zuerst. Die Ergebnisse sind auf Ihren Workspace und diese API beschränkt. In der ElevenLabs-App erstellte Generierungen werden daher nicht angezeigt.
page_size akzeptiert Werte von 1 bis 100 und hat standardmäßig den Wert 30. Übergeben Sie status,
um nur Generierungen in einem Lebenszyklusstatus zurückzugeben, und model_id, um nur
Generierungen eines einzelnen Modells zurückzugeben. Behandeln Sie next_cursor als undurchsichtig:
Übergeben Sie den exakten Wert erneut und stoppen Sie, wenn has_more false ist.
Verfügbare Modelle
Die API stellt eine Auswahl der in der ElevenLabs-App verfügbaren Modelle bereit. Jedes Modell akzeptiert nur die für es aufgeführten Parameter — das Senden eines Felds, das von einem anderen Modell unterstützt wird, führt zu einem Validierungsfehler.
ByteDance-Modelle sind standardmäßig deaktiviert und erfordern vor der Nutzung eine ausdrückliche
Genehmigung. Bis der Zugriff gewährt wurde, wird eine Anfrage mit einem dieser Modelle mit einem
model_access_denied-Fehler abgelehnt. Enterprise-Kunden können den Support kontaktieren, um Zugriff zu beantragen.
Bildmodelle
Die GPT Image 2.5-Modelle akzeptieren für quality die Werte low, medium, high, xhigh und
max; der Standardwert ist high. GPT Image 2 unterstützt maximal high; der Standardwert ist medium.
Videomodelle
Informationen zu Modellfunktionen, Verfügbarkeit und Preisen finden Sie in der Übersicht zu Bild & Video.