Blog

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.

Start with: Sume API quickstart: your first video generation call in five steps

Captions misspell your brand name: fix it with authored cues

Sume video captions have no custom dictionary field. Pass cues with your own spelling and speech-to-text is skipped, so the brand name prints as written.

AI music exactly 30 seconds: no duration field, use Timeline

Music Router rejects duration and duration_seconds. Ask for the length in the prompt, then fix the exact output length with Timeline 1.0 audio.duration_seconds.

Avatar video captions error over 60 seconds: split the script

Inline captions on an avatar video are rejected when the estimated duration is over 60 seconds, the same cap as the job. Split long scripts into jobs.

Green screen removal by API: chromakey in a video filter graph

Sume's video filter allowlists chromakey and colorkey, but an MP4 holds no alpha, so a key must be composited inside the graph. Not AI background removal.

Claude mcp_tool_listing pin: what a Sume tool list depends on

A pinned mcp_tool_listing holds the Sume tool list fetched for one session scope. Sume's list depends on mcp:read vs mcp:write and never pushes list changes.

Claude Code MCP 403 insufficient_scope: re-auth Sume with Write

Claude Code 2.1.274 names the missing permission on a 403 insufficient_scope. For Sume, a read-only grant lacks mcp:write: re-authenticate and turn Write on.

Claude Code alwaysLoad meta false: deferred Sume tools

Claude Code 2.1.285: a tool with _meta anthropic/alwaysLoad false stays deferred under a server alwaysLoad. What that means for Sume's tool set.

Claude Code API 400 after a tool returned an object: Sume results

Claude Code 2.1.286 fixed API 400s when a tool returned an object, number or boolean. Sume tools return text content blocks, errors too.

Claude Code background Bash 30-minute limit and Sume jobs

Claude Code 2.1.285 stops background Bash after 30 minutes by default (2 h max). A Sume render is a job id, so poll it with jobs_wait slices, never resubmit.

Claude Code Bedrock/Vertex MCP 2026-07-28 default vs Sume

Claude Code on Bedrock, Vertex and Foundry now negotiates MCP 2026-07-28 by default. The opt-out env vars, and the versions the Sume server accepts.

Claude Code headless MCP auth reminder: Sume key vs OAuth expiry

Claude Code 2.1.286 fixed a repeated MCP auth reminder in headless runs. Sume OAuth tokens last one hour with no refresh, so unattended runs should use a key.

Claude Code MCP OAuth token lost, keychain locked: Sume tokens

Claude Code 2.1.281 stops a locked macOS keychain from dropping stored MCP OAuth tokens. A Sume token lasts one hour with no refresh grant.

CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH and Sume server instructions

Claude Code 2.1.280 lets CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH change the 2,048-character cap. Sume's instructions are long; use tools_schema.

claude mcp add refused: managed settings, plugins only, Sume

Claude Code 2.1.284 refuses claude mcp add when managed settings limit MCP servers to plugins. What the Sume remote URL needs from your admin.

Claude Code MCP connector lists no tools: Sume handshake versions

Claude Code 2.1.286 fixed connectors showing no tools after a server dropped an older handshake. Sume answers 2025-03-26, 2025-06-18 and 2025-11-25.

Claude Code MCP images saved to file: Sume returns a media URL

Claude Code 2.1.283 saves images from MCP tools to a file. Sume tool results are text with a media.sume.com URL, so keep the URL as the durable reference.

Claude Code /usage MCP server credit: reading Sume spend

Claude Code 2.1.286 credits an MCP server for calls made while it was still connecting. Sume spend is a separate number: read it with usage_get.

Claude Managed Agents auto permission and Sume paid MCP calls

The auto policy evaluates each MCP tool call server-side. Sume has no paid scope, so pair auto with dry_run, max_spend_usd and a scope-limited session.

Claude Opus 5.5 tool_choice any 400: steer Sume tools instead

Opus 5.5 returns 400 for tool_choice any or tool. Use auto, then steer to generate_image with instructions and tools_schema, and keep dry_run before paid calls.

Codex MCP input schema budget: how many Sume tools you load

Codex 0.158.0 makes MCP and Code Mode input schema budgets configurable. Sume keeps tool descriptions short and shows fewer tools to a read-only session.

Apply a LUT to video by API: no .cube file, use lutrgb curves

Sume's video filter cannot load a .cube LUT because lut3d is not allowlisted. Per-channel curves with lutrgb or lutyuv are the supported way to grade.

Deepgram Flux numerals toggle vs Sume STT digits

Deepgram Flux can switch numerals on mid-stream for PINs and phone numbers. Sume STT is a batch job with fixed provider settings and no numerals flag.

Deepgram Flux TTS speed 0.5 to 1.5 vs Sume's 0.6 to 1.5

Deepgram widened Flux TTS speed to 0.5-1.5 in 0.05 steps on 2026-08-31. Sume TTS accepts generation_config.speed from 0.6 to 1.5, plus a deprecated enum.

Devin Desktop ACP session/new mcp_servers with Sume's remote URL

Devin Desktop 3.10.35 uses MCP servers an ACP client passes in session/new. Pass Sume's streamable HTTP URL and an API-key header, not editor config.

ElevenLabs API timeout: cascade_timeout_seconds vs Sume waits

ElevenLabs added cascade_timeout_seconds (2-15 s) for Speech Engine retries. Sume's wait_timeout_seconds is a different knob: a 0-30 s HTTP wait on a job.

ElevenLabs API cursor pagination, and how Sume pages lists

ElevenLabs added a cursor-paginated phone number endpoint. Sume list routes use keyset pages: pass next_cursor back as cursor until has_more is false.

ElevenLabs Flows webhook: what changed, and Sume's per-job webhook

ElevenLabs Flows template runs can send a terminal result to a webhook, and webhook targets now need type all or ids. Sume sets the callback per job.

is_final_audio_for_turn vs Sume TTS sentence boundaries: wav or mp3

ElevenLabs now emits is_final_audio_for_turn after every byte, even for MP3. Sume marks boundaries differently: sentence segments, sliced only for wav or raw.

eleven_turbo_v2_5 deprecated: use Flash; Sume TTS Router ids

ElevenLabs lists eleven_turbo_v2_5 as deprecated and suggests eleven_flash_v2_5. Sume's TTS Router pins an explicit catalog id, so list the ids first.

ElevenLabs Voice Design 409: wait and retry, or new key on Sume?

Voice Design now returns 409 while a preview generation is in progress; ElevenLabs says retry. On Sume, reuse an Idempotency-Key only for the same payload.

Facebook Page story API: media from an earlier post is rejected

Meta's Stories API says a story's photo or video cannot have been used in a published post. Make the story variant a new file with a Sume job, not the old URL.

edge_fades_exceed_output: fade in and out too long for the video

Timeline 1.0 refuses fades that are too long: each edge fade is 0 to 5 seconds and fade in plus fade out must not exceed the output length.

x-fal-billable-units header: WebSocket billing vs Sume receipts

fal bills WebSocket sessions via x-fal-billable-units headers. Sume has no such header: cost is a per-job ledger row you read back by job or run.

Fix lens distortion in video by API with lenscorrection

Sume's video filter allowlists ffmpeg's lenscorrection, so barrel distortion from a wide action-cam clip can be corrected by coefficients you choose and test.

FLUX.2 JSON prompt: on Sume it is text in the prompt field

BFL says FLUX.2 accepts JSON-structured prompts. On Sume, prompt is a plain string, so JSON goes in as text; other fields are typed.

FLUX.2 LoRA API: finetune_id on BFL, not on Sume

BFL serves klein LoRAs through -finetuned endpoints with finetune_id. Sume rejects provider-specific parameters, so use reference images instead.

FLUX Request Moderated vs Content Moderated, and Sume's reason

BFL separates input moderation from output moderation and adds a Moderation Reasons array. Sume groups refusals under content_policy_rejected.

FLUX safety_tolerance 0 to 5, and what Sume does instead

BFL's safety_tolerance runs 0 (strictest) to 5 on FLUX.2, default 2. Sume has no such dial: it returns 400 unsupported_parameter.

Upload 30 reference images to a Sume Format run (images only)

A Format run takes up to 30 images in attachments[], type input_image, by public HTTPS URL or asset_id. Video and audio attachments are not supported today.

Gemini 2.5 not available in a new project: what to do

Google's September 18 changelog limits Gemini 2.5 models to users who already used them. New projects are pointed to 3.5 Flash-Lite or 3.8 Flash.

gemini-3.1-flash-tts-preview replacement: 3.8 Flash-Lite TTS

Google names gemini-3.8-flash-lite-tts as the replacement for the 3.1 preview TTS model. What that changes for you, and what stays fixed on Sume TTS.

Gemini TTS API polling: the Sume audio job pattern

Gemini 3.8 Flash TTS went GA on Sep 22. On Sume, speech is a job: submit async, store the job id, poll the status URL, and never resubmit while it runs.

Gemini 3.8 TTS returns WAV by default; Sume TTS returns MP3

Gemini 3.8 TTS unary requests return WAV with a RIFF header. Sume TTS 1.0 defaults to mp3 at 44100 Hz, so ask for wav when your pipeline needs it.

Gemini TTS reads stage directions aloud: Sume emotion field

Gemini 3.8 TTS speaks its text field verbatim, so style goes in speech_metadata. On Sume, keep the transcript clean and put delivery in generation_config.

Gemini API file size limit: 2GB per file, 20GB storage

Gemini's rate-limits page lists a 2GB input file limit and 20GB file storage under Batch API limits. Sume takes public HTTPS URLs instead of uploaded files.

Gemini Batch API rate limits vs Sume's 100-run bulk queue

Gemini Batch API allows 100 concurrent batch requests and a 2GB input file. Sume bulk runs queue up to 100 Format runs with concurrency 1 to 16.

Gemini image_size 1k rejected: use 1K, and Sume resolution tiers

Gemini rejects a lowercase image_size such as 1k; use an uppercase K. Sume's images API takes a resolution tier, and only values the model lists.

Omni 1.1 Flash start and end frame API on Sume

Omni 1.1 Flash can render between two keyframes, including looping clips. On Sume, Omni takes image_url plus end_image_url; frame_images covers other models.

Gemini Omni previous_interaction_id vs a Sume job per request

Google chains Omni 1.1 Flash extensions with previous_interaction_id. Sume has no such field: each request is its own job, and an edit takes a video_url.

Text to speech mulaw 8000 Hz: Gemini 3.8 and Sume TTS

Sume TTS can return pcm_mulaw or pcm_alaw at 8000 Hz in wav or raw containers. Gemini 3.8 TTS does it with audio/mulaw and audio/alaw mime types.

Gemini TTS voice design voice_ id vs Sume voice ids

Gemini voice design returns a persistent voice_ id from a text prompt. Sume TTS accepts only a voice UUID or voi_ library id, and rejects other shapes with 400.

GPT Image 2 input_fidelity: omit it; Sume returns 400

OpenAI says to omit input_fidelity for gpt-image-2 because inputs run at high fidelity. Sume lists no such field and rejects unlisted parameters with 400.

GPT Image moderation_blocked vs Sume content_policy_rejected

OpenAI returns moderation_blocked with moderation_details. On Sume, policy refusals are grouped under content_policy_rejected. What to read and when to retry.

GPT Image revised_prompt: what a Sume images response returns

OpenAI returns revised_prompt on the image generation call. A Sume POST /v1/images response has data[].url and usage, with no revised prompt field.

GPT Image user error: don't retry unchanged; Sume failures unbilled

OpenAI says not to auto-retry image_generation_user_error without changing the prompt or inputs. On Sume, retry 429 with backoff; failed images are not billed.

gpt-transcribe expected languages vs Sume STT language_code

OpenAI's gpt-transcribe accepts multiple expected input languages. Sume STT takes one optional language_code hint or auto-detect. What to send for mixed audio.

Grok Imagine base64 response_format vs a Sume hosted URL

xAI lets you request base64 instead of a temporary URL. Sume returns Sume-hosted, signed URLs in data[].url, not inline base64, for x-ai/grok-image.

HeyGen 429 Retry-After vs Sume rate_limited and queue_full

HeyGen sends 429 with a Retry-After header in seconds. Sume sends 429 rate_limited with retry-after when present, and a separate 429 queue_full.

HeyGen asset upload max size: 32 MB, and what Sume does instead

HeyGen's POST /v3/assets caps files at 32 MB, URLs included. Sume has no asset step: requests take public HTTPS URLs, and oversized bodies return 413.

HeyGen audio file size limit (MP3/WAV 32 MB) vs Sume 10 MB

HeyGen audio_asset_id takes MP3 or WAV up to 32 MB. Sume's Fabric audio_url must be on the Sume media host and at most 10 MB. What each rule means.

HeyGen audio to video max length: 10 or 30 min vs Sume 300 s

HeyGen's pages say 30 minutes per audio-to-video request and 10 minutes for avatar audio input. Sume's Fabric route caps duration_seconds at 300.

HeyGen avatar script limit: 5,000 characters vs Sume's 4-60 s

HeyGen caps avatar script text at 5,000 characters. Sume has no character cap in its docs: it accepts scripts estimated at 4-60 seconds inclusive.

HeyGen download_failed error: URL rules vs Sume's media errors

HeyGen download_failed means a media URL was not public, mismatched or corrupt. Sume returns image_not_fetchable or input_media_unreachable for similar cases.

HeyGen image to video from a photo API vs Sume image_url

HeyGen type image animates a PNG or JPEG with a script and voice_id, no avatar setup. Sume does it with image_url plus audio on the Fabric route.

HeyGen insufficient_credit vs Sume insufficient_credits (402)

HeyGen returns code insufficient_credit with HTTP 402. Sume returns insufficient_credits, plural, also 402. Match on the exact string and the status.

HeyGen create avatar from a text prompt API vs Sume

HeyGen POST /v3/avatars type prompt takes up to 1000 characters and an aspect_ratio. Sume creates a text-only avatar with a Prompt input on avatar-1.0/generate.

HeyGen Stripe Projects API key vs how you get a Sume key

HeyGen lets an agent provision a key with stripe projects add heygen/api. Sume keys are created in the dashboard, workspace-scoped and shown once.

HeyGen studio video scene limit: 50 scenes, and Sume's 4-60 s plan

HeyGen studio videos allow 50 scenes and 30 minutes per scene. Sume multi-scene video_inputs share one 4-60 second window and one resolved avatar.

Luma API 429 requests per minute: sliding window vs Sume

Luma counts requests in a sliding 60-second window and returns 429 if RPM or concurrent jobs fails. Sume returns 429 rate_limited: back off, reuse the key.

Luma API concurrent jobs limit vs Sume plan concurrency

Luma caps active generations per API client and answers 429 when full. Sume ties concurrency to your plan and queues extra jobs until queue_full.

Luma API video URL expires after 1 hour: what to do on Sume

Luma Agents API video URLs are presigned and expire after 1 hour. On Sume, a completed job is fetched with your API key from the /content endpoint.

Luma API X-Request-Id vs Sume x-sume-request-id

Luma's X-Request-Id echoes your header or is generated. Sume sends x-sume-request-id on every response; quote it, plus error.code, when you contact support.

Luma Ray 3.2 extend with a generation id vs Sume per-clip jobs

Luma extends video from one prior generation id as start or end frame. Sume docs describe frame_images with first_frame or last_frame, a new job per clip.

Ray 3.2 API for render farms: the Sume callback_url pattern

Luma pitches the Ray3.2 API for pipelines and render farms. On Sume, wire an async video job with callback_url, Idempotency-Key and a request id to log.

Luma Ray 3.2 video edit ignores aspect_ratio: Sume video_url edit

On Luma Ray 3.2 a video edit takes its aspect ratio from the source and ignores the field; reframing needs a target. Sume edits through video_url.

Make a voice louder than the music: gain_db and duck_db ranges

In Timeline 1.0, raise the voice with audio.gain_db (-60 to 12) and lower the music bed with soundtrack.duck_db (0 to 20). Ranges and refusal codes.

Mastra MCP 2.0 is 2026-07-28 only: which line for Sume?

@mastra/mcp 2.0.0 drops the legacy handshake and speaks MCP 2026-07-28 only. The Sume server defaults to 2025-11-25, so pin the version you test.

Nano Banana batch API: Gemini's 24 h batch vs Sume async jobs

Gemini's Batch API trades up to 24 hours of turnaround for higher rate limits. Sume has no batch tier for images: send async or webhook jobs per request.

OpenAI Agents API durable sessions and Sume job ids

A durable OpenAI Agents API session continues across turns; a Sume render is a separate job. Keep the job id in the session and re-read it, never re-create.

OpenAI Agents Python MCP error content: reading Sume tool errors

openai-agents-python v0.20.0 keeps MCP error content with structured output. Sume tool failures arrive as isError text with code, message and http_status.

OpenAI Agents Python MCP non-text content as JSON: Sume results

openai-agents-python v0.20.0 serializes non-text MCP blocks as JSON. Sume tool results are text blocks, with media delivered as URLs inside the JSON.

OpenAI Agents Python MCP backoff ceiling vs Sume retry-after

Set the MCP retry backoff ceiling low enough that a Sume 429 with retry-after is honored first, and never retry a paid create without its idempotency key.

Does an OpenAI API key expire? Expiry dates and key rotation

OpenAI project keys can now carry an expiration date and orgs can cap lifetime. Sume documents no expiry field: rotate by minting a replacement key.

OpenAI async tool calling for long-running render jobs

OpenAI's async tool calling lets the model keep working while your tool runs. For a slow Sume render, return the job id fast, then wait in slices.

OpenAI image-encoding fix: rerun workflows with the right key

OpenAI fixed an image-encoding bug and advised retrying affected workflows. On Sume, a replayed idempotency key returns the original; use a new key to rerun.

mTLS instead of an API key? How Sume authenticates calls

OpenAI's docs list mutual TLS and workload identity federation. Sume authenticates API calls with one API key header and signs webhooks with HMAC.

OpenAI service-account-only keys, and Sume Format run limits

OpenAI admins can allow only service-account keys. On Sume, service-account keys cannot create Format runs or bulk queues; use a user-issued key.

Punch-in zoom on video by API: crop or zoompan, no keyframes

Sume has no auto zoom switch. Use a crop op for a fixed punch-in or the allowlisted zoompan filter in a video-filter graph; there are no keyframes.

remove.bg API rate limit: 500 per minute, weighted by megapixels

remove.bg allows 500 images per minute at about 1 MP, less for larger inputs. Sume limits requests per minute per key and sends retry-after on 429.

remove.bg bg_color replacement: Sume RMBG gives a transparent PNG

remove.bg's API has bg_color and bg_image_url. Sume RMBG 1.0 takes only an image_url and returns a PNG with alpha, so the new background is a second step.

remove.bg crop and roi parameters: what Sume RMBG does instead

remove.bg has crop, roi, crop_margin, scale and position. Sume RMBG takes an image_url only and rejects other fields, so cropping happens before or after.

remove.bg PNG over 10 MP unsupported: Sume RMBG limits

remove.bg does not support PNG above 10 megapixels; use WebP or ZIP up to 50 MP. Sume RMBG returns PNG with alpha and caps compressed input at 20 MiB.

remove.bg type parameter (car, product, person) vs Sume RMBG

remove.bg's API has a type parameter and an X-Type header. Sume RMBG 1.0 has no foreground-type hint: send an image_url and Sume selects the model.

gen3a_turbo no longer available on Runway: re-read Sume's model list

Runway now fails requests for gen3a_turbo and gen4_aleph. Avoid the same break on Sume: read /v1/videos/models instead of hard-coding ids.

Runway per-generation usage export vs the Sume GET /v1/usage ledger

Runway's enterprise usage export lists credits per generation. On Sume, GET /v1/usage returns USD ledger rows per workspace, filterable by job_id.

Seedance 2.5 1080p ratio 1920:1080 on Sume: resolution + aspect_ratio

Runway takes a 1080p ratio like 1920:1080. Sume takes two fields instead: resolution 1080p plus aspect_ratio 16:9, and rejects size on v1.

Seedance 2.5 extend mode without ratio: how to continue a clip on Sume

Runway's extend mode needs promptText and no ratio. Sume has no extend flag: continue a clip with a first_frame image or a Video Router video_url edit.

Seedance 2.5 references only, no prompt: Sume still needs a prompt

Runway's Seedance 2.5 text-to-video can omit promptText when a reference is given. On Sume the video `prompt` field is required, so send a short one.

Runway task failure codes: which to retry, which not to

Runway says never retry SAFETY or ASSET.INVALID failures, retry INTERNAL ones with a delay. The same triage on Sume: 429 with retry-after, new keys for runs.

Synthesia Billing API credit usage vs Sume's /v1/usage ledger

Synthesia added a Billing API endpoint for credit usage. Sume's equivalent is GET /v1/usage: reservations, captures and refunds, filterable by run or job.

TikTok photo post API: 35 image URLs, PULL_FROM_URL, cover index

TikTok's photo post endpoint takes up to 35 public image URLs by PULL_FROM_URL and a photo_cover_index. How to plan the generated-image batches that feed it.

TikTok photo post API: is_aigc label and auto_add_music

Set is_aigc to true on a TikTok photo post of generated images to add the AI-generated tag. auto_add_music is direct post only. And the audit rule.

TikTok photo post title length: 90 runes, description 4000

TikTok's photo post API caps the title at 90 UTF-16 runes and the description at 4000, unlike video posts. How to count them and where Sume fits in.

Fade out music at the end of a video: two fades, two caps

In Timeline 1.0, soundtrack.fade_out_seconds fades only the music bed (max 10 s). output.fade_out_seconds fades the whole render (0 to 5 s). Which to use.

Crossfade longer than 1 second: the Timeline transition limit

Timeline 1.0 transitions are capped at 1 second and 50 percent of the shorter neighbouring clip. Longer ones return transition_too_long. What to do instead.

Video starts on a black frame: fix the first Timeline segment

A render that opens on black usually has a fade or a late first clip. Timeline 1.0 refuses a first start other than 0 and any first-segment transition.

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.

falrun.com firewall allowlist vs Sume API and media hosts

fal says to allow fal.run, queue.fal.run and the falrun.com backups. For Sume, allow api.sume.com and media.sume.com; webhooks come to your own HTTPS host.

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 Interactions API image output vs Sume /v1/images

Gemini's Interactions API returns the image on interaction.output_image. Sume's /v1/images returns data[].url, or a 202 job envelope. Check the status code.

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.

Lost a webhook signing secret? Gemini shows it once, Sume re-reads

Gemini static webhooks return the signing secret once at creation. Sume's secret can be read again from the dashboard or GET /v1/webhooks/signing-secret.

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.

Instagram Edits Manage versions vs Sume Format bulk runs

Edits keeps several versions of one project. Sume queues up to 100 Format runs as variants with a concurrency window of 1 to 16 and a key per batch.

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.

MCP progressive discovery: Sume tools_list, then tools_schema

For a large MCP tool set, list first and fetch one contract second. Sume has tools_list for visible tools and tools_schema for a single tool by name.

MCP standardized error handling: Sume's named outcomes

MCP has no single error standard across surfaces yet. Here is how Sume's named outcomes map to retry, re-auth, or stop in a hosted MCP client.

MCP sub-agent with narrower authority: a read-only Sume token

Give a sub-agent a Sume token granted only mcp:read and it sees read-only tools, so it can inspect jobs and assets but never submit a paid generation.

MCP workload identity federation: Sume takes code grant only

MCP's roadmap names Workload Identity Federation. Sume's hosted MCP advertises only the authorization_code grant, so headless workloads use an API key.

Modal 150-second web timeout and 303 redirect: Sume polling

Modal web endpoints return a 303 redirect after 150 seconds. Sume returns 202 with status_url and result_url, so a client polls and follows no redirects.

GPT Image 2.5 multi-turn edits: previous_response_id vs Sume

OpenAI keeps image edit state with previous_response_id in the Responses API. On Sume, each /v1/images call stands alone: re-send the image as a reference.

OpenRouter /images/models supported_parameters vs Sume

How to read supported_parameters enum and range descriptors before sending an image request, and what Sume does with a parameter a model does not list.

OpenRouter video webhooks vs Sume callback_url, signing, retries

OpenRouter's video guide points to a webhooks cookbook. On Sume, pass an HTTPS callback_url, verify x-sume-webhook-signature, retry with Idempotency-Key.

Replicate aborted vs canceled prediction: Sume cancel and 409

Replicate bills a canceled prediction for run time, not an aborted one. Sume cancels only before generation starts, then returns 409.

Replicate webhook_events_filter on Sume: terminal events only

Replicate lets webhook_events_filter pick start, output, logs and completed. Sume webhooks send terminal job events only, so there is no filter to set.

Replicate webhook URL custom id vs Sume job_id as the key

Replicate suggests a query param like customId on the webhook URL. Sume bodies carry request_id and job_id, and job_id is the receiver's idempotency key.

Runway Model Router allow and deny lists vs Sume auto

Runway's Model Router has allow and deny lists plus per-modality credit ceilings. Sume has no lists: pin a catalog id, or send sume/auto and accept its pick.

Shopify Catalog media filter: video and model_3d (Sept 2026)

Shopify's Catalog API can now filter by media type: image, video or model_3d. A product only matches video if it has one, so render a product clip.

Spotify HDR video podcast: tone-mapped to SDR Rec.709

Spotify converts HDR (Rec.2100) uploads to SDR Rec.709. A Sume exact trim re-encodes to yuv420p and has no colour fields, so tone-map before you trim.

Spotify video audio channels: mono upmixed, 5.1 downmixed

Spotify upmixes mono to stereo, downmixes 5.1, and rejects multi-channel. Sume audio detach offers only channels source or mono; it cannot mix to stereo.

sync-3 image formats JPEG PNG WebP vs Sume image URL rules

sync-3 accepts JPEG, PNG and WebP stills. Sume's docs set URL rules instead: a fetchable public HTTPS image, with private and signed URLs rejected.

Sync Labs batch API (20 to 500) vs Sume bulk runs (1 to 100)

Sync Labs batch takes 20 to 500 lip sync generations in one JSONL file on Scale and Enterprise. Sume bulk runs queue 1 to 100 Format runs with a 1 to 16 window.

Sync Labs API rate limit: 100 per minute, and Sume headers

Sync Labs allows 100 POST /v2/generate and 600 GETs a minute. Sume has a per-plan requests-per-minute budget; read ratelimit headers and retry-after.

AI Gateway async video 413 at 300 KiB: hosted URLs on Sume

AI Gateway caps the persisted video start request at 300 KiB and answers inline base64 with 413. On Sume, send public HTTPS URLs; 413 is payload_too_large.

