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

Resume a Sume job wait after SumeJobTimeoutError in TypeScript
A 30-second Seedance 2.5 clip can outlast one waitForJob call. Call it again with the same job id on timeout or a transient read error. Never resubmit.

Seedance 2.5 with a reference video: 1.5x a plain 10 s clip
Sume prices a Seedance 2.5 job with a reference video at 60% of output plus an assumed 15 s of input. 5 s clips cost 2.4x; 30 s clips cost less. Table at 720p.

Wan 3.0 price per second: 1080p costs 4x the 480p rate
Wan 3.0 is $0.05, $0.10 and $0.20 per second at 480p, 720p and 1080p on fal. Sume bills list x 1.25. Per-clip prices at 5, 15 and 30 seconds.

Price per second, 720p and 1080p: Vidu Q4, Omni, Wan 3.0, Seedance 2.5
One table of the new video models at 720p and 1080p: fal list rates read Oct 9, 2026 beside what Sume bills (list x 1.25). Vidu Q4 is not in Sume's catalog.

Check a Sume video price yourself: fal list x 1.25, three examples
How to verify a Sume video price from the vendor page: take the fal rate, multiply by 1.25. Worked for Wan 3.0, Gemini Omni Flash 1.1 and Seedance 2.5.

Luma Ray3.2 HDR is 2x the SDR price, HDR plus EXR is 3x
Luma's API prices HDR at twice SDR and HDR plus 16-bit EXR at three times. A 5-second 1080p example, and what Sume's MP4 pipeline does and does not keep.

Vidu 24-hour and FLUX 3 signed result links: copy the file first
Vidu result URLs last 24 hours and FLUX 3 signed URLs about 2 hours, or about 10 minutes by another line. Stream the Sume clip to disk and keep the job id.

What 25% adds to a fal bill: 100, 1,000 and 10,000 seconds of Wan 3.0
Sume bills provider list x 1.25. On Wan 3.0 at 720p that is $12.50 vs $10.00 for 100 seconds and $1,250 vs $1,000 for 10,000. What the gap is, sized.

HappyHorse 1.1 lists 9 aspect ratios; Omni on Sume lists 2
HappyHorse 1.1 reference-to-video offers nine ratios, from 9:21 to 21:9. Gemini Omni Flash offers 16:9 and 9:16. How to check a Sume model's ratios first.

Seedance 2.5 price calculator: the token formula in Python
Seedance 2.5 bills video tokens, not seconds. Width x height x seconds x 24 / 1024, then the per-1,000 rate. A 20-line Python calculator, checked against fal.

Event recap videos: one bulk queue, one run per session
Queue one recap per conference session with POST bulk-runs: concurrency window, per-item caps, how to read the queue, and why completed does not mean success.

App demo video through the sume-mobile-app-ugc Format: what to send
Call a catalog Format at the sume handle for an app demo video. Read its io profile first, send screens and copy, cap the spend, and test the receipt.

How long to poll a Format run: use expires_at, not your own timeout
A non-terminal Format run receipt carries expires_at, 90 minutes after created_at or earlier if the run goes silent. Set your poll ceiling from it and back off.

Restaurant promo video for TikTok Ads: check size before upload
A restaurant promo made with a Sume Format can fail TikTok's non-Spark minimums. Read width, height and size_bytes from the run receipt before you upload.

Format run media URLs never expire and anyone can open them
Media from a Sume Format run lives at durable media.sume.com URLs that anyone with the link can open. What that means for per-customer access and retention.

Share a Format with another workspace: grants, accept and the 404
A Format owner can share a team Format with another workspace by grant. The other workspace accepts, calls it with its own key, and pays its own bill.

Format input vs instruction: where scraped product copy should go
Put scraped or customer text in the input object, not in instruction. Sume writes input to a file and marks it as data. Limits: 64 keys, 2 MiB, 4000 characters.

Format webhook outcome: ok, degraded or error, and what to do
The format.run.terminal webhook has three outcomes. Verify the sume-v1 signature, then branch: ok uses output, degraded uses artifacts, error is a failed run.

Spreadsheet to Format bulk queue in Node: 100-row limit and key rules
Turn a CSV of products into one bulk-runs request in Node. Items are capped at 100, concurrency at 16, and the Idempotency-Key must be new for each batch.

Course intro video output_schema: optional fields must be nullable
Bind a strict output_schema to a course-intro Format run so the intro and title card come back as typed fields. Optional keys must allow null.

Seasonal sale video: re-skin your own footage with sume-restyle
Reuse one product clip for a holiday sale by calling sume-restyle, which keeps motion, timing and cuts and rewrites the look. Inputs, limits and checks.

Podcast trailer: redo one part with previous_run_id, not a full rerun
Fix one weak scene in a podcast trailer by continuing the Format run with previous_run_id, so the agent keeps the rest. Rules, refusals and cost.

Team Format returns 403 workspace_key_required: which key to mint
A personal key on a team Format gets 403 workspace_key_required. details.workspace_id names the workspace. Create the key there. Other keys see 404.

Format package files: which types and paths the Contents API accepts
A Sume Format package accepts only .md, .json, .yaml, .yml and .txt files, one folder deep, with SKILL.md required. The full rule list and the error you get.

