Tabletop session recap video: narration, 5 stills, 57 cents

Turn your session notes into a 90-second "last time" recap: 900 characters of narration, five stills, a music bed and one Timeline render. About $0.57 on Sume.

5 min readSume
All posts

To make a recap video for a tabletop campaign, write 900 characters of "last time" narration from your session notes, generate five stills, and join them with a narration track and a quiet music bed in one Timeline 1.0 render. At Sume's rate card that is about $0.57 per session recap, and players who missed a week can watch it in a minute and a half.

The point is cost per session, because a weekly recap only survives if it is cheap enough to forget about. Everything below uses rates read from Sume's API pricing page and the Timeline docs on 2026-10-04.

What goes into the narration?

Five beats, about 180 characters each: where the party was, what they fought, what they found, what it cost them, and the open hook. Write it in the second person present so it sounds like a trailer. Text to speech is $0.0475 per 1,000 characters and a single request takes up to 20,000, so 900 characters is $0.04275, less than a nickel.

Use the same five beats as image prompts: location, enemy, treasure, loss, door. For a consistent look across weeks, keep one style sentence at the start of every prompt, the approach used in one style anchor for character portraits.

What does one recap cost?

Ideogram 4.5 is the example image model here: its list is $0.03, $0.06 or $0.22 per image by quality, before Sume's margin (Image API docs). Music is a flat $0.125 per generation, and Timeline is reserved at $0.10 per output minute, rounded up, then captured at the render's own compute, never above that reservation.

One 90-second recap, rates read 2026-10-04
ItemRateAmount
Narration, 900 characters$0.0475 per 1,000 characters$0.04
Five stills, Ideogram 4.5 medium$0.06 list each$0.30
Music bed, one generation$0.125 per audio$0.13
Timeline render, up to 2 minutes$0.10 per output minute, rounded up$0.10
Totalabout $0.57 before image margin

How do I assemble it?

Narration is the spine: audio.url plus its duration_seconds. Each still is a slot with a start time and duration, and the music goes in soundtrack with duck_db so it sits under the voice. Every URL must be a media.sume.com artifact, which generated files already are; anything else must be imported first (Media inputs). Five slots of 18 seconds make 90.

curl -X POST https://api.sume.com/v1/timeline-1.0/render \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: recap-s14-001" \
  -d '{
    "audio": { "url": "NARRATION_URL", "duration_seconds": 90 },
    "video": [
      { "source_url": "STILL_1", "start": 0,  "duration": 18 },
      { "source_url": "STILL_2", "start": 18, "duration": 18,
        "transition": { "type": "fade", "duration": 0.5 } },
      { "source_url": "STILL_3", "start": 36, "duration": 18,
        "transition": { "type": "fade", "duration": 0.5 } },
      { "source_url": "STILL_4", "start": 54, "duration": 18,
        "transition": { "type": "fade", "duration": 0.5 } },
      { "source_url": "STILL_5", "start": 72, "duration": 18,
        "transition": { "type": "fade", "duration": 0.5 } }
    ],
    "soundtrack": { "url": "MUSIC_URL", "duck_db": 12, "loop": true, "fade_out_seconds": 3 },
    "output": { "width": 1920, "height": 1080 }
  }'

How do I check the render before it costs anything?

POST /v1/timeline-1.0/plan runs the same compile as a render but is unbilled: it returns the duration, segment count, billable minutes and an estimated cost, and creates no job. Run it first to catch an off-host URL or a timing gap. If you set the spine at 90 seconds but the narration is 84, change the slot durations to match; coverage may trail the spine by at most half a second.

Send the finished MP4 to the group chat before the next session. If the table likes it, repeat the same five-beat recipe every week.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume