Videos mit der PageToVid-API automatisieren
Die Video-Generierungs-API von PageToVid macht aus einer URL mit einem einzigen HTTP-Aufruf ein vertontes MP4: Du schickst Seite und Briefing mit deinem API-Schlüssel an /api/v1/videos, bekommst sofort eine ID zurück und nach dem Rendering Video, Vorschaubild und Untertiteldatei, per Abfrage oder über einen signierten Webhook. Sie ist ab dem Pro-Tarif enthalten, und ein Rendering kostet dieselben 40 Credits wie im Dashboard.
Dieser Leitfaden ist für Entwicklerinnen und Entwickler, die jedem neuen Produkt, Inserat oder Release ein eigenes Video geben sollen, ohne dass jemand einen Schnitteditor öffnet. Er erklärt Request, Webhook, die wichtigen Felder und die Fehler, die eine automatisierte Pipeline teuer machen. Die Endpunkt-Referenz steht auf der Entwicklerseite.
MolForge, „Test the molecule before you make it“: ein 27-sekündiger 16:9-Film für ein In-silico-Tool zur Wirkstoffsuche, fünf Szenen und 43 gesprochene Wörter, dazu eine separat geschriebene 9:16-Fassung mit 29 Sekunden.
Ein Rendering von Anfang bis Ende
Rendern läuft asynchron: Ein Film dauert Minuten, also dreht sich die API um eine ID, mit der du später wiederkommst.
Schlüssel anlegen
Erzeuge auf deiner Kontoseite einen API-Schlüssel. Er beginnt mit
cp_live_, hängt an deinem Konto und Credit-Guthaben und gehört in den HeaderAuthorization: Bearer cp_live_…. Behandle ihn wie ein Passwort: Er kann Credits ausgeben.Rendering starten
Schick ein POST an
/api/v1/videosmit JSON:url(eine öffentliche Seite) und optionalgoal(explainer, ad, demo, tutorial, article),targetSeconds(15 bis 180),aspect(16:9, 9:16, 1:1 oder 4:5),language,focus(dein Briefing, bis zu 2.000 Zeichen) undcallbackUrl. Setz einenIdempotency-Key-Header.ID speichern
Die Antwort ist ein 202 mit
id,statusUrlund, beim ersten Callback, dem Webhook-Secret, das nur einmal angezeigt wird. Speichere alle drei. Gerendert ist noch nichts.Auf das Ende warten
Empfange den Webhook oder frag die
statusUrlmit wachsendem Abstand ab. Der Status läuft durch queued, analyzing, scripting, recording, voicing und rendering und endet bei done, held oder error.Ergebnis lesen, dann die Warnungen
Ein fertiges Rendering liefert
videoUrl,posterUrl,subtitleUrl(WebVTT),durationMs, Breite und Höhe, eine öffentlichepageUrlund einen Qualitäts-score. IsthasWarningstrue, lieswarnings, bevor du veröffentlichst.
Ablehnungen kosten nichts und nennen den Grund: eine Seite hinter einer Bot-Prüfung oder mit HTTP-Fehler, eine private Adresse, ein leeres Guthaben (402, NO_CREDITS) oder ein Tarif ohne API (402, UPGRADE_REQUIRED). Lies den code und überspring den Eintrag; eine abgelehnte Seite in einer Schleife neu zu versuchen, ändert nichts, solange sich die Seite nicht ändert.
Webhooks: erst prüfen, dann vertrauen
Erreicht ein Rendering done, held, error oder cancelled, schicken wir ein JSON-Event an seine callbackUrl (oder an den Standard-Webhook des Kontos). Jedes Event trägt drei Header: X-PageToVid-Timestamp, X-PageToVid-Signature und X-PageToVid-Event-Id.
Dein Empfänger sollte:
- HMAC-SHA256 mit deinem Secret über Zeitstempel, Punkt und den rohen Body neu berechnen und in konstanter Zeit mit dem
sha256=-Wert vergleichen. Das JSON erst danach parsen, nie vorher. - Einen Zeitstempel ablehnen, der älter als fünf Minuten ist. Das ist ein Replay.
- Über die Event-ID deduplizieren: Dasselbe Event kommt nie unter zwei IDs, kann aber mehrfach ankommen.
- Schnell mit 2xx antworten und die Veröffentlichung danach erledigen.
Die Zustellung wird dreimal im Abstand weniger Sekunden versucht, Weiterleitungen werden nicht verfolgt: Richte den Callback direkt auf deinen Empfänger. Hast du ein Event verpasst, kennt der Status-Endpunkt die Antwort trotzdem. Wir haben das so gebaut, nachdem wir Integrationen fünfzehn Minuten lang pollen sahen; der Webhook ersetzt die Schleife.
Das Beispiel: MolForge in 27 Sekunden
MolForge (molforge.ai) sagt ADMET-Eigenschaften von Molekülen voraus, bevor jemand sie synthetisiert. Der 16:9-Film läuft 27 Sekunden, fünf Szenen, 43 englische Wörter. Er beginnt mit einem KI-Clip einer Chemikerin allein im nächtlichen Labor zu „Months at the bench. Weeks of assays.“, schneidet auf eine Hand im Handschuh, die ein gescheitertes Fläschchen wegwirft („Then the molecule fails anyway“), dann eine Chat-Karte, in der MolForge ein vollständiges Profil liefert und Risiken vor jeder Synthese markiert. Eine Große-Zahl-Karte zeigt 92M+ Verbindungen zum Durchsuchen und Screenen. Der letzte Clip zeigt eine Chemikerin in einem hellen Labor vor einem 3D-Molekül: „Fail fast. On screen, not in the lab.“
Dieser Film ist ein geschriebenes Storyboard, als Animation gerendert, ohne gefilmte Seite. Für die Automatisierung ist das wichtig: /api/v1/videos nimmt eine URL und filmt sie, während ein Storyboard, das du selbst erzeugst (aus einem Changelog, einem Datensatz, einem Produkt-Feed), über das Tool create_animation des MCP-Endpunkts läuft, mit demselben Schlüssel. Siehe Videos mit Claude über MCP erstellen.
Die 9:16-Fassung läuft 29 Sekunden und fügt vor dem Scheitern einen Moment ein: „Your best candidate, finally ready“. Wir haben sie als zweites Storyboard geschrieben, weil die Hochkant-Fassung diese Pause brauchte. Wenn sich das Skript nicht ändert, fordere beide Formate in einem Aufruf mit outputs an.
Felder, die das Ergebnis verändern
Die meisten Integrationen brauchen nur url, aspect und callbackUrl. Diese Felder lohnen sich als Nächstes.
| Feld | Was es tut | Wann du es nutzt |
|---|---|---|
| Dein Briefing: Angebot, Zielgruppe, Sätze in Anführungszeichen, die wörtlich gesprochen werden | Jede Produkt- oder Inseratsseite: Preis und Call-to-Action gehören hierher |
| Bis zu vier Formate aus einem Storyboard; jedes zusätzliche Format ist ein eigenes Rendering | 16:9 für die Seite und 9:16 für Social Media, gleiches Skript |
| Ein Mindest-Score und was darunter passiert: automatisch korrigieren, zurückhalten oder ausliefern | Jede Pipeline, die ohne menschlichen Blick veröffentlicht |
| Eine kostenlose Vorschau mit Wasserzeichen und niedriger Auflösung, mit kleinem Stundenkontingent | Die Integration testen, bevor Credits fließen |
| Wie die Stimme eine Marke oder einen Begriff aussprechen soll | Produktnamen, die die Stimme falsch sagt |
Header | Derselbe Schlüssel liefert dasselbe Rendering; geänderte Parameter werden mit 409 abgelehnt | Bei jedem Anlegen, immer |
Zwei weitere Türen mit demselben Schlüssel: POST /api/v1/videos/:id/translate macht pro Sprache einen neuen Film (bis zu 6 pro Aufruf, neu vertont und neu untertitelt; siehe Videos in mehrere Sprachen lokalisieren), und die Site-Endpunkte analysieren eine Domain und schlagen vor, welche Seiten einen Film verdienen, mit kostenloser Vorschau vor dem Start.
Kosten, Limits und die drei teuren Fehler
Ein Rendering kostet 40 Credits, egal wie lang; jedes zusätzliche Format ist ein weiteres Rendering; Entwürfe sind kostenlos; KI-Clips und -Bilder kommen dazu und werden vor dem Ausgeben beziffert (siehe Credits und was ein Video kostet). Einen Preis pro Aufruf gibt es nicht; die Tarifpreise stehen unter Preise. Ein Konto kann zehn Renderings pro Minute starten, ein Stapel von zweihundert ist also eine Warteschlange, kein Ansturm: abschicken, ID speichern, Webhooks zurückkommen lassen. Ein Rendering, das aus technischen Gründen scheitert, wird automatisch erstattet.
Die Fehler, die wir in echten Integrationen sehen:
- Wiederholen ohne Idempotency-Key. Ein Timeout bei dir heißt nicht, dass das Rendering nicht gestartet ist. Ohne Schlüssel ist der zweite Versuch ein zweiter Film und eine zweite Abbuchung.
- Neu rendern per Cronjob. Ein nächtlicher Job über einen unveränderten Katalog zahlt jede Nacht für denselben Film. Löse bei Änderungen aus: neues Produkt, neuer Preis, neues Release.
- Nur auf done hin veröffentlichen. Ein fertiger Film kann Warnungen tragen: eine Szene, die auf eine Karte zurückgefallen ist, eine langsam geladene Seite. Filtere nach
hasWarningsund Score oder stellqualityGateauf Zurückhalten.
Und sortiere, bevor du generierst: Ein Film auf einer Seite, die niemand besucht, sind 40 Credits für nichts. Fang mit deinen meistbesuchten Seiten an, wie im Anwendungsfall E-Commerce-Video-Anzeigen, miss, dann erweitere.
Wann die API das falsche Werkzeug ist
Du machst ein paar Filme im Monat. Dashboard oder Assistent sind schneller als eine Integration: URL einfügen oder Claude über den MCP-Server fragen, der in jedem Tarif läuft. Das MCP-Setup dauert Minuten.
Du willst jede Woche denselben Film aus einem Feed. Das ist eine Show, kein Skript zum Pflegen: Feed, Format und Obergrenzen, mit kostenloser Vorschau. Siehe wiederkehrende Video-Shows und den Anwendungsfall Release-Notes-Video.
Du brauchst einen Menschen vor der Kamera oder einen eigenen Schnitt. Eine API rendert, was Seite und Briefing hergeben. Ein Kurs mit Moderator oder ein Markenfilm ist Sache eines Studios oder eines Avatar-Tools; die Vergleichsseite zeigt, wo andere Tools passen.
Deine Seiten sind privat. Die API filmt öffentliche Seiten. Bildschirme hinter einem Login brauchen eine Capture-Session ab dem Tarif Scale.
Verwandle deine Website in ein Video — kostenlos
Füge die Seite ein, die gefilmt werden soll. PageToVid schreibt das Skript, filmt die echte Website, vertont sie und liefert das MP4.
Häufige Fragen
Welcher Tarif enthält die Video-Generierungs-API?
Pro und alle Tarife darüber. Aufrufe werden nicht extra berechnet: Jedes Rendering verbraucht Credits des Kontos, zu dem der Schlüssel gehört, genau wie ein Rendering aus dem Dashboard.
Muss ich das Ergebnis abfragen?
Nein. Gib eine callbackUrl mit, dann schicken wir ein signiertes Event, wenn das Rendering fertig, zurückgehalten, fehlgeschlagen oder abgebrochen ist. Die Status-URL mit wachsendem Abstand abzufragen funktioniert auch und ist der Plan B, falls ein Event verloren ging.
Kann ich ein Video ohne Webseite erstellen?
Nicht über den videos-Endpunkt, der eine URL filmt. Ein Storyboard, das du schreibst oder erzeugst, wird über das Tool create_animation des MCP-Endpunkts als Animation gerendert, mit demselben API-Schlüssel.
Wie verhindere ich, dass ein Wiederholungsversuch doppelt kostet?
Schick bei jedem Anlegen einen Idempotency-Key-Header mit. Derselbe Schlüssel liefert das bestehende Rendering; derselbe Schlüssel mit anderen Parametern wird mit 409 abgelehnt, und es wird nichts abgebucht.