Verwandle jede Website-URL programmatisch in ein Video in Studioqualität. Ein POST erstellt und rendert das Video; frage einen Endpoint für das Ergebnis ab. Perfekt für Automatisierungen, Massen-Generierung und Open-Graph-Video-Vorschauen.
Nutzt du einen KI-Assistenten?Verbinde PageToVid mit Claude, Cursor, VS Code oder Codex und frag einfach nach einem Video.Erstelle einen API-Schlüssel in deinem Konto, und sende ihn als Bearer-Token. Halte ihn geheim — er verbraucht deine Credits.
httpAuthorization: Bearer cp_live_xxxxxxxxxxxxxxxx
Basis-URL: https://pagetovid.com · ein gerendertes Video kostet 40 Credits.
POST /api/v1/videos — gibt sofort eine id zurück; das Rendern läuft asynchron.
curlcurl -X POST https://pagetovid.com/api/v1/videos \ -H "Authorization: Bearer $PAGETOVID_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://stripe.com", "goal": "ad", // explainer | ad | demo | tutorial "aspect": "16:9", // 16:9 | 9:16 | 1:1 "language": "en", "targetSeconds": 35, "subtitles": true }'
Antwort (202):
json{ "id": "cmq…", "status": "analyzing", "statusUrl": "https://pagetovid.com/api/v1/videos/cmq…" }
GET /api/v1/videos/:id — frage ab, bis status: "done".
json{ "id": "cmq…", "status": "done", // analyzing | scripting | recording | voicing | rendering | done | error "progress": 100, "videoUrl": "https://pagetovid.com/media/cmq…/video.mp4", "posterUrl": "https://pagetovid.com/media/cmq…/scene-2.png", "subtitleUrl": "https://pagetovid.com/media/cmq…/subtitles.vtt", "durationMs": 41000, "width": 1920, "height": 1080, "og": { "og:video": "…", "og:image": "…", "og:video:type": "video/mp4", … } }
Alles, was ein Assistent über das MCP kann, gibt es auch als REST-Tür mit demselben Schlüssel. Eine Website wird über ihre Domain angesprochen.
/api/v1/sites/:domain/plan — der Plan für eine ganze Website — die Videos, die sie haben sollte, jedes mit Ziel, Briefing und Einstellungen. POST erzeugt ihn (neu), kostenlos./api/v1/sites/:domain/plan/videos — die Videos, die der Plan verlangt, mit dem Video, das jede Idee schon geworden ist. POST zeigt eine Vorschau; POST mit confirm: true startet sie, je 40 Credits./api/v1/sites/:domain/shows — die Sendungen der Website — wiederkehrende Videos aus einem RSS-, Atom- oder JSON-Feed: jede Folge dasselbe Storyboard, jede Folge frische Daten. POST legt eine an; sie startet wartend./api/v1/shows/:id/run — startet eine Sendung von Hand. Ohne confirm eine kostenlose Vorschau der Folgen; confirm: true erzeugt sie (je 40 Credits) und bestätigt eine wartende Sendung — der stündliche Zeitplan übernimmt danach, innerhalb der Grenzen pro Lauf und pro Tag. PATCH /api/v1/shows/:id pausiert, setzt fort oder stellt ein.json// POST /api/v1/sites/example.com/shows { "name": "Release notes", "kind": "video", "feed_kind": "rss", "feed_url": "https://example.com/changelog.xml", "cadence": "weekly", "max_episodes_per_run": 1, "max_credits_per_day": 2, "aspect_ratio": "9:16", "language": "en", "goal": "explainer", "target_seconds": 30, "focus_template": "This episode is about {{title}}: {{summary}}. Lead with what is new." } // → 201 { show: { show_id, confirmed: false, ... } } then POST /api/v1/shows/:id/run { "confirm": true }
Eine Sendung gibt nie Credits aus, bevor ihr Besitzer einen Lauf gesehen hat, nie mehr als max_credits_per_day am Tag, und macht denselben Feed-Eintrag nie zweimal.
Ein fertiges Video dient zugleich als reiche og:video-Vorschau — Links zu deiner Seite erscheinen als abspielbares Video in sozialen Netzwerken und Suchmaschinen. Die Statusantwort liefert dir die genauen Tags in og. Setze sie in den <head> deiner Seite:
html<meta property="og:image" content="POSTER_URL" /> <meta property="og:video" content="VIDEO_URL" /> <meta property="og:video:secure_url" content="VIDEO_URL" /> <meta property="og:video:type" content="video/mp4" /> <meta property="og:video:width" content="1920" /> <meta property="og:video:height" content="1080" /> <meta name="twitter:card" content="player" />
Generieren + warten, in jeder Sprache.
javascriptconst KEY = process.env.PAGETOVID_API_KEY; const create = await fetch("https://pagetovid.com/api/v1/videos", { method: "POST", headers: { Authorization: `Bearer ${KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ url: "https://your-site.com", goal: "ad" }), }).then((r) => r.json()); let v; do { await new Promise((r) => setTimeout(r, 5000)); v = await fetch(create.statusUrl, { headers: { Authorization: `Bearer ${KEY}` } }).then((r) => r.json()); } while (v.status !== "done" && v.status !== "error"); console.log(v.videoUrl, v.posterUrl, v.og);
pythonimport os, time, requests KEY = os.environ["PAGETOVID_API_KEY"] H = {"Authorization": f"Bearer {KEY}"} r = requests.post("https://pagetovid.com/api/v1/videos", headers=H, json={"url": "https://your-site.com", "goal": "ad"}).json() while True: time.sleep(5) v = requests.get(r["statusUrl"], headers=H).json() if v["status"] in ("done", "error"): break print(v["videoUrl"], v["posterUrl"], v["og"])
401 — ungültiger oder fehlender API-Schlüssel.402 — keine Credits mehr. Lade auf unter Preise.400 — ungültige Eingabe (eine url ist erforderlich).Gratis-Credits zum Start — generiere dein erstes Video per API in Minuten.
API-Schlüssel erstellen →