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

Korean caption fonts: 29 Hangul faces and each style's default
Sume video captions list 29 Hangul fonts under the font field. See which face each style uses by default and what the API rejects.

Korean captions on slam return 400: caption_hangul_text_latin_style
Sending Hangul text to slam, punch or tiktok-green returns 400. Sume refuses rather than burn tofu boxes. Use black-outline or a Hangul style.

Letter size 8.5x11 AI image: 1088x1408 is an exact ratio
GPT Image 2.5 on Sume needs multiples of 16. 1088x1408 matches 8.5x11 exactly (17:22) and passes the pixel box. 2176x2816 is the 2x size.

LinkedIn video ads: the first 10 seconds and a frame check with Sume
LinkedIn says to put your most impactful content in the first 10 seconds. Pull stills at 0 to 9 seconds with Sume video frames and see what a muted viewer sees.

List Sume jobs for one run_id and count them by status (curl and jq)
GET /v1/jobs filters by run_id, scope and status and returns up to 100 rows. A short curl and jq script gives a count per status for one run.

Lyria prompt section markers: [0:00-0:30] Intro on Sume Music
Sume Music has no duration field. You shape a track with section markers like [0:00-0:30] Intro and a stated length in the prompt itself.

Meta feed sound is optional but recommended: add a ducked music bed
Meta says captions and sound are optional but recommended on Facebook Feed video. Add a music bed under a voice with Sume Timeline soundtrack and duck_db.

Music API duration_seconds rejected: set track length in the prompt
Sume Music 1.0 and the Music Router reject duration and duration_seconds. Put the length in the prompt (a 2-minute track) and use time markers.

Music prompt limit: 5000 characters is plenty for a Lyria brief
The Sume Music prompt takes 1 to 5000 characters. A full seven-axis brief with section markers is far shorter, so the limit rarely binds.

Scoring contrasting scenes: 12 BPM apart and a new lead instrument
Sume's music brief rule for contrasting scenes: change the genre family, move tempo at least 12 BPM, and swap the lead instrument. Keep them for one score.

One TTS job per sentence, then a gapless concat: the Sume recipe
Generate narration one sentence at a time with tts_create, then join the takes with timeline audio. Fix one line without redoing the rest.

Pick the cheapest Video Router model from the live catalog
Read GET /v1/video-router/models, filter by resolution, duration and capability, and rank by list x 1.25 in integer micros. Node code with an offline test.

Pika Starter 900 credits vs Creator 3,150: same credit price
Pika Creator costs 3.5 times Starter and gives 3.5 times the credits. The extra $25 is the commercial license, not a volume discount.

Pinterest video titles show 40 characters: burn the hook in
Pinterest shows the first 40 characters of a video ad title in the feed (30 for CJK) and hides the description. Burn the hook in with Sume captions.

Poll a Sume image job in Python: obey next_poll_after_seconds
When POST /v1/images returns 202, keep polling the status_url and sleep for next_poll_after_seconds. A short Python loop that stops on a terminal status.

Preview the first frame before an avatar render: Sume vs credits
Synthesia and HeyGen sell avatar video from monthly credit pools. Sume previews the first frame of an avatar scene before you commit to the full render.

Do punch and tiktok-green captions accept design overrides? No
In Sume video captions, punch and tiktok-green do not support design: they render on a path that reads none of the tokens. Use another style to tune.

Put the AI disclosure in scene one: Sume avatar video_inputs recipe
A copyable Sume Avatar 1.0 request with a 3-second disclosure scene and a 12-second message. The 15 seconds cost $2.76 at standard, $3.68 at plus.

Remix a reference ad in two calls: ingest, then a sume-recreate run
Read a reference clip with Sume reference ingest (300 s max, shots, OCR, audio), then start a sume-recreate Format run with your product and a spend cap.

Retry a Format 402 with the same Idempotency-Key after adding funds
A 402 at create means nothing ran and the key was released. Add funds, then resend with the same Idempotency-Key. A replay costs nothing.

Roo Code alwaysAllow for Sume MCP: which tools to auto-approve
Roo Code alwaysAllow skips the approval click. Auto-approve Sume read tools only, and keep paid ones manual or behind dry_run and a spend cap.

Roo Code MCP timeout 60 s default: add Sume as streamable-http
Roo Code defaults MCP requests to 60 seconds and allows 1 to 3600. Here is the streamable-http entry for Sume with a timeout that fits jobs_wait.

Runway credit table vs Sume plan call: know the price first
Runway lists credits per clip on its pricing page. Sume Timeline has an unbilled plan call that returns billable minutes and estimated cost before you render.

script_alignment_mismatch: fixing a caption job with script_text
When script_text does not match the speech, a Sume caption job fails with script_alignment_mismatch or script_alignment_failed. Simplify the script or omit it.

Skippable in-stream has no max length: cut a 6-minute film under 3
Google Ads sets no maximum for skippable in-stream but recommends under 3 minutes. Cut a 6-minute film with Sume trim at $0.02 and find the cut points.

