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.

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 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.

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.