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.

5 min readSume
All posts

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.

From the API code, Generation admission, Video frames, and Video inspect, read 2026-09-27.
EndpointJob typeTakes a slot?
Image API: POST /v1/imagesimage_generationYes
Video generation: POST /v1/videosvideo_generationYes
Music Router: POST /v1/music-router/generatemusic_generationYes
Text to speech: TTS 1.0 and the TTS Routertext_to_speechYes
Speech to text: POST /v1/stt-1.0/transcribespeech_to_textYes
Background removal: POST /v1/rmbg-1.0/removebackground_removalYes
Image upscale and video upscaleimage_upscale, video_upscaleYes
Avatar creation: POST /v1/avatar-1.0/generateavatar_generationYes
Talking video and previews, including regenerate and generate-videoavatar_videoYes
Face swap (Beta)avatar_face_swapYes
Lip sync (VEED Fabric 1.0, MiniMax H3 Max Lip Sync) and Kling 3.0 Motion Controlavatar_image_to_videoYes
Captions: POST /v1/video-captionsvideo_captionYes
Timeline, compose and audio, trim, filter, and detachtimeline_renderYes
Frames: POST /v1/video-framesvideo_framesNo
Inspect: POST /v1/video-inspectvideo_inspectNo, 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.

From Timeline 1.0, Timeline audio, Timeline compose, Video filter, Video trim, and Audio detach, read 2026-09-27.
ToolJob modelResult kind
Timeline rendersume/timeline-1.0timeline_render
Timeline audiosume/timeline-1.0/audiotimeline_audio
Timeline composesume/timeline-1.0/composetimeline_compose
Video filtersume/video-filter-1.0video_filter
Video trimsume/video-trim-1.0video_trim
Audio detachsume/audio-detach-1.0audio_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: true reserves at the speech-to-text rate but still takes no slot.
  • No job: POST /v1/timeline-1.0/plan and POST /v1/video-filter/check are unbilled checks, and POST /v1/trending-videos/search answers 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

All Developers posts

Written by Sume