Guides
Sume guides: the API, Formats, agents, models, media tools and pricing, each answer dated and sourced.

Export old video prompts to JSONL, then re-render on Sume resumably
A prompt manifest for a Sora back catalog: one JSON line per clip with a stable idempotency key and status, and a runnable script that skips what is done.

Photo to video on Sume: frame_images or input_references?
Which Sume video field starts from your photo and which only guides style. If you send both, frame_images wins. Two request bodies and a check you can run.

Score a Sora replacement: five numbers to log for every clip
Before you cut over from Sora to a Sume video model, log five numbers per clip: status, wall time, usage.cost, duration asked and failures. Script included.

Reddit bills video over 15 s at 15 s: a 9:16 clip to make on Sume
Reddit's Engaged Video Views beta bills videos over 15 seconds at 15. Which Sume models stop at 15 s or less, what a 10 s vertical clip costs, and the call.

Sume job statuses: three vocabularies and a Python normalizer
Ported Sora code checks one status word. Sume has pending, queued and IN_QUEUE depending on the route. A table, and a normalizer you can run with no network.

Kling 3 as your Sora replacement on Sume: four limits to check
Kling VIDEO 3.0 is 15 s with native audio per a video tracker. On Sume kling-3 takes 4-15 s at 720p or 1080p and no reference URLs. Four checks before a port.

Timeout for AI video jobs: set a deadline in your worker, not HTTP
A Sora-era HTTP timeout of 10 minutes breaks on Sume: sync waits cap at 30 s while jobs run for minutes. Use a client deadline and a poll. Python example.

Callback or polling for a ported video worker: pick by job count
Replacing a Sora polling worker on Sume: when callback_url beats polling, when polling is enough, and one function that does both.

YouTube Shorts series after Sora: render 9:16 episodes by API
YouTube Shorts series rolled out from 2026-09-23. Render a season of vertical episodes on Sume, one job and one idempotency key per episode, with the cost.

Speed up a Reel? Sume has no speed field, so shorten the cut
Sume's trim, filter and timeline docs list no playback-speed control. Here is what to use to hit a Reel or Short length instead, with the exact limits.

Split a long video into Shorts episodes: Python trim ranges
Generate back-to-back video trim ranges for a long vertical video with a tail rule, so no episode is a sliver. Respects the 1800 s source and 900 s output caps.

Sume output schema limits: depth 10, 5,000 properties, 120,000 chars
How big can a Sume output_schema be? Depth 10, 5,000 properties and 120,000 characters, and a refusal before any spend. What to flatten and where it fails.

Sume TTS vs MAI-Voice-2.1 at 50k to 5M characters a month
At 1M characters a month Sume TTS bills $47.50, MAI-Voice-2.1 lists $22 and Flash $15. The monthly table for 50k to 5M and when the gap is worth paying.

Swap a character into an existing image with an Ideogram 4.5 edit
Put your mascot or character into a finished layout with Ideogram 4.5 on Sume: the layout image goes first, the character image second, one change per call.

Synthesia Starter's 12 minutes vs twelve 60-second Sume avatar jobs
Synthesia lists $29 for about 12 minutes and $89 for about 60. How those minutes map to Sume avatar jobs capped at 60 seconds, and what each setup is for.

Tavus Starter vs Growth: break-even is about 1,014 minutes a month
Tavus Starter is $59 plus $0.37 a minute over 100; Growth is $397 with 1,250 minutes. The crossover, and when a rendered Sume clip fits better than minutes.

Test a Sume poll loop without waiting: inject sleep, assert delays
Unit test a job poll loop in milliseconds by injecting the fetch and the sleep. Assert that next_poll_after_seconds is obeyed and the 20-minute deadline holds.

Text-to-speech API with curl and jq: one shell script to an MP3
Call the Sume TTS Router from a shell: submit with curl, loop on the status URL with jq until terminal, then download the audio artifact to voiceover.mp3.

Sume timeline warnings are not failures: a gate for your season
A padded, looped, resampled or clamped clip comes back as a warning on a completed render. A Python allowlist gate stops those episodes before you publish.

Tote bag mockup with an AI image API: your logo on a canvas bag
Send your logo as a reference to GPT Image 2.5 on Sume and ask for a canvas tote on a plain studio set. Check the logo against the original before you list it.

Trim first, then caption: the 60-second note on the caption price
Sume quotes the $0.20 video-captions price for videos up to 60 seconds. Cut the episode with video trim at $0.02 first, then caption only the part you keep.

Text-to-speech API in Node: submit, poll and save the MP3
A Node 18+ fetch example for the Sume TTS Router: submit with an Idempotency-Key, poll status_url, read the audio artifact and save an MP3 to disk.

Two-camera podcast clip for Shorts: alternate angles with source_in
Cut between two camera files against one audio spine in Timeline 1.0: equal on-spine starts and source_in keep both angles in sync. Python builder included.

Two voices, one conversation: Sume TTS jobs joined by concat
Make a two-person dialogue file with Sume: one TTS job per line using two avatar voices, then one Timeline audio concat. Cost, code and the gap.