Vercel AI Gateway poll intervalMs and timeoutMs vs Sume polling

AI Gateway's poll option sets intervalMs (5000) and timeoutMs (600000). Sume jobs return next_poll_after_seconds, and your client owns the deadline.

AI Gateway startVideo webhookUrl: the same pattern on Sume

experimental_startVideo returns once the job is accepted and can call a webhookUrl. On Sume, send mode webhook with webhook_url and keep polling as backup.

Vimeo pixel aspect ratio 1:1: setsar in a video filter

Vimeo recommends square pixels (1:1). Sume's video filter allowlist includes setsar, setdar and scale, so a filtergraph can set the sample aspect ratio.

Wan 3.0 smart duration and adaptive ratio vs Sume's explicit fields

QwenCloud lists smart duration and adaptive aspect ratio for Wan 3.0. On Sume you send an integer duration and an aspect_ratio the model supports.

Wan 3.0 sound toggle vs Sume generate_audio for Wan

Wan 3.0 lists a sound toggle at QwenCloud. On Sume, generate_audio defaults to the model's audio capability and some models reject false.

YouTube 48fps upload: keep the frame rate, conform to 24/25/30/60

YouTube accepts 48 and 50 fps and says to upload at the recorded rate. Sume's trim and Timeline output.fps conform only to 24, 25, 30 or 60.

Deinterlace before YouTube upload: Sume has no deinterlace filter

YouTube says deinterlace 1080i60 to 1080p30 before upload. Sume's video-filter allowlist names no deinterlacer and refuses unknown filters.

YouTube moov atom and edit lists: keyframe trim vs exact trim

YouTube asks for MP4 with moov first and no edit lists. Sume's keyframe trim is a stream copy; exact re-encodes. The docs do not state moov placement.

YouTube Opus and Eclipsa Audio uploads vs Sume's WAV and MP3

YouTube now lists Opus and Eclipsa Audio beside AAC-LC for uploads. Sume audio outputs are wav (pcm_s16le) and mp3 only; neither is Opus or Eclipsa.

YouTube 1080p bitrate: 8 Mbps, and Sume has no bitrate field

YouTube recommends 8 Mbps for 1080p SDR at 24 to 30 fps and 12 Mbps at 48 to 60. Sume rejects codec and crf fields and exposes no bitrate setting.

YouTube upload H.264 settings: what Sume's exact trim sets

YouTube lists H.264 High Profile, 4:2:0 and progressive scan. Sume's exact trim re-encodes with libx264 and yuv420p; profile, GOP and CABAC are not fields.

A2A agent card: what Sume ships instead (MCP, Agent Completions)

Sume does not publish an A2A agent card. It has a hosted MCP endpoint and Agent Completions with one model, sume-agent. Which door fits, and when.

Akool talking photo links expire in 7 days: what to archive

Akool says talking photo image, video and voice resources are valid for 7 days, so save them early. Sume media URLs do not expire; archive by need.

Alibaba's Sora 2, Veo 3.1, Kling 3.0 migration table vs Sume ids

Alibaba Model Studio maps Sora 2, Veo 3.1 and Kling 3.0 to happyhorse-1.1 models. Which of its targets are Sume catalog ids, and how model: sume/auto fits in.

ant apply agent file: declare the Sume server, keep the key out

In an ant apply agent file, declare the Sume server by name and URL, https://mcp.sume.com/mcp. The API key belongs in a vault, never in the committed file.

Argil audio upload 50 MB vs Sume Fabric's 10 MB audio URL

Argil takes mp3, wav and m4a uploads up to 50 MB. Sume's Fabric route takes a Sume-hosted audio URL up to 10 MB; H3 Max lip sync wants 5-14.8 seconds.

AssemblyAI Sync API: one call, and Sume STT sync mode

AssemblyAI's Sync API returns a short-clip transcript in one POST. Sume STT mode sync waits up to 30 seconds, then returns the job id to poll if not done.

AssemblyAI Sync API file limit vs Sume STT duration_seconds

AssemblyAI's launch post frames its Sync API for short clips. Sume STT 1.0 takes duration_seconds from 1 to 600 and reserves one minute if you omit it.

BFL 24 concurrent requests, 6 for flux-kontext-max, vs Sume

BFL caps concurrent requests at 24 (6 for flux-kontext-max). Sume treats concurrency as a dispatch limit: extra jobs queue until you hit 429 queue_full.

BFL 402 and 429 retry rules, and the same split on Sume

BFL raises on 402 and backs off on 429. Sume splits the same way: 402 insufficient_credits is a stop, 429 queue_full or rate_limited means wait and retry.

BFL polling_url on api.bfl.ai vs Sume status_url

BFL says to always poll the polling_url it returns. Sume's job envelope carries status_url and result_url for the same reason: follow them, do not build URLs.

BFL webhooks vs polling_url, and Sume webhook mode with polling

BFL says webhook users need no polling_url change. On Sume, webhook mode still returns status_url, so verify the signed callback and keep polling as a backup.

C2PA 2.3 editing history: what trim and filter return in Sume

Content Credentials 2.3 shows clearer edit history such as resizing, markup and redactions. Sume trim and filter return a new MP4; inspect never makes one.

Cartesia accent field: multilingual voices only; Sume uses voice id

Cartesia's accent field is for multilingual voices only and works independent of locale. Sume's TTS request has no accent field: pick a voice id and language.

Cartesia Instant Voice Clone: up to 60 seconds; Sume takes a voice id

Cartesia says to feed an Instant Voice Clone up to 60 seconds of audio on sonic-3.6. Sume's TTS API does not take reference audio; it takes a voice id.

Agent SDK permissionMode omitted: auto mode, Sume gates stay

From Agent SDK 0.3.286 an omitted permissionMode can start in auto mode. Sume's idempotency_key and scope checks run server-side whatever mode you pick.

Agent SDK rewind_conversation and a Sume job: find, then cancel

After rewind_conversation or a priority-now message, the MCP call is handled client-side. A submitted Sume job has its own id: find it with jobs_list.

Claude Code: disable an MCP server mid-session, Sume jobs persist

Switching off an MCP server in Claude Code SDK sessions removes its tools for new calls. Sume jobs already submitted keep running until you read or cancel them.

claude mcp add succeeded but no server? Verify Sume with mcp_health

Claude Code 2.1.283 stopped reporting success when the config could not be written. After claude mcp add for Sume, confirm with mcp list and mcp_health.

Cloudflare Workflows deleteBatch: clean up after a Sume job

Cloudflare Workflows can delete up to 100 instances per deleteBatch call. Delete only after the Sume job reaches a terminal event, and keep the job id first.

Colossyan callback vs polling, and Sume terminal-only webhooks

Colossyan posts finished or failed to your callback, or you poll every 5 s. Sume webhooks are terminal-only, so keep status_url polling as a backup.

Colossyan intrinsicDurationTrackReference vs Sume scene duration

Colossyan can size a scene to the actor's speech. In Sume avatar videos you set voice.duration per scene, silence beats need it, and the total stays 4-60 s.

Colossyan dynamicVariables vs Sume: fill placeholders yourself

Colossyan swaps {name} placeholders from dynamicVariables. Sume's avatar endpoint has no such field: fill the script yourself, one idempotent job per recipient.

Creatify custom avatar lipsync_input and consent video, explained

Creatify custom avatars are built from a lipsync_input MP4 plus a consent video. On Sume, a photo input with an image_url creates a reusable avatar handle.

Cursor custom mode with a pinned skill: install the Sume skill

Cursor lets any skill be a custom mode pinned in the chat. Install the Sume skill with sume skills install; the mode cannot waive idempotency_key or MCP scope.

Cursor /goal with paid Sume calls: what actually caps spend

Cursor /goal keeps an agent on one objective. The goal text is no budget: bound Sume spend with generation_spend_cap_usd, max_paid_calls and dry_run.

D-ID translation result URL: valid 24 hours, then re-fetch

D-ID's translation result_url is valid for 24 hours, so store the file or re-fetch it. Sume media.sume.com URLs do not expire. What to save and when.

ElevenLabs Music Audio Reference vs Sume Music's image input

ElevenLabs Audio Reference guides Music v2/v2.5 with a track of about 30 seconds. Sume Music 1.0 takes a text prompt and one optional public HTTPS image URL.

ElevenLabs STT 3 GB / 10 hour limit vs Sume STT 600 s jobs

ElevenLabs speech to text accepts files up to 3 GB and 10 hours in standard mode. Sume STT 1.0 reserves up to 10 minutes per job, so cut long recordings.

Signing the EU transparency Code of Practice after 27 July 2026

The Commission says you can still sign the AI-content transparency code after 27 July 2026; that date only set the initial list. Which section fits an API team?

Facebook Reels API: 30 posts per 24 hours, Instagram allows 100

Meta's Reels Publishing API allows 30 API-published posts in a 24-hour moving period, enforced on video_reels. Here is how to split a 100-item Sume queue.

Facebook Reels error 1363127: resolution below 540x960

Error 1363127 means the Reels video is under the 540 x 960 minimum. Facebook recommends 1080 x 1920; in Sume use the 720p or 1080p tier in 9:16, not 360p.

Facebook Reels error 1363129: frame rate must be 24 to 60 fps

Error 1363129 means the average frame rate is outside 24-60 fps. Conform the file to a fixed 24, 25, 30 or 60 fps with Sume Video Trim or Timeline, then retry.

FLUX.2 pose and layout guidance without ControlNet

FLUX.2 has no ControlNet input: BFL says to pass a pose or layout as a reference image. On Sume use image_urls or input_references; unlisted fields get a 400.

FLUX API 429 vs Sume 429: rate_limited and queue_full

BFL returns one 429 for exceeded account rate limits. Sume splits 429 into rate_limited (back off) and queue_full (wait for a job to finish or cancel one).

FLUX moderation reasons: handling the block vs a Sume job error

How to code the handler: BFL returns a Moderation Reasons array in details. A failed Sume job returns an error category and next action, not a reasons array.

FLUX API polling_url and regional hosts vs Sume job polling

BFL says to poll the polling_url it returns on api.bfl.ai and its EU and US hosts. Sume has no region choice: you poll the status URL in the job envelope.

Gemini 2.5 access limited, not deprecated: what new projects do

Gemini 2.5 access is limited to past users but not deprecated. Read the model list at runtime instead of hard-coding ids; Sume exposes /v1/catalog for that.

Gemini Omni Flash has no temperature, top_p or negative prompt

Gemini Omni Flash has no system instructions, temperature, top_p, stop sequences or negative prompts. Put negatives in the prompt; Sume has no such fields.

Gemini Omni task values mapped to Sume request fields

Google's Omni task field takes text_to_video, image_to_video, reference_to_video, edit or extend. On Sume the fields you send pick the mode; extend is absent.

Gemini voice replication: consent audio and a 10-30 s sample

Gemini API voice replication needs a 10-30 second source_audio and a consent_audio from the same speaker. Sume's TTS call takes a ready voice id instead.

Gemini voice_key with store=false: 7 days; voice_ ids: 200, 1 year

Gemini replicated voices: stored voice_ ids keep 1 year with 200 per project; stateless voicekey_ values last 7 days. What Sume's TTS voice id accepts.

Copilot app sandbox network: Sume hosts to allow

In a sandboxed GitHub Copilot app session, allow api.sume.com, mcp.sume.com and media.sume.com outbound; send the Sume key as a header, not a git credential.

GITHUB_TOKEN can't redeliver webhooks; Sume uses jobs:write

GitHub's built-in GITHUB_TOKEN cannot redeliver webhooks. For Sume job webhooks, a jobs:write API key calls POST /v1/jobs/{job_id}/webhook/redeliver instead.

Google Play AI content policy: the in-app report button

Google Play says apps that generate content with AI need in-app reporting or flagging that works without leaving the app. What that means for an AI video app.

GPT-5.5 retires Oct 14 in Codex: what to change for Sume

Codex retires GPT-5.5 on October 14, 2026. A Sume server entry names no model, and Agent Completions only accepts sume-agent, so check your own settings.

HeyGen brand glossary: speech changes, captions keep spelling

HeyGen's brand_glossary_id changes synthesized speech only; captions keep the original spelling. Sume has TTS pronunciation_dict_id and a caption stage.

HeyGen brand kit from a website URL vs Sume product and scene

HeyGen builds a stored brand kit from a website URL with POST /v3/brand-kits. Sume has no kit object: you pass product, scene and avatar inputs per request.

Ideogram 4 describe image to JSON prompt vs Sume reference input

Ideogram's describe endpoint returns a structured json_prompt with optional bounding boxes. The Sume docs list no such route; pass the image as a reference.

Ideogram image URLs expire: what to keep vs Sume job results

Ideogram says image URLs expire, so download what you keep. Here is what to persist after an Ideogram call, and what to store from a Sume image job result.

Ideogram API upload limits (10, 25, 50 MB) vs Sume image URLs

Ideogram caps uploads per endpoint at 10MB, 25MB or 50MB, multipart only. Sume takes public HTTPS image URLs and lists 413 and 415 errors for bad bodies.

Ideogram Reframe aspect_ratio snaps to 1K; Sume's WxH mapping

Ideogram Reframe with Nano Banana 2 resolves aspect_ratio to the closest 1K size the model supports. Sume maps WxH on Nano Banana to the native aspect_ratio.

Ideogram remove-background 200 with an error body vs Sume errors

Ideogram's remove-background can return HTTP 200 whose body holds error and status_code. Check the body, not just the status. Sume reports failures on the job.

Ideogram Topaz Bloom 2 creative upscale prompt vs Sume upscale

Ideogram's Topaz Bloom 2 upscale takes an optional prompt. Sume's image upscale takes image_url and upscale_factor only, with no prompt field. Request shapes.

Ideogram Topaz Text Refine 8x limit: 8192px math vs Sume upscale

Ideogram rejects a Topaz Text Refine upscale if the output exceeds 8192px on a side. Work out the largest source per factor; Sume's upscaler takes 1 to 4.

Idempotency-Key draft: 422 reuse vs Sume's 409 conflict

The IETF Idempotency-Key draft expired 18 April 2026 and uses 422 for a reused key; Sume returns 409 idempotency_conflict for a different body.

IETF RateLimit-Policy draft vs Sume's ratelimit-* headers

The IETF RateLimit draft defines structured RateLimit-Policy and RateLimit fields. Sume sends plain ratelimit-limit, -remaining, -reset and retry-after.

Instagram API 100 posts per 24 hours: size your bulk queue

Instagram limits API-published posts to 100 in a moving 24-hour period, checked at content_publishing_limit. A Sume bulk queue also tops out at 100 items.

Instagram API error: Maximum number of sponsors exceeded (2)

Instagram's publishing error table lists 'Maximum number of sponsors exceeded. Limit is 2 per post.' and 'Cannot tag yourself as sponsor.' How to prevent both.

LMNT has shut down: what to know moving to Sume TTS

LMNT's site says it has shut down. If you move to Sume TTS 1.0, voice ids do not carry over, language must be set for non-English text, and text caps at 20000.

LTX /v1/extend limits, and chaining clips with Sume frame_images

LTX's /v1/extend is 1080p only, adds 2-20 seconds, needs 73+ input frames. Sume has no extend call here: chain clips with frame_images, then join in Timeline.

LTX keyframe interpolation is open-source only; Sume takes last_frame

LTX's KeyframeInterpolationPipeline has no API endpoint. On Sume, frame_images accepts first_frame and last_frame on models that report support in the catalog.

LTX retake vs Sume: fix one section of a video

LTX's POST /v1/retake regenerates one time region of a video. Sume's video edit takes a whole clip, so trim the bad section, edit it, and rejoin it.

LTX frame counts must be 8k+1; Sume durations are whole seconds

LTX frame counts must satisfy (F-1) % 8 == 0, so 30 frames is invalid. On Sume you send whole seconds and read the allowed set from the catalog, not frames.

Luma Agents API presigned URL, generation id and Sume job ids

Luma presigned video URLs expire after 1 hour but the generation id does not. For Sume, store the job id and re-read the job instead of keeping a video URL.

Luma Ray 3.2 video.loop: rejected with 10s, hdr or end_frame

Luma's video.loop fails with duration 10s, hdr or end_frame. Sume has no loop flag; models with first and last frame inputs can take one image for both.

Luma Ray 3.2 video_reframe: 10-second source, no 1080p vertical

Luma's video_reframe outpaints a source of 10 seconds or less, with no 1080p for 9:16 or 3:4. Sume crops a hosted clip instead of generating new edges.

MCP batch mixed tools error: split status reads, waits, tools

Sume's legacy MCP batch must hold one class of work: jobs_status reads, jobs_wait waits, or other tools. A mixed array gets 400 -32600. Here is how to split it.

MCP DCR application_type: what Sume's register endpoint reads

The 2026-07-28 MCP spec asks clients to send application_type in dynamic registration. Sume's /oauth/register reads redirect_uris and other named fields.

MCP server URL trailing slash 404: use mcp.sume.com/mcp

Sume's hosted MCP URL is https://mcp.sume.com/mcp with no trailing slash. The server registers that exact path, so write it as documented; skip redirect flags.

MCP GET stream endpoint removed: Sume GET /mcp returns 405

MCP 2026-07-28 removes the GET stream endpoint. Sume's remote MCP already answers GET /mcp with 405 and Allow: POST, so send every message as an HTTP POST.

MCP JSON-RPC batch 400: one message per request, Sume max 4

MCP 2026-07-28 requires one JSON-RPC message per POST. Sume still takes legacy batches of 1 to 4 on the 2025-03-26 shape and returns 400 -32600 otherwise.

MCP 403 forbidden_origin: why a browser client is refused

Sume remote MCP answers a disallowed Origin header with 403 forbidden_origin. A request with no Origin, like curl or a server SDK, is not checked this way.

MCP resource not found -32602: Sume is tools-only, so -32601

MCP 2026-07-28 moves resource-not-found from -32002 to -32602. Sume's hosted MCP advertises tools only, so resources/read gets method-not-found -32601.

MCP x-mcp-header and Mcp-Param headers vs Sume idempotency_key

The MCP 2026-07-28 spec can mirror tool parameters into Mcp-Param headers via x-mcp-header. Sume takes idempotency_key as a tool argument in the JSON body.

MiniMax H3 first_frame and reference roles can't mix: Sume rule

MiniMax H3 treats first/last frames and reference roles as mutually exclusive. On Sume, frame_images takes precedence over input_references. Which to send.

MiniMax H3 reference input limits: 30 MB, 50 MB, 64 MB request

MiniMax H3 caps images at 30 MB, reference video at 50 MB and the request at 64 MB, and says to use public URLs. A pre-flight list, and how Sume takes URLs.

Capacity fallback vs Sume queued jobs at full concurrency

Runway's Model Router can fall back to another model at its concurrency limit. Sume instead accepts the job as queued on the same model until a slot opens.

Revised NO FAKES Act: counter-notice and what it means for APIs

The revised NO FAKES Act adds counter-notice, a research exemption and streaming-music fixes. A plain summary read against avatar, face-swap and music routes.

Notion 429/529 retry_after in the body vs Sume retry-after header

Notion now puts additional_data.retry_after in 429/529 bodies. Sume sends a retry-after header on rate_limited. One small helper can read both.

Notion MCP 20 calls per 10 seconds: poll Sume jobs less

Notion MCP allows 20 search and 20 data source query calls per connection every 10 seconds. Use a Sume webhook so job polling does not compete for them.

OpenAI Agents SDK 0.20 httpx2 MCP headers: Sume API key

With a custom MCP HTTP client in Agents SDK 0.20, send the Sume key as an Authorization Bearer or x-api-key header. httpx2 only matters if you built the client.

Agents SDK mcp.Client mode auto against Sume's MCP server

With MCP Python SDK v2, the Agents SDK probes the newest protocol and falls back to initialize. Sume's hosted server still serves initialize with 2025-11-25.

Agents SDK approve_unsafe_replay with Sume paid calls

approve_unsafe_replay resends a model request, not a Sume tool call. Sume paid and write tools need a stable idempotency_key; keep it fixed on a repeat.

OpenRouter 402 with credits left vs Sume 402 on reserve

OpenRouter can return 402 with a positive balance when the in-flight budget is full. Sume's 402 means the estimate could not be reserved. Telling them apart.

OpenRouter audio/speech returns bytes; Sume TTS returns a job

OpenRouter's /audio/speech streams raw audio bytes. Sume's TTS Router returns a job id and a media URL, so a byte-stream client needs a poll step.

OpenRouter base64 input_audio vs Sume STT 1.0 audio_url

OpenRouter transcription takes base64 audio inside the JSON body. Sume STT 1.0 takes an audio_url instead, so you host the file and send a link.

OpenRouter Batch API vs Sume async jobs: which for video?

OpenRouter's Batch API is for text and embeddings with a 24 hour window. For video files, Sume returns a job id per request: async, sync, or webhook mode.

OpenRouter batch custom_id vs one Sume Idempotency-Key per job

OpenRouter's Batch API needs a custom_id unique within each batch. Sume has no batch envelope for these submits: give each job its own Idempotency-Key.

OpenRouter batch 24h window and expired vs Sume queued jobs

OpenRouter batches use a 24-hour completion window and can end as expired. Sume jobs have no queue expiry option today: a queued job waits, or you cancel it.

OpenRouter batch DELETE 409 vs Sume cancel 409 after start

OpenRouter returns 409 when you DELETE an in-flight batch. Sume returns 409 job_generation_already_started on cancel once generation starts. Handle both.

OpenRouter batch has no results download; Sume has a URL per job

OpenRouter batch results come inline on GET /batches/:id with no download endpoint. Sume returns a result_url per job and a batch result read over MCP.

OpenRouter batch results kept 30 days; Sume media URLs don't expire

OpenRouter deletes batch inputs and results 30 days after creation, then returns 410 Gone. Sume job results use durable media.sume.com URLs that do not expire.

OpenRouter batch statuses vs Sume job statuses mapped

OpenRouter batches go validating, in_progress, finalizing, completed. Sume jobs go queued, processing, then completed, failed or canceled (one L). Table.

OpenRouter errors after HTTP 200 vs Sume: 2xx means the job exists

OpenRouter can send an error as an SSE event after a 200. Sume has no SSE transport: a 2xx means the job exists, and failures show up on the job record.

OpenRouter eu. and us. base URLs vs Sume's single API host

OpenRouter added us. and eu. in-region base URLs on 2026-09-09. Sume documents one host, api.sume.com, and no region-pinned base URL or ZDR toggle.

OpenRouter weight_exceeds_budget: never retry; Sume queue_full

OpenRouter's weight_exceeds_budget 402 will not clear on retry; in_flight_budget_exhausted will. Sume splits the same way: queue_full retries, 402 does not.

Pipedream 750-second timeout: poll loop or Sume webhook?

Pipedream paid plans allow 750 seconds per run. Submit the Sume video job, then finish in a second workflow triggered by the webhook not a long poll loop.

Retool concurrency 100, burst 200, and Sume bulk runs

Retool cloud workflows list concurrency 100 and burst 200. Sume bulk runs take 1-100 items at concurrency 1-16, so one bulk call fits a Retool budget.

Retool resource block 10-minute limit and Sume async jobs

Retool async resource blocks stop at 10 minutes. Submit the Sume job in async or webhook mode, return the job id, and finish in a separate step or workflow.

Rime Arcana retired: use Coda; Sume TTS Router model_not_found

Rime retired Arcana on 2026-08-15 and serves arcana ids with Coda. Sume's TTS Router fails unknown model ids with 400 model_not_found; check the catalog.

Rime Coda 180 s audio limit vs Sume TTS 1200 s limit

Rime Coda 1.0.5 uses a 180-second maximum audio duration. Sume TTS 1.0 fails audio past 1200 seconds with tts_duration_exceeded; join parts for longer audio.

Seedance 2.5 duration -1: auto length vs Sume integer duration

BytePlus Seedance 2.5 accepts duration 4-30 or -1 and ratio adaptive. Sume documents duration as integer seconds and per-model aspect ratios. How to map it.

Seedance 2.5 mov output for editing and extension, and Sume MP4

BytePlus recommends mov (H.264, yuv444p) as input and output for Seedance 2.5 editing and extension. Sume Timeline and Video filter return MP4. What to plan.

Seedance 2.5 reference video limits: 200 MB, 24-60 fps

BytePlus caps one Seedance 2.5 reference video at 200 MB and 24-60 fps, audio at 2-30 s. Check your files, then see what Sume's docs list for the model.

Seedance asset:// ids vs Sume reference URLs

BytePlus Seedance takes asset://<asset ID> for preset digital characters and authorized assets. A Sume request takes image_url objects with HTTPS URLs instead.

Seedance video URL: 24 hours, 100 downloads, and Sume artifacts

BytePlus keeps a Seedance 2.5 video URL for 24 hours, at most 100 downloads. What that means, and how to read and save a Sume job's hosted video artifact.

Supabase Edge Function 400 s wall clock vs a Sume video job

Supabase Edge Functions cap wall clock at 150 s on Free and 400 s on Paid. Do not wait on a video: submit in one function and receive the webhook in another.

Supabase Edge Function secrets: 100 per project, 2 for Sume

Supabase allows 100 secrets per project. A Sume webhook receiver needs two: your API key and the webhook signing secret. Names, rules and what to verify.

sync-3 lip sync takes 10-15 min: async job and webhook pattern

Sync lists sync-3 at about 10-15 minutes for a 30 s video. Do not hold a request open: submit async, take a terminal webhook, and keep polling as a backup.

Sync lip sync output: H.264 crf 17, HDR to SDR, alpha removed

Sync re-encodes lip sync output to H.264 at crf 17, turns HDR into SDR and drops alpha. Here is that next to what Sume returns for avatar video.

Sync sync_mode bounce, cut_off, silence, remap vs Sume lengths

Sync offers bounce, cut_off, silence and remap when audio and video lengths differ. Sume has no such option: trim or split audio to the accepted window.

Synthesia dubbing file size limit: 5 GB or 2.5 hours

Synthesia dubbing accepts uploads up to 5 GB or 2.5 hours, 4K, in .mp4, .webm or .mov. Sume's limits sit at the audio stage: a 10 MB audio_url and 300 s.

Synthesia rejected status: moderation, error, and your handler

Synthesia marks a moderated video rejected, separate from error. Sume reports content_policy_rejected as a public_reason; an unfunded run is a 402 instead.

Synthesia video.completed webhook: the download URL is time-limited

Synthesia sends video.completed and video.failed, and its download URL is time-limited. Sume sends job.completed, job.failed and job.canceled with durable URLs.

