Sume job types and concurrency: which calls take a slot
Each Sume endpoint's job type and slot use: every generation job, trims and Timeline included, takes a concurrency slot; frames and inspect don't.

In the Sume API, every endpoint that creates a generation job takes a workspace admission slot, and that includes media tools such as trim, filter, and Timeline. The job counts against queue capacity while queued and against the concurrency limit while processing. Of the tools mapped here, video_frames and video_inspect jobs take no slot, and neither do calls that create no job.
The type map is read from Sume's API code, because the docs name only a couple of job types, so treat it as current behavior. The admission rules come from Generation admission and the tool pages, read on 2026-09-27. How queueing and 429 queue_full work is covered in video job concurrency and queueing.
Which job type does each endpoint create?
The type below is the field on the job envelope and the value GET /v1/jobs filters on. Each row links the post that covers the endpoint.
The legacy Image Router and Video Router routes, and the retiring Image 1.0, Video 1.0, and Music 1.0 routes, create the same types as their current counterparts.
| Endpoint | Job type | Takes a slot? |
|---|---|---|
Image API: POST /v1/images | image_generation | Yes |
Video generation: POST /v1/videos | video_generation | Yes |
Music Router: POST /v1/music-router/generate | music_generation | Yes |
| Text to speech: TTS 1.0 and the TTS Router | text_to_speech | Yes |
Speech to text: POST /v1/stt-1.0/transcribe | speech_to_text | Yes |
Background removal: POST /v1/rmbg-1.0/remove | background_removal | Yes |
| Image upscale and video upscale | image_upscale, video_upscale | Yes |
Avatar creation: POST /v1/avatar-1.0/generate | avatar_generation | Yes |
Talking video and previews, including regenerate and generate-video | avatar_video | Yes |
| Face swap (Beta) | avatar_face_swap | Yes |
| Lip sync (VEED Fabric 1.0, MiniMax H3 Max Lip Sync) and Kling 3.0 Motion Control | avatar_image_to_video | Yes |
Captions: POST /v1/video-captions | video_caption | Yes |
| Timeline, compose and audio, trim, filter, and detach | timeline_render | Yes |
Frames: POST /v1/video-frames | video_frames | No |
Inspect: POST /v1/video-inspect | video_inspect | No, even when transcribe: true reserves money |
Why do trims and filters show up as timeline_render?
Six tools ride one job type because they are the same class of work: one ffmpeg pass over Sume-hosted media. They share its concurrency guard and admission slot, so a batch of trims competes with your renders and generations for the same slots. GET /v1/jobs?type=timeline_render returns all six; the job's model and the result's kind tell them apart.
| Tool | Job model | Result kind |
|---|---|---|
| Timeline render | sume/timeline-1.0 | timeline_render |
| Timeline audio | sume/timeline-1.0/audio | timeline_audio |
| Timeline compose | sume/timeline-1.0/compose | timeline_compose |
| Video filter | sume/video-filter-1.0 | video_filter |
| Video trim | sume/video-trim-1.0 | video_trim |
| Audio detach | sume/audio-detach-1.0 | audio_detach |
Which calls never take a slot?
Frames and inspect create media jobs that are not generation jobs, and some calls create no job at all:
video_frames: unbilled, with no admission slot and no reservation.video_inspect: no admission slot. The probe and stills are unbilled;transcribe: truereserves at the speech-to-text rate but still takes no slot.- No job:
POST /v1/timeline-1.0/planandPOST /v1/video-filter/checkare unbilled checks, andPOST /v1/trending-videos/searchanswers inline.
How do I count slots and list jobs by type?
Each generation submit returns a generation_limits snapshot when Sume can compute it: active_generation_jobs counts your processing generation jobs, queued_generation_jobs your queued ones, and concurrency_limit is the effective cap. Every type marked Yes in the table counts there.
GET /v1/jobs narrows a page with type and status. In the OpenAPI, type is a free string rather than an enum, so use the values above; an unrecognized query parameter is 400 unknown_parameter. Listing and recovering jobs covers paging.
curl "https://api.sume.com/v1/jobs?type=timeline_render&status=queued&limit=100" \
-H "Authorization: Bearer $SUME_API_KEY"Sources
Related posts
More in Developers
- Sume API media URL rules: which URLs each endpoint accepts
Sume generation endpoints fetch public HTTPS media URLs. Trim, filter, frames, inspect, and Timeline take only your workspace's media.sume.com URLs.
- Webhook URL rejected as invalid? Sume's webhook URL rules
Sume answers 400 invalid_request when a webhook URL is not public HTTPS. The rules for scheme, host, port, and credentials, and the check at delivery.
- Connect Claude Code, Cursor, or Codex to Sume with hosted MCP
Sume's hosted MCP server at mcp.sume.com/mcp lets coding agents generate images, video, audio, and avatars. Setup, OAuth scopes, and spend gates.
- Idempotency keys for AI video APIs: retry without paying twice
An idempotency key makes a retried create return the original run or job instead of a second paid one. How Sume's Idempotency-Key works on each API.
Written by Sume