Smallest square GPT Image 2.5 accepts on Sume: 816x816
A small icon request fails at 800x800 on GPT Image 2.5: under 655,360 pixels. 810x810 fails the 16 rule. 816x816 is the smallest legal square.

Smallest video each ad platform accepts, and Sume's 256 px floor
Meta Facebook Feed needs 120 px, Instagram Feed 250 px wide, LinkedIn 360 px, TikTok 540x960. Sume trim and Timeline output cannot go below 256 px.

Timeline soundtrack duck_db: 0 to 20 dB, needs a real audio spine
Sume Timeline soundtrack.duck_db accepts 0 to 20 and returns duck_requires_audio_spine on silence. Use it with a voiceover spine; gain_db covers a static level.

Sume image n: docs say up to 10, every catalog row says 4 or less
The Image API docs say n is 1 to 10, but each catalog row publishes its own ceiling: 4 on most, 1 on Grok Imagine. Cost is cost_usd times n. Table with prices.

Sume MCP insufficient_scope: why it happens and the two ways to fix it
A Sume MCP tool returns insufficient_scope when an OAuth session has mcp:read only. Fix it by re-consenting with Write on, or by using an API key.

Sume MCP jobs_wait with 20 job_ids: wait_for any versus all
jobs_wait takes up to 20 job_ids and wait_for any or all. All is the default. Any returns early, but the other jobs keep running and billing. Examples inside.

Sume 429 queue_full from an MCP agent: wave sizes for Free to Scale
An agent that submits too many paid jobs hits 429 queue_full. Accepted capacity is 6 on Free, 24 on Pro, 48 on Startup, 120 on Scale. Wave sizes inside.

Sume MCP script_run: fan out 3+ calls in one turn, 55 s limit
script_run runs a short JavaScript program on Sume that calls tools in a loop or in parallel. timeout_seconds is 5 to 55. Use it for 3+ similar calls.

Sume submit: request_id is the job id you poll (curl, jq)
After an async submit, data.request_id is the id for GET /v1/jobs/:id. error.request_id is for support tickets. A curl and jq check.

Suno Premier credits cost 25% less than Pro: and the Sume math
Suno Pro is $8 for 2,500 credits and Premier $24 for 10,000, so a credit is $0.0032 vs $0.0024. At $0.125 a track, Sume breaks even at 64 or 192 tracks.

Synthesia needs a live consent clip: what do Sume photo avatars need?
Synthesia says personal avatars need a live consent recording. Sume's photo avatar takes an HTTPS image URL, so your own release process must cover consent.

Approval gate for AI avatar video: review stills before rendering
Add a sign-off step before publishing synthetic video: Sume's avatar video preview returns first-frame stills, and a later tier change needs no new preview.

Tall 1:3 strip on GPT Image 2.5: 1280x3840 passes, 1280x3856 fails
A tall scroll strip on Sume's GPT Image 2.5 can be 1:3 at most. 1280x3840 is exact and legal; one more row of 16 pixels breaks the 3:1 rule.

Timeline audio concat fails on mono plus stereo: channel mismatch
Joining a mono and a stereo file in Sume timeline audio returns audio_parts_channel_mismatch. Detach both as mono, or match layouts first.

Timeline render_strategy_unsafe: why single fails above 12 slots
Timeline returns render_strategy_unsafe when strategy single is used with over 12 slots. Leave it on auto, which chunks past 12 segments. Limits and the fix.

Timeline too_many_chained_transitions: 8 fades, then a hard cut
Sume Timeline allows at most 8 adjacent fades and returns too_many_chained_transitions past that. Each fade is 1 s or less and 50% of the shorter slot. The fix.

Verify a Sume image webhook in Python, then read artifacts[]
A 23-line Python verifier for Sume's x-sume-webhook-signature header on an image job: refuses an empty secret, checks a 5-minute window, reads the image URL.

verifyWebhook toleranceSeconds 0 turns off the Sume replay check
In @sume-com/sdk, toleranceSeconds defaults to 300 and 0 skips the timestamp check. A runnable test shows an hour-old signed delivery passing only at 0.

wav or mp3 for joined audio: priming padding at every edge
Sume timeline audio outputs wav by default and mp3 as an option. Keep wav if you join again or lip-sync: mp3 adds priming padding at every edge.

Check your Sume webhook secret at boot: 64 hex and a match
A Node startup check for a Sume webhook receiver: the secret must be 64 hex characters, non-empty, and equal to GET /v1/webhooks/signing-secret.

Which AI video models make a 20-second clip in one job on Sume?
Seedance 2.5 (4-30 s) and Wan 3.0 (2-30 s) cover 20 seconds in one job on Sume. Omni Flash 1.1 stops at 10 s, MiniMax H3 at 15 s. Full duration table.

Which Sume Formats return images, not video? 9 of the 27 slugs
Of the 27 Formats by Sume, 18 declare video output and 9 declare image output. The slug lists, how to read the io profile, and why to check before you call.

Which Sume submit errors cost money: 402, queue_full, 429, 503
None of them charges you. 402 fails before the reserve, queue_full releases the hold, and rate_limited and 503 mean the job was never accepted.