Take It Down Act 48-hour removal for AI video apps and URLs

The FTC enforces a 48-hour removal duty on covered platforms. If your AI video app serves generated MP4s from durable public URLs, here is what to plan for.

Per-task cost in the API response: Runway vs Sume usage.cost

Runway task responses carry a credit cost, estimated while running and final on completion. On Sume, read usage.cost on the job, a USD billable amount.

Threads API: wait about 30 seconds before publishing a container

Threads suggests waiting on average 30 seconds after creating a media container before threads_publish. Poll the container status, like a Sume job poll.

TikTok brand_organic_toggle vs brand_content_toggle on AI video

Set brand_organic_toggle for your own business, brand_content_toggle for a paid partnership, and is_aigc for AI video. How to carry the flags with each clip.

TikTok rate_limit_exceeded: 6 requests a minute per access_token

TikTok Direct Post allows 6 requests a minute per user access_token and returns 429 rate_limit_exceeded past it. Space publishes; Sume limits only generation.

TikTok spam_risk_too_many_posts vs reached_active_user_cap

Two daily TikTok 403s: spam_risk_too_many_posts is the per-user API post cap, reached_active_user_cap is your client quota. Hold videos till tomorrow.

TikTok unaudited_client_can_only_post_to_private_accounts

TikTok returns a 403 when an unaudited client posts to a non-private account. Test with private posts until the audit passes; Sume only supplies the file.

TikTok url_ownership_unverified with a media.sume.com URL

PULL_FROM_URL needs a TikTok-verified domain or prefix, so a media.sume.com URL fails with 403. Upload the bytes with FILE_UPLOAD or host a copy on your domain.

TikTok PULL_FROM_URL times out after one hour: keep the URL live

TikTok pulls a PULL_FROM_URL file at up to 100 Mbps and times out one hour after it starts. The URL must stay live; a Sume durable URL has no expiry.

Veo 3.1 latency is 11 seconds to 6 minutes: set your poll to match

Google lists Veo 3.1 request latency from 11 seconds to 6 minutes at peak. Poll with a deadline over 6 minutes; Sume's video docs poll every 30 seconds.

Veo 3.1 videos are stored 2 days: download them, and what Sume does

Google says Veo videos are stored for 2 days, and referencing one for extension resets the timer. Save the file early; Sume jobs return Sume-hosted artifacts.

Wan 3.0 at 30 fps, HappyHorse at 24: set Timeline output.fps

Alibaba lists Wan 3.0 at 30 fps and HappyHorse 1.1 at 24 fps. Joined in Sume's Timeline, a differing output.fps resamples sources and warns; omit it to match.

X animated GIF limit: 15 MB, 350 frames, and the MP4 alternative

X allows an animated GIF up to 15 MB and recommends 1280x1080 and 350 frames or fewer. Sume makes MP4 video, not GIF, so attach a short MP4 instead.

X API 403 "not allowed to post a video longer than N minutes"

The 403 means the clip exceeds the posting account's cap: 20 minutes by default, 125 for Premium or verified. Cut the video to that cap before you post.

X API paid_partnership true: disclose a sponsored AI video Post

Set paid_partnership true in POST /2/tweets to label a Post as paid promotion on X. Sume returns the video file; your own call creates and flags the Post.

X API media upload: initialize, append, finalize a Sume video

X's chunked upload now uses POST /2/media/upload/initialize, append and finalize. Download the finished Sume video, then run the three calls yourself.

X DM video limit: 140 seconds and 512 MB, and how to trim to it

X lists DM video (dm_video) at 140 seconds and 512 MB by default. Cut a clip to length with Sume video-trim, which takes 0.2 to 900 seconds.

X video audio must be AAC-LC, not HE-AAC: check an AI video

X requires AAC Low Complexity audio, mono or stereo, with H264 High Profile and YUV 4:2:0. What Sume's exact trim keeps and re-encodes, and what it leaves.

X video max 1280x1024, ratio 1:3 to 3:1, 60 fps: conform a clip

X video must be 32x32 to 1280x1024, 60 fps or less, ratio 1:3 to 3:1. Read literally, a default 1080x1920 Timeline file is over; conform with video-trim.

YouTube containsSyntheticMedia: the videos.insert field for AI video

videos.insert lists status.containsSyntheticMedia, a boolean on the videos resource. Sume returns the file; you set the flag in your own insert call.

YouTube videos.insert: 100 calls per day and a batch plan

YouTube's videos.insert page lists 100 calls per day in a Video Uploads quota bucket. Size a Sume bulk queue of up to 100 Format runs to fit that day.

Azure batch takes 10,000 inputs per job; Sume sends one text per job

Azure batch synthesis accepts up to 10,000 text inputs in a 2 MB JSON body. Sume TTS 1.0 takes one transcript of up to 20,000 characters per job.

Azure batch: 95% of outputs within 120 seconds; Sume TTS waits 30

Azure says half of batch outputs finish in 10 to 20 seconds and 95% within 120. Sume TTS sync mode waits at most 30 seconds, then hands you a status URL.

Azure word boundaries in ms vs Sume TTS timestamps in seconds

Azure writes word timings as AudioOffset and Duration in milliseconds, in a separate file. Sume returns words[] with start and end seconds on the job result.

Azure Long Audio API retires April 2027: long audio on Sume

Azure says the Long Audio API retires April 1, 2027 in favor of batch synthesis. Sume TTS 1.0 handles long text as async jobs capped at 1,200 seconds of audio.

Boost dull video colors by API: the vibrance filter intensity

Sume's video filter allowlists vibrance, with intensity from -2 to 2 and a default of 0. A small positive value lifts muted color; a negative one mutes it.

Deepgram Aura-2 allows 2,000 characters per request; Sume 20,000

Deepgram answers 413 when Aura text passes 2,000 characters. Sume TTS 1.0 accepts 1 to 20,000 characters per request, with a separate 1,200-second audio cap.

Deepgram Aura-2 languages: seven, and how Sume TTS sets a language

Deepgram lists English, Spanish, German, French, Dutch, Italian and Japanese for Aura. Sume TTS takes a language field per request, matched to the voice.

Deno fetch stops retrying fresh-connection POSTs: Sume keys

Deno now retries fetch transport errors only on reused connections. That cuts duplicate POSTs, but a paid Sume submit still needs an Idempotency-Key.

Remove video speckle noise by API: median filter radius

Sume's video filter allowlists median, which replaces each pixel with the middle value of its neighbours. Radius runs 1 to 127; start at 1 and compare.

Faded matte-black video look by API: raise the colorlevels black point

Sume's video filter allowlists colorlevels. Raising the output black point (romin, gomin, bomin) lifts pure black to dark gray for a faded, matte look.

Fix a yellow or blue color cast in a video by API (colortemperature)

Sume's video filter allowlists colortemperature, a Kelvin value from 1000 to 40000 with a default of 6500. Warm or cool a clip and mix it in part.

Google Cloud TTS caps requests at 5,000 bytes; Sume counts characters

Google lists 5,000 total bytes per request and says multi-byte characters such as ja-JP count toward it. Sume TTS 1.0 counts characters: up to 20,000.

Google Chirp 3 allows 200 requests a minute; Sume limits by plan

Google lists per-minute request quotas by voice type: Chirp 3 at 200, Studio 500, Standard 1,000. Sume TTS is limited by workspace concurrency on your plan.

Google Vids caption font, position, animation: Sume design overrides

Google Vids lets you change caption font, position and animation. Sume's caption overrides cover colour, size, placement, phrasing and motion, not a Latin font.

gpt-image-2.5-flare-2026-09-08 on Sume: use openai/gpt-image-2.5

OpenAI lists the snapshot gpt-image-2.5-flare-2026-09-08. Sume documents catalog slugs, so send openai/gpt-image-2.5 and check /v1/images/models for ids.

GPT Image 2.5 Flare: 5 images a minute at Tier 1 vs Sume limits

OpenAI limits Flare to 5 images per minute at Tier 1 and 250 at Tier 5. Sume applies plan concurrency, queue capacity and 429 codes instead. Both tables here.

GPT Image 2.5 largest square: 2880x2880, not 3000x3000

GPT Image 2.5 caps pixels at 8,294,400. A square tops out at 2880x2880; 3000x3000 (9,000,000) is rejected. OpenAI calls sizes above 2560x1440 experimental.

Hookdeck passes gzip bytes unchanged: verify Sume on raw bytes

Hookdeck now forwards binary and gzip bodies byte for byte. Read the raw bytes before parsing and verify the Sume sume-v1 signature over them.

Hume Octave 2 description field vs Sume TTS emotion controls

Hume lists a voice description field; acting instructions are coming soon. Sume TTS 1.0 has generation_config: emotion text, speed 0.6 to 1.5, volume 0.5 to 2.

Hume Octave takes 5,000 characters per utterance in MP3, WAV or PCM

Hume's TTS overview lists 5,000 characters per utterance and MP3, WAV or PCM output. Sume TTS 1.0 takes 20,000 characters and mp3, wav or raw containers.

Inngest retries a failed step four times: key the Sume submit

Inngest's default is four retries after the first attempt, five in all, and side effects are not exactly-once. Give the Sume submit an Idempotency-Key.

Inngest NonRetriableError and RetryAfterError for Sume errors

Map Sume HTTP errors to Inngest: NonRetriableError for 400, 401, 402 and 404, and RetryAfterError with the retry-after header on a 429.

Keep one color, gray out the rest of a video: chromahold API

Sume's video filter allowlists chromahold, which keeps one key color and turns the rest gray. Set color, similarity and blend, then check the graph for free.

Lambda durable functions with Pydantic AI: Sume submit as a step

AWS says each model and tool call becomes a durable step that is not repeated after an interruption. Here is how to shape a Sume submit as that step.

LLaDA-Image is open weights: Sume's Image API is a hosted catalog

LLaDA-Image (6B, Apache 2.0, released 2026-09-04) is a download, not an API id. Sume does not list it; use a catalog model with a text-in-image prompt.

Lyria 3.5 has no Batch API: queue many tracks on Sume instead

Google's Lyria 3.5 page says batch, Flex and Priority inference are not supported. Sume accepts many music jobs and queues them past your concurrency.

Same Lyria 3.5 prompt, different song: why, and no seed on Sume

Google says Lyria results vary between calls. Sume's music API has no seed. How to keep the take you like and generate a few to choose from.

MAI-Image-2.6-Flash API: not on Sume, models to use instead

Microsoft's MAI-Image-2.6 and 2.6-Flash launched 2026-09-04 in Foundry preview. Sume's image catalog does not list them; check GET /v1/images/models.

MAI-Voice-2.1: 23 languages and voice matching; Sume takes a voice id

Microsoft says MAI-Voice-2.1 covers 23 languages and matches a voice from a short clip. Sume TTS takes a ready voice id or avatar, not reference audio.

MAI-Voice-2.1-Flash lists 45 ms; Sume TTS is an async job

Microsoft lists MAI-Voice-2.1-Flash at about 45 ms and MAI-Voice-2.1 at about 550 ms. Sume TTS 1.0 is non-streaming: a job with a poll URL or webhook.

Make AI Agent fallback connection retries once: key Sume calls

Make now retries an AI Agent run once on a fallback connection. Keep the Sume Idempotency-Key out of the model's hands so a retried run cannot bill twice.

Ming Design-Layer splits a design into RGBA layers: Sume does not

Ming-Image-0.1-Design-Layer decomposes a flat design into RGBA PNG layers. Sume's Image API returns finished images, so build layers from transparent elements.

Ming-Image-0.1-Design on Sume: not in the catalog, use these

Ming-Image-0.1-Design is an open 6B design model. Sume's image catalog does not list it, so send a listed model id such as openai/gpt-image-2.5 for posters.

Nano Banana Pro 21:9: Gemini's ratio list vs Sume's catalog

Gemini's image docs list 21:9 among ten ratios. Sume's Nano Banana Pro and Nano Banana 2 catalogs include 21:9 too; GPT Image 2.5's list does not.

Next.js dev MCP endpoint leak: keep your Sume API key out of source

CVE-2026-94486 let a malicious page read source snippets from next dev. Keep the Sume API key in an env var, server-side, and log request ids not headers.

Next.js 16.3.8 security release: does a Sume webhook route change?

Seven Next.js advisories shipped September 30 in 16.3.8 and 15.5.27. None names Route Handlers, so upgrade, then re-run a signed Sume test delivery.

OpenAI speech API has six formats; Sume TTS has mp3, wav, raw

OpenAI lists MP3, Opus, AAC, FLAC, WAV and PCM for speech output. Sume TTS 1.0 has three containers: mp3, wav and raw, with set sample rates and encodings.

Polly async needs an S3 bucket; Sume gives a status URL and webhook

Polly's StartSpeechSynthesisTask writes audio to your S3 bucket and can notify an SNS topic. Sume TTS returns a status URL, or a signed webhook on completion.

Polly speech marks need a separate request; Sume returns timings

Polly returns speech marks instead of audio when you ask for them: sentence, word and viseme metadata. Sume TTS returns words[] timings on the same job result.

Polly takes 3,000 billed characters; Sume TTS takes 20,000

Polly SynthesizeSpeech accepts 3,000 billed characters and cuts audio at 10 minutes. Sume TTS 1.0 accepts 20,000 characters and 1,200 seconds of audio per job.

Postgres 17.11 pgcrypto change: verify a Sume webhook with hmac()

The Postgres minor release changed legacy pgcrypto ciphers. Its listed changes never mention hmac(), so a Sume sume-v1 signature check in SQL still works.

Burn a rule-of-thirds grid onto a video for review with drawgrid

Sume's video filter allowlists drawgrid. Set width and height to iw/3 and ih/3 for a thirds grid. The grid is burned in, so it is a proof file.

Show only what moved between frames: tblend in difference mode

Sume's video filter allowlists tblend. In difference mode each frame is blended with the previous one so static areas go dark and movement lights up.

Add a soft glow to video by API: split, gblur, screen blend

Sume's video filter allowlists split, gblur and blend, enough for a dreamy glow: blur a copy, then screen it over the original at partial opacity.

Soften skin in video by API with smartblur (whole-frame)

Sume video filter allowlists smartblur, which blurs but keeps outlines. No face detection, so it softens the whole frame; tune radius, strength threshold.

Sora characters gone: reuse a subject with reference images

Sora's reusable Characters left with the Videos API. Sume has no saved character; send the same reference images with each request to wan-3.0 or minimax-h3.

Sora polling loop ported: Sume statuses and a 30-second poll

Sora's guide polled every 10 to 20 seconds for queued, in_progress, completed, failed. Sume's jobs read pending, in_progress, completed, failed, cancelled.

Sora remix and edits ended: edit a video with Gemini Omni Flash

Sora's remix, then its edits endpoint, went away with the Videos API on 2026-09-24. On Sume, send video_url and an edit prompt to gemini-omni-flash-1.1.

Sora extensions to 120 seconds: 30-second clips and Timeline

Sora's Videos API let you extend a clip up to 6 times, 120 seconds in all, and shut down 2026-09-24. On Sume, chain 30-second clips and join them in Timeline.

Sume editing tool source limits: 1,800 s and 300 s

Video trim, audio detach and video inspect accept a source up to 1,800 seconds. Video filter, Timeline compose and video frames stop at 300 seconds.

Sume SDK fetch wrapper: do not add an Authorization header

A fetch wrapper passed to createSumeClient must not add Authorization. Sending it with x-api-key returns 401, because Sume accepts only one credential.

Sume SDK calls resolve with error: make your task throw

Generated Sume SDK operations return { data, error, response } and never throw. In Trigger.dev or Inngest, throw yourself or a failed run looks successful.

Temporal Activity ID policies are not a Sume Idempotency-Key

Temporal's Conflict and Reuse policies dedupe Activity IDs inside Temporal. They never reach Sume, so a paid submit still needs its own Idempotency-Key.

Temporal Maximum Attempts 1 and a paid Sume submit

Standalone Activities default to at-least-once retries. Maximum Attempts 1 gives at-most-once, but a Sume Idempotency-Key lets you keep retries safely.

Cancelling a Trigger.dev run does not cancel the Sume job

Trigger.dev cancel stops the task and its child runs. A Sume job that already started generating cannot be cancelled, and still bills. Store the job id.

Trigger.dev public tokens show Sume progress without the API key

Hand the browser a Trigger.dev read-only public token for one run while the task holds the Sume key. The Sume key never leaves the server.

Trigger.dev retries and Sume errors: skip 4xx, wait on retry-after

Trigger.dev retries any uncaught throw. Use catchError to skip Sume errors that cannot succeed, and read the retry-after header on a 429.

Trigger.dev replay reuses the payload: key the Sume submit from it

A Trigger.dev replay starts a new run with the same payload. Derive the Sume Idempotency-Key from that payload, not a random id, or a replay bills twice.

Turn a video into a line-art sketch by API with edgedetect

Sume's video filter allowlists edgedetect and negate. Edges come out as white wires on black; negating gives dark lines on white. Modes: wires, colormix, canny.

Vercel CDN skips Vary: Cookie responses: Sume status proxy headers

Vercel's CDN no longer caches Vary: Cookie responses. For a route proxying Sume job status, send Cache-Control private and honor next_poll_after_seconds.

Vidu movement_amplitude does nothing on Q2 and Q3; Sume uses prompts

Vidu says movement_amplitude has no effect on its q2 and q3 models. Sume has no motion-strength field at all; you steer motion in the prompt.

Vidu Q3 allows 1 to 16 seconds; Sume's shortest clip is 2

Vidu Q3 accepts 1 to 16 seconds. On Sume the shortest clip is 2 seconds on wan-3.0, 3 on Gemini Omni Flash, 4 on Seedance, Kling and Grok, 5 on MiniMax.

Vimeo can hide black bars; Sume bakes the right frame into the file

Vimeo's September 2026 Page theme hides black bars on non-16:9 videos. To remove them from the MP4 itself, render the frame with Timeline fit and output size.

VS Code extension icon: 128x128 minimum, 256x256 for retina

VS Code wants an extension icon of at least 128x128, with 256x256 for retina displays. Generate 1024x1024 with GPT Image 2.5 on Sume and downscale to 256.

Zapier Next Gen Zaps drop the 500-item loop cap: pace Sume

Next Gen Zaps loop past 500 items. A loop of paid Sume submits hits per-minute write budgets and accepted-job capacity first, so size the wave from your plan.

Zapier Next Gen Zaps can pause for a reply: approve before Sume

Put the paid Sume submit after Zapier's new human-reply pause, and key it from the approved record so a double click or a resume cannot submit twice.

Magnified inset callout in video: split, crop, overlay

Sume's video filter has one input, but split, crop, scale and overlay are allowlisted, so a zoomed copy of one region can sit in a corner of the same frame.

Amazon A+ createMedia 201, 200, 409: retry-safe uploads on Sume

Amazon's createMedia answers 201, 200 or 409 on retry. Pair it with one Sume Idempotency-Key per asset so a retried submit never bills twice.

Amazon A+ media status NOT_APPROVED: poll Sume, then upload

Amazon A+ video media moves through PENDING_PROCESSING, PENDING_REVIEW and AVAILABLE. Two clocks run: finish the Sume job first, then poll Amazon.

Amazon A+ Content API: mediaUrl is not permanent, keep your own copy

Amazon says A+ getMedia's mediaUrl is non-permanent. Re-fetch it, and keep your own copy of finished Sume clips by downloading from the content URL.

Amazon A+ video descriptions per locale vs Sume caption language

A+ updateMedia upserts video descriptions by locale, one of title or descriptions per call. Sume's caption language is only a speech-to-text hint.

Anam 99.9% uptime SLA vs Sume failed-job retry metadata and refunds

Anam states a 99.9% uptime SLA for Cara-4. Sume documents what a failed avatar job exposes, category and retryability, and refunds the reservation.

AssemblyAI disfluencies: true (English only) vs Sume STT words[]

AssemblyAI's disfluencies: true raised filler-word recall from 49.7% to 76.3%, English only. Sume STT has no such flag, so check words[] on your clip.

AssemblyAI format_text false: 'one hundred' vs 100 and Sume STT

AssemblyAI's format_text: false returns spoken form, 'one hundred' not 100. Sume STT has no formatting toggle; its request is a closed schema.

AssemblyAI speech models: unpinned routing and Sume's fixed STT id

AssemblyAI will route unpinned async requests to Universal-3.5 Pro; pin speech_models to stay put. What changes, and why Sume STT has no model to pin.

AssemblyAI Universal-3.5 Pro and Urdu: language_code on Sume STT

AssemblyAI fixed a bug that sent Urdu to Universal-3.5 Pro, which covers 18 languages. How a language hint behaves on Sume STT, and what to check.

Caption animation speed in and out: Sume motion overrides

Tune burned-in caption animation with design.motion: enter_seconds, exit_seconds, emphasis_in_seconds and emphasis_out_seconds, set per caption request.

Subtitles: how many words per line with design.phrasing

Sume video captions let design.phrasing set max_words (1-12), max_chars (4-60) and pause_seconds (0.05-3) per phrase. Not supported on punch or tiktok-green.

Subtitle position on video: Sume anchor_ratio for captions

Move burned-in captions up or down with design.placement.anchor_ratio, and set a separate landscape_anchor_ratio. A fraction of frame height, per request.

Editorial two-line video captions: the editorial-emphasis style

Sume's editorial-emphasis caption style is a left-aligned two-line card where the phrase-final word drops to a second line at about twice the size.

Burned-in caption text size and outline: Sume design fields

Set burned-in caption size, weight and outline per request with the six `design.typography` fields on POST /v1/video-captions. What each does and what fails.

Cartesia API version 2026-08-14 and Sume TTS Router model ids

Cartesia's 2026-08-14 API version drops already-deprecated fields; pinned integrations keep running. Pinning on the vendor side, and Sume's explicit model enum.

Cartesia normalization: auto, off or a locale code, versus Sume text

Cartesia Sonic 3.6 adds a normalization field set to auto, off or a locale code. Sume TTS has no such field, so write dates and numbers out in the transcript.

Claude Code 2.1.286 MCP Bearer redaction: Sume key cleanup

Claude Code 2.1.286 stopped MCP errors from printing a credential after Bearer. Update, then sweep old logs and rotate any Sume key that appeared there.

Codex MCP OAuth 503 on discovery: check Sume's two URLs

Codex 0.156.0 refreshes MCP credentials after an OAuth discovery 503. To see if it came from Sume, curl its two well-known metadata URLs.

Flux TTS CONTROL_COMBINATION_INVALID and the 1.15 pause speed cap

Deepgram Flux TTS rejects some control combinations and caps speed at 1.15 with a pause. The error codes, the rules, and Sume's 0.6 to 1.5 speed range.

Deepgram Flux TTS inline IPA vs Sume's pronunciation dictionary id

Deepgram Flux TTS now takes inline IPA overrides in Early Access. Sume TTS takes a pronunciation_dict_id instead. How the two approaches differ in practice.

Flux TTS pause markers: 8 per request, 500-3000 ms, and Sume scripts

Flux TTS allows up to 8 pause markers of 500 to 3000 ms per request, batch only. Plan a script around that limit and see what Sume gives you for pacing.

Deepgram self-hosted 261001 drops Whisper: what Sume STT callers do

Deepgram Self-Hosted release 261001 removes Whisper support and asks you to move to Nova-3 first. What it means for Sume STT, which has no model to migrate.

Extract audio from MP4 to WAV or MP3: the detach defaults

Sume audio detach returns WAV (pcm_s16le, sample-exact) by default or MP3 at 128 kbps. Pick WAV for speech-to-text and timeline use, MP3 when file size matters.

Extract audio segment start beyond video length: error and fix

Audio detach fails detach_start_past_source when range.start is past the probed duration. It differs from audio_detach_range_empty. Check duration first.

ElevenLabs CLI 1.0: scripting audio with Sume over plain HTTP

ElevenLabs CLI v1.0.0 turns every API operation into a subcommand. For Sume audio, script curl against /v1/jobs and join clips for $0.01 flat per job.

ElevenLabs Flows API states vs Sume job status and webhooks

ElevenLabs Flows generations report pending, generating, completed and failed. Sume jobs use async, a 30-second wait cap and terminal-only webhook events.

ElevenLabs Music v2.5 plan limits vs Sume's 5000-character prompt

ElevenLabs Music v2.5 plan chunks reach 6,132 characters, up to 30 lines of 200. Sume Music takes one 5000-character prompt and rejects duration fields.

fal queue retries up to 10 times: who counts attempts on Sume

fal retries failed queue requests on new runners, up to 10 attempts. Sume's docs put retries with the caller, guarded by an Idempotency-Key.

fal error_type request_timeout: which Sume field to monitor

fal exposes error_type in the body and X-Fal-Error-Type as a header. Sume puts category, stage and code in the error body; the request id is also a header.

FastMCP client auth: pass the Sume API key as a string

In FastMCP, pass your Sume API key as a plain string to auth, with no Bearer prefix. The client adds the header; send only one credential.

FLUX 3 Image 4K can take minutes: poll, and the Sume 30 s wait

FLUX 3 Image at resolution 4k can take several minutes, so poll. Sume blocks up to 30 seconds, then returns 202 with a job envelope to poll.

FLUX 3 reference image aspect ratio: auto follows the first image

FLUX 3 Image defaults aspect_ratio to auto: the first reference sets the shape, or 1:1 with none. On Sume, omitting the field is not the same as auto.

FLUX 3 Image grounding is on by default: web search and Sume

FLUX 3 Image grounding defaults to true and can search the web and images before generating. Sume lists no such field; pass references to set the target.

FLUX 3 Image edit API: no mode field, just add references

FLUX 3 Image has one endpoint and no mode field: add images to edit, restyle or combine. On Sume you send input_references to an edit-capable model.

FLUX 3 API polling: the Reasoning status and Sume job statuses

FLUX 3 Image polls through Pending, Reasoning, Generating and Ready, and stops on four terminal states. Map them to Sume's queued to completed statuses.

FLUX 3 Image result URL expires after 1 hour: what to store

FLUX 3 Image's result.sample is a signed URL that expires after 1 hour. Download it at once; Sume returns Sume-hosted signed URLs in data[].url instead.

FLUX 3 Image API 422 unknown field vs Sume 400

FLUX 3 Image returns 422 for an unknown field, a blank prompt or a small reference. Sume returns 400 unsupported_parameter. Map the status codes in your client.

Gemini 3.8 Live migration errors and Sume's request-response audio

Moving to gemini-3.8-live: thinking_level unsupported, async function calling by default, proactive audio always on. Where Sume's audio jobs fit instead.

GeneratePMaxDraftCampaign IMAGE_ENABLED_GENERATE_PMAX_NOT_SUPPORTED

image_enabled=true on GeneratePMaxDraftCampaign returns IMAGE_ENABLED_GENERATE_PMAX_NOT_SUPPORTED in Ads API v25.2. Leave it false and add your own images.

Goose MCP HTTP retries and Sume paid calls: reuse the key

When goose retries an MCP HTTP call to Sume, the same idempotency_key keeps a paid generate call a dedup, not a second job. Check status before resubmitting.

HeyGen get video scenes API vs Sume video inspect stills

HeyGen's scenes endpoint returns a typed composition. Sume's video inspect returns probe facts and stills for one hosted clip, not typed scenes.

HeyGen liveavatar-gpt-live-demos: where Sume's avatar jobs start

HeyGen's liveavatar-gpt-live-demos repo is a real-time avatar starter. Sume renders avatar video as jobs: submit async, poll or webhook, then fetch the MP4.

HeyGen create template via API: Sume has video_inputs, not templates

HeyGen now creates templates over the API and binds variables by element_id. Sume has no stored template object; send ordered video_inputs on each request.

HeyGen stale_edit_version 409 vs Sume idempotency_conflict

HeyGen returns 409 stale_edit_version when a template edit is out of date. Sume's 409 is idempotency_conflict: one key reused on a different payload.

Ideogram API 402 inflight_limit: fast vs slow queue, and Sume

Ideogram 4.5 returns 402 or 429 with reject_reason inflight_limit and a fast or slow queue. Sume queues jobs first, then returns 429 queue_full.

Ideogram 4.5 quality: very_low needs a source image

Ideogram 4.5 quality defaults to medium with source images and high without, and very_low needs sources. Sume's quality enum is catalog-gated.

Ideogram 4.5 size source: keep dimensions, and Sume aspect auto

Ideogram 4.5 size takes auto, source or WIDTHxHEIGHT; source needs source images. Sume's size is a tier shorthand; use aspect_ratio auto to match a reference.

Ideogram 4.5 edit images: 5 sources, first is edited, vs Sume

Ideogram 4.5 takes up to 5 source images, 25 MB each; the first is edited and multipart is required. Sume takes public HTTPS URLs as input_references.

Instagram Creator Marketplace Discovery rate limit: 5,000/hour

Meta raised the Creator Marketplace Discovery API cap to 5,000 calls per user per hour from 1,000. Sume's creator search has its own per-key budget.

Kling Avatar v2 audio formats vs Sume Fabric audio_url

fal lists MP3, OGG, WAV, M4A and AAC audio for Kling Avatar v2. Sume Fabric takes an audio_url plus a still; here is how the two inputs compare.

Krea 2 creativity parameter vs Sume's unsupported_parameter

Krea 2 exposes creativity as a tunable request parameter. Sume has no creativity field and rejects it with a 400.

Deprecation and Sunset headers before 410 Gone: Sume's old names

Krea's retired Kling endpoints send Deprecation and Sunset headers, then 410 Gone. Here is how to detect that in code and which Sume aliases still work.

LangChain invalid tool calls: what Sume returns on a bad call

After LangChain 1.4.3 repairs an invalid tool call, Sume may still return an isError result, such as tool_not_found with a hint. Keep the same idempotency_key.

LTX-2 license: models trained on its Outputs are derivatives

The LTX-2 Community License lists models trained on Outputs as Derivatives that must ship under the same license. What the text says and what it leaves open.

Luma uni-1: 9 references for images, 8 for edits, and Sume limits

Luma uni-1 takes up to 9 image_ref images, or 8 for image_edit because the source uses a slot. Sume ceilings come from each model's catalog entry.

Luma uni-1 output_format png or jpeg vs Sume's per-model enum

Luma uni-1 output_format is png or jpeg, and the model picks one from the prompt if you omit it. Sume lists formats per model; set it explicitly.

Luma uni-1 web_search grounding vs Sume's unsupported_parameter

Luma uni-1 accepts web_search: true to look up visual references before it generates. Sume has no such field and returns 400 unsupported_parameter.

Regenerate one rejected variant on Sume: use a new key

Luma Variants lets you regenerate any preview that is not right. On Sume a repeated Idempotency-Key replays the old job, so a redo needs a fresh key.

MAI-Transcribe-2 word timestamps vs Sume STT words[] shape

MAI-Transcribe-2 gives every word a start and end time. Sume STT always returns words[] as { word, start, end } in seconds, with no flag to turn it on.

Mastra MCPClient and JSON Schema 2019-09: Sume tool schemas

Mastra MCP 2.1.1 accepts tool inputs in JSON Schema 2019-09. Sume builds its tool inputs as plain object schemas, and tools_schema returns each contract.

MCP CORS preflight: headers Sume allows for a browser client

Sume answers an MCP OPTIONS preflight with 204 and lists authorization, content-type, idempotency-key, mcp-session-id and x-api-key for listed origins.

MCP error -32000 connection closed: what Sume's -32000 means

MCP error -32000 is implementation-defined. Sume returns it only when its MCP work budget is full; a client's own connection closed text is a different thing.

MCP Inspector custom headers: send one Sume API key

In MCP Inspector's custom headers, send either x-api-key or Authorization: Bearer with your Sume key, never both. Sume rejects a request carrying both.

MCP Inspector 405 Method Not Allowed on a POST-only server

Inspector 2.8.0 can suppress the standalone GET notification stream. Sume's MCP endpoint answers GET /mcp with 405 and Allow: POST, so turn it off.

MCP ping method removed in 2026-07-28: Sume still replies {}

The MCP 2026-07-28 revision removes ping. Sume's hosted server still answers a ping request with an empty result on the versions it speaks.

MCP 403 forbidden: Sume forbidden_origin vs insufficient_scope

Python SDK 2.2.0 hands back any 403 that is not insufficient_scope. Sume's forbidden_origin is an HTTP 403; insufficient_scope is a tool result.

MCP Python SDK 2.2 protected resource metadata 5xx stops OAuth

Python SDK 2.2.0 stops the OAuth flow when protected resource metadata returns 5xx or 429. Curl Sume's two metadata URLs to confirm they return 200.

MCP Python SDK redirect rule: which Sume URL avoids a redirect

MCP Python SDK 2.2.0 follows redirects only within the endpoint's origin. Sume answers POST on https://mcp.sume.com/mcp and on the host root directly.

MCP validate_token_resource: the resource a Sume token is for

Python SDK 2.2.0 adds validate_token_resource for servers. A Sume OAuth token's resource audience is https://mcp.sume.com/mcp; confirm it in the metadata.

What are MCP extensions? Sume's capabilities list tools only

MCP 2026-07-28 adds an optional extensions field to client and server capabilities. Sume's initialize reply advertises only tools, with listChanged false.

MCP tool inputSchema and JSON Schema 2020-12: Sume's tool schemas

MCP 2026-07-28 lets inputSchema use any JSON Schema 2020-12 keyword. Sume builds tool inputs as closed objects; fetch one with tools_schema.

MCP tools/list order and prompt caching: keying a Sume cache

Sume's tools/list returns one array in registry order with no cursor. Key your tool-list cache on credential and scope, and refetch when either changes.

MCP tools/list different per user: what Sume's list varies by

MCP 2026-07-28 says list endpoints no longer vary per connection. Sume's tools/list still varies by credential: OAuth read, OAuth write or an API key.

MiniMax H3 Fun ControlNet: 17n+5 frames vs Sume whole seconds

The H3 Fun ControlNet 2.0 card snaps frames down to the largest 17n+5 at fixed 24 fps. Sume takes whole-second durations instead. Worked frame math.

MiniMax H3 ControlNet 2.0 v1 config: a silent load_state_dict failure

Loading the v1 5-block config on the 2.0 checkpoint drops control_blocks.5~9 without an error. Use the post_norm config. Sume rejects bad fields with a 400.

MiniMax H3 license: 'Powered by' notice vs required UI display

The MiniMax H3 license only encourages a 'Powered by' notice, but IV.2 requires 'MiniMax H3' on the UI of commercial products. Plus a Sume overlay plate.

MiniMax H3 license: no training other AI models on its outputs

Section V.3 of the MiniMax H3 license bars using the Works or their Outputs to improve any other AI model. What the clause and Model Derivatives say.

Muse Voice Transcribe 16 kHz mono PCM: ffmpeg vs Sume audio-detach

Muse Voice Transcribe wants mono 16-bit PCM at 24 or 16 kHz. On Sume, audio-detach with 16000 Hz and mono makes the STT input wav from a hosted video.

Muse Voice Transcribe WebSocket streaming vs Sume STT job waits

Muse Voice Transcribe streams audio over one WebSocket and returns cumulative partials. Sume STT is a job: wait up to 30 seconds, then poll status_url.

OpenAI Agents empty tool arguments: Sume no-argument tools

Agents SDK 0.22.1 fails closed on empty tool arguments. Sume's no-argument tools take {}, while paid tools need idempotency_key and cannot run empty.

OpenAI Agents SDK tool not found: what a Sume call returns

A hosted MCP tool name that differs only in - or _ gets a tool_not_found result with a Did you mean hint; a scope-hidden tool returns insufficient_scope.

OpenAI v1/prompts shuts down Nov 30, 2026: saved media recipes

OpenAI plans to shut down reusable prompt objects and v1/prompts on Nov 30, 2026. For media work, a Sume Format is a saved recipe you call by name.

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.

Pika API 'agent-native' setup vs Sume's OpenRouter-style wire

Pika hands agents copy-paste setup text. Sume documents /v1/videos field-for-field with OpenRouter, bare model ids and a models endpoint to read first.

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.

QwenImage21Pipeline in diffusers vs an HTTP image request on Sume

QwenImage21Pipeline runs Qwen-Image-2.1 locally on a GPU. Sume has no 2.1 id: a hosted call is one POST /v1/images with a listed model. Side-by-side.

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 Recipe tasks vs Sume jobs: waiting on the result

A Runway Recipe returns a task you poll at GET /v1/tasks/{id}. A Sume generation returns a job: read status, fetch the result, never treat queued as failed.

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 filtergraph too long: video-filter's 2048 and 32 limits

A Sume video-filter filtergraph is capped at 2048 characters and 32 named filters. Past either, or with an unknown filter, you get invalid_filtergraph.

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.

Codex disabled_tools: block Sume's paid MCP tools

List Sume's paid tool ids under disabled_tools in the Codex config.toml so the agent cannot call them, even on an API-key session that sees every tool.

Gemini CLI trust: true on a Sume MCP server: what it skips

Gemini CLI's trust setting bypasses every tool confirmation dialog. What that means for Sume's paid tools, and which Sume gates still apply.

Codex mcp_oauth_callback_port and the Sume OAuth login

Pin the Codex OAuth callback port for a remote Sume MCP login, and how the login flows from Codex to the Sume consent page on mcp.sume.com.

OpenAI Agents SDK MCPServerManager with a Sume server

Run Sume next to another MCP server in the OpenAI Agents Python SDK: connect Sume over streamable HTTP, check it with mcp_health, and read tools_list.

Gemini CLI MCP timeout default vs Sume's 55-second jobs_wait

Gemini CLI's MCP timeout defaults to 600,000 ms. Sume's jobs_wait holds at most 55 seconds per call: repeat it on wait_slice_expired, never resubmit.

AI SDK isLoopFinished vs the 20-step cap for Sume video jobs

ToolLoopAgent stops after 20 steps by default. How many jobs_wait calls a Sume video render needs, and the per-call guards to keep if you lift the cap.

AI SDK MCP client close() in onEnd: Sume jobs keep running

Closing the AI SDK MCP client in onEnd ends the tool connection, not the Sume jobs already submitted. Track job ids, then read or cancel them.

Claude Code list_changed and reconnect: refresh Sume tools

Claude Code refreshes an MCP server's tools on list_changed and lets you reconnect from /mcp. After changing Sume's Write consent, verify with tools_list.

Codex MCP enabled = false: pause the Sume server safely

Turn the Sume server off in Codex with enabled = false instead of deleting it, and rotate the API key if it ever showed up in logs or chat.

Why Sume Agent Completions rejects assistant messages

An assistant turn in messages[] returns 400 invalid_request on Sume Agent Completions. Only system and user turns work; each call runs in a fresh thread.

Can I continue a Sume Agent Completion with thread_id?

Not yet. Every Agent Completion runs in a fresh thread, so a follow-up call cannot reuse thread_id. Pass earlier results back in the next request instead.

Which model does Sume Agent Completions run? Only sume-agent

The model field on POST /v1/agent/completions accepts only sume-agent. Omit it for the same agent; any other value returns 400 invalid_request.

waitForRun family: agent, action or format for a run id?

In @sume-com/sdk, waitForRun needs family: format, action or agent because a run id does not say which surface it belongs to. Use agent for Agent Completions.

OpenAI response_format json_schema on a Sume scheduled run

Sume accepts an OpenAI-shaped response_format as an alias for output_schema on schedule runs. Sending both returns 400, and the schema must be strict.

catalog_list shows a capability that tools_list does not

On Sume's hosted MCP, catalog_list lists public API capabilities and can name ones with no MCP tool. tools_list is the session's real tool contract.

MCP tool name with a dot or underscore: tools.list vs tools_list

Sume MCP tool ids use underscores; a dotted alias such as tools.list is canonicalized on call. Retired aliases map to generate_image and generate_video.

List music models by API: GET /v1/music-router/models

The Music Router catalog endpoints list routable music model ids and a provider list price. Routable ids today: sume/music-auto, lyria-3.5, lyria-3-pro.

Sume music job says sume/music-auto: which engine ran?

job.model echoes the id you requested; job.request.routed_model names the engine that ran, such as lyria-3.5. Read both fields on the job envelope.

Music API 400 model_not_found: fix an unknown model id

An unknown model on POST /v1/music-router/generate fails with 400 model_not_found and a catalog_url. Use an id from GET /v1/music-router/models or omit model.

Lambda 90-minute timeout: does it change AI video jobs?

AWS raised Lambda's async timeout to 90 minutes on Managed Instances. A Sume job still fits best as submit, then poll or webhook, and sync waits stay 30 s.

Workflows keeps state 7 days now: store your Sume job ids

Cloudflare Workflows on Workers Paid now keeps finished instance state 7 days by default. Save the Sume job id and result URL in your own store.

Workflows .subscribe() vs Sume job events: push or pull?

Cloudflare Workflows can stream instance events with subscribe(). Sume has no SSE stream for jobs: use a signed webhook, or poll status and the events snapshot.

Start a Cloudflare Workflow from a Sume webhook with ctx.exports

Verify the Sume webhook signature in a Worker, then start a Workflow with ctx.exports and no workflows binding. Includes a short Worker handler.

Workflows instance limits vs Sume queue headroom: which binds?

Cloudflare lists 50,000 concurrent Workflow instances (Paid, April entry). Sume reports your own generation headroom; size fan-out by that formula.

GitHub Actions re-run: which idempotency key for Sume jobs?

GITHUB_RUN_ID stays the same on a re-run while GITHUB_RUN_ATTEMPT increments. Build the Sume Idempotency-Key from the run id so a re-run does not bill twice.

cancel-in-progress killed my workflow; does the Sume job stop?

Cancelling a GitHub Actions run does not cancel a Sume job. Cancellation only works before generation starts, so store the job id and cancel it explicitly.

Will a 100-item Sume bulk run hit Zapier's webhook rate limit?

A Sume bulk queue holds up to 100 items, each with its own webhook. Compare that with Zapier's per-Zap webhook limit and know what Sume does on a 429.

Zapier accepted my Sume webhook but the Zap ran minutes later

Zapier says it may return 200 and delay webhook processing by minutes. Sume sees a delivered 200, so keep a status poll as the backup for run and job results.

Zapier Catch Hook test trigger with Sume Send test

Zapier lists the three most recent webhooks from the past hour. Use Sume's Send test to put a signed webhook.test sample there before a real run exists.

Airtable script 50-fetch limit: send 100 records as one bulk run

An Airtable automation script gets 50 fetches and a 30-second timeout. One Sume bulk-run request carries up to 100 items, so one fetch beats a per-record loop.

Airtable has no webhook signature check: verify Sume first

Airtable's When webhook received trigger cannot verify signatures and caps payloads at 100kb. Verify the Sume signature in a relay and forward a small object.

Pipedream 512KB body limit and Sume run webhook payloads

Pipedream limits HTTP trigger bodies to 512KB by default. Sume run webhooks can carry up to 1 MiB, so plan for a slim relay or the result_url fetch.

Pipedream 30-second timeout: call Sume in async mode, not sync

Pipedream HTTP workflows time out at 30 seconds by default. Sume sync waits up to 30 seconds too, so submit async and take the result by webhook or poll.

Retool Workflow webhook needs X-Workflow-Api-Key: use a relay

Retool Workflows authenticate webhooks with an X-Workflow-Api-Key header or query parameter. Sume documents no custom delivery headers: relay after verifying.

Google Cloud Workflows callback needs an IAM token: relay Sume

A Cloud Workflows callback URL needs the workflows.callbacks.send permission and a Bearer token. Sume webhooks cannot carry one, so relay after verifying.

n8n Wait node under 65 seconds: how to poll a Sume job

n8n keeps waits under 65 seconds in memory and saves longer ones to the database. Poll a Sume job with next_poll_after_seconds, or switch to a webhook resume.

Vercel rewrite to an external API times out at 120 seconds

Vercel proxied rewrites to an external destination time out at 120 seconds with ROUTER_EXTERNAL_TARGET_ERROR. A Sume async submit returns at once.

D1 free-tier limit now fails queries: dedupe Sume webhooks safely

Cloudflare D1 queries on Workers Free now fail past the daily row limits. Dedupe Sume webhooks on request_id, return a 5xx, and use redeliver after the reset.

Webhook rate limits: Zapier, Airtable, Pipedream vs a bulk of 100

Zapier, Airtable and Pipedream each publish a webhook intake limit. Compare them with a Sume bulk queue of up to 100 items and pick a receiver that fits.

Remove filler words from a talking video with an API

Sume has no one-call filler remover. Transcribe with video inspect for word timings, then cut the clean ranges with video trim at $0.02 per job.

Face swap API: quality has no default, unlike avatar videos

Avatar videos default to plus when quality is omitted. Sume's Beta face swap has no default: quality is required and takes standard, plus or max.

Video analyses API returns 410 video_analysis_retired: fix

POST /v1/video-analyses answers 410 video_analysis_retired in Sume's dest environment. Stored rows stay readable; new clip inspection uses video inspect.

Video analysis API with a YouTube link: 422 unsupported_source

Sume's video analyses reject YouTube URLs with 422 unsupported_source. Import the video you own to media.sume.com first; rules for the other bad inputs.

What a Sume video analysis returns for each scene

Each scene in a stored video analysis has start and end seconds, summary, visual, shot type, on-screen text, confidence and keyframes. Field-by-field list.

Video analysis limits: max_scenes 2-40 and the 90 s and 300 s caps

Sume's video analysis takes max_scenes from 2 to 40 (default 24), warns past about 90 seconds and rejects past 300. Cost, runtime and polling advice.

Submitting 20 avatar videos at once: what each Sume plan accepts

Sume accepts as many paid jobs as concurrency plus queue allows: 6 on Free, 24 on Pro, 48 on Startup, 120 on Scale. Past that a submit returns 429 queue_full.

Paper edit by API: build a rough cut from transcript lines

Premiere 26.5 added Paper Edit. To do the same by API, transcribe with sentence segments, pick the lines you keep, then render those ranges as a Timeline.

Search footage for a spoken phrase with an API: words with timing

DaVinci Resolve 21 lists IntelliSearch. To find a spoken phrase in a clip by API, transcribe with video inspect and search words[] in your own code.

Remove filler words from a video by API: cut at word timestamps

Descript's API lists Remove Filler Words as an Underlord edit. the Sume docs list no such op; here is how to cut um and uh yourself from words[] and a Timeline.

Reframe a video around the speaker by API: what a crop can do

Descript's Center Active Speaker (Beta) follows whoever talks. Sume's video filter crop is one fixed rectangle per clip, so cut per speaker and crop each part.

Get the rendered MP4 back from a video editing API job

Descript's API lists no rendered file download without publishing. In Sume, a finished timeline_render job result carries video_url; here is the poll flow.

MCP tools for editing video: the hosted Sume list, trim to timeline

Descript and Runway both ship MCP servers. The hosted Sume MCP exposes video_trim, video_filter, audio_detach, video_frames_create and the timeline tools.

Join voiceover clips inside one timeline render with audio.parts

Timeline 1.0 takes up to 20 gapless audio.parts slices with source_in and duration. Skip the timeline-audio job when the join is only for one render.

Timeline render warnings: padded or looped short sources explained

A Timeline 1.0 slot longer than its source renders with a soft warning, not a failure, and /plan cannot predict it. Read warnings[] and probe clips first.

Timeline 1.0 limits: 200 slots, 1800 s, 20 audio parts, 8 fades

The numbers that cap one Timeline 1.0 render: 1 to 200 video slots, 1 to 1800 s of audio, 20 audio parts, 12-slot single strategy and 8 chained fades.

Extract audio from a long video: the 900 s output cap and range

Audio detach takes sources up to 1800 s but outputs at most 900 s. For a longer track pass range and detach in two calls. Errors included.

video-filter order of operations: ops first, then filtergraph

In Sume video-filter, ops[] (dim, crop; max 8) run before the filtergraph, which has its own 2048-character and 32-filter caps. Order matters for a crop.

Trim an H.265 or AV1 clip by API: which codec comes out?

DaVinci Resolve 21 lists H.265, MV-HEVC and AV1. Sume's exact trim re-encodes to libx264 yuv420p; keyframe trim copies the stream. Input support is not listed.

Keep the source's channels and sample rate when extracting audio

Adobe lists Match Source audio channels and sample rate in Premiere 26.5. Sume audio-detach keeps both by default: channels source, sample_rate omitted, wav.

Editing upload limits: Descript's GB tiers vs Sume's seconds caps

Descript lists per-file size caps by plan (1, 10, 20, 50 GB). Sume's media routes cap by clip duration instead: 300 s or 1800 s in, up to 900 s out.

Rough cut from a script by API: one scene per Timeline slot

Descript Quick Design splits a script into moments with changing visuals. With Sume you map each scene to a Timeline video slot over a voiceover spine yourself.

Trim and conform a clip to 1080x1920 at 30 fps in one call

video-trim takes an optional output {width, height, fps} that conforms on the way out, exact precision only. Width and height 256-2160, fps 24, 25, 30 or 60.

GPT Image 2.5 1080x1350: why the size fails and what to send

1080x1350 breaks GPT Image 2.5's multiple-of-16 size rule. 1080 is not a multiple of 16. 1088x1360 (exact 4:5) meets the listed rules. Per OpenAI and Sume docs.

GPT Image 2.5 mask edit: does the mask need an alpha channel?

OpenAI's API says the mask must contain an alpha channel. Sume's docs list a public HTTPS mask_url for GPT Image 2.5 edits but state no mask format rule.

GPT Image 2.5 moderation low: can you send it through Sume?

OpenAI lists a moderation parameter (auto or low) for GPT Image 2.5. Sume's request table does not list it, so check the catalog before sending it.

GPT Image 2.5 Batch API: not supported, so fan out jobs

OpenAI's model page lists Batch as unsupported for GPT Image 2.5. On Sume, submit many async or webhook jobs to /v1/images and collect the results.

FLUX image URL expires after 10 minutes: what Sume returns

Black Forest Labs says generated FLUX image URLs expire after 10 minutes. Sume returns Sume-hosted signed URLs; here is how to fetch and keep the file.

mask_image_url or mask_url? Masked edits on Sume's image APIs

Image 1.0 takes mask_image_url with image_urls; POST /v1/images takes mask_url with input_references for GPT Image 2.5. Field names, models and limits.

Image 1.0 input_urls, n and format: deprecated names to replace

Sume's Image 1.0 still accepts input_urls, n and format, but prefers image_urls, num_images and output_format. What each maps to and their limits.

num_images 1-4 or n 1-10? Images per call on Sume's image APIs

Image 1.0 takes num_images 1 to 4. POST /v1/images takes n up to 10, with lower per-model ceilings. Which to use and how to read the real limit.

output_format jpg or jpeg? What Sume's image routes accept

Image 1.0 accepts png, jpeg, jpg and webp. POST /v1/images lists png, jpeg, webp and svg, not jpg, so use jpeg there.

Image 1.0 mode vs POST /v1/images: default wait and 202 explained

POST /v1/images defaults to sync and blocks up to 30 seconds; Image 1.0 lists async, sync, subscribe and webhook. Compare defaults and wait_timeout_seconds.

Image API usage shows 0 tokens: where the cost is on Sume

POST /v1/images returns usage.prompt_tokens, completion_tokens and total_tokens as 0 in v1. The billed amount is usage.cost in USD, metered per image.

size vs image_size on Sume's Image API: where custom pixels go

On POST /v1/images, size is a resolution-tier shorthand and explicit pixels on size return 400. Custom pixels go in image_size or aspect_ratio.

Image job metadata on Sume: stored on the job, not sent upstream

The metadata field on Image 1.0 and POST /v1/images is stored on the job and not sent to the provider. Use it to tie jobs to your own records.

POST /v1/image-router/generate deprecated: what to call instead

Sume's legacy /v1/image-router/generate and /v1/image-router/models routes still work but gain no new parameters. Use POST /v1/images and GET /v1/images/models.

Image 1.0: text, reference or masked edit - which fields to send

Image 1.0 uses prompt only for text-to-image, prompt plus image_urls for edits or references, and adds mask_image_url for masked edits. Fields and URL rules.

429 enforced_spend_limit_reached: why retrying never works

A 429 with no retry-after can be a monthly spend cap, not a rate limit. What Anthropic's page says, and how Sume separates 402, 429 rate_limited and queue_full.

Token bucket vs fixed window: what a reset header means

Anthropic says its limits replenish continuously; Sume's docs call ratelimit-reset the seconds until the window resets. How to pace a client for each.

429 after a traffic spike: ramp up generation jobs in waves

Anthropic warns a sharp usage increase can trigger 429 acceleration limits. For Sume jobs, size each wave from generation_limits and the in-flight budget.

Gemini rate limits: per project, not per API key. And Sume?

Google says Gemini rate limits apply per project, not per API key, so a second key adds nothing. What Sume's docs say about plan limits and how to read them.

Create vs read rate limits: Managed Agents 300/1,200, Sume plans

Anthropic's Managed Agents limit creates and reads separately. Sume splits its per-minute budget the same way by plan, so polling cannot starve submits.

