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.

OpenRouter Security Center key sprawl: a Sume key checklist
OpenRouter's Security Center flags idle keys and missing limits. For Sume, rotate by replace, verify, revoke, and use per-call max_spend_usd and key budgets.

Qwen Image 2.1: when you must show Built with Qwen
The Qwen Research License requires Built with Qwen or Improved using Qwen when outputs train a distributed model, and bars Qwen as a derivative's main name.

Qwen Image 2.1 LoRA redistribution: notice file and Hangzhou courts
Sharing Qwen-Image-2.1 weights or a LoRA needs the license copy, modified-file notices and a Notice file; disputes go to the Hangzhou courts. Clause summary.

Restyle a clip longer than 30 seconds: trim, then Genjutsu
Genjutsu takes 4 to 30 second sources. For a longer clip on Sume, cut ranges with video trim, restyle each range, then join them with Timeline.

Runway ASSET.INVALID vs Sume validation and unreachable media
Runway's ASSET.INVALID covers any unacceptable input media. Sume separates validation errors from fetch failures, and one 502 is still your input to fix.

Runway failureCode is diagnostic: what to show users from Sume
Runway says not to show SAFETY failure codes to users. On Sume, show your own text keyed on code; keep message, request_id and details in logs.

Runway INTERNAL.BAD_OUTPUT.01: fix the prompt, then resubmit
Runway's INTERNAL.BAD_OUTPUT.01 may succeed after prompt fixes. Sume's equivalent step: inspect job events, fix the input, and send a new request.

Runway INTERNAL or null failureCode: how long to delay a retry
Runway says to add a delay for INTERNAL or null failure codes but gives no number. Sume's errors carry retryable and retry_after_seconds fields.

Reference media guidelines: Runway Recipes and Sume checks
Runway's guide says strong references drive quality. On Sume, add the checks the docs list: public HTTPS URLs, per-model reference types, 3-second video refs.

Runway SAFETY.INPUT credits not refunded: what Sume does
Runway does not refund credits for SAFETY.INPUT failures. Sume's docs describe one rule for failed jobs: the reservation is released or refunded.

Runway THIRD_PARTY.UNAVAILABLE: retry rules vs Sume's codes
Runway says not to retry THIRD_PARTY.UNAVAILABLE immediately. On Sume, generation_unavailable means retry later; provider_capacity_exceeded keeps the key.

Synthesia Interactive Avatar and LiveKit: Sume's job-based pieces
Synthesia's Interactive Avatar API runs on a LiveKit plugin with your own LLM and STT. Sume offers job pieces: TTS, speech to text and still-plus-audio clips.

Tavus disclosure_type controls vs Sume authored caption cues
Tavus added disclosure_type, verbal_disclosure and visual_disclosure for EU AI Act use. Sume has no such setting; authored caption cues can burn a line of text.

Tavus recording storage key_template vs Sume media URLs
Tavus can write recordings to S3, GCS or Azure Blob. Sume returns finished files as media.sume.com artifact URLs, delivered by webhook or job result.

Concatenate audio files by API: parts, and no top-level url
Sume Timeline audio concat needs a parts array and refuses a top-level url or ranges. Each operation accepts its own keys; mixing them returns a stable code.

Split audio into segments by timestamps: url and ranges
Sume Timeline audio split needs a top-level url and 1 to 20 ranges. A range with end at or before start is refused; each segment gets its own audio_url.

Image over video longer than the clip: compose's 300 s ceiling
Sume Timeline compose length comes from the video layer, capped at 300 seconds. Asking for more than the file clamps with a warning and the job still succeeds.

compose_image_not_still and compose_video_not_video: the fix
Sume Timeline compose probes both URLs: image.url must be a still, video.url a video. Failing either refuses the request; off-host URLs need an import first.

Image above video, or left and right: compose image_region axes
In Sume Timeline compose a horizontal split takes top or bottom and a vertical split takes left or right; a mismatch is a 400, compose_image_region_wrong_axis.

Overlay an image on a silent video: compose warns, keeps audio
A silent video in Sume Timeline compose is a compose_video_has_no_audio warning, not a failure. Audio passes through when present; Timeline supplies it later.

Change frame rate when compositing: output_fps_resamples_sources
Sume Timeline compose defaults to the video layer's own frame rate. Set output.fps to a different rate and it warns output_fps_resamples_sources.

Add an image over a video: position, width_ratio, margin_ratio
Sume Timeline compose overlay places a still with position top, center or bottom, width_ratio 0.05 to 1 (default 0.9) and margin_ratio 0 to 0.45 (default 0.05).

Trim video without re-encoding, then resize: why it fails
A stream-copy trim cannot resize: output width, height and fps fail video_trim_output_requires_exact. Pick a goal below and the call that fits it.

Trim video longer than 15 minutes: video_trim_range_empty
Video trim refuses a range with end at or before start, or longer than 900 seconds, as video_trim_range_empty. Cut a long source in 15-minute ranges.

