Migrate from Jobs
Move Jobs API code to Transcodings, Assets, and Thumbnails.
Ask your coding agent to migrate your application with the Chunkify skill:
Use the Chunkify skill at https://chunkify.dev/SKILL.md to migrate this application from the Jobs API. Move file outputs to Transcodings, HLS to Assets, and JPG images to Thumbnails. Before editing, list each Job call site with its new target and the settings that change. Ask me before migrating HLS Jobs that use encryption, H.265, or AV1.
The Jobs API keeps working during the transition, so you can migrate one code path at a time. Upgrade your SDK to the release that includes Transcodings, Assets, and Thumbnails.
What replaces Jobs
| Job format | Replacement | SDK call |
|---|---|---|
mp4_h264, mp4_h265, mp4_av1, webm_vp9 |
Transcoding | client.transcodings.create |
hls_h264 |
Asset | client.assets.create |
jpg |
Thumbnails | client.thumbnails.create |
hls_h265, hls_av1 |
No streaming equivalent | See HLS |
Chunkify now chooses the CPU type and transcoder count for every request.
File outputs to Transcodings
These settings work as before: source_id, metadata, storage.id, storage.path, the format.id, and the format's encoding settings such as crf, video_bitrate, width, height, preset, profilev, level, and gop.
| Job | Transcoding |
|---|---|
transcoder |
Removed |
hls_manifest_id |
Removed |
| Unknown fields | Rejected with a 400 error |
channels: 5 or 7 |
channels: 6 (5.1) or 8 (7.1) |
minrate |
webm_vp9 only |
pixfmt |
Fewer values per format: no yuvJ, big-endian, yuv410p, or yuv411p formats; AV1 accepts yuv420p and yuv420p10le |
disable_video: true |
format.id: "m4a_aac" with a .m4a path |
preset default: veryfast for H.264, 10 for AV1 |
faster for H.264, 8 for AV1 |
Integer seek and duration |
Decimal seconds; seek can be 0 |
GET /jobs/{id}/files |
files on the Transcoding |
| Job transcoders and logs | No equivalent; use progress and processing_stage |
HLS streaming to Assets
Create one Asset per Source. Chunkify encodes and packages the H.264 HLS ladder.
| Job | Asset |
|---|---|
Group of hls_h264 Jobs |
One Asset |
| Highest and lowest rendition | max_resolution (1080p or 2160p) and min_resolution |
Folder in storage.path |
path_template |
| Master playlist | manifest.m3u8, published as cdn_url |
Per-rendition encoding, hls_time, hls_segment_type, seek, duration |
Managed by Chunkify |
hls_h265, hls_av1 |
Not available; stream H.264 or create MP4 Transcodings |
hls_enc |
Not available |
| MP4 download copy | static_rendition Asset output |
| JPG sprite for player scrubbing | timeline_previews.cdn_url WebVTT |
Images to Thumbnails
Job jpg |
Thumbnails |
|---|---|
interval |
timestamps or count, up to 100 |
frames |
Limit the timestamps or count |
seek and duration |
range.start and range.end |
width and height |
size, the longest edge from 64 to 1920 |
sprite: true |
output: "sprites" |
chunk_duration |
Removed |
| JPEG only | format: "jpeg" or "webp" |
storage.path such as thumb-%05d.jpg |
Same template, numbered from 00001, with .webp for WebP. Also writes thumb.vtt. |
Events and status
| Job | Replacement |
|---|---|
job.completed with data.job and data.files |
transcoding.ready with data.transcoding, including its files |
job.failed, job.cancelled |
transcoding.failed, transcoding.cancelled |
job.* for HLS |
asset.playback_ready, asset.ready, asset.failed |
job.* for JPG |
thumbnail.ready, thumbnail.failed |
Job statuses such as ingesting or merging |
Transcoding: preparing, ready, failed, cancelled, expired |
Thumbnails: preparing, ready, failed, expired |
Add the new events to your webhook before switching a code path. Keep job.* until no Jobs are in progress.