429 backoff with jitter in Python: OpenAI's advice, Sume's headers

OpenAI recommends exponential backoff with random jitter on 429. A Python status poller that honors Sume's retry-after first and falls back to backoff.

AI Act Article 50 in force: what to log per generated file

Article 50 applies from 2 August 2026. Keep a per-file record of job id, request id and artifact URL from Sume, and know what the docs leave unsaid on marking.

Content Credentials after download: check the file you deliver

C2PA 2.2 defines Content Credentials and a separate Soft Binding API. Sume's docs do not say a downloaded output keeps one, so check the delivered file.

Sume assets from the terminal: upload-url, complete, download

The Sume CLI registers an asset in three write-gated steps and reads it back with download-url or download. Flags, the confirm gate and what stays private.

Asset id or public HTTPS URL? What Sume inputs accept

Sume generation fields take public HTTPS URLs directly. Localhost, private, non-HTTPS, signed URLs and wrong content types are rejected. When an asset id helps.

sume --agent --json: what it redacts before you paste output

Sume CLI --agent mode redacts or summarizes URL-like and account fields where supported. What to still strip before pasting output into a ticket or chat.

sume jobs watch timed out: recover the job before you resubmit

A local wait that times out does not cancel a paid Sume job. Inspect it with jobs status, events and result, then download, instead of submitting again.

What not to log from an AI API: keys, signed URLs, private media

Safe to log: request ids, job ids, status and sanitized media metadata. Unsafe: API keys, signed URLs, raw private media URLs and excess user content.

Install the Sume CLI in CI: checksums and pinned release tags

The hosted installer verifies checksums.txt and will not overwrite another sume on PATH. To pin, swap latest for a release tag such as v0.1.6.

Video API duration: whole seconds only, no 7.5 s clips

Sume's video duration is an integer and each model lists whole-second supported_durations. Ranges per model and how to pick one before you submit a job.

frame_images plus input_references in one request: which wins?

When a Sume video request carries both frame_images and input_references, frame_images wins and the job runs as image-to-video. What that means for references.

Move from /v1/video-router/generate to /v1/videos: field map

Video Router still works, but new integrations should use /v1/videos. Same catalog and job ids; the wire and image fields change. What the docs say changes.

sume/video-1.0 and /v1/models/sume/video-1.0/runs: what they are

Video 1.0 is a retiring alias for Video Router Auto. Two URLs take the same body, the public id is sume/video-1.0, and receipts report sume/auto.

Video 1.0 reference_audio_urls: why audio alone is rejected

In Video 1.0, reference_audio_urls (1 to 3 URLs) requires at least one reference image or video. Field limits for images, videos and audio references.

routing_preset kling or grok on Video 1.0: accepted, then ignored

Video 1.0 still accepts the retired routing_preset values cost, speed, quality, grok and kling, but all of them run through Auto. How to pick a family instead.

Video 1.0 last frame: end_image_url needs image_url first

To set a last frame on Video 1.0, send end_image_url together with image_url. The docs list the modes: text, first frame, start and end frames, references.

Video 1.0 generate_audio: why the docs say to omit it

Sume's Auto family always generates audio for Video 1.0 requests, so the docs tell you to omit generate_audio. What the field does and where audio is optional.

first_frame_url and last_frame_url on Video 1.0: deprecated names

Video 1.0 still reads first_frame_url and last_frame_url, but the docs prefer image_url and end_image_url. The rename map and one rule about the end frame.

Video 1.0 duration vs duration_seconds: what if they differ?

Video 1.0 accepts duration and its alias duration_seconds. If you send both they must agree; the value is checked against the Auto serving family.

Video 1.0 bitrate_mode: still in the shape, rejected by Auto

bitrate_mode is retained in Video 1.0's legacy request shape but Auto rejects it. Omit it, and note that Gemini Omni Flash 1.1 has no bitrate_mode either.

Video 1.0 metadata field: stored on the job, not sent upstream

The metadata object on a Video 1.0 request is stored on the job as caller metadata and is not sent to the provider. Use it to tag jobs; the limits it has.

OpenRouter video statuses vs Sume: cancelled or canceled?

OpenRouter lists four video job states; Sume's /v1/videos lists five including cancelled, while /v1/jobs spells it canceled. Both status sets side by side.

video.generation.completed on Sume? The webhook event map

OpenRouter sends video.generation.* events; Sume sends job.completed, job.failed or job.canceled with a signed body. What to change in a receiver.

OpenRouter video size parameter on Sume: 400 unsupported_parameter

On Sume every video model reports supported_sizes null, so a size parameter returns 400 unsupported_parameter. Send resolution and aspect_ratio instead.

OpenRouter video seed on Sume: no v1 model accepts it

OpenRouter lists seed for deterministic video generation. On Sume no v1 video model accepts seed: each reports seed false and the field is rejected.

OpenRouter video provider.options on Sume: rejected, not dropped

OpenRouter lists provider passthrough configuration. Sume v1 runs one backend per model, so a non-empty provider.options returns 400 unsupported_parameter.

sume/auto video defaults: 720p, 8 seconds, 3 to 10 s at 16:9 or 9:16

Leave resolution and duration off a sume/auto video request and Sume uses 720p and 8 seconds. The Auto envelope is 3 to 10 seconds at 16:9 or 9:16.

Video 1.0 4k resolution error: only 720p and 1080p on that URL

Video 1.0 accepts 720p (default) and 1080p from its legacy vocabulary and rejects 4k. For 4K send a sume/auto request to POST /v1/videos instead.

google/veo-3.1 style ids vs Sume: bare video model ids

OpenRouter names video models org/slug, such as google/veo-3.1. Sume uses bare catalog ids like seedance-2 and never a provider prefix. How to port an id.

Activepieces 10-minute flow timeout and long Sume video jobs

Activepieces Cloud caps a flow run at 10 active minutes. Submit the Sume job async, pause the flow, and resume on the result instead of polling in a loop.

Activepieces subflow retried: keep Sume jobs from billing twice

A retried Activepieces subflow can re-run your Sume submit. Derive the Idempotency-Key from a stable input, not the attempt, so a retry returns the same job.

Activepieces sync webhook 408 at 30 seconds: use Sume async

An Activepieces /sync webhook returns 408 when no response arrives in 30 seconds. Call Sume in async mode, which answers 202 with a job id at once.

Anthropic x-api-key is now a fallback: Sume accepts one header

Anthropic's docs list Authorization: Bearer first and call x-api-key a legacy fallback. Sume accepts either, but rejects a request that sends both with a 401.

AI Act Article 50 and standard editing: which Sume tools use no model

The Commission's FAQ exempts assistive standard editing from AI marking. Sume's trim, filter, audio detach and timeline docs call themselves ffmpeg-only.

Speaker diarization API: confidence scores, and what Sume STT returns

AssemblyAI added speaker_confidence (0 to 1) per word and utterance. Sume STT returns word start and end times only, with no speaker or confidence data.

Bluesky video upload limit: 300 MB MP4, and fitting a clip

Bluesky raised its video upload limit from 100 MB to 300 MB in June 2026, MP4 only. Fit a clip under it by trimming length and conforming size with Sume.

Claude Code --bare and MCP: name the Sume server with a key

Claude Code --bare connects only MCP servers named on the command line. To use Sume there, name the server with an API-key header; no browser sign-in needed.

MCP server instructions field: the new /context row, and Sume's

Claude Code 2.1.283 counts MCP server instructions as their own /context row. Sume returns instructions at initialize and keeps long guidance out of tool text.

Claude Code MCP connection timeout: startup wait vs a Sume call

Claude Code 2.1.284 waits up to 10 s for a connecting MCP server on resumed calls and 2 s on a non-interactive first turn. Sume tool calls hold at most 55 s.

Claude Code MCP error showed a Bearer token: rotate the Sume key

If an MCP error or log exposed a Sume Bearer value, rotate the API key. An OAuth token is not an API key. Report issues with the request id, not the key.

Claude Code reserved MCP server name: widgets, and Sume's name

Claude Code 2.1.285 reserves the MCP server name widgets in cloud sessions and on self-hosted runners. Sume's documented name is sume, so nothing to rename.

claude plugin validate and an insecure URL in .mcp.json

Claude Code 2.1.283 added MCP checks to claude plugin validate, including insecure URLs. Sume's hosted endpoint is https, so a plain entry has nothing to flag.

Codex MCP output_token_limit: what to set for Sume tools

Codex lets you cap one MCP tool's output with output_token_limit. Sume tools return ids and media.sume.com URLs, not file bytes, so the cap can stay small.

Computer use origin approval is not a spend approval

OpenAI's computer use approves each new website origin, not spend. When such an agent calls Sume, the spend check is dry_run, max_spend_usd and the wallet.

Crawl job finished event: Sume has none, poll crawl_get

Cloudflare publishes crawl.finished to Queues. Sume's crawl has no such event: wait on the job id, then read it with crawl_get. Steps and idempotency.

Edit a transcript with an AI instruction: Sume's STT flow

ElevenLabs STT accepts an edit instruction and returns edited_transcript. Sume's STT has no such field: it returns text and word timings to edit yourself.

Firecrawl cache: maxAge 2 days vs Sume's fresh: true

Firecrawl scrape caches for 2 days by default (maxAge 172800000 ms). Sume's scrape has a boolean fresh, default false; fresh: true bypasses cached content.

Firecrawl includePaths regex vs Sume's literal path prefixes

Firecrawl's includePaths are regex on the URL pathname. Sume's include_paths are literal prefixes starting with /, max 10 items. How to rewrite one.

Firecrawl crawl limit: 10,000 default vs Sume's 20 pages

Firecrawl's crawl defaults to 10,000 pages. Sume's crawl takes limit up to 20 (default 10), so narrow with path prefixes and run several keyed crawls.

Firecrawl executeJavascript return value on Sume

Firecrawl returns executeJavascript results in actions.javascriptReturns. Sume names it javascript_returns and bounds it; scripts max 4,000 characters.

Firecrawl map endpoint limit 5000 vs Sume crawl_map limit 100

Firecrawl's /map defaults to 5000 links and allows 100000. Sume's crawl_map takes limit 1 to 100, so pick URLs, then scrape them with crawl_scrape.

Firecrawl map sitemap skip/include/only: Sume crawl_map has no switch

Firecrawl's /map has a sitemap option (skip, include, only) and includeSubdomains. Sume's crawl_map takes only url and limit, and maps one origin.

Firecrawl MCP timeout: Sume crawl_scrape's 35, 40 and 45 s deadlines

A synchronous crawl_scrape call has three deadlines: client abort at 35 s, MCP at 40 s, host watchdog at 45 s. Narrow the page or use crawl_site.

Firecrawl question format: json_prompt on Sume scrape

Firecrawl added a Question format to /scrape. Sume has none; ask with json_prompt (up to 2,000 characters) or json_schema under formats: [json].

Firecrawl scrape actions on Sume: 8 actions, no write or press

Sume's crawl_scrape accepts up to 8 actions of four types: wait, scroll, click, executeJavascript. Firecrawl's write, press and pdf have no match.

Firecrawl scrape formats: the seven Sume supports

Firecrawl scrape lists summary, branding, question and more. Sume's scrape accepts seven formats: markdown, links, html, json, screenshot, rawHtml, images.

Firecrawl scrape timeout: 60000 ms default vs Sume's 30000 cap

Firecrawl's scrape timeout defaults to 60000 ms and goes to 300000. Sume's crawl scrape takes timeout_ms up to 30000, so send 30000 or less.

Firecrawl search endpoint: limit 100 vs Sume's limit of 10

Firecrawl's /search takes limit up to 100 plus sources and tbs. Sume's /v1/firecrawl/search takes a query and limit 1-10, so scrape the hits you need next.

Firecrawl waitFor and wait actions: Sume's 10 s combined budget

Firecrawl allows 60 s of waitFor plus wait actions combined. Sume's crawl_scrape allows 10000 ms combined, and the total must stay below timeout_ms.

Gemini video understanding API vs Sume video inspect stills

Gemini's API now has agentic video understanding. Sume's video inspect is narrower: probe facts, 8 stills and optional STT you pass to your own model.

Gemini Omni first and last frame: image_url + end_image_url

Google calls it Interpolation (first + last frame). On Sume you send image_url plus end_image_url to gemini-omni-flash-1.1 through the Video Router.

Gemini TTS regional voices vs Sume's language tag

Google says Gemini 3.8 TTS covers Mexican Spanish and Quebec French. Sume's language takes a BCP-47 tag of 2 to 16 characters; dialect output is not promised.

Genjutsu reference images: 30 on Higgsfield, 1 to 8 on Sume

Higgsfield says Genjutsu takes up to 30 reference photos. Sume's Genjutsu Motion Transfer row requires 1 to 8 images, so pick your best eight.

Genjutsu video length limit: 4 to 30 seconds, inspect first

Genjutsu takes a 4 to 30 second source video. On Sume the duration field must equal the inspected length, rounded up. Probe it with video inspect first.

GitHub Actions retention days: keep the Sume job id elsewhere

From 1 October 2026 GitHub Actions runs, checks and statuses follow the log retention setting (default 90 days). Store Sume job ids outside the log.

Google Cloud Tasks retry per task: pair it with a Sume key

Cloud Tasks now sets retry parameters per task (GA 30 Sep 2026). When a task calls a Sume submit, send the same Idempotency-Key on every attempt.

gpt-4o-transcribe-diarize retiring: Sume STT has no speaker labels

OpenAI lists gpt-4o-transcribe-diarize for removal on Feb 26, 2027. Sume STT returns words and sentences with timings, but no speaker field.

Grok Imagine first and last frame: keyframes on xAI only

xAI takes up to 4 timestamped keyframes for Grok Imagine video. Sume's grok-imagine-video-1.5 row takes one start image and rejects an end frame.

Grok Imagine: how many images per request, xAI vs Sume

xAI's image API takes n from 1 to 10 per request. Sume's catalog code gives Grok a maximum of 1, so send one image per call and loop for more.

Grok Imagine video length: 1-15 s on xAI, 4-15 s on Sume

xAI allows 1 to 15 seconds for grok-imagine-video-1.5. Sume's catalog row allows 4 to 15, so a 2-second clip needs another id such as wan-3.0.

Inngest step return 4 MiB limit: return the Sume artifact URL

Inngest caps one step return at 4 MiB and run state at 32 MiB. Return the media.sume.com artifact URL from step.run instead of the video bytes.

Instagram Graph API hashtag search: 30 per 7 days, and Sume

Meta caps hashtag search at 30 unique hashtags per account per rolling 7 days and needs app review. Sume's instagram_search_hashtag is a bounded public read.

Instagram oEmbed: embed HTML vs Sume's instagram_media read

Instagram oEmbed is meant only for embedding, at up to 1,000 requests per hour. Sume's instagram_media returns media candidates for a post or reel URL.

LangGraph interrupt response_schema for paid video approval

LangGraph 1.2.12 adds response_schema to interrupt(). Use a typed approve, edit or reject reply with max spend to drive a Sume dry_run, then submit.

LlamaIndex failed function tools: decide Sume retries in the tool

LlamaIndex v0.14.25 stops retrying failed function tools. Decide inside your Sume tool which errors are safe to retry, and return a status string.

Mastra background tasks and Sume: reuse the idempotency key

Mastra 1.72.0 fences background tasks with leases. If a new owner restarts a Sume tool call, the same idempotency key returns the original job.

MCP stream dropped: re-issue with the same idempotency_key

MCP 2026-07-28 says re-issue a broken request with a new request ID. On a paid Sume tool, keep the same idempotency_key so the retry is not a second charge.

MCP OAuth token expires: Sume's one-hour token, no refresh

Sume's hosted MCP OAuth access tokens last one hour and the server advertises only the authorization_code grant, so re-login or use an API key for long runs.

MCP traceparent in _meta: tracing a Sume tool call end to end

MCP 2026-07-28 documents traceparent in _meta. Sume's docs don't describe reading it, so correlate with the job id and x-sume-request-id instead.

MCP server notify when work finished: Sume webhooks vs jobs_wait

The MCP roadmap lists push delivery for finished work. On Sume today, MCP agents wait in bounded jobs_wait slices; HMAC webhooks are a REST job feature.

Three Responses subagents, one Sume workspace queue

Responses multi_agent runs 3 subagents by default and they share your tools. Sume accepts extra jobs as queued until queue_full; give each create its own key.

Next.js image SSRF fix: narrow remotePatterns for Sume

Next.js patched an Image Optimization SSRF via allow-listed remote URLs. Allow only media.sume.com for Sume images, and never raw provider hosts.

OpenAI Agents SDK imageGenerationTool action edit and Sume

imageGenerationTool() takes action: 'generate' | 'edit' | 'auto' in openai-agents-js 0.18.0. To edit with Sume instead, wrap its image route as a function tool.

OpenAI Batch API limits vs Sume bulk runs: 50,000 vs 100

OpenAI Batch allows 50,000 requests per file with a 24h window. A Sume Format bulk run takes 1-100 items at concurrency 1-16, so chunk your file accordingly.

OpenAI whisper-1 shutdown Feb 2027: a Sume STT alternative

OpenAI removes whisper-1 on Feb 26, 2027. Sume's STT request names no provider model, takes a public audio URL, and caps reserved duration at 10 minutes.

OpenCode MCP timeout: 5000 ms tools fetch vs Sume jobs_wait

OpenCode's remote MCP timeout is in milliseconds, default 5000, and covers fetching tools. Sume's jobs_wait holds up to 55 seconds per call, a separate limit.

Prompt expansion switch for Wan 3.0 and MiniMax H3 Max on Sume

Krea's H3 Max Turbo has prompt expansion modes. Sume's video model_params allowlist is empty in v1, so Wan 3.0 and H3 Max have no such switch.

Responses steering after a video job started: what Sume does

response.steer does not cancel started tools. A Sume video job past its start runs to completion; jobs_cancel returns 409 job_generation_already_started.

Seedream image URL expired after 24 hours: use the Sume copy

BytePlus keeps Seedream image URLs for 24 hours, then clears them. On Sume, read data[].url or the job result URL and store that, not a provider link.

Speech to text custom vocabulary: Sume STT takes a language hint only

Gemini 3.5 Transcribe biases up to 1,000 custom terms. Sume STT has no vocabulary field, only a language_code hint, so fix names after transcription.

Stripe idempotency key length (255) and Sume's key rules

Stripe allows keys up to 255 characters. Sume generation keys are 1-255 printable ASCII and optional; crawl keys are required and capped at 200.

Telegram sendLivePhoto: 10 s, 10 MB and trimming a clip

Telegram's sendLivePhoto video must be 10 seconds or less and 10 MB or smaller. Sume's video trim sets length and frame size; it has no byte-size target.

Temporal activity cancel: Sume job_generation_already_started

When Temporal cancels an activity, a Sume job may already be generating. Cancel returns 409 job_generation_already_started; let it finish and keep the artifact.

Temporal BlobSizeLimitError: pass the Sume artifact URL, not bytes

Temporal Cloud allows 2 MB per payload. Pass the Sume job_id and media.sume.com artifact URL through activities and signals, never video bytes.

Text to dialogue API: continuity between requests on Sume

Sume's TTS has no previous_text field. Keep a line seamless with one longer transcript, or join separate takes with a gapless Timeline audio concat.

TikTok Research API documentation: 30-day dates vs Sume date_posted

The Research API takes start_date and end_date up to 30 days apart. Sume's tiktok_search_keyword takes one fixed date_posted value instead.

TikTok Research API access: is_random order vs Sume order

The Research API returns videos by decreasing ID unless is_random is true. Sume's order=play_count sorts a bounded 24-item sample, not a full ranking.

TikTok Research API rate limit: max_count 100 vs Sume's 24

The Research API returns up to 100 videos per call (max_count). Sume's tiktok_search_keyword returns at most 24 items over 3 feed pages per call.

Twitch 2K clips: trim a 1440p clip without setting output

Video trim's output width and height are limited to 256-2160, so a 2560-wide 1440p clip cannot be conformed. Omit output and the source size is kept.

Vercel 413 FUNCTION_PAYLOAD_TOO_LARGE with Sume video

Vercel Functions cap request and response bodies at 4.5 MB. Do not proxy a generated video through one; hand the client the media.sume.com URL instead.

Vercel function max duration 800s: Sume wait budget

Vercel Pro and Enterprise allow 800s, with 1800s in beta. Sume still caps a blocking wait at 30s, so video jobs need a poll loop with its own deadline.

Vercel Queues retry can resubmit a paid Sume job

A Vercel Queues consumer that times out is redelivered, and maxDeliveries is unlimited by default. Reuse one Idempotency-Key per message so Sume bills once.

xAI video status done/expired vs Sume completed/failed

xAI's Grok Imagine video status values are pending, done, expired and failed. Sume uses pending, in_progress, completed, failed and cancelled. Port a poll loop.

Sora Videos API replacement: seconds and size on Sume

OpenAI removed the Videos API on 2026-09-24. Map its seconds and size fields to Sume's duration, resolution and aspect_ratio; size returns 400 on Sume.

Sora thumbnail and spritesheet variants: use Sume video frames

Sora's ?variant=thumbnail and spritesheet downloads went away with the API. On Sume, POST /v1/video-frames with at[] or fps returns durable still images.

Sora video.completed webhook to Sume job.completed

Sora emitted video.completed and video.failed. Sume sends job.completed, job.failed and job.canceled with an x-sume-webhook-signature header. Map the handler.

Sora download URL expired after 1 hour: what Sume returns

Sora download URLs were valid for at most 1 hour. Sume returns unsigned_urls on completion and serves the file from GET /v1/videos/{jobId}/content.

Sora input image must match size: the Sume frame_images rule

Sora's input image was the first frame and had to match the video size. Sume uses frame_images plus aspect_ratio, and rejects size on v1 models.

Wan 3.0 reference video requirements: 15 seconds and 16 fps

On Sume, wan-3.0 reference videos total 15 seconds or less and need 16 fps or more, up to 5 clips. Check each clip with video inspect and trim to fit.

Higgsfield Genjutsu API on Sume: one source video, 1 to 8 images

Genjutsu Motion Transfer on Sume needs exactly one source video plus 1 to 8 reference images. Text-only or malformed bodies are not valid. Request shapes below.

Runway Enhance Frame Rate: 300 s cap and credits vs Sume fps

Runway's Enhance Frame Rate takes inputs up to 300 seconds at 1 credit per 2 seconds. Sume's Timeline sets output.fps to 24, 25, 30 or 60. Compared.

Does a failed Sume video job send a webhook to callback_url?

Yes. A job that ends in failure sends job.failed with a public error to the HTTPS callback_url you set on POST /v1/videos, signed like every Sume webhook.

gpt-image-1 shuts down Oct 23, 2026: what to send on Sume

OpenAI lists gpt-image-1 as shutting down October 23, 2026. On Sume, call POST /v1/images with openai/gpt-image-2.5 or sunburst, or sume/auto. Migration steps.

gpt-image-1.5 deprecation: Dec 1, 2026 and Sume model ids

OpenAI removes gpt-image-1.5 and gpt-image-1-mini from its API on Dec 1, 2026. On Sume, send openai/gpt-image-2.5 and list ids with GET /v1/images/models.

chatgpt-image-latest shuts down Dec 1: pin a Sume model id

OpenAI retires the chatgpt-image-latest alias on Dec 1, 2026. On Sume, pin openai/gpt-image-2.5 or send sume/auto, and read ids from GET /v1/images/models.

gpt-image-2 transparent background: OpenAI preview vs Sume

OpenAI put transparent backgrounds for gpt-image-2 in preview (png or webp). On Sume, the background parameter is listed for ChatGPT Image 2.5, not gpt-image-2.

gpt-image-2-2026-04-21 on Sume: dated ids are not accepted

OpenAI's changelog names the snapshot gpt-image-2-2026-04-21. Sume documents catalog slugs and bare aliases: send openai/gpt-image-2 or check /v1/images/models.

GPT Image output_compression: OpenAI has it, Sume returns 400

OpenAI lets jpeg and webp take output_compression 0-100. Sume's docs say it is not served in v1 and sending it returns 400 unsupported_parameter.

GPT Image edit with a mask and several images: which is masked?

OpenAI applies the mask to the first of several input images. Sume forwards input_references in order with mask_url, so put the image to edit first.

GPT Image resolution above 2560x1440: experimental, and Sume's cap

OpenAI marks GPT Image sizes above 2560x1440 as experimental. Sume's 2.5 custom pixels accept up to a 3840 edge, so check the five size rules before you send.

Image 1.0 retiring soon: move transparent PNGs to /v1/images

Image 1.0 is a retiring compatibility alias for Image Router Auto. For new transparency work, call POST /v1/images and set background on a GPT Image 2.5 model.

TTS locale vs language field: getting an en-GB accent

Cartesia's locale field picks a regional accent such as en-GB on Sonic 3.6. Sume's TTS request has a language field only, so pick the accent via the voice.

TTS reads 1999-2000 wrong: write ranges and fractions as words

Cartesia does not normalize ranges like 1999-2000 or fractions like 2/3. Sume sends your transcript literally, so write them as words before you submit.

TTS voice-language mismatch warning: confirm, then retry

Sume's TTS warns when a voice's language differs from `language`. No job or charge exists yet; after the user agrees, retry with `confirm_language_mismatch`.

Gemini /v1beta/voices vs finding a voice id on Sume

Gemini added a Voices endpoint on 2026-09-22. Sume has no separate voices list route; list avatars and use one whose `voice.status` is `ready`.

TTS invalid_voice_id 400: a voice name from another vendor

Sume returns 400 `invalid_voice_id` for a voice name that is not a UUID or `voi_` id, before any job or credit. Copy an id verbatim or send an avatar.

OpenAI-compatible /v1/audio/speech: what Sume's TTS route is

Sume has no `/v1/audio/speech` clone. Its TTS is `POST /v1/tts-1.0/generate` or the Router, a job-based request authenticated with a Sume key.

AI music prompt max length: 5000 characters on Sume

Sume's Music Router accepts a prompt of 1-5000 characters. What to spend them on: a seven-axis brief, section markers and exclusions, in one positive prompt.

Music API timeout at 30 seconds: poll or webhook instead

A song can outlast Sume's 30-second wait. The wait bounds the HTTP call, not the job, so submit async and poll the status URL, or use a webhook.

TikTok AI label or your own caption, sticker or watermark

TikTok lets you disclose AI content with its AIGC label or your own clear caption, sticker or watermark. Burn a caption or add an overlay plate with Sume.

TikTok AI label for cropping or reframing: not needed

TikTok says disclosure isn't needed for small edits like color correction, reframing or cropping. See which Sume crop, fit and trim settings are those edits.

