Video authoring API

Turn JSON into video.

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.

JSON → MP4Deterministic rendersNo subscription
movie.json
{  "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" }        }      ]    }  ]}
POST /rendersrendering
1080p · 0:08 · h264rendered

What vidhook is not

Not a video generator.

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.

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

The same spec renders the same frames

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

Frame-exact control

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

Three specs. Three videos.

Every field below is real. Press play and watch the spec light up as the video plays it.

title-card.json17 lines
{  "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" } }      ]    }  ]}
title-card.mp41920×1080 · 30fps
0:00 / 0:04
1 credit = 1 second of Full HD4 credits

No assets, no upload — paste this into curl and you have a video.

Send it
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

Three steps from spec to MP4.

No timeline to drag, no editor to learn. Describe the video as data and let the API render it in the cloud.

STEP 01

Write the JSON

Compose scenes from images, video, text, and audio. Add transitions and variables when you need them.

STEP 02

POST to the API

Send the spec to /renders with your API key. You get a render ID back instantly — rendering runs in the background.

STEP 03

Get your MP4

Poll the render or catch the webhook. Download a finished H.264 file from a CDN URL.

What you can build

Everything you need to render. Nothing you don't.

vidhook keeps the feature set tight so the price stays low — the building blocks that actually ship social video.

Images

Place stills with fit control and Ken Burns zoom and pan.

Video clips

Embed real footage with trim, volume, and fades. The feature most APIs charge a premium for.

Text & fonts

Overlay captions with any Google Font, alignment, and timing.

Audio & BGM

Layer music and sound with looping and volume fades.

Transitions

Wipe, slide, fade, and more between scenes — the full xfade set.

VariablesComing soon

Template once, then render thousands of variants from your data.

Made with vidhook

Rendered entirely from JSON.

No timeline, no editor. Footage, text, transitions, and music — described as data and rendered in the cloud.

Tokyo Pulse

Vertical · 9:16 · 30s

Neon-soaked city night, cut to a synth pulse.

Street Bites

Vertical · 9:16 · 34s

Sizzling night-market food, cut to a lo-fi groove.

First Light

Vertical · 9:16 · 34s

A sunrise trail run above the clouds, set to uplifting electronica.

Petal

Vertical · 9:16 · 34s

Botanicals unfurling in dewy macro, over ambient piano.

Aurora

Widescreen · 16:9 · 32s

Cinematic northern lights over the Arctic.

Coastline

Widescreen · 16:9 · 34s

A drone flight over turquoise cliffs, to a swelling orchestral score.

Foundry

Widescreen · 16:9 · 34s

Precision machining in macro, set to minimal techno.

Dune

Widescreen · 16:9 · 34s

Golden desert at magic hour, driven by cinematic percussion.

Pricing you don't have to babysit

No subscription. No expiry. No waste.

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.

  • Pay once. No recurring charge, no card on file by default.
  • Credits never expire. Render this week or next year — same balance.
  • Pay per second. 1 credit = 1 second of Full HD. Only pay for what you render.
  • Free every week. 180 credits weekly for watermarked test renders, no card required.

Pricing

Buy credits when you need them.

Start free, then top up with a one-time pack. Bigger packs cost less per credit. No plans, no commitment.

Free
180 credits / week
$0 forever
~3 minutes of Full HD every week. Watermarked test renders.
Start free
3,000 credits
one-time pack
$9.99
≈ 50 minutes of Full HD. No watermark.
Buy pack
Best value
12,000 credits
one-time pack
$39.99
≈ 3.3 hours of Full HD. No watermark.
Buy pack
60,000 credits
one-time pack
$149.99
≈ 16.6 hours of Full HD. Lowest price per credit.
Buy pack

1 credit = 1 second of Full HD · 4K = 4 credits · credits never expire

How we compare

Less to pay for the same render.

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.

FAQ

Questions, answered.

Do you generate video with AI?

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.

What is a credit?

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.

Do credits expire?

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.)

Is this a subscription?

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.

Do you support 4K?

Yes. 4K renders at 4 credits per second. Full HD remains the default at 1 credit per second.

What's included on the free tier?

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.

What's the difference between test and live keys?

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.

Start rendering for free.

Create an account, grab an API key, and POST your first JSON spec in minutes.

Get started