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.

6 min readSume
All posts

Sume API error codes are lowercase error.code tokens in one shared envelope: a handful of common codes, such as unauthorized and rate_limited, apply across the API, and the rest are documented per surface: paid generation, Format runs and packages, Scheduled runs, Agent Completions, the media tools, and hosted MCP. Branch on the HTTP status first, then on code, then on next_action.

The codes below come from the docs page for each surface, starting with Errors and rate limits and Errors and spend, read on 2026-09-27. The envelope, the generic codes, and retry advice are covered in Sume API errors and rate limits; this page indexes codes by surface and links the post that explains each group.

Which error codes does each surface return?

Every code in a row appears in the docs for that surface. The sets are open: branch on the codes you handle and fall through on the rest.

From Errors and rate limits, Generation admission, Video generation, Image generation, Errors and spend, Bulk runs, Editing a Format package, Run a schedule via API, Agent Completions, the media tool pages, and MCP tools and gates, read 2026-09-27.
SurfaceCodesExplained in
Common API errors400 invalid_request or bad_request, 401 unauthorized, 404 not_found, 413 payload_too_large, 415 unsupported_media_type, 429 rate_limitedErrors and rate limits
Paid generation submit402 insufficient_credits, model_not_found, 409 idempotency_conflict, 429 queue_full, 503 provider_capacity_exceeded, provider_not_configured, job_ledger_not_configured, image_not_fetchable, input_media_unreachableConcurrency and queueing, 402 errors
Job result and cancel409 job_not_completed, job_not_cancelable, job_generation_already_startedPoll a job, Cancel a job or run
Failed job (error.category)validation, auth, quota, queue, generation_unavailable, generation_rejected, generation_timeout, runtime_unavailable, worker_timeout, internalWhy did my job fail?
POST /v1/videos and POST /v1/images400 unsupported_parameter; on images also provider_not_available and streaming_not_supportedVideo 400 errors, Image generation
Format run createunknown_parameter, output_schema_invalid, invalid_attachment, attachment_fetch_failed, insufficient_scope, workspace_key_required, format_not_found, format_inactive, format_api_trigger_disabled, format_run_in_progress, idempotency_key_in_use, organization_wallet_not_provisioned, format_run_failed_to_startFix schema violations, Find a Format
Format run reads and redeliver404 format_run_not_found, 404 format_run_queue_not_found, 409 run_not_completed, 409 webhook_not_configured, 409 run_not_terminalFormat run lifecycle, Debug webhook delivery
Failed Format run (receipt error.code)unattended_blocked, output_schema_unsatisfied, deliverable_missing, primary_output_missing, agent_reported_failure, incomplete_assembly, mcp_unavailable, provider_unavailable, format_run_failedFormat run failure codes
Bulk queue item errorformat_run_failed, format_run_canceled, format_run_failed_to_startRetry failed batch items
Format package (Contents API)skill_slug_taken, skill_slug_reserved, format_content_not_found, format_content_sha_required, format_content_sha_mismatch, format_package_sha_mismatch, skill_path_invalid, format_git_unavailableEdit Format files with If-Match
Scheduled runsaction_not_found, action_api_trigger_disabled, action_inactive, action_run_in_progress, studio_agent_upstream_unavailableAgent run errors
Agent Completionsinvalid_attachment, attachment_not_found, 413 attachment_too_large, 502 attachment_fetch_failed, 403 insufficient_scope, 404 agent_run_not_foundAgent run errors
Media tools: trim, filter, detach, frames, inspect, TimelineCommon to several tools: unsupported_media_source, source_not_found, ffmpeg_fields_rejected. Per tool, for example video_trim_range_conflict, invalid_filtergraph, detach_source_has_no_audio, frame_time_out_of_range, render_strategy_unsafeTrim, filter, detach, Video editing API limits
Video captionscaption_no_speech, caption_hangul_text_latin_style, caption_font_requires_hangul_style, script_alignment_mismatch, script_alignment_failedBurn captions onto a video
Hosted MCPinsufficient_scope, wait_slice_expiredFix MCP insufficient_scope

Which errors arrive on a receipt instead of an HTTP status?

Three rows above never come back as a 4xx or 5xx on your request. A Format run that returned 202 never turns into a create error later: its failure arrives on the receipt as status: "failed" with an error.code. A bulk item's error is only format_run_failed or format_run_canceled once its child settles, so read the reason on the child run. A failed generation job exposes an error with a category, stage, retryability, and next action.

Some media tool and caption codes also arrive on the failed job rather than the request: the docs mark worker-side refusals such as detach_source_has_no_audio, and caption jobs fail as caption_no_speech or with the two script-alignment codes.

Webhooks follow the same rule. A run receipt over 1 MiB is delivered with payload: null and error.code payload_too_large, while status still reports the run's real outcome.

What should I do next for each code?

An HTTP error's next_action is one of authenticate, fix_input, add_funds, retry_later, poll_status, inspect_events, or contact_support; a failed caption job can also name use_overlay_captions or simplify_script_text_or_omit. In practice:

  • Fix the key: unauthorized, insufficient_scope, workspace_key_required. Scopes cannot be added to an existing key, so mint a new one.
  • Fix the request: invalid_request, unknown_parameter, output_schema_invalid, and the media tool refusals. A 4xx at Format run create means nothing ran and nothing was charged.
  • Add funds: insufficient_credits. Retrying without topping up returns the same answer.
  • Wait and retry: rate_limited after retry-after, idempotency_key_in_use after about a second, and provider_capacity_exceeded with the same idempotency key.
  • Poll or read the record: run_not_completed means the run is still in flight, so poll status_url. job_not_completed answers any job without a result, so read a failed job's error off GET /v1/jobs/{id}.

Which codes are easy to misread?

A few codes do not mean what their status class suggests:

  • 403 insufficient_scope is never 404 format_not_found: a known key missing a scope always gets the 403.
  • 404 format_not_found also covers someone else's Format and a shared Format whose grant is pending or removed. The 404 is a deliberate tenancy hide.
  • 502 attachment_fetch_failed is your input: next_action is fix_input. Make the URL publicly reachable.
  • 503 studio_agent_upstream_unavailable on Scheduled runs reports retryable: false, yet the docs call a bounded retry reasonable.
  • An unknown top-level field is 400 unknown_parameter on a Format run, but a Scheduled run silently drops it.
  • unsupported_media_type is a non-JSON request body (415) on most routes, but on trim, filter, and detach it means a HEAD of the source URL did not return a video.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume