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

Claude Code subagent autoCompactWindow: keep Sume job ids

Claude Code 2.1.296 lets a subagent auto-compact earlier than the main chat. Keep Sume job ids out of the summary and re-read state with jobs_status.

CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL: model choice vs Sume spend gates

Claude Code 2.1.296 can run every workflow agent on one model. Sume's idempotency_key, dry_run and max_spend_credits gates do not change with the model.

Qwen Image 2.1 rate limits: Pro 20 RPM, Turbo 120 RPM vs Sume's queue

Alibaba caps qwen-image-2.1-pro at 20 requests a minute and Turbo at 120. How long 1,000 images take at each cap, and how Sume's plan queue behaves instead.

GET /v1/balance returns available_credits: a TypeScript gate

Sume's balance read returns whole credits in available_credits, a funded or empty state, and expiring_soon_credits. Gate a job on it in TypeScript.

402 insufficient_credits: read required and available credits

The Sume 402 body gives details.required_credits and details.available_credits, whole credits. Compute the shortfall in Python and stop a batch cleanly.

mcp_toolset cache_control: cache the Sume tool list on Haiku 5.5

An mcp_toolset accepts cache_control. Haiku 5.5 caches prompts of 512+ tokens; reads cost $0.01 per MTok up to 100,000 tokens. Set it on the toolset.

MAI-Transcribe-2 on OpenRouter: wav, base64, transcript JSON

OpenRouter exposes microsoft/mai-transcribe-2 at POST /api/v1/audio/transcriptions with base64 audio and returns JSON with transcript and usage.

100 video jobs at once on Pro: 24 are accepted, then 429

Sume Pro accepts 24 generation jobs at a time (4 processing + 20 queued). Submit 100 and the rest get 429 queue_full. Capacity by plan.

250 clips on Black Friday: jobs Sume accepts at once

Sume accepts 6 jobs at once on Free, 24 on Pro, 48 on Startup, 120 on Scale (processing plus queued). Submit 250 clips in waves.

402 or 429: which gate stops a 100-ad batch first on Sume?

A 100-ad batch hits 429 queue_full when the plan's accepted capacity runs out and 402 when the balance does. Which comes first depends on job price.

Extend a Grok Imagine video on Sume: chain by last frame

xAI's guide lists video extension from the final frame. Sume's Grok row has no extend, so pull a late frame with video-frames and start the next clip from it.

Claude Code 2.1.296: MCP tool names over 128 characters, and Sume's

Claude Code 2.1.296 leaves out an MCP tool whose name exceeds 128 characters. The longest tool name in Sume's hosted list is 28, so none are near it.

Claude MCP connector denylist: switch off Sume's paid tools

Enable all Sume tools in an mcp_toolset, then disable the paid ones by name. Anthropic recommends denylisting write tools for read-only assistants.

Claude MCP connector supports tool calls only: how Sume results arrive

The Messages API connector supports only MCP tool calls, not resources or prompts. Fetch Sume job results with the jobs_result tool, not a resource read.

Claude MCP connector is not ZDR-eligible: check before sending briefs

Anthropic lists the MCP connector beta as not eligible for zero data retention. If your org requires ZDR, do not route Sume briefs through it.

Clef takes 1 to 64 questions per request: check a brief in one call

Cloudflare's Clef page allows 1 to 64 typed questions on one state. Put the brief checks in one request, then submit to Sume once.

Clef image limits: 4 images, 4 MiB, 16 MP before an image-to-video job

Clef accepts up to 4 PNG, JPEG or WebP images, 4 MiB and 16 megapixels each. Pre-check a reference frame against those limits before you pay for a render.

Detect a new video model on Sume: a Python diff of /v1/videos/models

Grok Imagine 1.5 Lite is on xAI's price table, not Sume's. A short Python script diffs GET /v1/videos/models against a saved list to flag new ids.

Edit a video with a prompt API: Python script for Omni Flash 1.1

Send a clip and a sentence to POST /v1/video-router/generate with gemini-omni-flash-1.1 and video_url, poll the job, read the result. Stdlib Python.

Which fps to set: TikTok 23-60, YouTube list, Sume's 24/25/30/60

Sume Timeline fps can be 24, 25, 30 or 60, and every one is in TikTok's 23 to 60 window and on YouTube's list. Leave fps unset to match your sources.

Gemini Omni edit returns 400: the five field mistakes on Sume

A video_url edit on gemini-omni-flash-1.1 fails with 400 when you add aspect_ratio, generate_audio false, bitrate_mode, reference audio, or other media. Fixes.

Generate 100 images with the Sume Image API: async jobs and polling

Submit each image with mode async, collect job ids, then poll status. Each job bills only if it completes; failed jobs use no credits.

Generate Grok Imagine clips from an agent with the generate_video tool

Hosted MCP exposes generate_video, which replaced video-router_create. How an agent should call it for grok-imagine-video-1.5 and what to read first.

Can the Sume Image API output SVG? Not today; formats you get

No: output_format svg is in the schema for parity, but no catalog model advertises it, so the request is rejected. Sume returns png, jpeg or webp.

