Casper Kloppenburg·2 November 2026·8 min readRender your first video with Creatomate's API in a few minutes, in any programming language, then pick the route that fits your project.
Creatomate is a REST API for generating videos and images. You send a request that names a design and the content to fill in, and Creatomate renders the MP4 in the cloud and gives you its URL. There's no FFmpeg to install and no render servers to run, and because it's plain HTTP, it works from any language.
This page gets you from zero to a finished video as quickly as possible. You'll add a ready-made template to your project, send one request, and pick up the result. After that, you'll find the next step for your situation: your programming language, videos built entirely from JSON, no-code platforms, or letting your AI assistant write the integration.
This is the video you'll make:
You need a Creatomate account, which you can create for free, and a way to send an HTTP request: a terminal with cURL, a script in your own language, or an API client such as Postman. You don't need to look up your API key first. Creatomate fills it into the code for you.
There are two ways to tell the API what to render. The easiest is a template: you design the video once in the editor, mark the parts that change as dynamic, and each request only supplies the new content. That's what this page covers. The other way is to describe the whole video in JSON (RenderScript), which lets your data decide the structure too, such as the number of scenes. You'll find that route at the end.
Click the banner below to add a copy of the Quick Promo template to your project. If you're not logged in yet, you'll be asked to sign in first:

The template opens in the editor. It's a short, vertical promo with three dynamic elements, the parts a request can change. In the element list on the left, they're the ones with a pencil icon:

Click Use Template in the top-right corner of the editor, then choose Developer API. Pick your language (cURL, Node.js, PHP, Ruby, Python, C#, Go or Java) and copy the code:
The code is complete: your project's API key and the template's ID are already in it, and the modifications hold the template's current content. Paste it into a file, or into your terminal for cURL. On Windows, the cURL command won't run as pasted in PowerShell; pick another language, or use a Bash shell such as WSL.
Now give the video new content. In the code you copied, change the three values under modifications to the ones below, or to your own text. You can also copy the whole request from here: when you're logged in, your API key is filled in, and you can click the template ID placeholder to pick your Quick Promo template:
curl -X POST https://api.creatomate.com/v2/renders \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY_HERE" \
-d '{
"template_id": "YOUR_TEMPLATE_ID_HERE",
"modifications": {
"Video.source": "https://cdn.creatomate.com/demo/video5.mp4",
"Text-1.text": "Hi! 👋 Thanks for trying out Creatomate!",
"Text-2.text": "Your first video, made by code ✨"
}
}'What the request contains:
POST https://api.creatomate.com/v2/rendersBearer YOUR_API_KEY, your project's API keyText-1.text sets the text of the element named Text-1, and Video.source sets the video's source URL.Any key you leave out keeps the value from the template. The modifications reference covers everything else a request can change, from colors to whole scenes.
Note: Your API key gives full access to your project. Keep it on your server or in an environment variable, and never send it to a browser or commit it to a public repository.
Run the code. The API answers right away with the render it has queued:
1{
2 "id": "6c6eaa69-6583-4797-87e3-8c707801a181",
3 "status": "planned",
4 "url": "https://f002.backblazeb2.com/file/creatomate-c8xg3hsxdu/6c6eaa69-6583-4797-87e3-8c707801a181.mp4",
5 "snapshot_url": "https://f002.backblazeb2.com/file/creatomate-c8xg3hsxdu/6c6eaa69-6583-4797-87e3-8c707801a181-snapshot.jpg",
6 "template_id": "YOUR_TEMPLATE_ID",
7 "output_format": "mp4",
8 ...
9}The status planned means Creatomate has accepted the request. The url is where the video will be, but it shows "Not Found" until the render is done. Copy the id; you'll use it in the next step.
If you get an error instead, the response says what's wrong in its hint field. A 401 means the API key is missing or wrong.
A render takes anywhere from a few seconds to a few minutes. To check on it, request its status with the ID from step 3:
1curl -X GET https://api.creatomate.com/v2/renders/RENDER_ID \
2 -H "Authorization: Bearer YOUR_API_KEY"While the video is being made, the status reads planned or rendering. Once it reads succeeded, the video is at the url. Open it and you'll see this:
If the status is failed, the error_message field explains why.
Checking by hand is fine for a first test. In your application, use a webhook instead: add a webhook_url to the request, and Creatomate calls that URL as soon as the render has succeeded or failed, with the same render object in the body. You can also set one default webhook for the whole project in Project Settings.
Renders are hosted for up to 30 days, so if you need the video longer, download it to your own storage when the webhook arrives.
Tip: Every render you start appears under API Log in the sidebar of your dashboard. Open one to see its status, the data you sent, and, if it failed, the error and how to fix it.
That's the whole loop: one request in, one video URL out. Everything else builds on it.
Continue in your programming language. These tutorials repeat the steps above in a full project setup, with the code for that language:
👉 Node.js · Python · PHP · Ruby · C# · Go · Java
Build the whole video from your data. When the structure has to change per video, such as one scene per product or as many photos as a user uploaded, send RenderScript instead of a template ID. The editor's source view shows any template as RenderScript, so you can design visually and copy the JSON:
👉 How to Generate Videos from JSON using an API
Let your AI write the integration. ChatGPT, Claude and other assistants can write the code, design templates and debug failed renders once they've read Creatomate's instructions. Assistants that support MCP can also call the API directly:
👉 Get help from AI · MCP integration
Automate without code. The same templates work in n8n, Make and Zapier:
Show a live preview in your own app. Let your users customize a template and watch the result before you render it:
For every endpoint and option, see the API reference.
Each project has its own API key, so you can keep environments or customers apart. Open the project menu in the top-left corner of your dashboard, choose Project Settings, and go to the API tab. The code under Use Template → Developer API already contains it.
Under Use Template → Developer API in the editor; it's the template_id in the request. The templates endpoint also lists every template in a project with its ID.
No. A request can contain the complete video as RenderScript instead of a template ID. Templates are the quickest start, and RenderScript gives your code full control over the structure.
The render isn't finished yet. The URL is reserved as soon as you send the request, and the file appears there once the status is succeeded.
Renders use credits, based on the output's resolution, frame rate and duration. See how credits are calculated and the pricing page.
Whether you prefer code or no-code, we have a wide range of guides on video automation.