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.

Wan 3.0 and Seedance 2.5 auto duration on fal: send seconds on Sume
fal lets Wan 3 pick its own length and Seedance 2.5 accepts auto. On Sume, send an integer duration so the price is known before you submit.

Wan 3.0 on Sume: one id, three modes, and which field picks each
fal lists three Wan 3 endpoints. Sume has one id, wan-3.0, and picks text, image or reference-to-video from frame_images and input_references.

Max text length for Gemini and OpenAI TTS: the docs name none
The OpenAI TTS guide and the Gemini speech page I read state no input limit. Sume publishes 20,000 characters and 1,200 s; here is a splitter.

Which Sume video rows take video_url: Omni edit, Recast or Genjutsu
Three Sume rows take a source video_url: Gemini Omni edit ($0.125 a second at 720p), H3 Max Recast ($0.375 and up) and Genjutsu ($0.3975 and up). Pick by task.

Edit a transcript with plain-language instructions: ElevenLabs STT
ElevenLabs STT edits a transcript from an instruction of up to 2,000 characters and returns edited_transcript. Sume captions align your own script_text.

Grok Imagine video extension vs chaining clips on Sume
xAI extends a Grok Imagine clip from its final frame. Sume has no extend call for Grok: save the last frame and submit it as first_frame on the next job.

Firebase allows 1-hour HTTP functions; don't hold a Sume job open
Firebase HTTP functions can run up to an hour and Cloud Tasks covers longer work. Even so, submit Sume jobs async and take the result by webhook or status poll.

GitHub wants a 2XX in 10 seconds, Sume times out at 10: dedupe both
GitHub and Sume both give a webhook receiver 10 seconds. GitHub reuses X-GitHub-Delivery on redelivery; with Sume, use job_id as the dedupe key.

Stripe events arrive out of order; Sume sends only terminal job events
Stripe does not order events and says to dedupe on event ID. Sume sends only terminal job events keyed by job_id, so order rarely matters. Fetch state.

Stripe tolerance 0 disables replay checks; Sume keeps a 300 s window
Stripe's default webhook tolerance is 5 minutes and 0 turns the check off. Sume's documented window is 300 seconds. Never set zero; reject stale timestamps.

Runway polls at 5s with jitter; Sume gives next_poll_after_seconds
Runway says poll at 5 seconds or more with jitter and backoff. Sume returns next_poll_after_seconds, so your loop can obey the server instead of guessing.

Write Amazon's contains-synthetic-performer tag with exiftool
Amazon wants contains-synthetic-performer in XMP dc:subject on photorealistic AI people. Sume does not write it; tag the downloaded file yourself with exiftool.

Wan 3.0 on Alibaba: 300 requests a minute across all regions, planned
Alibaba caps Wan 3.0 at 300 requests per minute across all six regions, so a region switch does not add headroom. How to plan a batch of 30 s jobs.

Lyria 3.5 prompts for video BGM: section tags and timestamps
Use [Verse]/[Chorus]/[Bridge] tags and [0:00-0:10] timestamps in a Lyria 3.5 prompt to pin an arc to a video. A worked prompt and a Sume call are below.

Add the EU AI icon to a clip with Timeline compose overlay
The EU publishes an AI icon as PNG and SVG. Sume timeline compose with operation overlay puts a hosted still on a hosted video and returns a new MP4 for $0.02.

Gemini Omni 1.1 Flash has no shutdown date yet: how to pin and watch
Google lists gemini-omni-1.1-flash with no shutdown date announced, while Veo 3.1 previews end October 22. Pin the id, and watch the deprecations page.

Veo 3.1 preview ids vs gemini-omni-1.1-flash vs Sume's Omni id
Three Veo 3.1 preview ids end October 22, 2026 and Google names gemini-omni-1.1-flash as the replacement. Sume spells its id gemini-omni-flash-1.1.

Veo 3.1 deletes clips after 2 days: archive them, and the Sume path
Google keeps Veo 3.1 videos on its server for 2 days, and extending a clip resets the timer. Download on completion. Veo 3.1 is not in the Sume catalog.

FLUX 3 Image 503: read the JSON status before you retry
BFL says a FLUX 3 Image 503 may be retryable once you check the JSON status; 422, 400 and 402 are not. Sume sync failures return a 502 with a retryable flag.

FLUX 3 Image 0-1000 boxes to pixels on a 1920x1080 canvas
FLUX 3 Image boxes are [top, left, bottom, right] on a 0-1000 grid. The BFL example [250, 50, 850, 650] becomes x 96, y 270, 1152x648 pixels on 1920x1080.

FLUX 3 Image images field: 2-10 references vs Sume's input_references
BFL's images field takes 2-10 references addressed as <ref_image_N>. Sume's input_references takes up to 10, or 16 on ChatGPT Image 2.5.

Pinterest reads IPTC metadata for AI labels: keep it before you pin
Pinterest says its AI detection follows the IPTC Photo Metadata Standard. If you tag a Sume image, keep that metadata; Sume's docs do not say it embeds any.

MCP SEP-2352: credentials bound to issuer, re-register on a new host
MCP SEP-2352 binds client credentials to the issuer and deprecates DCR for Client ID Metadata Documents. Re-register if the Sume host changes.

MCP subscriptions/listen and tasks versus Sume's pull-based job events
The 2026-07-28 MCP spec adds subscriptions/listen and a tasks extension. Sume has no SSE or WebSocket: poll job events, or use jobs_wait with a 55-second cap.