Image edit reference limits on Sume: 16 on GPT Image 2.5, 10 elsewhere

ChatGPT Image 2.5 takes up to 16 input_references; most edit rows take 10, Ideogram 4.5 takes 5. Imagen, Recraft and Qwen Image Max take none.

GPT Image 2.5 custom size: 1920x1080 fails, use 1920x1088

Edges must be multiples of 16, so 1080 is out. 1920x1088, 1280x720 and 3840x2160 pass the Sume rules; 1080x1350 does not, 1088x1360 does.

GPT Image 2.5 quality xhigh and max: which rows accept them on Sume

Only ChatGPT Image 2.5 (both variants) accepts xhigh and max; omit quality and it runs at high. Other rows reject them. Credits scale with quality.

Grok Imagine Video 1.5 in TypeScript: first frame, poll, download

A Node 18+ script that animates one still with grok-imagine-video-1.5 on POST /v1/videos, polls the job, and saves the MP4. Fields Sume refuses are listed.

AI image edit changed my crop: aspect_ratio auto vs omitted on Sume

On edit calls, aspect_ratio auto matches the reference; leaving the field out is not the same thing. Ideogram 4.5 keeps the source shape when you omit it.

Stream partial images from the Sume Image API? 400, use async events

stream: true returns 400 streaming_not_supported and every catalog row reports supports_streaming false. For progress, submit async and read job events.

Kling 4 or Vidu Q4 on Sume: model_not_found and what to call

Sume has no kling-4 or vidu-q4 row, so a submit with those ids fails with 404 model_not_found. Call kling-3, wan-3.0 or sume/auto. Read 2026-10-13.

Launch-day checklist before moving off kling-3 on Sume

Before you swap kling-3 for a newer Kling or another family, check the catalog, 1080p-only output, 4-15 s, no references, and ratio support. Read 2026-10-13.

LinkedIn Posts API video post body: the fields and a Python builder

A LinkedIn video post needs author, commentary, visibility, distribution, a urn:li:video media id and lifecycleState PUBLISHED. Version 202510 sunsets Oct 15.

LinkedIn video post stuck in processing: two status ladders to poll

LinkedIn tracks a video asset (PROCESSING, AVAILABLE) and a post (PUBLISH_REQUESTED, PUBLISHED) separately. Poll both, then compare with a Sume job poll.

MAI-Voice-2.1 on OpenRouter: audio/speech call, mp3 or pcm

OpenRouter serves microsoft/mai-voice-2.1 at POST /api/v1/audio/speech and returns raw audio bytes, mp3 or pcm. Here is the call and how Sume jobs differ.

Decision-1 returns 429: back off, then fail closed before Sume

Microsoft says retry a Decision-1 429 with exponential backoff. Cap the retries, then route the brief to review so a throttled gate never renders.

Decision-1, then Haiku 5.5, then a person: a three-tier gate

Add an abstention option to a Decision-1 choice, escalate unsure briefs to Claude Haiku 5.5, and keep people for the rest, before any paid Sume call.

Decision-1 picks a video model; check it against Sume's catalog

Let a choice question pick among three model ids, then validate the pick against GET /v1/videos/models and fall back to sume/auto when it is missing.

Microsoft-Decision-1 returns 422 or 404: deployment name and endpoint

Decision-1 wants your deployment name in `model`, not the model name. A 422 means a bad name or question; a 404 means a wrong endpoint or path.

Microsoft-Decision-1: gate a text brief before a paid Sume video job

Send the brief to Decision-1 as a choice question, render only on 'render', and fail closed on any error. Python sample using the Foundry systemone path.

Decision-1 score question: order a Sume render queue by urgency

A Decision-1 score is a probability-weighted index, good for ordering but not an absolute grade. Sort briefs with it, then respect Sume's queue limits.

Decision-1: judge a pending generate_video call as JSON state

Decision-1 accepts JSON as state. Pass the tool arguments of a pending Sume call and ask one noul question; keep keys and signed URLs out of the state.

Decision-1: ask three questions in one request before a Sume render

Questions sharing a state can share one Decision-1 request. Route, rate severity and check repeat contact once, then render only if all three pass.

Image API returned 202 at 4K: handle the job envelope in Python

A slow 4K, high-quality or large-n request can miss the 30 second wait and return 202 with a job, not images. Branch on the status code, then poll.

Omni Flash edit: test at 360p, then run the final at 1080p

Prove an Omni Flash edit prompt at 360p ($0.0375 a second on Sume) before paying for 1080p ($0.1875 a second). Use a new Idempotency-Key for each resolution.

Omni Flash edit in sync mode: it waits 30 seconds, then you poll

Sync mode on Sume waits at most 30 seconds. An Omni edit may not finish in that time, so read the job id from the reply and poll it. Never resubmit.

Omni Flash image-to-video: frame_images or input_references?

frame_images with first_frame pins your photo as the opening frame. A single input_references image conditions the whole clip instead. Pick by what you want.

One prompt across video models: what to rewrite on Sume

A prompt that works on one Sume video row may need edits on another: Omni uses IMAGE_REF tokens, Kling takes no references, Veo is text-only. Read 2026-10-13.