403 insufficient_scope on a Sume Format run: scope or service key
A 403 insufficient_scope on a Sume Format call means the key lacks formats:write or is a service-account key. How to tell which, and the fix: a new key.

A 403 insufficient_scope on a Sume Format call has two causes: the key does not carry formats:write (or formats:read for a read), or it is a service-account key, which cannot create Format runs at all. Both are fixed the same way: create a new key. Scopes cannot be added to an existing one.
The rules are from Create a run, Errors and spend and Bulk runs, read 2026-09-29.
How do I tell which cause I have?
Read the error body. A missing scope names itself in details.required_scope. A service-account key carries details.reason set to service_account_format_runs_unsupported. In both cases next_action is authenticate.
| Cause | Where the error says so | Fix |
|---|---|---|
Key lacks formats:write or formats:read | details.required_scope | Mint a new key with the scopes |
| Service-account key on a run create | details.reason: service_account_format_runs_unsupported | Create a new key with the scopes |
Which scope does each call need?
formats:write creates a run, creates a bulk queue, cancels a run and redelivers a webhook. formats:read lists and reads Formats, reads and lists runs, and reads queues. So a key that can poll a run may still fail the create that started it. This read needs only formats:read; a 403 here names formats:read in details.required_scope.
curl -sS "https://api.sume.com/v1/formats/sume/sume-product-commercial" \
-H "Authorization: Bearer $SUME_API_KEY" | jq '.error | {code, details}'Why do old keys fail?
Keys created before the Formats API shipped do not carry these scopes. The docs say scopes are fixed when a key is created and cannot be added later, so an old key fails every Format request with 403 insufficient_scope, never a 404. Create a new key in the API keys dashboard and rotate to it.
How do I fix a service-account key?
A service-account key cannot be repaired by adding scopes, because the block is on the key type, not on the scope list. Create a new key in the API keys dashboard with the Format scopes and use that for Format runs. Keep the service-account key for whatever else it was made for, and give your Format integration its own key with formats:read and formats:write. One key per integration also makes it easy to revoke a single caller later.
Is it a 403, a 401 or a 404?
A missing, malformed, revoked or unknown key is 401 unauthorized. A known key missing a scope is 403 insufficient_scope, and a wrong Format address is 404 format_not_found. A 403 workspace_key_required is a different problem: a team Format called with a personal key, fixed with a key created in the team's workspace. The wider comparison is in 401 vs 403 vs 404.
A failed create costs nothing: the docs say a 4xx at create is not charged and releases the Idempotency-Key.
Sources
Related posts
More in Formats
- How long can a Sume Format run take? The expires_at deadline
A Sume Format run is force-finalized as failed 90 minutes after it was created, or sooner if it goes silent. How to read expires_at and set your own timeout.
- 403 workspace_key_required: call a team Format with a team key
A 403 workspace_key_required means a personal key called a team workspace's Format. Create a key inside that workspace; details.workspace_id names it.
- Which model runs a Sume Format? The model field on a run
The model field on a Sume Format run picks the LLM that orchestrates it, default gpt-6-sol. It does not pick the image, video or audio models. Rules and errors.
- White label AI video generator: build it on an API
Sume documents no white-label program, but its API lets you run AI video for your clients under your brand: one server key, per-run caps, files you host.
Written by Sume