A video editing API does in code what a person does in a video editor: it trims and joins clips, places images and text, adds music, voice-overs and subtitles, and renders the result as an MP4. Instead of a timeline, you send a description of the video; instead of an export button, you get a URL.
It is one of several kinds of video APIs. Hosting and streaming APIs store and deliver videos you already have; AI generation APIs invent footage from a prompt. An editing API assembles a finished video from your own material and data, which is why it is the one used to make hundreds of videos from a template.
Get a free API key — 10 minutes of video included →
How it works
- Describe the video in JSON. A movie has scenes; each scene has elements (video clips, images, text, voice-overs, audio, HTML). Values that change from one video to the next go in
variables. - Send it to the API. One
POST /v2/movieswith your API key. The response returns a project ID straight away. - Get the MP4. Poll
GET /v2/movies?project=…, or let the API deliver it by webhook, FTP, SFTP, email or to your own Amazon S3 bucket.
curl -X POST https://api.json2video.com/v2/movies \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d @movie.json
{
"success": true,
"project": "JkGxEoPRF9EgRb32",
"timestamp": "2026-10-18T10:49:52.924Z"
}
Rendering runs on our servers. There is nothing to install, no FFmpeg to maintain and no render farm to scale.
Edit existing videos: trim, join, music, subtitles
The most common job is editing footage you already have. This movie takes 20 seconds of an interview starting at 0:12, adds 8 seconds of muted b-roll with a fade, puts music underneath and transcribes the whole thing into subtitles:
{
"resolution": "full-hd",
"elements": [
{ "type": "audio", "src": "https://example.com/music.mp3", "volume": 0.3 },
{ "type": "subtitles", "language": "auto" }
],
"scenes": [
{
"elements": [
{ "type": "video", "src": "https://example.com/interview.mp4", "seek": 12, "duration": 20 }
]
},
{
"transition": { "style": "fade", "duration": 0.5 },
"elements": [
{ "type": "video", "src": "https://example.com/b-roll.mp4", "seek": 3, "duration": 8, "muted": true },
{ "type": "text", "text": "Thanks for watching", "style": "003", "position": "bottom-left" }
]
}
]
}
Elements in the movie-level elements array (here the music and the subtitles) run across every scene. seek sets where a clip starts and duration how long it plays.
Make videos from data: templates and variables
The second job is making many similar videos. Put the parts that change in variables and send the same template with different values, one request per video. This slideshow builds one scene per item in a list, so the same template works for 3 photos or 30:
{
"resolution": "instagram-story",
"variables": {
"photos": [
{ "url": "https://example.com/front.jpg", "caption": "Front garden" },
{ "url": "https://example.com/bedroom.jpg", "caption": "Main bedroom" }
]
},
"scenes": [
{
"iterate": "photos",
"duration": 4,
"transition": { "style": "fade", "duration": 0.5 },
"elements": [
{ "type": "image", "src": "{{url}}", "zoom": 2 },
{ "type": "text", "text": "{{caption}}", "style": "003", "position": "bottom-left" }
]
}
]
}
Templates can also show or hide elements with conditions, compute values with expressions, and be saved in your account and rendered by ID with only the variables.
What you can put in a video
| Element | What it does |
|---|---|
video | Clips from any URL: trim, crop, resize, speed, loop, mute, chroma key, pan and zoom. |
image | Photos and graphics with zoom and pan (Ken Burns), position and size. |
text | Titles and captions with animated styles and any Google Font. |
voice | Text-to-speech voice-overs with Azure and ElevenLabs voices; the scene lasts as long as the voice. |
subtitles | Automatic subtitles transcribed from the audio, word-by-word styles, or your own SRT, VTT or ASS file. |
audio | Music and sound effects with volume, fades and trimming. |
html | Any HTML and Tailwind CSS rendered as a layer: price tags, charts, lower thirds. |
component | Ready-made animated components from the component library. |
audiogram | Animated waveforms for podcasts and audio clips. |
Output: any size up to 4K, landscape, square or vertical, MP4. Transitions between scenes, a thumbnail for every render, and webhooks when it is done. See the full JSON reference.
What people build with it
- Narrated shorts from a spreadsheet: one row per video with the script, images and title; voice-over and subtitles added automatically. See the n8n guides.
- Subtitles on existing videos: upload or link a video, get it back with word-by-word captions burnt in.
- Slideshows from images: property listings, product galleries, event photos.
- Product videos from a catalogue or feed: price, name and photos change per product.
- Articles and news into short videos: summary as voice-over, images per paragraph.
- Personalised videos: a name, a number or a result per customer.
Ways to use it
- REST API from any language, with OpenAPI spec and SDKs for Node.js and PHP.
- No-code: verified n8n node and Make app, or any tool that can send an HTTP request.
- Visual editor: build or tweak a template by hand, then render it by API.
- AI coding agents: the MCP server lets Claude Code, Cursor or VS Code write, validate and render videos (
json2video mcp install claude).
Comparing video editing APIs
Entry plans as of October 2026, checked on each vendor's pricing page. Prices per minute are for 1080p video on the entry plan.
| API | How you describe a video | Entry price | Per minute | Voice-overs |
|---|---|---|---|---|
| JSON2Video | Scenes and elements in JSON | $49.95/mo, 200 min | $0.25 | Included (Azure, ElevenLabs) |
| Shotstack | Timeline of tracks and clips in JSON | $39/mo, 250 min | $0.16 | AI credits |
| Creatomate | Editor templates or RenderScript JSON | $54/mo, 2,000 credits | about $1.00 | Your own ElevenLabs key |
| Plainly | After Effects templates | $69/mo, 50 min | $1.38 | Not built in |
| Bannerbear | Editor templates + workflows | $49/mo, 1,000 credits | about $6 | AI credits |
| Remotion | React code, rendered on your AWS Lambda | Free up to 3 people; companies from $100/mo | about $0.02 of Lambda compute + licence | Bring your own |
| FFmpeg (self-hosted) | Command-line filters | Free software | Your servers | Bring your own |
For AI coding agents, JSON2Video, Creatomate, Plainly and Shotstack (beta) all offer official MCP servers. The step-by-step setup is in video editing with Claude Code.
How to choose. For silent edits at very high volume, Shotstack is cheaper per minute. For full creative control with a React team, Remotion. For After Effects designs, Plainly. For images plus short animations, Bannerbear. JSON2Video fits best when videos are narrated, built from data with templates that adapt to the content, made from no-code tools or AI agents, or bought in one-off packs that never expire.
Pricing
One credit is one second of rendered video, at any resolution. Managed voice-overs and automatic subtitles use 0 credits today, and failed renders are not charged.
- Free: 600 credits (10 minutes), videos up to 60 seconds each, with a watermark. No credit card.
- One-off packs: $49.95 for 120 minutes, $99.95 for 260 minutes. Credits never expire.
- Subscriptions: Professional $49.95 a month for 200 minutes, Startup $99.95 for 500 minutes. Videos up to 30 minutes each.
See all plans.
Frequently asked questions
What is a video editing API?
An API that edits and renders videos from instructions sent by code: trimming and joining clips, adding images, text, music, voice-overs and subtitles, and exporting an MP4. It replaces manual work in a video editor when you need many videos or videos made automatically.
Is there a free video editing API?
JSON2Video's free account includes 600 credits (10 minutes of video, up to 60 seconds per video, watermarked) with no credit card. FFmpeg is free software, but you run and maintain it yourself.
Should I use FFmpeg or a video editing API?
FFmpeg is free and powerful, but you write filter graphs, handle fonts, voice-overs and subtitles yourself, and run the servers that render. An API is the faster path when you want templates, voice-overs and subtitles out of the box and no infrastructure. Our FFmpeg course covers the do-it-yourself route.
Can I add subtitles to an existing video with the API?
Yes. Put the video in a scene and add a subtitles element: the audio is transcribed automatically and the captions are burnt into the video, with word-by-word styles. You can also pass your own SRT, VTT or ASS file.
Which programming languages can I use?
Any language that can send an HTTPS request with JSON: Python, Node.js, PHP, Ruby, Go, Java or cURL. There are SDKs for Node.js and PHP, and no-code integrations for n8n and Make.
How long can a video be?
Up to 60 seconds per video on the free plan, and up to 30 minutes per video on every paid plan and credit pack.
Published on October 18th, 2026