MCP's 12-month deprecation window: what Sume tool authors can rely on
MCP 2026-07-28 sets a 12-month deprecation policy and deprecates HTTP+SSE, Roots, Sampling and Logging. Sume tool authors should read tools_list.

Nano Banana 2 Lite's 10 aspect ratios: what to send for 4:5
Lite accepts 10 ratios including 4:5 and 21:9. On Sume, Instagram 1080x1350 is aspect_ratio 4:5, and Nano Banana Pro or 2 list it; Imagen and Grok do not.

Nano Banana 2 reference slots (10+4+3) vs Sume's flat reference list
Google splits Nano Banana 2 references into 10 object, 4 character and 3 style slots. Sume's input_references is one flat list capped at 10, with no slots.

Nano Banana 2 thinking_level minimal or high: not on Sume
Google offers thinking_level minimal or high on the Nano Banana 2 variants. Sume's Image API has no such field, so sending it returns 400 unsupported_parameter.

First MCP call: Runway whoami vs Sume account_me and mcp_health
Runway says verify its dev MCP with whoami. On Sume, call mcp_health for endpoint and auth source, then account_me for the workspace; both are read only.

Ideogram 4.5 transparency claim vs Sume's background field
Higgsfield lists transparent backgrounds for Ideogram 4.5. On Sume, background works only on ChatGPT Image 2.5; other models need RMBG or Image 1.0.

GPT Image 2.5 1536x1024 preset vs custom sizes on Sume
1536x1024 is an OpenAI preset and passes Sume's custom-size rules too: edges multiples of 16, max edge 3840, ratio up to 3:1, 655,360-8,294,400 pixels.

GPT Image 2.5 cached input works only on the Responses API
OpenAI's cached-input rates ($1.25-$2.00 per 1M) for GPT Image 2.5 apply only to Responses API images. Sume bills token rates with margin and no cache discount.

GPT Image 2.5 references: OpenAI's page says 4, Sume accepts 16
OpenAI's image guide says up to four input images; Sume's docs allow 16 input_references on ChatGPT Image 2.5. The pages disagree, so test your count.

GPT Image 2.5 output_compression returns 400 on Sume: use Pillow
OpenAI offers output_compression 0-100 for JPEG and WebP; Sume returns 400 unsupported_parameter for it. Request png, jpeg or webp, then compress with Pillow.

Grok Imagine Image 2.0 makes 10 images per request; Sume's n cap
xAI says grok-imagine-image-2.0 returns up to 10 images per request at $0.04 each. Sume's n is 1-10 per request, with a lower per-model cap on x-ai/grok-image.

X Ads API media upload: simple for images, chunked for all media
X's Ads API lists POST media/upload for images only and a chunked upload for all media. Use the chunked route for video you render with Sume.

Which Sume spend guard applies: Completions, Formats, schedules, MCP
One table of the spend and retry guards on each Sume surface, for teams that put a new LLM or decision model in front of paid calls.

Marketing API v24 expiry runbook: replay the upload, not the render
When Meta's v24.0 window closes on October 6, 2026, fix uploads by replaying stored Sume job results. The same Idempotency-Key never bills a render twice.

Cloudflare Worker for a social video pipeline: SDK verifyWebhook
@sume-com/sdk 0.2.0 needs only fetch and WebCrypto, so verifyWebhook runs in a Cloudflare Worker. Verify the raw body, then answer 2xx before you post.

Threads video audio: AAC, 128 kbps, 48 kHz max, and what trim keeps
Threads wants AAC audio at up to 48 kHz and 128 kbps. Sume trim remuxes kept audio as AAC but has no bitrate field, so probe the clip and check the file.

DeepSeek V4.1 Flash JSON Output vs Sume output_schema: what differs
DeepSeek's JSON Output makes valid JSON but does not enforce a schema. Sume's output_schema is enforced on a run, with output null and output_error on a miss.

Graph API rate-limit codes 4, 17, 32, 613: stop, reuse the Sume job
Meta documents error codes 4, 17, 32 and 613 for rate limits. Map each to a pause and publish the stored Sume result later instead of re-rendering.

Sume job webhooks are terminal-only: drive a queue from three events
Sume sends job.completed, job.failed and job.canceled only, with no progress events. Publish on completed, alert on failed, and poll events for progress.

WhatsApp Business Tools MCP sets callback URLs: verify your receiver
The MCP can configure callback URLs and field subscriptions. Give it a public HTTPS receiver, and apply the same rule to the webhook_url you send Sume.

Sume run webhook outcome degraded: status OK but output is null
A Sume run webhook can say status OK and still carry output null. Branch on outcome (ok, degraded, error), not status, and dedupe on the envelope request_id.

Threads image post: 8 MB, 320 to 1440 px wide, from video frames
Threads images must be JPEG or PNG, up to 8 MB, 320 to 1440 px wide. Pull a still from a Sume clip with video-frames and clamp the long edge to 1440.

LinkedIn-Version has no default: pin YYYYMM in your video poster
LinkedIn does not apply the latest API version when the header is missing. Pin a YYYYMM value in config and fail loudly if it is unset.

Sume webhook five-minute replay window: reject stale deliveries
Sume signs timestamp.raw_body and advises a five-minute replay tolerance. Reject stale timestamps, refuse an empty secret, and keep job_id as the dedupe key.