# Creatomate

> Generate videos and images from Creatomate templates, swapping in your own text and media, then pull the finished file into your workflow.

App · Video & Audio · 4 actions. Web page: https://docs.lodol.com/docs/integrations/creatomate

## Actions

### Create a render

Render a video or image from one of your Creatomate templates, swapping in your own text and media. Rendering is asynchronous, so use Get a render to pick up the finished file.

**Inputs**

- Template ID (`template_id`, text, required): The template to render, as returned by List templates. It's also the ID shown in the Creatomate template editor's URL.
- Modifications (`modifications`, object): What to change in the template, keyed by element name -- for example {"Text-1": "Now 20% off", "Video-1": "https://example.com/clip.mp4"}. Use Get a template to see which element names it has.
- Render scale (`render_scale`, number): Scale the output relative to the template's own resolution. 1 is full size, 0.5 is half. Between 0.1 and 10. From 0.1 to 10.0.
- Maximum width (`max_width`, number): Optional. Scale the output down so it is no wider than this, in pixels. At least 1.
- Maximum height (`max_height`, number): Optional. Scale the output down so it is no taller than this, in pixels. At least 1.
- Webhook URL (`webhook_url`, text): Optional. Creatomate calls this URL once the render finishes or fails, so you don't have to poll for it.
- Metadata (`metadata`, text): Optional. Any text to attach to the render and pass back to your webhook, such as a campaign ID.

**Outputs**

- `duration` (number): Length of the output in seconds, for videos only
- `error_message` (text): Why the render failed, when it did. Empty otherwise.
- `file_size` (number): Size of the output file in bytes
- `frame_rate` (number): Frames per second of the output, for videos only
- `height` (number): Height of the output in pixels
- `output_format` (text): The file format produced: 'mp4', 'jpg', 'png', or 'gif'
- `render_id` (text): The render's ID. Use with Get a render to poll for the result.
- `render_status` (text): How far the render has got: 'planned', 'waiting', 'transcribing', 'rendering', 'succeeded', or 'failed'. Rendering is asynchronous, so a freshly created render is usually not 'succeeded' yet.
- `renders` (list): Every render this request queued. Usually one, but a template can fan out into several outputs.
- `snapshot_url` (text): Link to a still frame taken from the video, for videos only
- `template_id` (text): ID of the template this was rendered from
- `template_name` (text): Name of that template
- `url` (text): Direct download link to the finished file. Only populated once the render has succeeded.
- `width` (number): Width of the output in pixels

**Example output**

```json
{
  "duration": 15,
  "error_message": "",
  "file_size": 2450000,
  "frame_rate": 30,
  "height": 1080,
  "output_format": "mp4",
  "render_id": "a862048b-d0dc-4029-a4ef-e172e8ded827",
  "render_status": "planned",
  "renders": [
    {
      "duration": 15,
      "error_message": "",
      "file_size": 2450000,
      "frame_rate": 30,
      "height": 1080,
      "output_format": "mp4",
      "render_id": "a862048b-d0dc-4029-a4ef-e172e8ded827",
      "render_status": "planned",
      "snapshot_url": "https://cdn.creatomate.com/snapshots/a862048b.jpg",
      "template_id": "087d94b5-cef6-44b7-96d4-4c651beec61d",
      "template_name": "Social Media Video Template",
      "url": null,
      "width": 1080
    }
  ],
  "snapshot_url": "https://cdn.creatomate.com/snapshots/a862048b.jpg",
  "template_id": "087d94b5-cef6-44b7-96d4-4c651beec61d",
  "template_name": "Social Media Video Template",
  "url": null,
  "width": 1080
}
```

### Get a render

Check how a render is getting on and, once it has finished, get the download link for the finished file.

**Inputs**

- Render ID (`render_id`, text, required): The render's ID, as returned by Create a render.

**Outputs**

- `duration` (number): Length of the output in seconds, for videos only
- `error_message` (text): Why the render failed, when it did. Empty otherwise.
- `file_size` (number): Size of the output file in bytes
- `frame_rate` (number): Frames per second of the output, for videos only
- `height` (number): Height of the output in pixels
- `output_format` (text): The file format produced: 'mp4', 'jpg', 'png', or 'gif'
- `render_id` (text): The render's ID. Use with Get a render to poll for the result.
- `render_status` (text): How far the render has got: 'planned', 'waiting', 'transcribing', 'rendering', 'succeeded', or 'failed'. Rendering is asynchronous, so a freshly created render is usually not 'succeeded' yet.
- `snapshot_url` (text): Link to a still frame taken from the video, for videos only
- `template_id` (text): ID of the template this was rendered from
- `template_name` (text): Name of that template
- `url` (text): Direct download link to the finished file. Only populated once the render has succeeded.
- `width` (number): Width of the output in pixels

**Example output**

```json
{
  "duration": 15,
  "error_message": "",
  "file_size": 2450000,
  "frame_rate": 30,
  "height": 1080,
  "output_format": "mp4",
  "render_id": "a862048b-d0dc-4029-a4ef-e172e8ded827",
  "render_status": "succeeded",
  "snapshot_url": "https://cdn.creatomate.com/snapshots/a862048b.jpg",
  "template_id": "087d94b5-cef6-44b7-96d4-4c651beec61d",
  "template_name": "Social Media Video Template",
  "url": "https://cdn.creatomate.com/renders/a862048b-d0dc-4029-a4ef-e172e8ded827.mp4",
  "width": 1080
}
```

### Get a template

Look up one template, including the RenderScript source that tells you which element names a render can modify.

**Inputs**

- Template ID (`template_id`, text, required): The template to render, as returned by List templates. It's also the ID shown in the Creatomate template editor's URL.

**Outputs**

- `created_at` (text): When the template was created
- `name` (text): The template's name in your project
- `source` (object): The template's full RenderScript. Read the element names out of this to know what Create a render can change.
- `tags` (list): The tags the template is filed under
- `template_id` (text): The template's ID. Use with Create a render.
- `updated_at` (text): When the template was last changed

**Example output**

```json
{
  "created_at": "2026-06-02T10:14:22.000Z",
  "name": "Social Media Video Template",
  "source": {
    "elements": [
      {
        "name": "Text-1",
        "text": "Hello",
        "type": "text"
      }
    ],
    "height": 1080,
    "output_format": "mp4",
    "width": 1080
  },
  "tags": [
    "social",
    "marketing",
    "square"
  ],
  "template_id": "087d94b5-cef6-44b7-96d4-4c651beec61d",
  "updated_at": "2026-07-18T09:03:51.000Z"
}
```

### List templates

List the templates in your Creatomate project, so a workflow can pick one to render.

**Inputs**: None.

**Outputs**

- `templates` (list): The templates in the project

**Example output**

```json
{
  "templates": [
    {
      "created_at": "2026-06-02T10:14:22.000Z",
      "name": "Social Media Video Template",
      "tags": [
        "social",
        "marketing",
        "square"
      ],
      "template_id": "087d94b5-cef6-44b7-96d4-4c651beec61d",
      "updated_at": "2026-07-18T09:03:51.000Z"
    }
  ]
}
```
