Developers
Building on the Sume API: keys and hosts, jobs and runs, polling, webhooks, idempotency, errors and rate limits, the SDK, the CLI, and MCP auth.

Midjourney collaborative generation: who can see jobs on Sume?
Midjourney plans ways to generate together. On Sume, an API key reads only the jobs its own member created, so sharing takes a plan. Here are the rules.

Mirage Tesseract needs local files; Sume needs public HTTPS URLs
Mirage Tesseract runs on local files in an agent environment. Sume avatar and lip-sync inputs must be public HTTPS URLs. How to hand clips between the two.

Preflight a Sume image request against capability descriptors
Catch unsupported_parameter before you send: fetch the model descriptors, then check each field of your request against enum, range and boolean types.

Pub/Sub push subscription for Sume events: ack codes and dedupe
Pub/Sub push redelivers on any code outside 102, 200, 201, 202 and 204. Fan Sume completions through Pub/Sub safely with run_id and job_id dedupe.

Remove background from a PNG that already has transparency on Sume
Sume's rmbg route accepts a PNG that already has alpha. Substantial-alpha inputs are flattened onto mid-gray #808080 first, and it is billed once.

Runway ephemeral uploads: 24 hours, 200 MB vs Sume HTTPS inputs
Runway ephemeral uploads give a runway:// URI valid for 24 hours and up to 200 MB. Sume takes public HTTPS URLs instead. What that changes in your pipeline.

Runway input limits: 16 MB image, 32 MB video, HEAD required
Runway URL inputs need HTTPS, a hostname, valid Content-Type, HEAD support and no redirects. A checklist, and how it applies to Sume input URLs.

Runway polling: 5 seconds, jitter, backoff vs Sume next_poll_after
Runway recommends polling tasks every 5 seconds or more with jitter and exponential backoff. Sume returns next_poll_after_seconds. A Python poller for both.

Runway THROTTLED task status vs Sume queued jobs
Runway tasks over your concurrency limit show THROTTLED and are enqueued roughly in submit order. Sume accepts them as queued. How to handle each in a client.

Runway waitForTaskOutput timeout does not cancel the task
Runway's waitForTaskOutput gives up after ten minutes but the task keeps running and billing. How to cancel on timeout, and the same rule on Sume jobs.

SQS FIFO 5-minute dedup vs a Sume Idempotency-Key: which wins?
SQS FIFO dedupes for only 5 minutes. A Sume Idempotency-Key covers the create call itself, so use both when a worker can retry after the window.

Sume image edit returns 400: input_references on a text-only model
A Sume image edit fails with 400 when the model's input_references range is 0 to 0. Read the descriptor, pick a model that accepts references, and retry.

Synthesia Voices page previews your script: test voices with Sume TTS
Synthesia's Voices page plays stock voices with your own script. In Sume, test a voice with the TTS endpoint at $0.0475 per 1,000 characters.

Tavus stock voices in 16 languages vs Sume TTS language mismatch 409
Tavus auto-localized 16 new stock voices (Sep 9, 2026). In Sume, a voice and text language mismatch returns 409 unless you confirm. How to avoid wasted renders.

Tavus S3 key_template vs Sume mirrored media URLs for clips
Tavus added an S3 key_template on Sep 24, 2026. Sume avatar outputs are mirrored to media.sume.com URLs. How to get finished clips into your own bucket.

Trigger.dev version skew protection and in-flight Sume jobs
Trigger.dev pins each run to the deployment from the same commit. What that means for tasks that created a Sume job before a deploy, and what to store.

Twilio Play 40-minute file limit vs Sume TTS 1,200-second cap
Twilio warns that a played file over 40 minutes can drop the call. Sume TTS fails audio past 1,200 seconds, so a hold message fits. Format and caching notes.

Zed prevent_idle_sleep for agent threads and Sume jobs_wait
Zed 1.21 keeps your machine awake while agent threads run. A sleeping laptop is not a cancelled Sume job: jobs keep billing, so resume with jobs_wait.

AI API budget ran out: which error? Claude 400 and 429, Sume 402
Claude returns 429 enforced_spend_limit_reached at the tier cap and 400 for a limit you set. Sume returns 402 at create and a failed run at the cap.

ElevenLabs Music force_instrumental and seed vs Sume prompt-only
ElevenLabs Compose has force_instrumental and seed fields. Sume's Music Router has neither: you write no vocals into the prompt and check the audio.

ElevenLabs Music output_format list vs the file Sume returns
ElevenLabs Compose lists MP3, PCM, mu-law, A-law and Opus formats. Sume's music request has no format field; get wav through Timeline audio.

GitHub wants a 2xx in 10 seconds: Sume times out at 10 too
GitHub says respond 2XX within 10 seconds. Sume also gives each delivery attempt 10 seconds, so store the event first and do the work after you answer.

GPT Image 2.5 complex prompts take up to 2 minutes: use a webhook
OpenAI says complex GPT Image prompts may take up to 2 minutes. Sume waits 30 seconds, then returns a job. Send mode webhook and read the result from the job.

Hedra legacy avatar API needs 4 calls; Sume avatar video needs 1 POST
Hedra's legacy avatar guide creates and uploads two assets, then generates and polls. Sume's talking-video route is one POST with a handle and a script.

HeyGen bulk status for 100 videos at once vs Sume job webhooks
HeyGen added bulk status reads of up to 100 ids for videos, lipsyncs, translations and assets. Sume reads jobs one by one or pushes signed terminal webhooks.

HeyGen POST /v3/templates makes a template from video; Sume has none
HeyGen's October API entry turns a video into a private template. Sume has no template object for avatar video: you keep the request JSON and avatar handle.

HeyGen lipsync batches of 100 vs Sume Fabric one clip per job
HeyGen added POST /v3/lipsyncs/batches. Sume's talking-still route, VEED Fabric 1.0, has no batch route: you submit one job per clip with idempotency keys.

HeyGen Studio video scene voiceover: freeze, loop or fit_to_scene
HeyGen's Studio API lets a video scene carry voiceover with playback freeze, loop or fit_to_scene. Sume uses silence beats and a timeline instead.

Instagram API Reels total_interactions: how it is calculated
Instagram's insights reference defines total_interactions as likes, saves, comments and shares minus unlikes and deletions, and marks it in development.

Instagram Reels impressions metric missing: use views instead
Instagram's insights reference says impressions is deprecated for media created after July 2, 2024. For Reels, views and reach are the replacements to read.

Run LTX-2.5 locally: Python 3.12, CUDA 12.7, three routes
The LTX-2.5 model card recommends Python 3.12+, CUDA 12.7+ and PyTorch 2.7, with a CLI, ComfyUI or Diffusers. What a hosted job on Sume replaces.

OpenAI retries webhooks 72 hours; Sume stops after ten attempts
OpenAI retries a failing webhook for up to 72 hours. Sume stops after ten attempts, about 5 minutes for jobs and 3 hours for runs, so keep a status poll.

Dedupe Sume webhooks with Postgres ON CONFLICT DO NOTHING
Insert job_id or request_id with ON CONFLICT DO NOTHING RETURNING. A returned row means first delivery; no row means a duplicate. Includes the SQL.

Seedance 2.5 60 FPS on Dreamina: is there a frame-rate field?
Dreamina's plan page lists frame-rate improvements up to 60 FPS and resolution upgrades. Sume's video request has no fps field; here is what it takes instead.

Stripe wants enabled_events trimmed; Sume sends only terminal events
Stripe advises subscribing only to needed event types. Sume sends only terminal job and run events, with the URL set on each request. Here is the mapping.

Stripe resend keeps auto-retries; Sume redeliver uses no attempt
Stripe's manual resend does not cancel automatic retries and works 15 to 30 days. Sume redeliver sends a fresh signature after ten attempts and keeps the URL.

Stripe says one restricted key per service: Sume scopes per job
Stripe recommends restricted keys, one per service. Sume keys have fixed scopes. Map each webhook operation to its scope and give the handler no more.

Stripe replays a saved 500 for the same key; Sume releases it
Stripe saves the first result for a key, even a 500, and replays it. Sume replays a finished receipt, but a create that fails with 402 or 503 releases its key.

Stripe thin events: fetch the object, vs a Sume webhook receipt
Stripe thin events are GA for v1 resources in Endive: you fetch the object. A Sume webhook carries the receipt; an oversized one points to result_url.

TikTok API posting: your app must not add a watermark or promo text
TikTok's guidelines say apps must not add a brand name, logo, watermark, link or promo text to posted content. What that means for an AI video pipeline.

TikTok Direct Post UX rules: nickname, preview, no default privacy
TikTok's content sharing guidelines require apps to show the creator nickname, a preview and a processing notice, with no default privacy value. A checklist.

Webhook returns a 301: Stripe, OpenAI and Sume count it as failed
A redirecting webhook URL never delivers on Stripe, OpenAI or Sume run webhooks. Register the final URL, and check http to https and trailing slashes first.

Webhook IP allowlist: GitHub and Stripe publish ranges, Sume does not
GitHub exposes webhook IPs via /meta and Stripe lists addresses. The Sume docs publish no sender ranges, so verify the signature and a 5-minute window.

Return 503 with Retry-After in a deploy: Sume run webhooks honour it
Sume run webhooks honour Retry-After on 429 and 503 up to 1 hour. Job webhooks use a fixed 30s spacing, so keep the drain short and the fallback poll on.

YouTube API quota reset time: midnight Pacific, errors cost 1
YouTube's quota page says daily quota resets at midnight Pacific Time and even invalid requests cost a point. What that means for Shorts upload batches.

YouTube playlistItems.insert costs 50 units: adding Shorts in bulk
YouTube's playlistItems.insert page lists 50 quota units per add. What that caps per day, the series-playlist duplicate error, and how to plan episodes.

YouTube uploadLimitExceeded vs quotaExceeded: which limit hit?
quotaExceeded is your Cloud project's quota; uploadLimitExceeded is a channel limit YouTube says is separate. How to tell them apart in a Shorts upload batch.

Does the Sume SDK retry POST? Only with an Idempotency-Key
createSumeClient retries 408, 429 and 5xx twice with backoff, but a POST is only retried when it carries an Idempotency-Key. Why and how to set it.