Sume API limits for Formats: caps, sizes, and timeouts
The documented Sume Format API limits in one place: request and input sizes, attachments, schemas, spend caps, queues, run deadlines, webhooks, rate limits.

Sume's Format API caps instruction at 8000 characters, input at 64 top-level keys and 2 MiB, the request body at 4 MiB, and one run's generation spend at $500. A run still going at its deadline, at most 90 minutes after created_at, is force-finalized as failed. The tables below list the documented caps, sizes, and timeouts, each with the docs page it comes from.
Every row was read on 2026-09-26 from the Format docs, mostly Create a run, Runs and results, and Errors and spend, plus the Sume API reference. How media inputs are fetched and stored is covered in Video API media inputs and outputs; this page only lists the numbers.
What are the request limits for one Format run?
A create that breaks one of these fails before anything runs, and a 4xx at create means nothing was charged.
| Limit | Value | Docs |
|---|---|---|
instruction | 8000 characters accepted. Only the first ~4000 are carried to the run as prompt text. | Create a run |
input keys | 64 top-level keys. Nested keys are not counted. | Create a run |
input size | 2 MiB: 2097152 UTF-8 bytes on the compact serialization. | Create a run |
| Request body | 4 MiB. Over it is 413 payload_too_large. | Create a run |
Idempotency-Key | Up to 255 characters, scoped to one Format. | Create a run |
primary_output_key | Up to 64 characters. | Create a run |
generation_spend_cap_usd | Up to $500. 0 or above 500 is a 400, and null runs at $500. A Format that never set a cap reports $400. | Create a run |
attachments[] | 30 images per run, 30 MB each, 500 MB per run. JPEG, PNG, WebP, GIF, or AVIF. | Format API |
| Media budget | 30 files per run across attachments[] and media URLs in input: at most 30 images, 10 videos, and 10 audio files. | Format API |
| URL and name fields | communication.webhook_url and attachments[].image_url up to 2048 characters; attachments[].filename up to 180. | Sume API reference |
What are the output schema limits?
A schema past the size and nesting limits is rejected at submit with 400 output_schema_invalid and a details.violations[] entry per problem. Nothing runs, so nothing is charged.
| Limit | Value | Docs |
|---|---|---|
output_schema.name | 1–64 characters matching ^[A-Za-z0-9._/-]+$. | Structured output |
| Nesting depth | 10 levels (max_depth). | Structured output |
| Properties | 5000, counted across the whole document (max_properties). | Structured output |
| Enum values | 1000 per enum (max_enum_values). | Structured output |
| Total string length | 120,000 characters, summed over every property name, key, and string value (max_string_length). | Structured output |
| Fallback projection | Reads the run's closing text truncated to the first 8000 characters. | Structured output |
How long can a Format run take?
A non-terminal receipt carries expires_at, the deadline past which the run is force-finalized as failed: 90 minutes from created_at, or sooner when the run is older than 25 minutes and has been silent for 10 (Runs and results). Set your own timeout from it rather than inventing one; it is null once the run is terminal.
Long-form host video typically finishes in 15 to 30 minutes, the Format API page says, so design for the asynchronous path from the start.
What are the webhook delivery limits?
A run created with communication.webhook_url sends one signed format.run.terminal POST. A delivery outcome never changes the run.
| Limit | Value | Docs |
|---|---|---|
| Deliveries | Once per run, on completed or failed. Never on canceled or skipped. | Delivery rules |
| Success | Any 2xx within 10 seconds. | Delivery rules |
| Retries | Up to 10 attempts. Backoff is the longer of 30 s × 2^(attempt−1) with jitter and your Retry-After on a 429/503, capped at one hour. | Delivery rules |
payload size | null when the receipt is over 1 MiB; error.result_url says where to fetch it. | Webhook |
| Signature timestamp | Reject timestamps outside a five-minute window. | Verify every delivery |
How many runs can I queue, list, and send per minute?
Request rate is not generation capacity: how many generations run at once is governed by your plan's concurrency limit, and a higher request rate does not raise it.
| Limit | Value | Docs |
|---|---|---|
Bulk items | 1–100 per request. | Bulk runs |
Bulk concurrency | 1–16 child runs in flight per queue. | Bulk runs |
List runs limit | 1–100, default 20. | Runs and results |
List Formats limit | 1–100, default 50. | Sume API reference |
| Writes / reads per minute, per key | Free 120 / 4800, Pro 300 / 12000, Startup 600 / 24000, Scale 1200 / 48000. Enterprise is contracted, Scale until provisioned. | Errors and spend |
What limits apply to Format packages and addresses?
These matter when you create or edit a Format over the API, as in Create a Format over the API.
| Limit | Value | Docs |
|---|---|---|
| Package size | 100 MiB per file and 100 MiB per package. | Editing a Format package |
SKILL.md body | No separate limit beyond the per-file and per-package cap. | Format API |
| Contents batch | At most 1000 paths in one batch commit. | Editing a Format package |
Commit message | 1–500 characters on every package write. | Sume API reference |
| New Format fields | slug 1–64 characters, title up to 80, one-line description up to 1024. | Sume API reference |
{handle} | 2–39 characters in a Format address. | Sume API reference |
| Renamed handle | Keeps resolving for 90 days. The opaque skl_… invoke_url is permanent across renames. | Format API |
Sources
Related posts
Written by Sume