Instagram API poll_attachment on Reels: how the add-on works

Set poll_attachment when creating a Reel container: two to four options, 3 days by default, Facebook Login only. What Sume prepares before that call.

Instagram API is_comment_prompt_used: comment prompts on Reels

Set is_comment_prompt_used to true on the media container to attach a comment prompt, then read replies from prompt_response. One add-on per media, no poll.

Instagram media_publish config_issue CAPTION_NOT_ATTACHED

A media_publish call can succeed with the caption dropped. The response then carries config_issue CAPTION_NOT_ATTACHED. What it means and a burned-in fallback.

graph.instagram.com 400: parameter only for Facebook Login

Requests to graph.instagram.com with a Facebook-Login-only parameter now return 400 naming it, instead of being ignored. How to read the error and fix the call.

Instagram publish error: linked Facebook account restricted

Meta added a publishing error: the linked Facebook account is restricted and cannot publish video. What it blocks and how to post stills from a clip meanwhile.

Instagram API media_url missing: copyrighted audio and reels

Since 2026-07-30 Instagram omits media_url for video with copyrighted audio or reels with downloads off. Treat it as optional and import files you own.

Bluesky video length limit: 10 minutes, and how to trim to fit

Bluesky's app sets VIDEO_MAX_DURATION_MS to 10 minutes, and 1.132.0 removed the 10-minute gate. Trim longer clips with Sume video trim first.

Bluesky video format not supported: the accepted MIME types

Bluesky's app accepts video/mp4, video/mpeg, video/webm, video/quicktime and image/gif. For anything else, re-encode to MP4 with Sume video trim.

MCP server/discover against Sume's hosted endpoint

The 2026-07-28 MCP spec adds server/discover. Sume's hosted server does not implement it and answers -32601; read initialize and tools/list instead.

MCP listTools nextCursor: Sume returns a single page

TypeScript SDK 2.2.0 follows nextCursor in listTools(). Sume's tools/list returns a tools array with no cursor, so the walk ends after one request.

MCP subscriptions/listen: Sume has no push stream to join

MCP's 2026-07-28 spec adds subscriptions/listen for change notifications. Sume's hosted MCP answers POST only and declares listChanged false.

MCP Apps _meta.ui.resourceUri: what a Sume tool call shows

MCP Apps tools point at a ui:// resource for the host to render. Sume's hosted MCP lists plain tools, so a host shows the tool result, not an app.

MCP expectedIssuer with client credentials: Sume uses an API key

MCP TypeScript SDK 2.2.0 adds expectedIssuer to machine-to-machine providers. Sume's OAuth is authorization_code only; headless agents use an API key.

OAuthFlowError issuer mismatch in the MCP Python SDK 2.2

Python SDK 2.2 rejects authorization server metadata whose issuer is not the server's origin. Sume's metadata sets issuer to the MCP origin.

MCP Python SDK idle session 404: what it means for Sume jobs

Python SDK 2.2 closes stateful sessions idle for 30 minutes, then 404s. Sume's hosted MCP is POST-only; re-poll jobs_wait with the same ids, never resubmit.

Claude Code auto mode with Sume's MCP: paid-call gates still apply

In Claude Code auto mode a classifier reviews each action. On Sume's MCP, paid calls still need idempotency_key, and dry_run and max_spend_usd stay available.

claude -p --permission-prompt-tool with Sume paid jobs

Headless claude -p can route permission prompts to an MCP tool. For Sume paid jobs, keep idempotency_key stable and wait with jobs_wait in 55s slices.

Claude Code AGENTS.md without CLAUDE.md: Sume skills install

Claude Code reads AGENTS.md when no CLAUDE.md exists. sume skills install writes to .agents/skills or .claude/skills, so check which one you got.

CLAUDE_CODE_DISABLE_WEB_FETCH: what Sume crawl tools do

CLAUDE_CODE_DISABLE_WEB_FETCH turns off Claude Code's WebFetch tool. Sume's crawl_* tools come from an MCP server, so they are a separate path.

OpenAI Agents SDK MCP tool_input_guardrails for Sume spend

tool_input_guardrails on an Agents SDK MCP server can reject a call before it runs. For Sume paid tools, check idempotency_key and max_spend_usd.

OpenAI Agents SDK MCP require_approval for Sume write tools

Use require_approval with a tool_names list to gate Sume write tools by name, or connect with OAuth mcp:read so those tools are never visible.

AI SDK SSE heartbeat vs Sume jobs_wait 55s slices

AI SDK 7.0.123 adds optional SSE heartbeats for idle UI streams. Sume's jobs_wait is capped at 55s per call, so you still repeat it with the same ids.

AI SDK addToolOutput clears approval: Sume idempotency_key

AI SDK 7.0.126 clears tool approvals when addToolOutput runs. If a paid Sume call replays, a stable idempotency_key is what guards the create.

Gemini CLI keeps the OAuth refresh token: what Sume's MCP does

Gemini CLI 0.62 retains the OAuth refresh token on refresh. Sume's MCP token endpoint accepts only authorization_code, so expect a fresh sign-in, not a refresh.

Codex instant_interrupt mid jobs_wait: Sume jobs keep running

Codex's opt-in instant_interrupt lets new input steer a running turn. A Sume job submitted earlier keeps running and billing; re-read it with jobs_wait.

Merchant Center conversational attributes: draft them as JSON

Conversational attributes add richer context to product listings. Draft them per SKU as schema-bound JSON from a Sume Format run, then review before upload.

Demand Gen image assets in every ratio from one reference

Loop one product reference through POST /v1/images to get the 1:1, 4:5, 9:16 and 1.91:1 Demand Gen image sizes, with notes on which pixel sizes are valid.

OpenAI 429 slow_down vs 503 server_is_overloaded, and Sume

OpenAI now splits 429 slow_down (traffic ramping too fast) from 503 server_is_overloaded. Here is how each maps to Sume's 429 scope and 503 retry rules.

Ramp up API traffic gradually: pace Sume submits to the write budget

OpenAI now returns a slow_down 429 when traffic grows too fast. On Sume, pace paid submits to your plan's write budget and read ratelimit-remaining.

Retry a 503 overload on a paid generation without a double charge

A 503 overload is safe to retry on Sume if you reuse the same idempotency key. Credit is reserved at submit and released if the job fails.

ElevenLabs per-key concurrency caps vs Sume's plan limit

ElevenLabs lets enterprise service account keys carry TTS, music and dubbing concurrency limits. Sume has one plan-based limit and no per-key setting.

Agent loops on Sume: tool calls spend writes, polls spend reads

An MCP tool call spends the write budget once for the run it creates; a jobs_status poll spends none. Reads have their own, much larger budget.

curl 8.22 RFC 9421 signatures vs the Sume webhook signature

curl 8.22.0 adds experimental RFC 9421 HTTP Message Signatures. A Sume webhook is not one: it is an HMAC over timestamp.body in a sume-v1 header.

Standard Webhooks headers vs Sume sume-v1: a header map

Sume does not send webhook-id, webhook-timestamp or webhook-signature. It sends x-sume-webhook-* headers with a sume-v1 hex signature. Use verifyWebhook.

Webhook receiver was down: replay missed Sume job webhooks

After a receiver outage, list completed jobs and POST /v1/jobs/{job_id}/webhook/redeliver one by one. Sume has no bulk cancel-before-cutoff call.

SNS 1 MiB messages and Sume run webhook fan-out

Sume run webhook bodies are capped at 1 MiB, and SNS now allows 1 MiB messages with MaximumMessageSize. Ack the webhook first, then publish.

Durable Object waitUntil keep-alive and a Sume job poll

Pending I/O now keeps a Durable Object alive without a client, but a Sume video job is better tracked by job id, status_url polling or a webhook.

Cloudflare Worker 64 MiB limit and the Sume SDK bundle

Cloudflare now checks only a 64 MiB uncompressed Worker bundle. @sume-com/sdk has no runtime dependencies and runs on Workers; measure with a dry run.

Python Workers ASGI: a FastAPI Sume webhook receiver

Python Workers now accept ASGI frameworks. A FastAPI Sume receiver keeps the same rules there: raw body, constant-time HMAC compare, replay window, fast 2xx.

webcrypto_modern_algorithms flag: verifying a Sume webhook

Sume's verifyWebhook runs on plain WebCrypto in Workers. The docs list no compatibility flag for it, so webcrypto_modern_algorithms is not a step to add.

Supabase middleware pipeline: verify a Sume webhook first

Put Sume's verifyWebhook in the first step of a Supabase middleware pipeline: return 401 on a bad signature and handlers only see verified events.

GitHub Actions dropped Node 20: calling Sume needs no Node

Node 20 is gone from GitHub Actions runners. Sume's CLI is a native binary and the API is plain HTTPS, so a workflow step can call it with no Node version.

OpenAPI 3.2 generator: Sume's spec is still 3.0.3

Sume's published OpenAPI document declares 3.0.3, not 3.2. Check that your generator reads 3.0.x before pointing it at api.sume.com/reference/json.

Consume webhooks at your own pace: Sume has no offset commit

Sume has no polling endpoint with offset commits. Page GET /v1/jobs with starting_after, read each job's status, and keep your own cursor.

Cloudflare Workflow schedules: one Sume Idempotency-Key per tick

A scheduled Cloudflare Workflow that submits a Sume job should derive the Idempotency-Key from the tick, so a replayed step returns the same job.

x402 vs Sume's 402: a prepaid-balance error, not a payment prompt

Sume returns HTTP 402 with the code insufficient_credits when the balance is too low. The fix is adding funds, not sending a payment header.

Hookdeck 15-minute timeout and Sume's 10-second webhook attempt

Hookdeck's longer destination timeout does not change Sume's fixed 10-second attempt. Ack fast at the relay URL and give your handler its own time budget.

Webhook 410 Gone and 3xx: what Sume does with each

Sume has no special 410 handling and does not follow redirects. Any non-2xx, including 410 or 301, burns one of ten attempts. Here is the fix for each case.

How long does Sume retry a webhook before giving up?

Sume job webhooks give up after about 4.5 minutes of gaps, run webhooks after about 3 hours. Cumulative timings per attempt, then redeliver or poll.

Rotating a webhook secret during a gradual deployment

Sume signs with both the new and old secret for 24 hours after rotation, so two receiver versions can run side by side. Upgrade the verifier first, then rotate.

Can an AI agent debug a failed webhook on Sume over MCP?

Over MCP an agent can read job status, events and delivery status to see why a webhook did not arrive. Redeliver is a REST call that needs jobs:write.

Webhook signature mismatch: compare the secret fingerprint

Before filing a ticket for a Sume signature mismatch, compare the secret fingerprint header with the dashboard value. It is safe to paste into a ticket.

HeyGen API key permissions: /v3/api_keys/self vs Sume /v1/me

HeyGen's GET /v3/api_keys/self shows a key's name, scopes and expiry. On Sume, GET /v1/me verifies the key and returns non-secret account metadata.

HeyGen Video Agent edit_plan vs Sume preview regenerate

HeyGen's edit_plan revises named scenes in one turn, up to 50 items. Sume has no in-place scene edit: regenerate preview stills, then render.

HeyGen avatar voice id: default_voice_id vs Sume avatar_handle

HeyGen's PATCH /v3/avatars/{group_id} stores a default_voice_id. On Sume, TTS can take an avatar_handle and resolve that avatar's ready voice.

HeyGen API idempotency key vs Sume: two different 409s

HeyGen returns 409 request_in_progress for an in-flight retry. Sume returns 409 idempotency_conflict only when a key is reused for a different payload.

HeyGen video scenes API vs Sume job result previews

HeyGen's GET /v3/videos/{video_id}/scenes returns each scene's visuals and script. Sume job results return media.sume.com artifacts and scene previews.

Change caption style without transcribing again: source_caption_id

Pass source_caption_id instead of video_url to re-burn a clip under a new style. Sume reuses the stored word timings, so speech-to-text runs only once.

caption_hangul_text_latin_style: the 400 and the fix

Sume returns 400 caption_hangul_text_latin_style when Korean copy is sent to slam, punch or tiktok-green. Name a Hangul style such as black-outline instead.

caption_font_requires_hangul_style: why font returns 400

Sume's font field on video captions is Hangul-only: sending it with slam, punch or tiktok-green returns 400 caption_font_requires_hangul_style.

Customize caption colors via API: not on punch or tiktok-green

Sume's design overrides change caption colours, weight, placement and motion per request, but punch and tiktok-green ignore them. Which styles accept design.

caption_no_speech: caption a silent clip with cues

caption_no_speech means the clip has no audible speech. Sume's fix is next_action use_overlay_captions: send cues with text, start and end and skip ASR.

WAV 16-bit PCM vs 32-bit float: what audio detach returns

Sume audio detach writes wav as 16-bit PCM (pcm_s16le) by default. If your camera records 32-bit float, here is what that means and which options you get.

CapCut captions API: black-outline and korean-ad styles

CapCut has no captions API in the pages we read. Sume's POST /v1/video-captions burns a white-on-black-outline look with style black-outline.

Text to speech streaming API: what Sume returns instead

Sume's text to speech API doesn't stream audio chunks. It returns a finished file per job; split long scripts into sentence jobs to start playback sooner.

Real time speech to text API: what a file-based API can do

Sume's speech to text API isn't real time: it transcribes recordings of up to 10 minutes at a URL. Chunked recordings give near-live transcripts.

C# text to speech: call a TTS API with HttpClient

Text to speech in C#: POST the text and a voice with HttpClient, poll the job until it finishes, then stream the MP3 from its audio_url to a file.

C# speech to text: transcribe audio files with HttpClient

Speech to text in C#: POST the audio file's URL with HttpClient, poll the job, then read the transcript and word timestamps from the JSON result.

Talking avatar in JS: make one from Node, play it in React

A talking avatar in JavaScript: create it and send it a script from Node with the Sume SDK, wait for the job, then play the returned MP4 in React.

Python API rate limiting: stay under a per-minute limit

Pace Python API calls with an asyncio limiter set under the API's per-minute budget, keep polling on its own budget, and back off on 429 retry-after.

Promise.allSettled vs Promise.all for a batch of API jobs

Promise.allSettled waits for every promise and reports each outcome; Promise.all rejects on the first failure. For paid API jobs, use allSettled.

API throttling vs rate limiting: what's the difference?

Rate limiting refuses requests over a quota with a 429; throttling slows or queues the excess instead. What each one means for your client.

API sandbox environment: test a paid API without paying

An API sandbox is a separate test environment with fake or free results. Sume has none, so test with its spec, free checks and spend caps.

C# HttpClient default timeout: 100 seconds, and how to set it

HttpClient.Timeout defaults to 100 seconds per request and throws TaskCanceledException. How to set it, and why slow API jobs need polling instead.

Java HttpClient timeout: no default, so set two of them

Java's HttpClient has no request timeout unless you set one: connectTimeout on the client, timeout on each request, and HttpTimeoutException.

Python requests default timeout: there isn't one

Python Requests has no default timeout: without timeout= a call can hang indefinitely. Set (connect, read) on every call, and keep it short for job APIs.

httpx retry: what HTTPTransport(retries=n) covers

httpx retries only ConnectError and ConnectTimeout, via HTTPTransport(retries=n). For read errors, 429 and 503, write a loop that keeps one Idempotency-Key.

Golang HTTP client retry: what net/http retries on POST

Go's http.Transport retries only network errors on reused connections, and a POST only with an Idempotency-Key header. Write the 429 and 5xx loop yourself.

Bash for loop with curl: one API request per line

Loop over a file with while IFS= read -r, build each JSON body with jq --arg, send it with curl --fail-with-body, and pace it under the API's rate limit.

JSON to video API: render an MP4 from a timeline document

A JSON to video API renders one MP4 from a document that says which clips play when, over which audio. How Sume's Timeline 1.0 does it, and costs.

Batch video processing by API: one edit, many videos

Batch video processing by API is a loop: one edit job per file, each with its own idempotency key, collected by webhook. How it works on Sume, and costs.

Automate video editing in Python with an editing API

Automate video editing in Python by calling an editing API with Requests: submit a caption, cut, or crop job, poll until it ends, chain the output.

Java subtitle generator API: burn captions with HttpClient

Generate subtitles from Java with the JDK HttpClient: POST the video URL to a captions API, poll the job, then read the captioned video_url.

FFmpeg burn subtitles into video: subtitles filter, force_style

Burn subtitles into a video with FFmpeg's subtitles filter: -vf subtitles=subs.srt re-encodes the picture, and force_style overrides the font and colour.

FFmpeg crop video: crop=w:h:x:y, centre, and 9:16

Crop a video with FFmpeg's crop filter: -vf crop=w:h:x:y keeps a w×h area whose top-left corner is at x,y; leave out x and y to crop the centre.

FFmpeg fade in fade out: video and audio, from and to black

Fade a video in and out with FFmpeg: fade=t=in and fade=t=out on the picture, afade on the sound, with the fade-out starting at the length minus its duration.

FFmpeg change frame rate: the fps filter vs -r

Change a video's frame rate with FFmpeg's fps filter: -vf fps=30 drops or duplicates frames and keeps the running time. How -r and framerate differ.

FFmpeg: add a watermark image to a video with overlay

Add a watermark image to a video with FFmpeg: pass the logo as a second input and use overlay=W-w-10:H-h-10 for the bottom-right corner.

FFmpeg increase volume: the volume filter, in dB or ×

Increase volume in FFmpeg with -af volume: volume=2 or volume=6dB, with -c:v copy so the video isn't re-encoded. Check headroom with volumedetect first.

Remove background from image in Python with an API

Remove an image background in Python: POST the image URL with requests, poll the job, then save the transparent PNG. A full script and the price.

Remove background from image in Node.js (JavaScript API)

Remove an image background from Node.js: call a background-removal API with fetch on your server, poll the job, and save the transparent PNG.

Is my data used to train AI? Where the answer is written

It depends on the tool: the training answer sits in its terms' content license and its privacy policy's use section. What to search for, and what Sume's say.

Do AI companies sell your data? What to read in the policy

Some may; the privacy policy is where to check. How to read its sale and sharing sections, and what Sume's policy says it collects and shares.

How to delete my data from an AI tool, and what stays

Delete your data from an AI tool in two steps: delete the account, then send a deletion request for stored files. How it works on Sume, and its limits.

Is my data safe with AI? Four checks before you share it

No AI tool can promise perfect security. Check who processes your inputs, who on your team sees them, who can open outputs, and how keys are kept.

AI vendor risk assessment: questions and where to look

An AI vendor risk assessment adds training, model providers and spend to a SaaS review. The questions, and where Sume's public pages answer them.

Do API keys expire? Sume keys last until revoked

Some API keys expire and many last until revoked. Sume keys have no expiry date in current code, so rotation is on you. How and when to rotate.

API uptime SLA: what it promises, and Sume's terms

An API uptime SLA promises a monthly availability percentage and credits if missed. Sume's terms offer none; how to build around that.

HeyGen API key: get one and make your first video

Generate a HeyGen API key in its API dashboard, send it as X-Api-Key to api.heygen.com, check it with GET /v3/users/me, then create a video.

HeyGen API v2 retirement: the date and the v3 endpoints

HeyGen's API v1 and v2 stay operational until October 31, 2026 and retire on November 1. The warning headers, and the v3 call for each v2 call.

Replicate API rate limits: 600 creates a minute, then 429

Replicate's API allows 600 prediction creates and 3,000 other requests per minute. Low credit and no card tighten it; over the limit you get a 429.

fal.ai API rate limit: concurrency from 2 up to 40

fal.ai limits how many requests run at once, not requests per minute: 2 for a new account, rising with credit purchases to 40 self-serve.

Kling API rate limit: concurrency by package and error 1303

Kling's API limits concurrent tasks by resource package, not requests per second. Over the cap, a create fails with HTTP 429, code 1303.

Runway API rate limit: usage tiers, concurrency and 429s

Runway's API has no requests-per-minute limit. Usage tiers cap concurrency per model, generations per 24 hours and monthly spend.

HeyGen API avatar ID and voice ID: where to find them

In HeyGen's v3 API, avatar_id is a look id from GET /v3/avatars/looks, and voice_id comes from GET /v3/voices or the look's default voice.

fal AI FFmpeg API: endpoints, inputs and prices

fal hosts FFmpeg as model endpoints: merge videos, merge audio and video, extract a frame, compose tracks. Called with a fal key, priced per second.

How does the Higgsfield API work? Requests, limits, billing

Higgsfield's API is asynchronous: submit to a model endpoint, keep the request_id, poll or take a webhook, download. Billing and limits explained.

Agent API continue session with thread_id: what Sume supports

Sume's Agent Completions run in a fresh thread every time and do not accept thread_id to continue one. Format runs continue with previous_run_id instead.

Generate an image, then animate it: image to video in two API calls

Generate a still with POST /v1/images, then pass its URL as first_frame to POST /v1/videos. The two calls, the URL rule between them, and what each reserves.

AI music generator API in Python: prompt to MP3 file

A short Python script that sends a prompt to Sume's Music Router, polls the job and saves the audio. Runs with httpx and asyncio.

AI music negative prompt: why the API returns 400

Sume's music API rejects a non-empty negative_prompt with HTTP 400. What the error looks like and how to write exclusions in the prompt instead.

AI music API webhook: get a callback when the track is ready

Submit a music job with mode webhook and a public HTTPS URL, verify the signed callback, and keep polling as a backup. Headers, events and retries.

AI SDK 7 createMCPClient: connect a remote HTTP MCP server

In AI SDK 7, createMCPClient takes an http transport with a url and headers. Point it at https://mcp.sume.com/mcp, load client.tools(), and close in finally.

AI SDK 7 isStepCount stopWhen: cap a paid tool loop

stopWhen: isStepCount(5) limits AI SDK steps, not spend. For paid Sume MCP tools, pair it with max_spend_usd, dry_run and an idempotency_key.

AI SDK MCP client authorization bearer header: what to send Sume

Set headers.Authorization to Bearer plus your Sume API key on the AI SDK http transport, and send only one credential header. An OAuth token is not an API key.

API audit log: what you can trace on Sume's media API

Sume's docs describe no audit-log endpoint. Job records, the usage ledger and request ids give a trail, but not which API key made a call.

API changelog: where Sume lists changes, and how to read it

Sume keeps a public changelog, newest first, with a version, a date and short notes. It does not mark breaking changes, so also watch the retiring list.

502 attachment_fetch_failed: a 5xx that is really your image URL

Sume answers 502 attachment_fetch_failed when it cannot fetch an image URL: unreachable host, hotlink protection, or a non-2xx reply. Why retrying fails.

detach_source_has_no_audio: check for an audio track first

Audio detach fails with detach_source_has_no_audio on a silent clip. Probe has_audio with a video inspect that skips frames, then detach only clips with sound.

sume/auto duration limit: 3 to 10 seconds, and how to go longer

Sume's Video Router docs give sume/auto a 3 to 10 second clip range at 16:9 or 9:16, default 8 seconds at 720p. For 30 seconds, pin seedance-2.5 or join clips.

AI video captions failed: is the video still usable?

On a Sume avatar video, a failed caption stage does not fail the job: the clean video_url still arrives with captions.status set to failed. What to do next.

Batch image generation API: how many images can run at once?

Sume queues extra generation jobs instead of rejecting them. The per-plan concurrency and queue table, the 429 queue_full case, and how to size an image batch.

AI dubbing API: build the pipeline from STT, TTS and audio joins

Sume has no one-call dubbing route. Chain audio detach, STT 1.0, your translation, TTS 1.0 and Timeline audio into a dub. Routes, limits and the $0.01 steps.

Caption API script_alignment_mismatch: what it means and how to fix it

If script_text mismatches the speech, POST /v1/video-captions fails with script_alignment_mismatch or script_alignment_failed. Simplify or omit it.

Claude Code permissions ask rule for paid MCP tools

An ask rule in Claude Code settings prompts every time a named MCP tool runs, even if an allow rule matches. Rules for Sume's paid tools and their limits.

claude -p with --mcp-config: run Sume video tools from a script

Use claude --bare -p with --mcp-config and --allowedTools to call Sume's hosted MCP tools in CI; read mcp_server_errors so an unloaded server fails the job.

Claude Code hooks not firing on an MCP tool: 6 causes

A PreToolUse hook that never fires on an MCP tool usually has a matcher problem: a bare server name, a plugin's scoped name, or a missing .*. Fixes for Sume.

Claude Code managed-mcp.json exclusive: allow the Sume server

An exclusive managed-mcp.json fixes the MCP servers Claude Code may use. What to put in it for Sume's hosted server, and what Claude Code 2.1.282 added.

Claude Code MCP progress notifications on a background call: Sume

Claude Code 2.1.283 fixed MCP progress notifications dropped on background calls. Sume's docs describe bounded jobs_wait slices instead of a progress stream.

Claude Code mcp_tool hook on PreToolUse for a spend check

Claude Code 2.1.282 makes mcp_tool hooks on blocking events wait for their MCP server. With Sume, the check to run there is a dry_run cost preview.

Claude Code "No such tool available" on a resumed MCP session

After resuming a Claude Code session, a first MCP call could fail with No such tool available. Claude Code 2.1.284 waits up to 10 seconds. The Sume side.

OTEL_LOG_TOOL_CONTENT with MCP tool output: what Sume logs could leak

Claude Code 2.1.283 can put MCP tool output on an OTEL span when OTEL_LOG_TOOL_CONTENT=1. With Sume, check that output for signed URLs and keys first.

Claude Code PreToolUse hook example: gate paid Sume tools

A PreToolUse hook that lets dry_run previews through, denies paid Sume MCP calls with no max_spend_usd, and asks you before the rest. Script and settings.

Claude Code MCP server connected twice: duplicate connector fix

Claude Code 2.1.281 stopped connecting one MCP server twice when a plugin or connector spells its URL differently. What it means for Sume's single MCP URL.

Claude Code subagent MCP server: scope Sume tools to one

Put a Sume MCP server in one subagent's mcpServers field so video and image tools stay out of the main chat. Frontmatter for both routes, plus limits.

MCP URL mode elicitation in Claude Code vs OAuth consent

Claude Code 2.1.281 added MCP URL-mode elicitation, a browser flow a server can request. Sume's browser step is OAuth consent, a different mechanism.

Claude skill allowed-tools: pre-approve Sume MCP tools

A skill's allowed-tools field pre-approves tools for one turn and does not restrict the rest. How to list Sume's job tools and leave paid ones prompting.

Add a video tool to Claude Sonnet 5.5 in the Messages API

