You bring the assets
Your footage, your fonts, your music, hosted wherever you like. vidhook never invents footage — it arranges what you point it at.
Instead of:prompt → video
Video authoring API
A video authoring API, not a video generator. Send a spec describing your clips, text, and audio — get back the exact MP4 it describes. Buy credits once, with no subscription and no expiry.
{ "resolution": "full-hd", "scenes": [ { "duration": 8, "elements": [ { "type": "video", "src": "https://assets.vidhook.app/examples/drop.mp4" }, { "type": "text", "text": "New drop ↓", "effects": [{ "use": "slide-fade" }], "settings": { "font-size": 96, "font-color": "#FFFFFF", "vertical-position": "bottom" } } ] } ]}
What vidhook is not
vidhook composites the assets you already have — clips, images, text, audio — into an MP4 that matches your spec exactly. There is no model in the render path.
Your footage, your fonts, your music, hosted wherever you like. vidhook never invents footage — it arranges what you point it at.
Instead of:prompt → video
Deterministic, every time. Diff it in review, version it in git, assert on it in CI. No re-rolls, no seeds, no “try again.”
Instead of:regenerate until it’s right
Positions, timings, easing, transitions, z-order — all fields in the spec. If you can describe it, you get it, to the frame.
Instead of:“make the text a bit bigger”
Getting started
Every field below is real. Press play and watch the spec light up as the video plays it.
{ "resolution": "full-hd", "scenes": [ { "duration": 4, "background-color": "#0D1424", "elements": [ { "type": "text", "text": "Rendered, not generated.", "effects": [{ "use": "word-reveal" }], "settings": { "font-size": 96, "font-color": "#F8FAFC", "text-align": "center" } }, { "type": "text", "text": "vidhook.app", "position": "bottom-center", "width": 1920, "height": 180, "start": 1.6, "effects": [{ "use": "typewriter", "stagger": 0.06 }], "settings": { "font-size": 40, "font-color": "#34D399" } } ] } ]}
No assets, no upload — paste this into curl and you have a video.
{ "resolution": "instagram-story", "scenes": [ { "duration": 6, "elements": [ { "type": "video", "src": "https://assets.vidhook.app/examples/skate.mp4", "fit": "cover", "duration": -2, "muted": true }, { "type": "text", "text": "NEW DROP", "start": 0.4, "z-index": 10, "effects": [ { "animations": [ { "type": "slide", "direction": "from-bottom", "distance": 120, "duration": 0.6, "easing": "ease-out" }, { "type": "scale", "from": 1.4, "to": 1, "duration": 0.6 }, { "type": "fade", "duration": 0.4 } ] } ], "settings": { "font-size": 130, "font-weight": 800, "font-color": "#FFFFFF" } }, { "type": "text", "text": "TAP TO SHOP", "position": "bottom-center", "width": 1080, "height": 320, "start": 1.8, "z-index": 10, "effects": [{ "use": "pop-in" }, { "use": "pulse" }], "settings": { "font-size": 56, "font-color": "#34D399" } } ] } ]}
Compose three animations onto one element, then loop a fourth forever.
{ "resolution": "full-hd", "elements": [ { "type": "audio", "src": "https://assets.vidhook.app/examples/bgm.mp3", "duration": -2, "loop": -1, "volume": 0.3 } ], "scenes": [ { "duration": 3, "transition": { "style": "wipeleft", "duration": 0.5 }, "elements": [ { "type": "image", "src": "https://assets.vidhook.app/examples/desert.jpg", "zoom": 6, "pan": "right", "pan-distance": 0.08 }, { "type": "text", "text": "Shot it.", "start": 0.3, "x": 96, "y": 812, "width": 900, "height": 160, "z-index": 10, "effects": [{ "use": "slide-fade" }], "settings": { "font-size": 88, "font-color": "#F8FAFC", "horizontal-position": "left", "text-align": "left" } } ] }, { "duration": 3, "transition": { "style": "circleopen", "duration": 0.6 }, "elements": [ { "type": "video", "src": "https://assets.vidhook.app/examples/workshop.mp4", "seek": 2, "muted": true, "duration": -2 }, { "type": "text", "text": "Cut it.", "start": 0.3, "x": 96, "y": 812, "width": 900, "height": 160, "z-index": 10, "effects": [{ "use": "slide-fade" }], "settings": { "font-size": 88, "font-color": "#F8FAFC", "horizontal-position": "left", "text-align": "left" } } ] }, { "duration": 3, "elements": [ { "type": "image", "src": "https://assets.vidhook.app/examples/nightfall.jpg", "zoom": -3 }, { "type": "text", "text": "Ship it.", "z-index": 10, "effects": [{ "use": "blur-in" }, { "use": "pulse" }], "settings": { "font-size": 120, "font-color": "#34D399" } } ] } ]}
Cut between scenes, pan across stills, and lay music under the whole thing.
curl -X POST https://api.vidhook.app/renders \ -H "Authorization: Bearer $VIDHOOK_API_KEY" \ -H "Content-Type: application/json" \ --data @title-card.json { "id": "rnd_7f3c…", "status": "queued" }
How it works
No timeline to drag, no editor to learn. Describe the video as data and let the API render it in the cloud.
Compose scenes from images, video, text, and audio. Add transitions and variables when you need them.
Send the spec to /renders with your API key. You get a render ID back instantly — rendering runs in the background.
Poll the render or catch the webhook. Download a finished H.264 file from a CDN URL.
What you can build
vidhook keeps the feature set tight so the price stays low — the building blocks that actually ship social video.
Place stills with fit control and Ken Burns zoom and pan.
Embed real footage with trim, volume, and fades. The feature most APIs charge a premium for.
Overlay captions with any Google Font, alignment, and timing.
Layer music and sound with looping and volume fades.
Wipe, slide, fade, and more between scenes — the full xfade set.
Template once, then render thousands of variants from your data.
Made with vidhook
No timeline, no editor. Footage, text, transitions, and music — described as data and rendered in the cloud.
Neon-soaked city night, cut to a synth pulse.
Sizzling night-market food, cut to a lo-fi groove.
A sunrise trail run above the clouds, set to uplifting electronica.
Botanicals unfurling in dewy macro, over ambient piano.
Cinematic northern lights over the Arctic.
A drone flight over turquoise cliffs, to a swelling orchestral score.
Precision machining in macro, set to minimal techno.
Golden desert at magic hour, driven by cinematic percussion.
Pricing you don't have to babysit
Most video APIs lock you into a monthly plan and reset your balance every cycle. vidhook is prepaid: buy a pack of credits, and they're yours until you spend them.
Pricing
Start free, then top up with a one-time pack. Bigger packs cost less per credit. No plans, no commitment.
1 credit = 1 second of Full HD · 4K = 4 credits · credits never expire
How we compare
What 1,000 render credits cost as a one-time purchase, next to other programmatic video APIs. Same JSON-to-video workflow — lower prepaid price.
Prepaid list price per 1,000 credits, 2026. 1 credit = 1 second of Full HD. Competitor names withheld; figures from their published prepaid pricing.
FAQ
No. vidhook is an authoring API: it composites the clips, images, text and audio you give it, exactly as your JSON spec describes. Nothing in the render path invents footage, and the same spec always renders the same frames. If you want AI-generated source clips, generate them wherever you like and point vidhook at the URLs.
One credit renders one second of Full HD (1080p) video. 4K costs 4 credits per second. A render's cost is just its length times this rate, so you always know the price before you submit.
No. Credits you buy never expire. Render today or in a year — your balance stays exactly where you left it. (Free weekly credits are the one exception: they refresh each week and don't roll over.)
No. vidhook is prepaid. You buy a one-time pack of credits — there's no monthly fee, no minimum, and no card kept on file unless you choose to buy again.
Yes. 4K renders at 4 credits per second. Full HD remains the default at 1 credit per second.
180 credits every week — about 3 minutes of Full HD — for watermarked test renders, no card required. Use a test key to spend them; switch to a paid pack and a live key for clean output.
A test key (vh_test_) renders from your free weekly credits and adds a watermark — ideal for development. A live key (vh_live_) renders from your purchased credits with no watermark, for production. The key you use decides which balance is charged.
Create an account, grab an API key, and POST your first JSON spec in minutes.
Get started