Recall notice as a 9:16 and 16:9 avatar video: cost and captions

A recall notice needs to reach people on phones and on a site. Two 30-second Sume avatar jobs, one per aspect ratio, cost $14.70 at plus quality with captions.

4 min readSume
All posts

Run two avatar jobs with the same script, one at aspect_ratio 9:16 for phones and one at 16:9 for your site. A 30-second notice at plus quality is 30 x $0.245 = $7.35 each, $14.70 for both, with inline captions at no extra job charge.

Why two jobs

Avatar Video supports aspect ratios 1:1, 3:4, 9:16, 4:3 and 16:9, and the default is 9:16. One job produces one ratio, so a vertical and a horizontal cut are two renders. Resolution is 720p.

Two-ratio recall video, 30 seconds (Sume docs, read 2026-10-05)
QualityPer secondOne ratioBoth ratios
standard$0.184$5.52$11.04
plus$0.245$7.35$14.70
max$0.55$16.50$33.00

Script for a notice

Keep to what a person must do, in this order: the product, the risk in plain words, what to do now, and where to get help. Do not add anything your legal team has not approved, because Sume speaks the text you send.

  • Name the product and the affected batch.
  • Say what to stop doing.
  • Say how to get a refund or replacement.
  • Give the page or number for questions.

Captions on both

Inline captions burn the spoken script into the final MP4 and do not create a separate billed video-caption job. A caption stage failure is a soft failure: the job can still succeed with a clean video_url and captions.status set to failed, so check that field before you publish.

import json, os, urllib.request

script = os.environ["RECALL_SCRIPT"]
for ratio in ("9:16", "16:9"):
    body = {
        "avatar_handle": os.environ["AVATAR_HANDLE"],
        "script": script,
        "aspect_ratio": ratio,
        "quality": "plus",
        "captions": {"enabled": True, "style": "punch", "language": "auto"},
    }
    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": "recall-" + ratio.replace(":", "x")},
    )
    with urllib.request.urlopen(req, timeout=30) as r:
        print(ratio, r.status)

What to do

Render at standard first and have the notice read by the person who owns the recall. When the wording is final, render the plus versions. Keep the job ids with the recall record.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume