Blog
Sume blog: agent-native video generation, Avatar 1.0 orchestration, and production APIs for builders and coding agents.

Go errgroup SetLimit: submit Sume jobs within your concurrency budget
Cap in-flight Sume submissions in Go with errgroup.SetLimit, size the width from your concurrency limit, and keep one Idempotency-Key per item. 30 lines.

Sume GET /v1/balance expiration fields: warn before credits lapse
GET /v1/balance reports when your next credit lot expires and how much expires soon. Read the fields, convert micros to dollars, and alert from a cron job.

Verify a canceled Sume job was refunded: read the usage ledger by job
After you cancel a queued job, check GET /v1/usage with job_id and read the row status: reserved, captured or refunded. A Python script prints the answer.

GitHub Actions: cancel the Sume Format run when the job is canceled
A canceled GitHub job does not stop a Sume run. Add a step with if: cancelled() that posts to the run's cancel URL, within GitHub's 7.5 second signal window.

GitHub Actions concurrency queue: max vs single, and Sume queue_full
GitHub concurrency keeps one pending run by default, up to 100 with queue: max. See what that means for Sume submits and why cancel-in-progress is risky.

Pickleball winter league signup: schedule card over court footage
Pin a schedule card on top of court footage with Sume timeline compose overlay for $0.02. A 6 s Omni Flash clip at 720p is $0.75. Card text stays yours.

HeyGen failure_code and failure_message vs Sume job error
A failed HeyGen video carries failure_code and failure_message; a failed Sume job has an error object and a request id. How to log both the same way.

HeyGen Video Agent needs two polls. Sume's avatar video needs one
HeyGen's Video Agent returns a session, then a video id, so you poll twice. Sume's talking-video route returns one job. Shapes, limits, English only.

Preview a HyperFrames composition as PNG stills with the Sume API
POST /v1/hyperframes-previews returns 1-6 PNG stills of a composition without rendering an MP4. Request shape, polling, and what the frames are not.

HyperFrames check via the Sume API: caption collisions pre-render
Send check with caption_zone to POST /v1/hyperframes-previews and get findings, contrast and overlap reports. A failing check is still a completed job.

YouTube Shorts 1080p and 100-character title: Sume's default fits
YouTube's Shorts page lists 3 minutes, 1080p maximum and a 100-character title. Sume Timeline's default 1080x1920 output already matches.

Sume hosted MCP audio tools: music, TTS, STT, detach, timeline
Which hosted Sume MCP tool makes music, speech, transcripts, detached audio and timeline audio? One table maps each tool to its route and what it costs.

Slow down a TTS voiceover: speed 0.6 to 1.5, volume, emotion
Sume TTS accepts generation_config with speed 0.6 to 1.5, volume 0.5 to 2 and a free-text emotion guide. How to retime a voiceover to a video.

Lip-sync a 2-minute monologue: split one TTS wav into H3 Max clips
MiniMax H3 Max lip-sync takes audio of 5 to 14.8 seconds. For a longer speech, render one TTS wav and cut it at sentence ends; the cost is worked below.

Giving Tuesday volunteer call for a food drive: one avatar clip
A small group running a food drive can make an English volunteer-call clip for Giving Tuesday (Dec 1, 2026) with Avatar 1.0 from $3.68 for 20 seconds.

Apps Script LockService tryLock stops a double Sume run
Wrap the Sume submit in an Apps Script lock so two triggers or edits cannot start the same paid run, then add an idempotency key so a retry is safe.

Tavus lists 42 languages; Sume Avatar 1.0 speaks English only
Tavus video generation lists 42 languages. Sume Avatar 1.0 speaks English only. A short decision guide based on who is listening and what you can accept.

Handing a Format to another team: the API key checklist
Before another workspace calls your Sume Format, check key scope, key type, the API tab, the spend cap and the webhook secret. Lists each 403/409.

Gradium's 1,421 voices: how you pick a voice on Sume TTS
Gradium listed 1,421 TTS voices on Oct 7. Sume does not carry Gradium; here is how voice selection works on Sume TTS with avatar handles or voice ids.

Unit-test a Sume job poll loop with a fake clock and no network
Inject the status reader and the sleep function to test a Sume poll loop in milliseconds: next_poll_after_seconds, backoff fallback and the client deadline.

Cloudflare Queues: add a dead letter queue for Sume webhooks
Cloudflare Queues retries a message 3 times by default, then deletes it unless a dead letter queue exists. Set one up for the events Sume sends to your Worker.

Launch-week 503 provider_capacity_exceeded: safe video submit retries
New video models cause capacity spikes. Retry 429 and 503 on Sume with the same Idempotency-Key, honor retry-after, never retry 402. Python sample included.

Gradium's sub-50 ms TTS vs Sume's async TTS jobs: which fits
Gradium claims sub-50 ms latency. Sume TTS is a non-streaming job with a 30 second wait window; it suits batch narration and video, not live agent replies.

Exact 1080x1350 from Sume: ask for 4:5, then resize
Sume image models take an aspect ratio, not a pixel size. Ask for 4:5, check the returned size, then resize to 1080x1350 with Pillow. Which models list 4:5.