TypeScript types for a Sume job status: narrow on sume_status
Type the Sume job envelope as a discriminated union on sume_status, so a switch covers queued to canceled and the compiler flags a missed case. Runs on Node 22.

UGC-style ad: test five hooks on one body with Timeline plans
Join five 3-second hooks to one 12-second body clip with Timeline 1.0. Plan each cut unbilled, then render the winners at $0.10 a minute.

UGC-style ad: a music bed that ducks under the voice
Add a looped music bed to a UGC-style ad and lower it under the voice with soundtrack.duck_db in a Timeline 1.0 render. Needs a real voice spine.

User closed the tab mid-render: cancel the Sume job or let it finish?
Cancel works only before generation starts; after that you get 409 job_generation_already_started and the job bills. A tested tab-close handler.

Video ad end card: add a fade-in and fade-out with Timeline
Close an ad with a 1-second fade-out and open it with a 0.5-second fade-in using output.fade_in_seconds and fade_out_seconds in a Timeline 1.0 render.

Voice one script in six languages: Sume TTS loop and 409 guard
MAI-Voice-2.1 sells one voice across 23 languages. On Sume, set language per line, handle the 409 voice-language guard and price a six-language batch.

Vozo lip-sync minutes per plan vs Sume per-second lip sync
Vozo lists about 15 lip-sync minutes at $29 and 60 at $99. Sume bills H3 Max lip sync per second with no plan. The per-minute math and where each fits.

Webhook for an unknown job_id: park it, then reconcile on insert
A Sume job.completed webhook can name a job_id your database has not stored yet. Return 2xx, park the event in SQLite, and apply it when the insert lands.

Weekly video: Agent Completion, Format or schedule on Sume?
A weekly video fits a Format or a schedule, not a fresh Agent Completion each time. How to choose among the three Sume surfaces for a recurring job.

What one captioned Shorts episode costs on Sume, itemized
Add the documented Sume rates for one Shorts episode: render, trim, captions, transcript. A Python estimator refuses captions past the 60-second quote.

WhatsApp Business MCP is dev-only: keep Sume generation server-side
WhatsApp Business tools MCP was announced as dev and test only. Generate with Sume on your server and gate the MCP transport by environment. Tested code.

AI video models with sound: which toggle it, which are always on
Seedance 2.5, Wan 3.0, Kling 3 and MiniMax H3 all return audio on Sume. Kling prices audio separately; H3 and Omni cannot turn it off. What each does.

Which new video model for which job: Seedance, Wan, Kling, H3, Omni
A decision table for the five new video models on Sume, by clip length, resolution, sound and price per second. Veo 3.1 and LTX-2.5 are not on Sume.

Yard sign artwork via API: 3:2 art, a quoted headline, a print check
Generate yard sign artwork at 3:2 on Sume with GPT Image 2.5 or Ideogram 4.5, keep the headline to a few words, quote it, and check the pixel size for print.

YouTube Shorts series covers: one template, one edit per episode
YouTube is rolling out Shorts series with covers. Make one template with Ideogram 4.5, then change only the episode number with one edit call per episode.

Shorts series: a season of 30-second episodes with Seedance 2.5
Shorts series are rolling out. A season of eight 30-second episodes costs $138.72 on Seedance 2.5 at 720p and $30.00 on Wan 3.0. The math and a batch loop.

Zed context_servers for the hosted Sume server: no header means OAuth
Add the hosted Sume server to Zed's settings.json context_servers with a url. With no Authorization header Zed runs the MCP OAuth flow, so start with mcp:read.

Estimate a folder of clips transcription cost with ffprobe
Sum each clip's seconds with ffprobe, flag anything over 600 s, and price it at $0.01 per audio minute before you submit a single Sume STT job.

Idempotency key for transcription: hash the request, avoid 409
Derive the Sume STT Idempotency-Key from a hash of audio_url, language and duration. A retry returns the same job. A changed body under that key is a 409.

jobs_wait for 20 transcription jobs in one MCP call
The hosted MCP jobs_wait takes up to 20 job_ids, wait_for all or any, and include_results returns each finished transcript. Retry slices of 55 seconds.

jobs_wait outcomes: wait_slice_expired, operator_stopped, omitted
What each jobs_wait answer means on Sume's hosted MCP and what your agent should do next: call again, stop waiting on stopped ids, or read omitted results.

Node fetch worker pool: submit transcription jobs with retry-after
A 30-line Node 18+ worker pool that posts Sume STT jobs, sleeps for retry-after on 429, and sends an Idempotency-Key per clip. Tested against a stub.

Poll many transcription jobs without a 429: next_poll_after_seconds
Poll Sume job status with the next_poll_after_seconds the API sends, back off on 429 with retry-after, and stop on a terminal status.

Python asyncio semaphore: submit transcription jobs with a cap
Run Sume STT submits through asyncio.Semaphore and asyncio.to_thread, honor retry-after on 429, and keep one Idempotency-Key per clip. Tested code.