Crop video size: the 0.05 minimum side in video-filter
A video-filter crop needs width and height of at least 0.05 and a rectangle inside the frame; anything else returns video_filter_crop_out_of_bounds.

FFmpeg darken video: why Sume refuses dim amount 0
A dim amount of 0 is refused: the range is above 0 up to 1, and 0 or above 1 returns video_filter_amount_out_of_range. Check the program free before you encode.

ffmpeg filter_complex [0:v] in video-filter: refused, labels fine
Sume video-filter refuses stream specifiers like [0:v] in a filtergraph because the server wraps the input and output. Internal labels such as [a] are allowed.

video_filter_too_many_ops: more than 8 ops, use filtergraph
Sume video-filter accepts at most 8 ops. A ninth returns video_filter_too_many_ops; move extra pixel work into the filtergraph, which has its own caps.

unsupported_filter_op: video-filter ops are dim and crop only
In Sume video-filter, ops[].op must be dim or crop. Another name returns unsupported_filter_op; an extra key on a valid op returns unsupported_filter_op_field.

Extract frames from a long video API: duration_out_of_range
Video frames fails duration_out_of_range for a source over 300 seconds. Cut a range under 300 seconds with video trim first, then extract frames from it.

Video frames job succeeded but one frame url is null
If one instant fails to extract, video frames returns that entry with url null and the job still finishes ready. Filter the null entries and ask again for them.

Extract frames from video at fps: mid-bin times, 24 frame cap
Sume video frames turns fps into mid-bin timestamps (0.5/fps, 1.5/fps, and so on), caps the result at 24 frames, and accepts fps above 0 up to 2.

Extract video frames to images: PNG or JPEG before an upscale
Video frames returns jpeg by default or png for lossless inspection, at the source size unless you set max_edge. Pick png when the stills feed an upscaler.

X Ads API video_total_views: new 3-second 100% in-view rule
X redefined video_total_views as 100% in-view for 3 seconds plus manual plays. What that means for your first 3 seconds, and how to check and re-cut them.

X Articles API: draft, publish and a generated cover image
The X Articles API has POST /2/articles/draft and a publish call, with optional cover media. Make the cover with a Sume image call, then upload it to X.

X API image 5 MB limit: pick a Sume output format
X allows JPG, PNG, GIF and WEBP images up to 5 MB on every account. Sume outputs png, jpeg or webp, with no target file size field in the docs.

X API media_category: tweet_video vs amplify_video vs dm_video
Pick media_category by destination: tweet_video for Posts, amplify_video for Ads, dm_video for DMs. Wrong category uploads fine and fails at Post create.

X API media upload succeeded but the Post fails: two-stage checks
X enforces media limits at upload and again at POST /2/tweets, by the posting user. Here is a pre-flight list and what Sume's inspect and trim cover.

X API subtitles media_category: SRT sidecar vs burned-in captions
X lists `subtitles` as a media_category for sidecar files. Sume burns captions into the picture and does not take SRT uploads. Pick the path that fits.

X video minimum 0.5 seconds: keep Sume trim cuts at 0.5 s or more
X needs Post video of at least 0.5 seconds; Sume video-trim allows cuts down to 0.2 seconds. Set duration to 0.5 or more for X, with the upper caps.

X video 5,000 kbps recommendation: Sume trim has no bitrate field
X recommends H264 High Profile at 30 or 60 FPS and 5,000 kbps. Sume trim cannot set bitrate or codec; you can conform fps and size, and audio stays AAC.

X video: no open GOP allowed, and what Sume trim exact does
X rejects open-GOP video. Sume trim exact re-encodes with libx264 and yuv420p; keyframe mode stream-copies and may start a GOP early. No GOP setting exists.

X video pixel aspect ratio 1:1: fix it with setsar and scale
X's advanced video spec needs 1:1 pixels and sizes from 32x32 to 1280x1024. Sume's video filter allows setsar, scale and format; check the graph free first.

YouTube audio bitrate: stereo 384 kbps, and what Sume audio-detach is
YouTube recommends 128 kbps mono, 384 kbps stereo, 512 kbps 5.1 at 48 kHz. Sume audio-detach writes wav or a fixed 128 kbps mp3, so use wav for stereo.

YouTube upload color space: BT.709 for SDR, and Sume trim output
YouTube recommends BT.709 for SDR uploads and unifies similar color matrices. Sume trim has no color-space field, so verify the tags with ffprobe.

YouTube closed GOP and 2 B-frames: Sume exposes no GOP fields
YouTube recommends a closed GOP of half the frame rate and 2 consecutive B-frames. Sume video-trim has no GOP or B-frame field and rejects raw ffmpeg flags.

YouTube 4K upload bitrate: 35-45 Mbps, 8K 80-160 Mbps
YouTube recommends 35-45 Mbps for 4K SDR at 24-30 fps and 80-160 Mbps for 8K. Sume's video router lists 4K on one model and sets no bitrate field.

YuE2 bring-your-own ABC score vs Music Router prompt timestamps
YuE2 lets you supply an ABC score and edit it with an agent. Sume's Music Router has no score input; you steer structure with timestamps in the prompt.