Colossyan dynamicVariables vs Sume: fill placeholders yourself

Colossyan swaps {name} placeholders from dynamicVariables. Sume's avatar endpoint has no such field: fill the script yourself, one idempotent job per recipient.

4 min readSume
All posts

In Colossyan you type a variable such as {name} in a scene script and send values in dynamicVariables when you generate; the API replaces the placeholders. The Sume avatar-video docs describe no equivalent field, so with Sume you substitute the text in your own code and submit one job per recipient.

Colossyan facts are from its script template variables page; Sume facts from Generate avatar video, both read 2026-10-01.

How does Colossyan fill the variables?

Its page says you can create dynamic variables in the script of any scene by typing a name between curly braces, and that you replace them by sending values in the request body when generating a video. Its example script has three variables: name, cool_stuff_1 and cool_stuff_2.

What does a Sume request take instead?

Sume's POST /v1/avatar-1.0/talking-video takes a script or ordered video_inputs. A spoken scene uses voice.type: "text" with exactly one of script or input_text. The text you send is the text that is spoken, so personalisation is a string step before the request.

Template variables compared with Sume avatar inputs, read 2026-10-01.
NeedColossyan pageSume avatar-video docs
Placeholder syntaxCurly braces in the scene scriptNone documented; send final text
Where values godynamicVariables in the request bodyAlready inside script or input_text
Per-scene textScript on any scenevoice.script or voice.input_text per video_inputs item
Duration windowNot covered on this pageEstimated 4-60 seconds inclusive

How do I personalise at scale?

Keep the template in your code, replace each placeholder per recipient, and send one request with its own Idempotency-Key (the docs example uses avatar-video-multi-001). A retry of the same recipient then reuses the key instead of creating a second paid job; see idempotency keys for AI video APIs.

const template = "Dear {name}, we shipped {feature}. Want a quick catch-up?";

function fill(t, values) {
  return t.replace(/\{(\w+)\}/g, function (m, k) {
    if (!(k in values)) throw new Error("missing value for " + k);
    return values[k];
  });
}

const script = fill(template, { name: "John", feature: "Slack sync" });
console.log(script);

What limits apply to each personalised video?

Scripts and multi-scene plans are accepted when Sume estimates the duration at 4-60 seconds inclusive, so a long name or feature list can push a script out of the window. The docs say to shorten longer scripts or split them into multiple jobs. Check the filled text, not the template, against that window.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume