Archived docs Get your API Key
Get started
Tutorials
Guides
Reference
Help for coding agents
πŸ€– AI Assistant

Templates

Templates let you save a movie JSON in your JSON2Video account and reuse it later β€” replacing only the parts that change per render (text, image URLs, prices, …). They are the fastest way to scale automated video rendering: design once, render thousands.

Templates live at json2video.com/dashboard/templates.

When to use a template vs inline JSON

Use case Recommended
One-off render Inline JSON
Same video structure, varying content per render Template
Same video used by your team across multiple workflows (Make.com, internal app, Slack bot) Template
Templates shared with other JSON2Video users Template (import by ID)
Truly different videos every time (different scene counts, element types) Inline JSON

Creating a template

The quickest route is from the Editor: build the movie, declare its variables, then Template β†’ Save as template….

You can also start from the dashboard:

  1. Open json2video.com/dashboard/templates.
  2. Click Add new template.
  3. Give the template a name, an optional description and an optional set of tags (categories for filtering in the list view).
  4. Click Edit layout to open the template in the Editor, where the movie itself is built.
  5. Use {{variable_name}} syntax in any field to mark replaceable values.
  6. Save in the Editor with Template β†’ Save.

The new template appears in the list with a unique ID. Click the row menu β†’ Copy template ID to grab it.

The template ID

Every template has a stable ID like LerKrmBfiqaIgBuacLWn. You'll reference this ID from:

  • Your own code via the API.
  • Make.com's Create a Movie from my Template module.
  • n8n's HTTP Request node pointed at the template endpoint.
  • Anyone you share the template with β€” they can import it into their own account.

Rendering from a template

The API endpoint to render a template is POST /v2/movies, with the template ID and variables:

curl -X POST https://api.json2video.com/v2/movies \
  -H "x-api-key: YOUR_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "template": "LerKrmBfiqaIgBuacLWn",
    "variables": {
      "name": "Ana",
      "price": "$49"
    }
  }'

The engine loads the saved template, substitutes the variables, and renders. The response shape is the same as a regular render β€” you get a project ID and poll for status.

You can also override individual properties at render time by passing a movie object alongside template; the override is deep-merged into the saved template.

Where each part of a template is edited

A template has two halves, and they are edited in two different places:

What you want to change Where
The movie itself β€” scenes, elements, layout, timing, variables Editor, via Edit layout
The template's name, description, tags and default variable values Dashboard β†’ Templates

The dashboard's template page also carries Show API call, which produces a ready-to-run request for this template in cURL, NodeJS, Python or PHP, together with its default values.

Inside the Editor you can work visually or switch to the JSON view at any time. Both act on the same document, so anything the forms do not expose can be written directly as JSON.

Naming and tagging

Good names and tags pay off as your template library grows. Conventions we've seen work well:

  • By workflow: intro-card, social-reel-vertical, product-launch-3min.
  • By customer / segment: acme-monthly-update, enterprise-quarterly-summary.
  • By status: prod-, draft-, experiment-.

Tags filter the list at the top of the templates page. Click a tag to scope the list.

Sharing a template

Two ways to share:

  1. Send the template ID to anyone β€” they can import it into their account from the Import template button on the templates page.
  2. Send the JSON β€” copy the JSON view to a Gist/file. The recipient pastes it into a new template.

There is currently no per-template ACL β€” shared templates are independent copies in each account, not live-linked.

There is no version history

Saving a template overwrites it. There is no server-side history and no rollback: the previous contents are gone, and two people saving the same template from two places will overwrite each other without warning.

Treat a production template like code, and keep your own copy of the JSON β€” the Editor's Template β†’ Export JSON gives you exactly that, ready to commit to your own repository.

This is also why the Editor never saves to the server on its own: an automatic write would replace your last known-good template with whatever half-finished state you happened to be in.

See also