Define a generate_video tool with input_schema, run it against Sume's /v1/videos when Claude Sonnet 5.5 returns tool_use, and return the job id as tool_result.

Claude tool_result is_error: return Sume API errors

When a Sume REST call fails inside your Claude tool loop, send the error back as a tool_result with is_error true and say what to try next. Code and table.

Cursor agent subscriptions and scheduled runs calling an API

A Cursor scheduled run can call Sume's HTTP API to start a saved schedule run. The three prerequisites, the request, and why a skipped run still returns 200.

Cursor Projects subagents and MCP tools: capping Sume spend

Cursor Projects lets a coordinator delegate to subagents. If they share a Sume MCP connection, spend gates sit on each call: idempotency keys, dry runs, caps.

Cursor self-hosted machines: where a Sume API key can live

Cursor's self-hosted machines run agents on hosts you pick. Sume's key rule is short: trusted servers, CI secret stores or your own machine, never chat.

Low latency text to speech API: 150 ms streaming vs async jobs

ElevenLabs quotes about 150 ms to first speech for Eleven v4 Turbo. Sume's text to speech returns a finished file per job, so pre-render lines you can predict.

ElevenLabs API alternative: what to check before switching TTS

Thinking of moving text to speech off ElevenLabs? Sume's TTS is an async job API with Sonic ids on a router. The contract points to check before you switch.

ElevenLabs Dubbing v2 API: what it does, and what Sume offers

ElevenLabs Dubbing v2 is a project-based API with editable transcripts. Sume has no dubbing route; here is how its STT, TTS and audio-join steps map on.

ElevenLabs music API: composition plans vs a prompt-only API

ElevenLabs added Music v2.5 API support on 2026-09-14 with composition plans. How a plan differs from Sume's prompt-only music route with no duration field

Enterprise API rate limit: what a Sume key gets by default

Sume's Enterprise rate limit is contracted, not self-serve. Until a number is provisioned, an Enterprise key gets the Scale row, plus 20 concurrent jobs.

Export API usage to CSV: turning Sume's usage ledger into rows

Sume's docs list no CSV export, but GET /v1/usage returns ledger rows as JSON. Convert them with jq, and keep captured rows separate from refunds.

Retry a failed run: same idempotency key returns old failure

Retry a failed run: the same Sume Idempotency-Key returns the old failure. Use a new key, or continue with previous_run_id to keep finished clips.

fal bytedance/seedance-2.0 request fields, mapped to Sume's

Moving a fal Seedance 2.0 call to Sume: the path becomes a bare model id, image_urls become input_references, and seed, auto ratio and auto duration go.

FLUX.2 multi-reference editing API: how many images can I send?

FLUX.2 edits from several reference images. Black Forest Labs' API takes up to 8; Sume's flux.2-pro catalog row lists up to 10 input_references.

FLUX agent skills for video direction, and Sume's skill install

BFL released six Agent Skills for FLUX 3 video direction on 2026-08-07. Sume ships its own skill through the CLI. Where each installs and what it cannot do.

FLUX MCP server generate_video: what Sume's hosted MCP has

BFL's FLUX MCP server gained generate_video and enhance_video on 2026-08-11. Sume's hosted MCP has its own generate_video and video_upscale_create tools.

413 payload_too_large on a Sume Format run: the 4 MiB body cap

A Format run body over 4 MiB answers 413 payload_too_large. Shrink input, send media by URL, and tell it from attachment_too_large and a null payload.

Cap what one Format run can spend with generation_spend_cap_usd

Every Sume Format run has a generation spend cap. Send generation_spend_cap_usd to set it: up to 500, null runs at 500, 0 is rejected. What happens at the cap.

Video judder with mixed frame rates: Timeline's warning

Judder on a joined video comes from resampled frame rates. Sume's Timeline warns output_fps_resamples_sources when a source rate differs. How to read it.

Gemini 3.8 Flash function calling: let it start a Sume video job

Declare a function for Gemini 3.8 Flash, run it against Sume's /v1/videos when the model returns a functionCall, and reply with a functionResponse with job id.

Gemini CLI MCP OAuth metadata discovery blocked: Sume check

Gemini CLI v0.59.0 added SSRF prevention to MCP OAuth metadata discovery. Sume publishes metadata at two public HTTPS URLs; how to confirm both from a shell.

Gemini CLI MCP servers not loading in an untrusted workspace

Gemini CLI v0.59.0 filters mcpServers in restricted mode. If Sume is missing in an untrusted folder, trust is the cause; then tell it from an OAuth issue.

GPT-6 Astra tool calling needs the Responses API: meaning for Sume

OpenAI says GPT-6 Astra supports Chat Completions but its tool calling requires Responses. Use the Responses mcp tool for Sume, not a chat.completions loop.

How long does GPT Image 2.5 take? Time your own jobs on Sume

Sume publishes no per-model image time for GPT Image 2.5, only a 30-second wait budget. A short curl script times your own prompts by quality and size.

GPT Image 2.5 arena: run your own blind test through the API

Arena leaderboards rank images on other people's prompts. Here is a blind three-way test of Flare, Sunburst and GPT Image 2 on yours, with one script on Sume.

GPT Image 2.5 background: transparent vs opaque in the API

Sume accepts background auto, transparent or opaque on the two GPT Image 2.5 ids only. What opaque does, what a bad value returns, and which models reject it.

GPT Image 2.5 SVG output: why the API rejects svg

GPT Image 2.5 on Sume advertises png, jpeg and webp. Asking for svg returns a 400 that lists the accepted formats. How to check and what to do for vector art.

GPT Image 2 vs GPT Image 2.5: what changes when you migrate

GPT Image 2 stays selectable on Sume. Moving to 2.5 means a new model id and new limits: six quality values, 16 references, mask_url. Old requests keep working.

GPT Image 2.5 4K: how to request a 3840x2160 image by API

To get a 4K image from GPT Image 2.5 on Sume, send image_size 3840x2160 to POST /v1/images and be ready for a 202 job response. Request, cost, and polling.

GPT Image 2.5 image editing API: edit a photo with a prompt

Edit a photo with GPT Image 2.5 on Sume: send the image in input_references, describe the change, and set aspect_ratio to auto. Up to 16 references per call.

GPT Image 2.5 request returned 202: how to get the image from the job

When GPT Image 2.5 takes longer than 30 seconds on Sume, POST /v1/images returns 202 with a job. Poll the status URL, then read the result, or use a webhook.

GPT Image mask edit API: how to use mask_url on GPT Image 2.5

GPT Image 2.5 on Sume takes an optional mask_url for edits. OpenAI says the mask needs an alpha channel and only guides the edit. The request and the limits.

GPT Image 2.5 multi-round edits: chain edits on one image via API

To make several edits to one picture with GPT Image 2.5, feed each result back as a reference. What fal says Sunburst preserves, and what to check each round.

GPT Image 2.5: how many images can I generate per request?

On Sume, GPT Image 2.5 takes n from 1 to 4 images per request, billed per image. How to ask for several versions and what a 202 means for a larger n.

GPT Image 2.5 API: OpenAI's two endpoints versus Sume's one route

OpenAI serves GPT Image 2.5 on images/generations and images/edits. On Sume both become POST /v1/images. How the fields map and what returns instead of base64.

GPT Image 2.5 output format: png, jpeg or webp on Sume

GPT Image 2.5 on Sume returns png, jpeg or webp through output_format. Which to pick for transparency and speed, and what output_compression does on Sume today.

GPT Image 2.5 Python example: generate an image with the Sume API

A runnable Python example for GPT Image 2.5 on Sume: async httpx, POST /v1/images, read data[].url, and stop cleanly on a 202 job. Copy, set the key, run.

GPT Image 2.5 reference images: how many you can send and how to use

GPT Image 2.5 on Sume accepts up to 16 reference images per request, six more than GPT Image 2. How to label each image's job in the prompt and what to check.

GPT Image 2.5 image URL expired? Save the file in Node

Sume returns GPT Image 2.5 results as signed URLs, not base64, and its docs give no lifetime. Download each file when the call returns. Node example.

GPT Image 2.5 transparent background: how to request a cutout by API

GPT Image 2.5 on Sume accepts background transparent. OpenAI says transparency needs png or webp output. The request, the catch, and when to use another route.

GPT Image 2.5 400 unsupported_parameter: fields each model accepts

A 400 unsupported_parameter from Sume's image API means the model does not list that field. Which GPT Image ids accept quality, mask_url and background.

Grok 4.7 remote MCP tool: connect Sume to the xAI Responses API

xAI's remote MCP tool works with grok-4.7 on the Responses API. Point server_url at Sume's hosted MCP, restrict allowed_tools, and cap spend on the Sume side.

409 idempotency_conflict vs idempotency_key_in_use: which one to retry

Both are 409s on a Sume Format run create. idempotency_key_in_use is a concurrent duplicate you resend; idempotency_conflict is a changed body you must fix.

Idempotency key replay returns the original response: read the flag

Replaying an Idempotency-Key on a Sume run create returns the original receipt with idempotency_hit true. How to spot a replay, and what a new body does.

Ideogram character reference API: what Sume passes through

Ideogram's API has character reference. Sume lists ideogram/ideogram-v3 with input_references, low, medium, high quality; no character reference is documented.

Ideogram V3 Turbo, Balanced, Quality: how Sume maps them

On Sume the quality field takes low, medium or high for Ideogram V3, and those map to TURBO, BALANCED and QUALITY. Omit it and BALANCED runs. Price is flat.

Image API provider.only and provider.order: which slug works?

Sume's image API takes provider.only and provider.order but lists one endpoint per model, slug sume. Which routing fields do anything, and the 400 for the rest.

Image generation API streaming: partial images on Sume

Sume's image API does not stream partial images yet: stream true returns 400 streaming_not_supported. Submit async, read events, or use a webhook.

image_not_fetchable error: what it means and how to fix it

image_not_fetchable means Sume could not fetch or mirror your input image. Check it is a public HTTPS image URL, then retry or send the request id to support.

Imagen 4 Ultra API on Sume: 1K and 2K, and the Fast id

Sume lists google/imagen-4-ultra with a resolution of 1K or 2K (default 2K) and google/imagen-4-fast with none. Both are text-only, with a flat price per image.

Instagram API is_ai_generated: label an AI Reel

Set is_ai_generated=true when you create the media container and Instagram's API records your AI self-disclosure. Carousels take it on the parent only.

Instagram trial Reels API: trial_params and graduation

Publish an Instagram trial Reel by API with trial_params.graduation_strategy set to MANUAL or SS_PERFORMANCE. Trial Reels reach non-followers only.

409 job_not_completed: why the result call fails and what to poll

GET /v1/jobs/:id/result answers 409 job_not_completed until the job completes. Poll status for terminal, read failures from the job record, and never resubmit.

Lip sync longer than 15 seconds: split the audio first

MiniMax H3 Max lip sync on Sume takes 5 to 14.8 s of audio. For a longer line, use VEED Fabric up to 300 s, or split the audio into ranges and sync each piece.

MCP 2026-07-28 spec: which version does Sume's hosted server speak?

The 2026-07-28 MCP revision is out and Claude Code speaks it. Sume's hosted server negotiates 2025-03-26, 2025-06-18 and 2025-11-25, not 2026-07-28.

MCP server rate limit: per tool call or per request on Sume?

On Sume the MCP endpoint POST is a read, a tool call spends write budget once for the run it creates, and a jobs_status poll over MCP spends no write budget.

MCP-Method header: route and rate-limit MCP requests at a gateway

The 2026-07-28 MCP spec requires Mcp-Method and Mcp-Name headers on HTTP requests. How Sume counts MCP calls against its rate limits.

MCP input_required, inputResponses and multi round trip vs dry_run

MCP 2026-07-28 lets a server return input_required and the client retry with inputResponses. Sume's paid confirmation is two calls with dry_run instead.

MCP OAuth resource indicator: is a token bound to the server?

Sume's MCP OAuth resource audience is https://mcp.sume.com/mcp, its authorization server is the MCP origin, and the token is not an API key.

MCP roots, sampling and logging deprecated: Sume impact

The 2026-07-28 MCP spec deprecates Roots, Sampling and Logging. Sume's hosted server declares only tools, so a client calling it has nothing to migrate.

MCP Tasks extension: does Sume use it for long jobs?

No. Sume's hosted MCP server has no task handles. A paid create returns a job id, and you poll it with jobs_status or jobs_wait, then read jobs_result.

MCP tools/list ttlMs and cacheScope: what is safe to cache?

The 2026-07-28 MCP spec adds ttlMs and cacheScope to tools/list. Sume's tool list depends on the session's scopes, which is why caching it per session matters.

Unsupported MCP protocol version: the 400 from Sume's server

Sume's MCP endpoint answers an MCP-Protocol-Version it does not support with HTTP 400 and code -32600. Here is what the 2026-07-28 spec tells a client to do.

MiniMax H3 4-second clips: MiniMax says 4, Sume says 5

MiniMax lists 4–15 seconds for H3, but Sume's docs and pricing code start at 5 seconds. Send 5 or more, and trim to 4 afterwards if you need it.

MiniMax H3 768p: why 720p is refused and what to send instead

MiniMax H3 renders natively at 768p, not 720p. Sume refuses resolution 720p on H3 and H3 Max and tells you to use 768p. The accepted values per id.

MiniMax H3 aspect ratios: 21:9 to 9:16, and when adaptive works

MiniMax H3 makes six aspect ratios, from 21:9 to 9:16. Which ones Sume accepts, where adaptive is allowed, and how frame images set the ratio.

MiniMax H3 in ComfyUI or through a hosted API: what differs

ComfyUI documents three MiniMax H3 workflows with local model files; a hosted API returns a job. The limits that change between the two, from the docs.

First and last frame to video with MiniMax H3: request and rules

MiniMax H3 fills the motion between an opening and a closing image. On Sume send frame_images with first_frame and last_frame; ratio, length and price rules.

Multi-shot AI video prompts: MiniMax H3 shot labels and timecodes

MiniMax H3 models multiple shots natively. Write [Shot 1] labels or timecoded blocks in the prompt; syntax from the vendor guides and a Sume request.

MiniMax H3 prompt guide: reference jobs, negative direction, length

The MiniMax H3 prompting rules that change output: give each reference a job, write timecodes, say what to avoid, and stay under 7,000 characters.

MiniMax H3 API in Python: submit, poll and download a video job

A runnable Python example for MiniMax H3 on Sume: POST /v1/videos, poll the job until completed, then download the clip from unsigned_urls. Uses httpx.

MiniMax H3 reference limits: 9 images, 3 videos, 3 audio, 12 total

The MiniMax H3 reference-to-video limits and the errors Sume returns when you cross them. Counts, clip lengths, the audio-only rule and image price.

Video to video motion transfer with AI: MiniMax H3 reference video

MiniMax H3 lists V2V motion transfer. Send a motion video and character images as references on Sume, write each reference's job, and mind the limits.

MiniMax H3 voice reference: match a voice with an audio clip

MiniMax H3 accepts up to 3 audio clips as references. How to write the prompt, the limits Sume enforces, and the rule that audio cannot be the only reference.

fal subscribe equivalent for a video API: Sume has no SSE

Sume accepts mode subscribe but it is an alias of sync: one 30-second wait, no event stream. For a fal-style long wait, submit async and poll status.

Video model router API: calling sume/auto on POST /v1/videos

A video model router API on Sume is one field: model set to sume/auto on POST /v1/videos. Request, polling, MCP and legacy routes, and when to pin a model.

Music API waveform data: get peaks from the audio file yourself

ElevenLabs added optional waveform data to music generation. Sume's music result has no waveform field, so compute peaks from the audio artifact with ffmpeg.

n8n AI Agent: force tool call on first iteration with Sume

n8n 2.40 added Force Tool Call on First Iteration to AI Agent v3. If Sume MCP is the tool, the first call is real: what a session can reach and the gates.

n8n MCP custom headers with OAuth token refresh: Sume caution

n8n 2.40 keeps custom headers on MCP registry remotes through OAuth token refreshes. With Sume, do not add an API-key header on top of an OAuth bearer token.

Nano Banana 4K resolution API: the tier strings Sume accepts

Google says Nano Banana 2 spans 512px to 4K. On Sume you pick a tier with resolution: 512, 1K, 2K or 4K. The default, and why 4K can return 202.

OpenAI Agents API remote MCP server: what to give it for Sume

OpenAI's Agents API takes MCP servers at session setup. Give it Sume's mcp.sume.com/mcp URL and an API key, and gate paid calls with idempotency_key.

OpenAI Agents API webhooks: when the agent finishes, and Sume's

OpenAI says to stream output or use webhooks to learn when an agent finishes or needs input. Sume sends one agent.run.terminal webhook per run, never on cancel.

Restrict API key creation: what OpenAI added, and Sume's key rules

OpenAI added admin controls to restrict API key creation on 2026-09-15. Sume keys are workspace-scoped with fixed scopes and rotate by replacement.

429 queue_full vs rate_limited: what the generation API means

On Sume, 429 queue_full means no accepted generation capacity is left, rate_limited means request volume, and full concurrency leaves the job queued.

429 rate_limited: how to tell a read budget from a write budget

A Sume 429 rate_limited names its budget in error.details.scope, read or write. Reads get forty times the write number. Headers to pace on and what to back off.

Extract on-screen text from a reference video with an API

Reference ingest reads on-screen text at source resolution, returns lines with boxes, spans and confidence, and flags low-confidence lines instead of guessing.

Reference video shot breakdown API: cuts, keyframes and timings

Break a reference video into shots with an API: POST /v1/reference-ingest returns frame-exact cuts, keyframes and a labeled strip for one clip, unbilled.

Check whether a reference video is silent before adding music

Reference ingest reports audio.silent at a -60 LUFS gate, speech presence and beats, so you know whether to keep, replace or add a soundtrack before a remix.

Scheduled AI runs: default spend cap is $1.00, only lowerable

A scheduled Action's spend cap defaults to $1.00 when unset. A per-run generation_spend_cap_usd is clamped to the smaller value. null lifts the ceiling.

Seedance 2.0 API errors: what each 400 and 404 means

A Seedance 2.0 request on Sume fails with 400 unsupported_parameter, 400 unsupported_capability or 404 model_not_found. What triggers each and the fix.

Seedance 2.0 aspect ratio auto: can you send it on Sume?

fal's Seedance 2.0 pages list aspect_ratio auto. Sume's seedance-2 advertises six fixed ratios and refuses others, so send 16:9, 9:16 or another listed value.

Seedance 2.0 reference limits: 9 images, 3 videos, 3 audio?

fal lists Seedance 2.0 reference-to-video at up to 9 images, 3 videos and 3 audio clips, 12 files in all. On Sume the API enforces the 12-file total. Details.

Seedance 2.5 API key: get one and send a first request

Create a Sume API key, POST to /v1/videos with model seedance-2.5, poll the job and download the file. One curl request, the auth rules and the fields to set.

How long does a Seedance 2.5 video take, and how do you wait for it?

Sume's docs say video generation takes 30 seconds to several minutes. Poll GET /v1/videos/{id} every 30 seconds or pass callback_url for a signed webhook.

BytePlus ModelArk Seedance 2.5: limits, tasks and how Sume maps

What BytePlus's ModelArk tutorial documents for Seedance 2.5 (task types, drafts, rate limits, retention) and which concepts exist in Sume's video API.

Seedream 5.0 censorship: what a blocked image looks like on Sume

Sume's Seedream calls run with the provider safety checker on, with no switch for it. What a refused generation returns, whether it is billed, and what to do.

Put a still image above or beside a video with an API

POST /v1/timeline-1.0/compose stacks a still and a video into one MP4 (a half-banner), or overlays the still. Layout keys, limits and the flat price.

Speech to text Korean API: send language_code or auto-detect?

Sume STT 1.0 takes an optional language_code such as ko; omit it and the language is auto-detected. When to pin Korean, when to omit it, and how TTS differs.

503 provider_capacity_exceeded: same idempotency key or new?

A Sume 503 provider_capacity_exceeded means the provider queue is full. Docs say retry later with the same key; code replays the refusal, so use a new key.

Which field do I branch on in a Sume API error: code or next_action?

Branch on the HTTP status, then on error.code. Use retryable, retry_after_seconds and next_action to decide on a resend. Never match on message.

Which model did my AI video use? sume/auto does not say

Sume never discloses which family ran a sume/auto video: the response echoes sume/auto. What the docs say, why not to infer it, and how to pin a model instead.

API sends both Authorization Bearer and x-api-key: 401

Sume rejects a request that carries both Authorization: Bearer and x-api-key with 401 and 'Send only one API key credential.' Neither header wins. Fix it.

Sume webhook retry schedule: 10 attempts, then what?

Sume tries a webhook up to 10 times. Job webhooks use a fixed 30 s gap; run webhooks back off with jitter up to an hour. What happens next, and how to replay.

Suno alternative with an API: what Sume's Music Router does

Looking for a music generator you can call from code? What Sume's Music Router takes in, returns and does not do, so you can decide if it fits.

Suno API: the music API options and what Sume offers

Looking for a Suno API? Sume does not list Suno, but the Music Router takes a prompt and returns audio. Request shape, async polling, limits and fixed price.

Suno old models retired, what now? Keep a music API stable

Vendors retire music models and Sume's Music 1.0 is retiring gradually too. Call the router, log job.model and routed_model, and pin ids so changes are visible.

API sync mode wait timeout: the job is still running, so poll

When a Sume sync request returns before the job ends, the job still runs. Read sync.timed_out and sync.capacity_exhausted, then poll status_url, not a resubmit.

Avatar video quality settings: standard, plus or max?

Sume's talking avatar video takes quality standard, plus (default) or max. What each means, the other output fields, and how the preview relates to final tier.

AI avatar video length limit: 4 to 60 seconds per job

Sume's avatar video accepts an estimated 4 to 60 seconds per job, for scripts, scenes, previews and inline captions. Where it applies and what to do outside it.

Talking photo AI without watermark: what Sume documents

Sume's docs describe no watermark option for talking photo clips. They do fix the inputs: a still, Sume-hosted audio under 10 MB, 1-300 s or 5-14.8 s by route.

Team API keys: which wallet does a Sume run charge?

A Sume run charges the workspace its API key belongs to. A team key spends the team wallet; a personal key on a team Format is refused with 403.

TikTok trending videos: yesterday vs this month window

Sume's trending video search takes six windows, from yesterday to all-time. Which to pick for a spike versus a steady trend, and what each default is.

TikTok trending videos by country: Korea, US and UK via API

Pass a two-letter region such as KR, US or GB to Sume's trending video search to scope results to one country. Browse across US, GB and KR is not in production.

Duck background music under a voiceover with the Timeline API

Set soundtrack.duck_db (0 to 20) on POST /v1/timeline-1.0/render so the music dips under your voiceover spine. It needs a real spine; silence mode is refused.

Render a silent video from clips with the Timeline API

Set audio.mode to silence and a duration_seconds on POST /v1/timeline-1.0/render to join clips with no audio file. Which fields are illegal there, and pricing.

Timeline error too_many_chained_transitions: how to fix it

Timeline 1.0 refuses more than 8 adjacent fades with too_many_chained_transitions. Insert a hard cut. Also transition_too_long, transition_not_frame_aligned.

Render a vertical 1080x1920 video from clips with an API

Timeline 1.0 defaults to a 1080x1920 MP4. Set output width, height and fps, and pick fit cover, contain, stretch or blur for clips that do not match the frame.

Text to speech long text limit: 1,200 seconds, not just characters

Sume TTS 1.0 has two limits: 20,000 characters in, 1,200 seconds of audio out. Over the audio limit it fails with tts_duration_exceeded and captures no credit.

Text to speech sentence timestamps API: one lip-sync clip each

Sume TTS 1.0 returns gapless sentence segments; with wav output each gets its own audio_url, ready to drive a lip-sync clip. Request shape and the 5 s catch.

TTS WAV or MP3 for video: keep WAV until the last mux

Sume TTS 1.0 defaults to mp3 at 44100 Hz and 128 kbps. If the audio will be joined, sliced or muxed into video, ask for wav; mp3 adds padding at every edge.

Let the API pick the video model: sume/auto for vertical UGC clips

Send model sume/auto to POST /v1/videos and Sume picks the family. The response echoes sume/auto and never names the model. When to pin a model instead.

400 unknown_parameter on a Format run: read the suggestion

Sume rejects a top-level field it does not know with 400 unknown_parameter and names the likely one. Why webook_url and thread_id fail, and the fix.

Veo 3.1 personGeneration: allow_adult vs allow_all by mode

Veo 3.1 personGeneration is allow_all for text-to-video, allow_adult for image modes, and allow_adult only in some regions. Sume has no such field.

verifyWebhook async: forget await and you get a promise

verifyWebhook in @sume-com/sdk is async. Without await, a Promise is truthy, so your signature check never rejects. The await, raw body and replay rules.

Validate a video filter program for free before you encode

POST /v1/video-filter/check runs the same validation as the encode with no job and no credits. See what it returns and what it cannot promise about the encode.

unsupported_media_source: why the media API rejects your video URL

unsupported_media_source means video_url is not on the Sume media host. Import the clip first; which Sume video endpoints need a hosted URL and which don't.

video_trim_range_conflict: send end or duration, not both

The video trim API returns video_trim_range_conflict when a body has both end and duration. Send start plus exactly one of them; other range errors explained.

Wan 3.0 prompt guide for API users: prompt vs request fields

Write a Wan 3.0 prompt as a shot list with sound cues, and set length and size in request fields. What to put in the prompt and what to send to Sume's wan-3.0.

Wan 3.0 webhook: get notified when a 30-second clip finishes

Long Wan 3.0 clips take minutes. Pass callback_url on POST /v1/videos and Sume posts a signed webhook when the job ends, so you don't have to poll wan-3.0.

Wan 3.0 Node.js example: generate a video with fetch

A short Node.js script that submits a Wan 3.0 job to POST /v1/videos, polls until it completes and saves the MP4, with no SDK. It uses the wan-3.0 model id.

Wan 3.0 Python example: submit, poll and download a clip

A short async Python script that submits a Wan 3.0 job to POST /v1/videos, polls until it finishes, and saves the MP4. It uses httpx and the wan-3.0 model id.

Wan 3.0 seed and size: why the API returns 400 unsupported_parameter

wan-3.0 on Sume rejects seed and size rather than ignoring them. Use resolution and aspect_ratio instead. Why the 400 happens and how to fix the request.

Webhook not fired when a job is canceled? Jobs vs runs in Sume

A canceled Sume job sends job.canceled, but a canceled run sends no webhook at all. Which surface you called decides it; how to detect a cancel by polling.

