Ten FAQ answer clips from one avatar: cost and re-rendering one

Ten 20-second answers from one Sume avatar cost $49 at plus quality plus $0.95 for the avatar. When one answer changes, you re-render only that clip, for $4.90.

4 min readSume
All posts

Ten 20-second FAQ answers at plus quality cost 10 x 20 x $0.245 = $49, plus a one-time $0.95 to create the avatar. When one answer changes, re-render that clip only: 20 x $0.245 = $4.90.

Why separate clips

One long video forces a viewer to scrub for their question, and any change to one answer means a new render of the whole video, with a 60-second cap per job anyway. One clip per question can sit under its own FAQ entry and be updated alone.

Ten FAQ clips of 20 seconds (Sume docs, read 2026-10-05)
QualityPer secondPer clipTen clipsRe-render one
standard$0.184$3.68$36.80$3.68
plus$0.245$4.90$49.00$4.90
max$0.55$11.00$110.00$11.00

Write answers that age well

  • Open with the answer, then one reason.
  • Keep prices and dates out of the spoken text where you can; put them in the page copy.
  • Name each job with the question id so you can find it later.
  • Keep each script to a length you are sure is between 4 and 60 seconds.

Submitting the set

Use a key per question and version, like faq-07-v2. If you change the text, bump the version, because the same key with a different body returns 409 idempotency_conflict.

import json, os, urllib.request

answers = {
    "faq-01-v1": "You can cancel any time from your account page.",
    "faq-02-v1": "Refunds are sent to your original payment method.",
}
for key, text in answers.items():
    body = {"avatar_handle": os.environ["AVATAR_HANDLE"], "script": text,
            "aspect_ratio": "16:9", "quality": "plus"}
    req = urllib.request.Request(
        "https://api.sume.com/v1/avatar-1.0/talking-video",
        data=json.dumps(body).encode(), method="POST",
        headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}",
                 "Content-Type": "application/json",
                 "Idempotency-Key": key},
    )
    with urllib.request.urlopen(req, timeout=30) as r:
        print(key, r.status)

Capacity

Ten submits are normally fine, but a workspace has a cap on accepted work. On 429 queue_full, wait for running jobs and retry with the same key.

What to do

Start with your three most common questions. Measure how many people watch them before you render the other seven.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume