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.

WhatsApp audio message format: AAC, MP3, OGG Opus mono, 16 MB
WhatsApp accepts AAC, AMR, MP3, M4A and OGG (Opus, mono) up to 16 MB. Sume's audio detach returns mp3 or wav, so mp3 fits; ogg needs another tool.

WhatsApp Cloud API video message size limit: 16 MB, H.264 and AAC
WhatsApp video messages take MP4 or 3GP up to 16 MB, H.264 video and AAC audio only. See what Sume's exact trim outputs and what you still check yourself.

WhatsApp Cloud API media ID expiry: 30 days, URL 5 minutes
WhatsApp media IDs from the API expire after 30 days, webhook IDs after 7, and a media URL works for 5 minutes. Keep your own durable source, not the ID.

AI Act Article 50(3): what Sume video inspect returns
Video inspect returns probe facts, stills and optional STT. The FAQ ties Article 50(3) to emotion recognition; the inspect docs list no such output.

EU AI Content Code: Section 1 providers or Section 2 deployers?
Section 1 of the EU Code is for providers marking AI output; Section 2 is for deployers labelling deepfakes. A team shipping API video starts with its own role.

Nova Reel start_async_invoke S3 output vs a Sume result URL
Nova Reel's start_async_invoke writes output.mp4 to your S3 bucket and needs IAM. A Sume job returns a result_url and durable media.sume.com links.

California SB 1000: no user threshold, new verification tool
SB 1000 recasts the California AI Transparency Act: no user threshold, a disclosure verification tool, no manifest option. What Sume's docs list.

Claude API compaction block: keep Sume job ids past the summary
The compact-2026-09-04 beta swaps old messages for a signed compaction block. Keep Sume job ids and keys outside it; re-read with jobs_status.

fal content_policy_violation 422 vs Sume generation_rejected
fal returns content_policy_violation as a non-retryable 422. Sume's closest job error category is generation_rejected: inspect events and fix the input.

fal generation_timeout 504 error: what to do on Sume
fal returns generation_timeout as a 504 typed error. Sume has a generation_timeout category; the documented action is to poll status or retry later.

fal queue status IN_QUEUE IN_PROGRESS COMPLETED on Sume
Sume's status endpoint returns a queue-shaped status field with IN_QUEUE, IN_PROGRESS, COMPLETED, FAILED and CANCELED, mapped one-to-one onto sume_status.

x-fal-needs-retry header: what Sume uses to signal a retry
fal marks retryable errors with X-Fal-Needs-Retry. Sume signals retry through error category and code, retry-after on 429, and the same idempotency key.

x-fal-no-retry header: safe retries with a Sume Idempotency-Key
fal retries queued requests; X-Fal-No-Retry turns that off. On Sume you keep retries and make them safe with an Idempotency-Key on every paid submit.

FFmpeg 8.1 AV1 and ProRes encoding: Sume has no codec field
FFmpeg 8.1 adds D3D12 H.264/AV1 and Vulkan ProRes encoding. Sume compiles ffmpeg server-side and rejects codec and crf fields, so you cannot pick an encoder.

FFmpeg 8.1 drawvg and vpp_amf: not on Sume's allowlist
FFmpeg 8.1 lists new drawvg and vpp_amf filters. Sume video-filter only runs allowlisted filters and refuses unknown names with unknown_filter.

Firefly Custom Models API vs Sume: references, no training
Firefly Custom Models trains subject or style models you call by asset ID. Sume offers no image model training; use up to 16 input references.

Firefly Upscale API vs Sume's image_upscale_create tool
Firefly's Upscale API enhances resolution at 2x, 4x or 6x. Sume exposes upscaling as the image_upscale_create MCP tool: a paid job you poll.

drama-3-preview model id vs Sume TTS Router model ids
Fish selects drama-3-preview with a model header. Sume TTS Router takes a required model id from its catalog, and unknown ids fail with 400 model_not_found.

Gemini static vs dynamic webhooks: Sume sets one URL per job
Gemini splits project-level static webhooks from per-request dynamic ones. Sume has only the per-job kind: pass webhook_url on each submit call.

Gemini JWKS JWT webhook signatures vs Sume HMAC SHA-256
Gemini dynamic webhooks use asymmetric JWKS-signed JWTs. Sume signs the raw body with a shared-secret HMAC SHA-256 and a timestamp. How each verifies.

Gemini last_event_id stream resume vs Sume: no SSE, poll status_url
Gemini background interactions can resume a dropped stream from the last event. Sume has no stream to resume: poll status_url and read events_url snapshots.

Gemini Omni videos over 4MB: poll to ACTIVE vs a Sume result URL
Gemini Omni returns large videos as a URI you poll until ACTIVE. Sume results are durable media.sume.com URLs with no ACTIVE state and no expiry to manage.

Gemini Omni Flash video edit: 5 reference images vs Sume
Runway's Gemini Omni Flash video-to-video edit accepts up to 5 reference images. On Sume, a video_url edit cannot be combined with any reference field.

Gemini Omni store=false sync video vs Sume's 30-second sync cap
Gemini suggests background=false, store=false, stream=false for synchronous video. Sume sync mode waits at most 30 seconds, then you poll status_url.

Gemini TTS caps 200 voices per project: picking a voice on Sume
Gemini TTS stores at most 200 voices per project for a year. On Sume you list avatars and use one whose voice.status is ready, with no stored-voice quota.

Gemini thin webhook payload vs Sume: artifact URLs in the body
Gemini webhooks send a snapshot with pointers to results. A Sume job.completed webhook already carries the media.sume.com artifact URL, so no second fetch.

gpt-realtime-2.1 only supports v1/realtime: Sume TTS is a job
gpt-realtime-2.1 works only on v1/realtime, not Chat Completions or Batch. Sume TTS 1.0 is an async job you poll, which suits narration, not live talk.

Grok Imagine <IMAGE_0> tags shift with a first frame; Sume is 0-based
On xAI, pinning a first frame with image takes <IMAGE_0> and references start at <IMAGE_1>. Sume Omni tags are <IMAGE_REF_0>, 0-based by list order.

Grok Imagine video extension duration counts only the extension
In xAI video extension, duration is the added seconds only: a 10s input plus duration 5 returns 15s. Sume has no extend on Omni; chain clips from a last frame.

Grok Imagine video input: base64 or file_id vs Sume HTTPS URLs
xAI's extension page accepts a source video as a public URL, base64 data URI or file_id. Sume's video fields take public HTTPS media URLs only.

HeyGen videos:write and videos:read vs Sume scopes mcp:read/write
HeyGen needs videos:write to create and videos:read to poll. Hosted Sume OAuth has mcp:read and mcp:write, no paid scope; spend is wallet admission.

HeyGen Assets folders (flat) vs Sume media inputs by HTTPS URL
HeyGen Assets library folders are app-created, flat, and usable as folder_id destinations. Sume takes media as public HTTPS URLs, with no folder step.

HeyGen do_not_translate_terms vs Sume: handle terms before speech
HeyGen brand glossaries now take do_not_translate_terms and forced_translations for video translation. Sume has no glossary field; handle terms in your text.

Ideogram ad localizer API: exact_copy vs a Sume edit prompt
Ideogram's ad-localizer takes one language per call and an exact_copy mapping. On Sume you send the ad as a reference and spell out the copy in the prompt.

Ideogram async generation_id polling vs Sume's 202 job envelope
Ideogram returns images directly unless async or webhook_url is set, then you poll /v2/generations. Sume blocks up to 30s, then returns a 202 job.

Ideogram API image URLs expire: download, or use Sume URLs
Ideogram's quickstart says image URLs expire, so download what you keep. Sume returns Sume-hosted signed URLs in data[].url. Where each result lives.

Ideogram layerize API: text blocks vs Sume's flat image
Ideogram layerize returns positioned text blocks plus a text-free base. Sume's images API returns flat Sume-hosted signed URLs, with no layer output.

Ideogram magic_prompt off and JSON prompts vs Sume passthrough
Ideogram 4.0 magic_prompt auto, on or off controls prompt rewriting. Sume has no passthrough parameters in v1, so that switch is rejected.

Ideogram material swap API: 4 masks vs Sume's one mask_url
Ideogram's material-swap tool takes up to 4 masks and material images. Sume's images API has one optional mask_url plus up to 16 references.

Ideogram API seed for repeatable results vs Sume's 400
Ideogram endpoints take an optional seed for repeatable results. Sume's image schema has seed, but no model advertises it, so it returns 400.

Edits 15-minute export vs Sume's 900-second trim and detach cap
Edits now exports up to 15 minutes on iOS. Sume trim and audio detach also top out at 900 seconds of output, from a source up to 1800 seconds.

Edits compare 3 reels: read the clips with Sume video inspect
Instagram Edits compares up to 3 reels by views and watch time. Sume video inspect adds what the clips contain: probe facts, stills and an optional transcript.

Instagram Edits in/out effects vs Sume timeline transitions
Edits adds 15 in and out effects on iOS. A Sume timeline compiles six transition types, capped at 1 second and 50% of the shorter neighbour.

Cloudflare 524 on a Sume jobs_wait: transport, not job outcome
A 524, 522, 523 or 525 on jobs_wait is a transport failure, not a job result. Re-issue jobs_wait on the same ids or read jobs_status once. Never resubmit.

MCP DPoP sender-constrained tokens: Sume is bearer-only today
The MCP roadmap lists DPoP finalization, but Sume's hosted MCP issues mcp_at_ bearer tokens sent in the Authorization header, valid for one hour.

MCP ETag on tool results: Sume idempotency_key and job reads
ETag-versioned MCP tool results are a roadmap idea. In Sume, idempotency_key is write dedup, not a cache validator; job reads are separate read tools.

MCP human-presence attestation: Sume consent vs API key
Human-presence attestation is only a roadmap topic. Sume separates people from automation by credential: OAuth consent in a browser, or an API key.

MCP OAuth .localhost redirect URI: Sume allows localhost and 127.0.0.1
MCP TypeScript SDK 2.2.0 treats .localhost hosts as loopback for token endpoints. Sume's redirect check allows http only on localhost and 127.0.0.1.