Webhook payload too large (1 MiB)? Fetch the result URL

A Sume run receipt over 1 MiB arrives with payload null and a payload_too_large error. The run did not fail; fetch the receipt from result_url. Handler steps.

Webhook endpoint redirect 301 not followed: what Sume does

Sume does not follow redirects on webhook deliveries: a 3xx is a failed attempt, not a delivery. Point webhook_url at the final URL, not a hop.

Webhook dedupe id stable across retries: request_id and created_at

On Sume run webhooks, dedupe on the envelope request_id, which equals run_id and repeats on every retry. Order by created_at; request_id cannot.

Webhook retry: fixed delay vs exponential backoff, with numbers

Fixed delay retries at even gaps; exponential backoff doubles them. Sume uses fixed for job webhooks and backoff for run webhooks: how long each keeps trying.

Webhook unknown event type: return 204, not a 500

One Sume verifier covers run and job webhooks. Route on event and answer 204 for unknown types so a new event never becomes a 500 and a retry storm.

Webhook signature mismatch: compare the secret fingerprint first

When a Sume webhook signature will not verify, compare x-sume-webhook-secret-fingerprint with the dashboard fingerprint. It is safe to paste into a ticket.

Webhook secret rotation: no downtime with a 24-hour window

After you rotate a Sume webhook signing secret, deliveries carry two signatures for 24 hours. What the header looks like and how to redeploy safely.

Webhook send test vs redeliver: which one replays a real job?

Send test posts a dummy webhook.test payload to a URL you type. Redeliver re-sends a real terminal event and does not use one of the automatic 10 attempts.

Webhook status OK but output null? Read outcome: degraded

A Sume run webhook can say status OK while output is null. The run completed and billed; outcome is degraded and output_error says why. How to branch on it.

OpenAI Agents API vs a custom agent API for async runs

OpenAI's Agents API keeps durable sessions; Sume Agent Completions return a 202 receipt to poll or receive by webhook. Where each fits, and how they differ.

fal.ai and Replicate alternatives for AI video generation

Alternatives to fal.ai and Replicate for AI video: Kling's and Runway's APIs, Higgsfield, and Sume, compared on price unit, models, API shape and limits.

Text to video API: how it works, what it returns, cost

A text to video API takes a prompt and returns a job id, not a video: poll it or take a webhook, then download the file. Fields, flow and prices.

Text to video and image to video: how they differ

Text-to-video invents every frame from words; image-to-video starts on your picture and animates it. How they differ, and how one request does both.

What is a video API? The five kinds, explained

A video API lets code make, edit or deliver video over HTTP. The five kinds, what each one takes and returns, and how to tell which one you need.

AI model aggregator: what it is and when to go direct

An AI model aggregator sells many labs' models behind one API key, one request shape and one bill. What you gain, what you give up, and what to check.

AI model router: what it does and what you give up

An AI model router picks which model serves each request, so your code sends one id. How that differs from pinning a model, and the control you trade.

API vs SDK: what's the difference, and do you need one?

An API is the contract: routes, fields and errors. An SDK is a library in one language that calls that API for you. What an SDK adds, and when to skip it.

Asynchronous request-reply pattern: how it works

In the asynchronous request-reply pattern, the server accepts work with a 202 and a status URL, and the client polls or takes a callback until it's done.

Rate limit headers: what limit, remaining and reset mean

Rate limit headers report your request budget: the window's limit, what's left, and when it resets. What each means and how a client should pace itself.

HTTP 202 vs 201: created now, or accepted for later?

Return 201 Created when the resource exists by the time you respond, and 202 Accepted when the work will finish later. How 200, 201 and 202 differ.

504 Gateway Timeout from an API: did my request go through?

A 504 from an API means a proxy stopped waiting for the server. Your request may still be running, so check before you resend. How to avoid 504s.

fal vs Replicate: how calls, webhooks and billing differ

fal and Replicate both run many models behind one async API. fal bills per output and recommends its queue; Replicate bills most models by time.

fal.ai vs Higgsfield: developer API or creative suite?

fal is a developer platform billed per output; Higgsfield is a creative suite with apps and an agent that also sells an API. How they compare.

Does Runway have an API? Yes: how Runway Dev works

Yes. Runway's developer platform has an HTTP API with Node and Python SDKs: start a task, poll it, read the output. Models, routers and costs.

Edit decision list (EDL): what it is, with an example

An edit decision list (EDL) is the ordered list of edits that rebuilds a cut: source, track, transition, and timecodes. An example and its JSON form.

Creatify API: AI avatar videos, Aurora lip sync and credits

The Creatify API makes avatar videos from text or audio, Aurora talking videos from a photo and audio, and ads from a URL, billed in plan credits.

Arcads API: how it works, from credentials to video

Arcads has a public API: Basic auth with a client ID and secret, then a brand, a folder and a script, one generate call, and a poll for the video URL.

MCP server API key vs OAuth: which one to use

Use OAuth when a person signs in from Claude, Cursor, or another client; use an API key header for scripts, CI, and headless runs with no browser.

MCP server file upload: how a local file reaches a tool

A remote MCP server can't read your disk. A tool gets only the arguments your client sends, so the file must sit at a URL the tool accepts.

MCP tool limit in VS Code, Claude Code, and Cursor

VS Code allows 128 enabled tools per chat request. Claude Code has no fixed cap and defers MCP tools. Cursor's MCP docs name no number.

MCP tool exceeds maximum allowed tokens: the fix

Claude Code caps MCP tool output at 25,000 tokens by default. Raise it with MAX_MCP_OUTPUT_TOKENS, or make the tool return less data.

Text to speech API in Java: pick a voice, save the MP3

Call a text to speech API from Java: choose a voice selector and an audio format, POST the text, wait for the job, then write the MP3 to disk.

How to get a public URL for an image an API can fetch

Host the image where anyone can fetch it over HTTPS without a login: a public storage object, a public bucket URL, or your own site. Then test it.

Zero data retention for AI video APIs: what Sume keeps

Zero data retention means a provider stores nothing after it answers. Async AI video APIs can't: the video is a stored file. What Sume keeps, and why.

Synthesia API documentation: the quickstart, step by step

Synthesia's API docs make a video in four steps: a Legacy (v2) key, POST /v2/videos, poll until complete, then download from a time-limited link.

What is serverless inference? How it works and is billed

Serverless inference means calling a hosted AI model over HTTP with no servers of your own. Providers bill for compute time or for each output.

Do you need a GPU for AI video? Only to run the model

You need a GPU for AI video only if you run the model yourself. A hosted video API needs none: your code sends HTTPS and downloads an MP4.

How to build your own AI video generator (no training)

Build your own AI video generator from a front end, a small backend and a video model API. You don't train a model; your backend holds the key.

asyncio Semaphore: limit concurrent API jobs in Python

An asyncio Semaphore caps how many coroutines run a block at once. For paid API jobs, hold it from submit to the final status and size it to your limit.

p-limit npm: cap concurrent AI API jobs in Node.js

p-limit runs at most n promise-returning functions at once. For paid AI jobs, wrap the submit and the wait, not just the POST, and set n to your limit.

Circuit breaker pattern in Python for AI API calls

A circuit breaker stops calling a failing API: after repeated failures it opens and fails fast, then lets a trial call through. A Python version.

What is a dead letter queue? DLQs for AI job pipelines

A dead-letter queue holds messages that failed processing too many times, so they stop looping and can be inspected. Which AI job failures go there.

httpx timeout: the 5-second default and slow AI API calls

httpx times out after 5 seconds of network inactivity by default. How to set connect, read, write and pool timeouts for slow AI API calls.

How to get a Kling AI API key and authenticate requests

Create a Kling AI API key in the developer console, copy it once, and send it as a Bearer token. Legacy endpoints use an Access Key JWT instead.

fal AI vs Runway: a model host or a model maker's API

fal runs 1,000+ models from many labs and bills video per second or per video. Runway's API offers its own Gen-4.5 and more, billed in $0.01 credits.

Higgsfield API key: how to get one and send it

A Higgsfield API key is a key ID plus a secret made in Higgsfield Console, sent together in one Authorization: Key header from server code only.

Local vs remote MCP server: stdio or Streamable HTTP?

A local MCP server runs on your computer and talks over stdio; a remote one runs elsewhere and is reached by URL over Streamable HTTP. How to choose.

MCP SSE vs Streamable HTTP: which transport to use

SSE is MCP's older, deprecated HTTP transport; Streamable HTTP replaced it with one endpoint that takes every message as a POST. Which to choose.

MCP tools vs resources vs prompts: who controls each

MCP tools are called by the model, resources are attached by the app, and prompts are picked by the user. What each one is for, and how to choose.

How to test an MCP server: Inspector, Postman, or curl

Test an MCP server with the MCP Inspector: connect, sign in or add an auth header, list tools, and call a read-only one. Postman and curl work too.

MCP error codes: what -32601, -32602, and -32001 mean

MCP error codes are JSON-RPC codes. What -32700 to -32603 mean, why -32001 is a client-side timeout, and how a failed tool call differs from both.

Stateless MCP server: sessions, Mcp-Session-Id, and handles

A stateless MCP server keeps no session between requests. What Mcp-Session-Id does, what 2026-07-28 removed, and where state goes instead.

MCP JSON config: what's in mcp.json and why clients differ

An MCP JSON config lists servers by name: a command for local ones, a URL and headers for remote ones. Why the key names differ between clients.

MCP tool call result structure: content, structuredContent

An MCP tool call result has a content array, optional structuredContent, and isError. What goes where, how images travel, and how errors look.

MCP tool description: what to write and how long it can be

An MCP tool description is the text a model reads to pick and call a tool. What the spec says, where Claude Code cuts it short, and what to write.

How to create an SRT file from text: time it with TTS

An SRT file needs a start and end time for every line. Voice your text with TTS word timings, then write each timed sentence as a numbered block.

Speech to text API in Java: transcribe audio with HttpClient

Call a speech to text API from Java with the JDK HttpClient and Jackson: post the audio URL, poll the job, then read the transcript and word times.

401 vs 403 vs 404: what each API error tells you

401 means your credentials are missing or invalid, 403 means they aren't enough, and 404 means not found, or hidden from you. How to fix each one.

curl bearer token: how to send the Authorization header

Send a bearer token with curl in an Authorization: Bearer header, in double quotes so $TOKEN expands, or use --oauth2-bearer. Fixes for each 401.

400 Bad Request invalid JSON: causes and how to fix it

A 400 Bad Request for invalid JSON means your body did not parse. Check shell quoting, single quotes, trailing commas, and unserialized objects.

Retry-After header: how long to wait after a 429 or 503

Retry-After tells a client how long to wait before retrying: a number of seconds or an HTTP date, sent with 429 or 503. How to read it and what to do.

Why an API returns 404 Not Found, and how to fix it

An API returns 404 when no route matches your path or method, or when the id doesn't exist for your credentials. How to tell them apart and fix each.

Retryable HTTP status codes: which errors to retry

Retry network errors, 408, 429, and 5xx with backoff; skip most other 4xx. Retry a POST only with an idempotency key, and read the API's retry flag.

429 vs 503: rate limit or server overload?

429 means you sent too many requests in a given time; 503 means the server can't handle requests right now. Both can carry Retry-After. What to do.

Is POST idempotent? No, but PUT and DELETE are

No. HTTP defines GET, HEAD, OPTIONS, TRACE, PUT and DELETE as idempotent, but not POST or PATCH. An idempotency key makes a POST retry safe.

Webhook vs API: what's the difference?

An API call is your code asking a server for something; a webhook is the server calling your URL when something happens. The two work together.

Long polling vs short polling: what's the difference?

Short polling asks on a timer and gets an instant answer; long polling holds each request open until there's news or a timeout, then asks again.

Bearer token vs API key: what's the difference?

An API key is a kind of credential; Bearer is a way to send one, in the Authorization header. A key can travel as a bearer token, as OAuth tokens do.

Where to store API keys: server, CI, and local dev

Keep API keys server-side: an env var fed by a secret manager in production, your CI's secret store in pipelines, a git-ignored file on your laptop.

Webhook security best practices: a receiver checklist

Accept HTTPS only, verify an HMAC over the raw body in constant time, reject stale timestamps, dedupe on the event id, and answer 2xx fast.

HMAC vs digital signature: what each proves for webhooks

An HMAC proves the sender holds a shared secret. A digital signature is made with a private key and checked with a public one, adding non-repudiation.

Cron expression with 6 fields: seconds first or year last?

Standard cron has 5 fields. A 6-field cron expression adds seconds at the front (Spring, Quartz, Azure Functions) or a year at the end (AWS).

FFmpeg trim video: cut by time, with or without re-encoding

Trim a video with FFmpeg: -ss before -i to seek, -t for the length, and -c copy to skip re-encoding, which starts the cut at the keyframe before.

FFmpeg height not divisible by 2: why and how to fix it

The error means a yuv420p encode got an odd height (or width). Make both even: scale with -2 or round with trunc(ih/2)*2. How Sume rounds sizes.

yuv420p10le vs yuv420p: 8-bit vs 10-bit pixel formats

yuv420p and yuv420p10le are both planar YUV 4:2:0. yuv420p stores 8 bits per sample; yuv420p10le stores 10, little-endian, in 16-bit words.

Faststart MP4: moving the moov atom to the front

A faststart MP4 has its index, the moov atom, at the start of the file. FFmpeg moves it there with -movflags +faststart in a second pass.

FFmpeg extract audio from video: copy, MP3, or WAV

Extract audio from a video with FFmpeg: -vn drops the picture, then -c:a copy keeps the audio as it is, or an encoder writes WAV or MP3.

FFmpeg extract frames from video: one, every second, or all

Extract frames with FFmpeg: -frames:v 1 saves one image, -r 1 saves one per second, and a numbered file pattern writes every frame.

FFmpeg concatenate videos: concat demuxer vs concat filter

Concatenate videos with FFmpeg: the concat demuxer joins matching files with -c copy and no re-encode; the concat filter re-encodes mixed clips.

FFmpeg merge audio and video: -map, copy, and -shortest

Merge audio and video with FFmpeg: map the video from one file and the audio from the other, copy the video, and add -shortest to match lengths.

Text to image API: send a prompt, get image URLs back

A text-to-image API turns a prompt sent over HTTPS into generated images. How to call one: the request, the response, slow jobs, and the cost.

How long does it take to generate an AI image?

On Sume, most AI images finish inside the 30 seconds the API holds a request open. What makes one take longer, and how to tell slow from stuck.

MCP tool annotations: readOnlyHint and how clients use them

MCP tool annotations are optional hints such as readOnlyHint. What each one means, its default, and how ChatGPT, VS Code, and Copilot use them.

MCP server needs authentication in Claude Code: how to fix

Claude Code flags an MCP server as needing authentication after a 401 or 403 it can't clear. How to sign in again, and when an API key fits better.

Text to speech with highlighted words: sync word timings

Highlight words as text to speech plays: get word timestamps with the audio, then mark the word whose time range holds the player's current time.

Text to speech API in Python: request, poll, save the MP3

Call a text to speech API from Python with Requests: POST the text and a voice, poll the job, then save the MP3. A complete script for Sume TTS 1.0.

Text to speech API in JavaScript: save an MP3 from Node.js

Call a text to speech API from JavaScript on your server: submit the text with the Sume SDK in Node.js, wait for the job, then save the MP3.

Batch transcription API: transcribe many audio files

Batch transcription by API is a loop: one speech-to-text job per file, keyed by the file's id, collected by webhook or polling. How it works on Sume.

Speech to text in Python: transcribe audio with timestamps

Speech to text in Python with Requests: send the audio URL, poll the job, then read the transcript and word timestamps. A script for Sume STT 1.0.

Speech to text API in JavaScript: audio to text in Node.js

Call a speech to text API from JavaScript on your server: send the audio file's URL with the Sume SDK in Node.js, wait for the job, read the text.

How to automate AI video generation from code

To automate AI video generation, save a working brief as a recipe, start it from code per event, list or schedule, and take each video by webhook.

202 Accepted vs 200 OK: is the job done yet?

200 OK means the request succeeded with its result; 202 Accepted means work was accepted but isn't done. On a video API, check the body's status.

415 Unsupported Media Type: causes and the fix

A 415 Unsupported Media Type error means the server refused your request body's format. Fix the Content-Type header: send JSON as application/json.

409 Conflict error: what it means and when to retry

A 409 Conflict means the request clashed with the server's current state. Read the error code to choose: resend, wait for the job, or fix the call.

Exposed API key? Revoke it, then check what it did

An exposed API key works for anyone until you revoke it. Rotate to a new key, revoke the old one, then check its last use, its spend, and your jobs.

Can multiple people use the same API key?

They can, but they then share its rate limit, usage record, and revocation. Give each person or service its own key, and know what stays shared.

Free webhook tester: see what a webhook sends before coding

A free webhook tester gives you a public HTTPS URL and shows each request's headers and body. Point Sume's Send test at it to see a signed payload.

Create a talking avatar using Python with the Sume API

Create a talking avatar in Python with Requests: generate the avatar, poll its job, send it a script to speak, then read the finished video's URL.

Bulk image generation: script hundreds of AI images via API

Send one image request per row, each with its own Idempotency-Key, async mode, and up to four images per call. Your plan's concurrency sets the pace.

Python image generation API: generate and save AI images

Generate images from Python with Requests: POST a prompt to an image API, read the URLs from a 200 or poll the 202 job, then save each file.

Sume API status values: jobs, runs, queues, and webhooks

Sume API status values in one place: jobs, /v1/videos, Format and Agent runs, bulk queues, webhook deliveries, usage rows, grants, and balance.

Sume API error codes by surface: one index with next steps

Sume API error codes indexed by surface: common codes, paid generation, Formats, Scheduled runs, Agent Completions, media tools, and hosted MCP.

Sume API pagination: cursor, starting_after, and page limits

How each Sume list endpoint pages: cursor and has_more on Formats and runs, starting_after on /v1/jobs, and limit-only lists that have no cursor.

Sume API headers: auth, idempotency, If-Match, rate limits

Every HTTP header the Sume API reads or sends: the API key, Content-Type, Idempotency-Key, If-Match, request ids, rate limits, and webhook signatures.

Sume API glossary: Format run, spend cap, idempotency key

Sume API terms in one or two sentences each: Format, run, job, spend cap, idempotency key, wallet, agent fee, webhook, artifact, and more, with links.

Best AI video generation API for developers: how to choose

No single AI video generation API is best for every developer. Compare price units, models, API shape, and limits, then pick by what you need back.

Do AI-generated video URLs expire? How Sume stores outputs

Not for Format runs and Agent Completions: Sume returns their media on media.sume.com URLs that do not expire, and anyone holding a link can open it.

Download a generated video from the Sume API: 401s and 302s

Sume unsigned_urls need your API key and answer with a 302 redirect. Download the MP4 with curl -L or code, and fix each 401, 404, or 409.

Webhook URL rejected as invalid? Sume's webhook URL rules

Sume answers 400 invalid_request when a webhook URL is not public HTTPS. The rules for scheme, host, port, and credentials, and the check at delivery.

Sume API media URL rules: which URLs each endpoint accepts

Sume generation endpoints fetch public HTTPS media URLs. Trim, filter, frames, inspect, and Timeline take only your workspace's media.sume.com URLs.

Sume job types and concurrency: which calls take a slot

Each Sume endpoint's job type and slot use: every generation job, trims and Timeline included, takes a concurrency slot; frames and inspect don't.

Sume API endpoints list: routes, scopes, idempotency

An index of the Sume API's public routes by family: which need no key, which scope each needs, where Idempotency-Key applies, and the post on each.

Sume API output file formats: MP4, PNG, WebP, WAV, MP3

The file each Sume API endpoint returns: MP4 from Timeline and the editing tools, PNG, JPEG, or WebP images, WAV or MP3 audio, and JSON transcripts.

CORS error calling the Sume API from a browser: the fix

Browsers block direct calls from your site to api.sume.com, and API keys must never ship in frontend code. Call Sume from your server and proxy it.

MCP server OAuth flow on Sume: discovery, consent, PKCE, and scopes

Sume's hosted MCP server runs its own OAuth: a 401 points to discovery metadata, the user consents on mcp.sume.com, and PKCE S256 yields a one-hour token.

Fix MCP insufficient_scope on Sume: scopes, missing tools, timeouts

An MCP insufficient_scope error on Sume means the OAuth session lacks mcp:write. Start with mcp_health, then fix scopes, missing tools, and timeouts.

Sume agent run errors: action_run_in_progress, agent_run_not_found

409 action_run_in_progress means a schedule run is already active and you sent reject. 404 agent_run_not_found means the id is not your Agent Completion run.

How to run the Sume CLI in CI and on headless servers

Run the Sume CLI in CI with a pinned release binary, SUME_API_KEY from your secret store, an isolated SUME_CONFIG_DIR, a doctor preflight, and --json output.

Sume CLI commands: a reference for account, jobs, assets, and skills

The Sume CLI commands beyond generation: login and account, health and doctor checks, schema discovery, jobs, assets, batch helpers, skills, and aliases.

Sume CLI not working? Fixes for login, API base, jobs, and media

When the Sume CLI is not working, run four read-only checks, then fix the cause: a missing key, a wrong API base, an unfinished job, or a rejected media URL.

List video generation models via API: GET /v1/videos/models

GET /v1/videos/models lists every Sume video model with its resolutions, aspect ratios, durations, frame and reference types, audio flag, and pricing SKUs.

How to poll a video generation job status API: Sume's /v1/jobs

Poll GET /v1/jobs/{id}/status until terminal is true, wait next_poll_after_seconds between reads, then fetch /result once result_ready is true.

Sync vs async API for video generation: Sume's four submit modes

Sume's submit modes are async, sync, subscribe, and webhook. sync and subscribe wait 30 s at most, so for video, submit async and poll, or take a webhook.

Sume TypeScript SDK quickstart: install, client, errors, retries

Install @sume-com/sdk, create one client with createSumeClient, and call typed operations that return errors instead of throwing, with retries built in.

Why did my AI video generation job fail? Reading the job error

A failed Sume job carries a public error: category, stage, retryable, public_reason, and next_action. Where to read it, and what each field tells you to do.

Wait for a Sume job or run to finish in the TypeScript SDK

waitForJob, waitForRun, and subscribeFormatRun poll a Sume job or run until it ends. Here are their default timeouts, the errors they throw, and retries.

List jobs API: filter video jobs by status and recover lost job ids

GET /v1/jobs lists a workspace's jobs newest first, up to 100 per page, filtered by status, type, or run_id. Page with starting_after; join on idempotency_key.

Sume API catalog: list available models, endpoints, and prices

GET /v1/catalog lists Sume API capabilities with their model ids, invoke URLs, availability, runtime readiness, and pricing. It needs no API key.

Sume API OpenAPI spec: download it, browse it, generate a client

Download the Sume API's live OpenAPI spec from api.sume.com/reference/json, browse it in Swagger UI, and generate a client for languages beyond TypeScript.

Sume job vs run: generation jobs and Format, Action, Agent runs

A Sume job is one generation request tracked at /v1/jobs; a run is one agent turn from a Format, schedule, or Agent Completion. Ids, webhooks, and waits differ.

Sume webhook not received? How to debug delivery and signatures

When a Sume webhook does not arrive, read webhook_delivery on the job or run, prove your endpoint with a test delivery, then redeliver the real event.

How long does AI video generation take? Sume jobs, runs, and limits

Sume's docs put one video job at 30 seconds to several minutes and a long-form Format run at 15 to 30 minutes. Here are the phases, stall signs, and limits.

AI video generation API progress updates without a push stream

Sume has no SSE or WebSocket progress stream. Poll job events or a Format run's phase timeline, show avatar scene stills, and promise no ETA.

How to cancel an AI video generation job or run with the Sume API

A Sume generation job cancels only before generation starts; Format, Action, and Agent run cancels are idempotent. Routes, responses, billing, webhooks.

Video generation API timeouts: Sume's wait caps, SDK defaults, expiry

A Sume sync submit waits 30 s at most and SDK waits default to 10–20 minutes, but a client timeout never cancels the job. Every limit, and your own deadline.

Video generation API 400 errors: unsupported parameter and fixes

Why POST /v1/videos answers 400: invalid_request, unsupported_parameter for size, seed, or provider.options, and unsupported_capability. Causes and fixes.

Sume request_id vs job_id vs run_id: which ID to store and quote

Store the job or run id, dedupe webhooks on job_id or the run envelope's request_id, and quote the req_ request id with the job or run id to Sume support.

Sume API quickstart: your first video generation call in five steps

Create a Sume API key, send one POST /v1/videos request with sume/auto, poll the job, and download the video. Five short steps, then where to go next.

Sume developer dashboard: API keys, usage, jobs, billing, playground

Sume's developer dashboard, page by page: create API keys, buy credits on Billing & subscription, inspect Jobs and Usage, and try Avatar in the playground.

Idempotency keys for AI video APIs: retry without paying twice

An idempotency key makes a retried create return the original run or job instead of a second paid one. How Sume's Idempotency-Key works on each API.

Spend caps for unattended AI agents: how Sume bounds each run

An unattended agent has no one to approve spend, so Sume caps generation per run: required on Agent Completions, and up to $500 on Format runs.

Video API media inputs and outputs: public URLs in, Sume URLs out

Sume generation requests take media as public HTTPS URLs in named fields, with no separate upload step, and return Sume-hosted media.sume.com URLs to store.

How to generate avatar video from the terminal with the Sume CLI

Install the Sume CLI, sign in through the browser, and submit talking avatar videos. Image, Video, and Music 1.0 have no CLI submit command yet.

How Sume API keys work: scopes, auth headers, hosts, and rotation

A Sume API key is a workspace-scoped secret sent as Bearer or x-api-key, never both. Scopes are fixed at creation, and a key works only on its own host.

Video job concurrency and queueing on Sume: limits and queue_full

Sume accepts valid paid jobs as queued and runs them under a plan concurrency limit. A submit fails with 429 queue_full only when the queue is also full.

Sume API errors and rate limits: codes, 429s, and when to retry

Sume API errors share one envelope with a stable code and a request id. Reads and writes have separate per-minute budgets; queue_full is not a rate limit.

Signed webhooks for Sume video runs: events, retries, verification

Sume sends one HMAC-SHA256 signed POST when a Format, Action, or Agent Completion run completes or fails. Verify the raw body and dedupe on request_id.

Which MCP server lets Claude Code or Cursor generate video and images?

MCP servers that let Claude Code and Cursor make video and images: Sume, fal, Replicate, Runway, Higgsfield. Endpoints, sign-in, billing, setup.