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.
- Text to speech API in JavaScript: save an MP3 from Node.js
Call a text to speech API from JavaScript on your server: submit the text with the Sume SDK in Node.js, wait for the job, then save the MP3.
- Text to speech API in Python: request, poll, save the MP3
Call a text to speech API from Python with Requests: POST the text and a voice, poll the job, then save the MP3. A complete script for Sume TTS 1.0.
- Text to speech with highlighted words: sync word timings
Highlight words as text to speech plays: get word timestamps with the audio, then mark the word whose time range holds the player's current time.
Written by Sume