Which Sume video row takes 1:1, 3:4 or 21:9? Aspect ratio matrix
Seedance and MiniMax rows take 21:9; Wan 3.0 skips it; Kling 3 stops at 16:9, 9:16 and 1:1; Omni and Veo are 16:9 or 9:16 only. The full matrix by row.

Make webhook queue: 667 items per 10,000 credits and Sume
Make's webhook queue holds 667 items per 10,000 credits a month, up to 10,000. Work out how many Sume run webhooks a scenario can buffer before it drops.

Music prompt rejected by policy: rewrite only the flagged part
If Sume Music rejects a prompt on policy, change the flagged content but keep the musical brief. The docs say not to flatten it to a generic bed; here is how.

How many Format runs can one API key poll at once?
Read budgets per minute by Sume plan, turned into a count of Format runs you can poll at 5-second and 30-second intervals, and why a bulk queue saves writes.

TikTok Spark Ads have no length cap; non-Spark stops at 10 min
TikTok's page lists no duration restriction for Spark Ads and up to 10 minutes for non-Spark ads. Decide which one needs a Sume trim before you upload.

Let a browser poll your backend, not the Sume API: a proxy pattern
Keep SUME_API_KEY on the server: submit async, return the job id, and give the browser a read-only status route. A 27-line TypeScript route with the checks.

Sume MCP connector shows no icon? What serverInfo.icons sends
Sume's hosted MCP server sends a 32x32 PNG in serverInfo.icons. What the MCP schema says about icons, how to check it, and why some clients show a blank tile.

Spreadsheet rows to videos: Creatomate or Sume bulk runs?
Creatomate ties a template to a spreadsheet; Sume bulk runs queue up to 100 Format runs at concurrency 1 to 16. How rows map, and how many queues 250 rows take.

Veo 3.1 reference images and extension: Google yes, Sume text-only
Google's Veo 3.1 takes up to 3 reference images and extends clips 7 seconds at a time. Sume's Veo rows are text-to-video only. What to use for references.

POST /v1/trending-research: Reels and TikTok niche search over REST
One call returns up to 24 ranked public short videos for a niche from Instagram and TikTok at $0.10 per accepted search. Fields, limits and a Python example.

Slack trigger_id expires in 3 seconds: open the modal first
A Slack trigger_id works once and only for 3 seconds. Open the modal first, then call Sume, and reply later through response_url within 30 minutes and 5 uses.

Make a partial Format result legal in your output_schema
Sume Format output_schema has no optional properties. Use nullable unions, SumeMediaFile refs and honest nulls so a run that makes 2 of 3 clips still returns.

Instagram Stories ad at 16 seconds: split into cards or trim?
Instagram may split Stories video ads of 16 seconds or longer into one to three cards. Cut under 16 seconds with one Sume video trim at $0.02 to keep one card.

ElevenLabs made eleven_v4_turbo a default: pin your TTS engine
ElevenLabs set eleven_v4_turbo as a default on Oct 5. Sume carries Sonic engines, not Eleven; here is how to pin an engine id so audio does not drift.

Can another vendor's audio go into a Sume timeline? What docs allow
Sume timeline audio joins only media.sume.com audio from your workspace. STT and avatar soundtracks take public HTTPS URLs. Which routes accept outside audio.

Will Meta label a Sume video ad as AI? What Meta says it detects
Meta says it will detect third-party AI ads via industry-standard signals and add AI info to About this ad. The Sume docs promise nothing either way.

Edit an AI image in rounds: feed each result URL back as a reference
Sume image calls are stateless. To refine an image over rounds, send the last result URL as input_references, keep the original too, and track cost.

Can you cancel an image generation on Sume? Only before it starts
Cancelling a Sume image job works only before generation work starts. After that the API returns 409 job_generation_already_started and the job runs and bills.

Pizzeria holiday catering clip with native audio: H3 Max prices
A pizzeria can promote office catering orders with a MiniMax H3 Max clip that has native stereo audio. 8 s at 768p is $0.80. Price table and caveats.

Slack link unfurling for a page that shows a Sume render
A Slack app can unfurl your own link with a Sume render preview using link_shared and chat.unfurl. Learn the 5-domain limit and the reinstall rule first.

Cloud Scheduler retryCount max 5: key the Sume submit by slot
Cloud Scheduler retries a failed target up to 5 times, and a retried call looks like a new request. Key the Sume submit by the schedule slot, not the retry.

Image API returned 202, not an image: one Python handler for both
POST /v1/images waits 30 seconds, then returns a 202 job envelope. A Python handler that reads the status code, polls the job and returns image URLs either way.

Snapchat single video ad: 25-char brand, 34-char headline, 720x1280
Snapchat's single image or video ad lists 9:16 at 720x1280, 3-180 s, a 25-character brand and a 34-character headline. Here is how to prepare each with Sume.

Store the Sume artifact, not a provider link: what to persist per job
A completed Sume job returns artifacts with id, url, type and content_type. Persist those plus the job id and idempotency key, not provider links.