Platform Editor Pricing Docs Sign In Get Started

Quickstart

A personalized video starts as a template: a normal video composition in which some layers are placeholders — {name}, {policyType} — instead of fixed text. Publish the template and it becomes a dynamic movie: a named, renderable thing that produces a different video for every set of values you pass it.

There are two ways to build that template, and they end in the same place. Pick one — each tutorial is about five minutes of reading and a two-minute video.

Both tutorials build the same three-scene insurance-quote video, publish it as a dynamic movie, and finish in the Console’s Dynamic Movies section by rendering two variants of it — a different name and a different plan in each.

Before you start

You need an ImpossibleFX account. If you don’t have one, sign up here — the free tier covers everything in both tutorials.

Log in to the Console and click New Project. Give it a name and pick a region. Your project gets a Project ID (a UUID); both tutorials need it, and so does every render request.

If you are taking the agent path, you can skip this and ask the agent to create the project instead — it will ask you which region.

* Tip

Choose a region near your end users for the best playback performance. See Regions & Endpoints for the full list.

Render from your app

The Console’s Play tab is the fastest way to see two variants side by side, but it is only a preview of what the API does. Once a dynamic movie is published, any application can render it by POSTing the same parameters you typed into that form. Use the name you gave the movie when you published it — insurance-quote in the agent tutorial, quote-demo in the editor one:

curl -X POST https://render.impossible.io/v2/render/YOUR-PROJECT-ID \
  -H "Content-Type: application/json" \
  -d '{
    "movie": "insurance-quote",
    "params": {
      "name": "Alex",
      "policyType": "Comprehensive"
    }
  }'
const response = await fetch(
  "https://render.impossible.io/v2/render/YOUR-PROJECT-ID",
  {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      movie: "insurance-quote",
      params: {
        name: "Alex",
        policyType: "Comprehensive",
      },
    }),
  }
);

const { token } = await response.json();
console.log("Render token:", token);
import requests

response = requests.post(
    "https://render.impossible.io/v2/render/YOUR-PROJECT-ID",
    json={
        "movie": "insurance-quote",
        "params": {
            "name": "Alex",
            "policyType": "Comprehensive",
        },
    },
)

token = response.json()["token"]
print("Render token:", token)

The API returns a token. Use it to retrieve the rendered video:

https://render.impossible.io/v2/render/TOKEN.mp4

Open that URL in a browser — the personalized video is there. Change name and policyType, and you get a different token and a different video.

i Note

By default, render requests don’t require API credentials — the project ID is enough to render. A project can be set to require authentication, and then every render request has to carry your API Key. See Credentials.

What’s next?

  • Rendering Videos — Retrieval modes, streaming, uploading, and multi-region rendering.
  • Integrations — Personalized videos in JW Player, Video.js, Vimeo, and other players.
  • SDKs — Client libraries instead of raw HTTP calls.
  • Batch Rendering — Thousands of variants from a spreadsheet or a database.