Real estate walkthrough video from listing photos: the 30-image limit
A Sume Format run accepts up to 30 images as attachments. How to send listing photos, keep room order, set a cap and read the walkthrough back.

Format Contents API: If-Match stops two agents overwriting each other
Per-file sha checks do not catch two agents editing different files. Send If-Match with package_sha and handle 409 format_package_sha_mismatch.

Make a three-minute YouTube Short with a Format and check duration_ms
YouTube counts square or vertical uploads up to three minutes as Shorts. Call a Sume Format, then test duration_ms and aspect ratio on the receipt first.

Cancel a Format run: cancel_effect, no_op and what you still pay
POST cancel on a Format run is idempotent. cancel_effect says canceled or no_op. You pay for generation done before the cancel, and no webhook is sent.

A Sume webhook receiver in a Cloudflare Worker with verifyWebhook
verifyWebhook uses WebCrypto, not node:crypto, so it can run in a Worker. A fetch handler that refuses an empty secret, checks the signature, returns 204.

Sume webhook retries: 10 attempts, 270 seconds of gaps, then poll
How long does Sume keep retrying a job webhook? Ten attempts, a 30 second default gap and a 10 second timeout, worked out in seconds, plus a Python dedupe.

Sume webhook delivery statuses: pending to exhausted, and your move
A Sume job webhook has six delivery states, from pending to exhausted. What each means for your receiver, where to read it, and when to redeliver or poll.

Route Sume job webhooks: handle job.canceled, answer 204 to the rest
Sume sends job.completed, job.failed and job.canceled; run webhooks use another name. A TypeScript router that handles each and returns 204 for the rest.

38-second ad: stills, clips, voice, music, render, cost per second
One 38-second ad from 6 stills, five 8-second Wan clips, a 640-character voiceover, a music bed and a render costs $5.8554, or $0.1541 per finished second.

VS Code user MCP config: a read-only and a Write Sume profile
VS Code's MCP: Open User Configuration edits per-user servers. Keep OAuth read-only Sume in your everyday setup and an API key entry only where paid jobs run.

VS Code MCP: Reset Trust after you grant Sume the Write scope
Write on Sume's consent page changes the server's abilities, not VS Code's trust decision. MCP: Reset Trust makes VS Code ask again; mcp_health shows scopes.

Verify a Sume webhook in Python with the standard library only
Check the sume-v1 HMAC in Python without a package: raw body, timestamp window, two signatures during rotation, and a refusal of an empty secret. 20 lines.

Express route for a Sume webhook: raw body, verifyWebhook, 204
In Express, express.json() breaks the Sume signature check. Mount express.raw on the webhook route only, call verifyWebhook, and return a fast 2xx. TypeScript.

Perplexity MCP authorization field with Sume: one-hour token
Perplexity passes the authorization value to the MCP server as an access token. A Sume OAuth token lasts one hour with no refresh, so use an API key unattended.

Perplexity Agent API MCP tool: server_label rules for Sume
Perplexity MCP tool: server_label must match ^[a-zA-Z0-9_-]{1,64}$. A Sume entry that passes, with authorization, headers and allowed_tools.

Face swap beta, 9-second clip: you reserve the 15-second price
Sume's Avatar Face Swap beta reserves the maximum 15-second source price whatever your clip length: $2.76 at standard, $3.675 at plus, $8.25 at max.

X video ads loop under 60 seconds: design the last frame of a 45 s ad
X loops video ads shorter than 60 seconds and plays longer ones once. Plan the first and last second differently for each, then check them with Sume.

Pinterest Idea ad video: 100 MB on web, 2 GB in app, 5 minutes max
Pinterest lists 100 MB on web and 2 GB in app for Idea ad video, up to 5 minutes. Here is the average bitrate each cap allows and how to check a Sume export.

Sume webhook signature fails: compare the secret fingerprint first
Webhook signature mismatch? Compare x-sume-webhook-secret-fingerprint with the dashboard before touching code. It is the one value safe to paste in a ticket.

Snapchat Commercials need H.264: trim keyframe copies the source codec
Snapchat lists H.264 mp4 or mov for Commercials. Video trim keyframe is a stream copy, exact re-encodes to libx264, so use exact if the source is not H.264.

VS Code Settings Sync and MCP servers: keep the Sume key out
VS Code can sync MCP config when the MCP Servers sync option is on. Keep the Sume API key out of the file with an input variable, or use OAuth instead.

Python httpx 429 handler for Sume: retry-after, then ratelimit-reset
A small async Python wrapper for the Sume API that waits on retry-after, falls back to ratelimit-reset, and never retries a POST that lacks an Idempotency-Key.

Wan 3.0 720p plus Video Upscale vs native 1080p: 8, 12, 30 seconds
Wan 3.0 at 720p plus Sume Video Upscale at $0.009/s costs 53.6% of native 1080p at 12 s: $1.608 vs $3.00. The table covers 8, 12 and 30 seconds.

Pinterest Idea ad safe zone 270 top, 440 bottom: place captions
Pinterest's Idea ad safe zone leaves 820 by 1210 pixels on a 1080x1920 video. Work out the caption band, then test Sume's anchor_ratio against a still.