Skip to content

List jobs

GET
/v1/jobs
curl --request GET \
--url 'https://api.iomza.com/v1/jobs?status=queued&limit=20' \
--header 'Authorization: Bearer <token>'

Newest first, a page at a time: pass the next_cursor of a page to get the next one (stable while new jobs arrive).

status
string
Allowed values: queued processing succeeded failed canceled

Only jobs in this status.

limit
integer
default: 20 >= 1 <= 100

How many, 1–100 (20 by default).

cursor
string
<= 200 characters

The previous page’s next_cursor.

A page of jobs.

Media typeapplication/json
object
object
required
Allowed value: list
data
required
Array<object>

A job: its status and progress while it runs, then its outputs. API responses and webhook payloads carry it as is.

object
id
required
string
object
required
string
Allowed value: job
status
required

Queued (waiting for room in the plan) → processing → succeeded | failed | canceled.

string
Allowed values: queued processing succeeded failed canceled
progress
required
number
created_at
required
string format: date-time
updated_at
required
string format: date-time
dispatched_at
required
string | null format: date-time
completed_at
required
string | null format: date-time
metadata
required
object
key
additional properties
string
request
required

The settings the job was created with (normalized, defaults applied): what a retry or duplicate starts from.

object
outputs
required

What to produce: at least one of streaming, mp4, mp3, posters or storyboard.

object
streaming

Adaptive streaming: one rendition per variant, with every chosen audio and subtitle track.

object
formats

HLS and/or DASH; they share their segments.

Array<string>
default: hls,dash >= 1 items <= 2 items
Allowed values: hls dash
variants
required
Array
>= 1 items <= 10 items
Any of:

240p, 360p, 480p, 720p, 1080p, 1440p, 2160p, or any even height from 144 to 2160 (“540p”, “576p”, “900p”): a 16:9 box around it, with the maximum bitrate interpolated between its neighbors.

string
mp4

One MP4 file per variant, carrying every chosen audio track.

object
variants
required
Array
>= 1 items <= 10 items
Any of:

240p, 360p, 480p, 720p, 1080p, 1440p, 2160p, or any even height from 144 to 2160 (“540p”, “576p”, “900p”): a 16:9 box around it, with the maximum bitrate interpolated between its neighbors.

string
mp3

The audio alone, as an MP3 file.

object
bitrate

Bps.

integer
default: 128000 >= 32000 <= 320000
posters

JPEG images of given moments. With neither width nor height, the video’s size.

Array<object>
>= 1 items <= 10 items
object
at

Second of the video.

number
0
width
integer
>= 16 <= 3840
height
integer
>= 16 <= 2160
storyboard

Thumbnail sprites and a WebVTT index, for the preview over a player’s seek bar. 160×90 by default, in the video’s shape.

object
interval
required

Seconds between thumbnails.

number
>= 1 <= 60
width
integer
>= 16 <= 640
height
integer
>= 16 <= 640
columns
integer
>= 1 <= 20
audio

Each chosen track comes out as stereo AAC (surround is downmixed).

object
bitrate

Forces re-encoding the audio as AAC at this bitrate (bps). When omitted, mono or stereo AAC-LC is copied (faster, lossless).

integer
>= 32000 <= 320000
tracks
Any of:
string
Allowed value: all
subtitles

Text subtitles, delivered as WebVTT and in the streaming. Forced ones are flagged and named so in their own language.

object
tracks
Any of:
string
Allowed value: all
on_upscale

For qualities larger than the source: skip leaves them out (listed in the job’s skipped); fail rejects the job.

string
default: skip
Allowed values: skip fail
quality_metrics

Score each variant’s perceived quality (VMAF, 0–100) against the source, on samples spread over the video. Adds a few seconds.

boolean
webhook_url

Also send this job’s events here (https, public), besides the organization’s endpoints.

string format: uri
metadata

Up to 10 text pairs of yours, returned in the job and in its webhooks.

object
key
additional properties
string
<= 500 characters
retry_of
required

The job this one retries or duplicates.

string | null
input
required
object
upload_id
required

The source, as an upload (also when it was brought from a URL).

string
url
required

The URL it was copied from, if it came from one.

string | null
clip
required
Any of:
object
start
required
number
duration
number
source
required
Any of:
object
duration
required
number
width
required
number
height
required
number
frame_rate
required
number
output_frame_rate
required

Steady frame rate of the outputs.

number | null
bitrate
required

Overall bitrate in bits per second.

number | null
interlaced
required
boolean
rotation
required
number | null
hdr
required
string | null
Allowed values: pq hlg
has_video
required
boolean
has_audio
required
boolean
video_codec
required
string | null
audio_codec
required
string | null
audio_channels
required
number | null
audio_tracks
required

Every audio and subtitle stream of the file: what audio.tracks / subtitles.tracks pick from.

Array<object>

An audio track of a source.

object
index
required
number
language
required

As tagged in the file (usually ISO 639-2: “spa”, “eng”); null when untagged.

string | null
title
required
string | null
codec
required
string
channels
required
number
default
required
boolean
atmos
required
boolean
bitrate
required

Bits per second; null when the file does not say.

number | null
subtitle_tracks
required
Array<object>

A subtitle track of a source.

object
index
required
number
language
required
string | null
title
required
string | null
codec
required
string
default
required
boolean
forced
required
boolean
convertible
required

Text subtitles become WebVTT; image ones (PGS, DVD) cannot.

boolean
duration
required

Seconds processed (the clip, or the whole source).

number | null
tasks
required

Everything being produced, each with its own status and progress.

Array<object>

One thing a job produces, with its status, progress and times.

object
type
required
string
Allowed values: analysis mp3 storyboard poster import upload video mp4 audio subtitles streaming
resolution

video and mp4 tasks: the quality (1080p, or a custom height such as 540p).

string
index

poster and storyboard tasks: their position in the request’s list.

number
mode

audio tasks: copied from the source as is (no quality loss), or re-encoded to AAC.

string
Allowed values: copy encode
formats

streaming task: the manifests written over the shared segments.

Array<string>
Allowed values: hls dash
track

audio tasks: which output track (language) it is, and its language and name as players show them.

number
language
string
name
string
count

subtitles task: how many subtitle tracks are being produced.

number
bytes

import and upload tasks: bytes received so far, and the file’s size when known.

number
total_bytes
number
status
required
string
Allowed values: pending running done stopped
progress
required

0–100; null while running without a measurable progress.

number | null
started_at
required
string | null format: date-time
completed_at
required
string | null format: date-time
timing
required

How long each part of a job took, and when each stage started and ended.

object
queued_seconds
required

Waiting for a slot of the plan’s concurrency.

number | null
import_seconds
required

Copying a source given by URL (before processing; not part of processing_seconds).

number | null
processing_seconds
required

From the start of analysis to the outputs being ready (excludes the upload and the queue). A file processed while it was still being uploaded counts from the end of the upload.

number | null
speed
required

Seconds of media per second of processing (e.g. 30 = 30× real time).

number | null
stages
required
object
analysis_seconds
required
number | null
encoding_seconds
required
number | null
assembly_seconds
required
number | null
timeline
required

When each stage started and ended (ISO 8601, null until it happens), to draw them on one time axis: with a file processed while it arrives, the analysis and the transcoding overlap the upload.

object
created_at
required
string format: date-time
dispatched_at
required
string | null format: date-time
import_started_at
required
string | null format: date-time
imported_at
required
string | null format: date-time
analysis_started_at
required
string | null format: date-time
analyzed_at
required
string | null format: date-time
encoded_at
required
string | null format: date-time
completed_at
required
string | null format: date-time
adjustments
required

Corrections applied to the source so the outputs play everywhere.

Array
Any of:
object
code
required
string
Allowed values: deinterlaced anamorphic_corrected
billed_minutes
required
Any of:
object
audio
number
sd
number
hd
number
uhd
number
outputs
required
Any of:

size_bytes on every output: what it weighs as published (null for jobs finished before sizes were measured). Streaming: the whole folder, each variant its video, audio_size_bytes the audio every variant shares (HLS and DASH use the same segments, counted once).

object
streaming
required
Any of:
object
hls_url
required
string | null
dash_url
required
string | null
variants
required
Array<object>
object
size_bytes
required
number | null
resolution
required
string
width
required
number
height
required
number
size_bytes
required
number | null
audio_size_bytes
required
number | null
audio_tracks
required

Languages of the streaming and MP4 outputs (ISO 639-2), the default one flagged.

Array<object>
object
language
required
string
name
required
string
default
required
boolean
subtitles
required

WebVTT files, also listed in the streaming manifests.

Array<object>
object
language
required
string
name
required
string
forced
required
boolean
url
required
string
size_bytes
required
number | null
mp4
required
Array<object>
object
url
required
string
size_bytes
required
number | null
resolution
required
string
width
required
number
height
required
number
mp3
required
Any of:
object
url
required
string
size_bytes
required
number | null
posters
required
Array<object>
object
url
required
string
size_bytes
required
number | null
storyboard
required
Any of:
object
image_url
required
string
image_urls
required
Array<string>
vtt_url
required
string
size_bytes
required
number | null
quality
required
Any of:
object
metric
required
string
Allowed value: vmaf
model
required
string
variants
required
Array<object>
object
resolution
required
string
vmaf
required
number
vmaf_min
required
number
sampled_seconds
required
number
total_size_bytes
required

Everything published for the job, and the original it was made from.

number | null
source_size_bytes
required
number | null
skipped
required
Array<object>
object
resolution
required
string
reason
required
string
Allowed value: upscale
skipped_tracks
required

Requested audio/subtitle tracks left out: not_found (optional pick), image_subtitles (not convertible to WebVTT), too_many.

Array<object>

A requested track that didn’t come out, and why.

object
type
required
string
Allowed values: audio subtitle
index
number
language
string
reason
required
string
Allowed values: not_found image_subtitles too_many
error
required
Any of:
object
code
required
string
category
required
string
Allowed values: source request internal
retryable
required
boolean
message
required
string
deleted
required
boolean
next_cursor
required

The next page’s cursor; null on the last page.

string | null

Example

{
"object": "list",
"data": [
{
"object": "job",
"status": "queued",
"request": {
"outputs": {
"streaming": {
"formats": [
"hls",
"dash"
],
"variants": [
{
"codec": "h264",
"rate_control": "vbr",
"preset": "ultrafast",
"profile": "baseline",
"fit": "contain",
"rotate": 0,
"flip": "horizontal",
"watermark": {
"position": "topleft"
}
}
]
},
"mp4": {
"variants": [
{
"codec": "h264",
"rate_control": "vbr",
"preset": "ultrafast",
"profile": "baseline",
"fit": "contain",
"rotate": 0,
"flip": "horizontal",
"watermark": {
"position": "topleft"
},
"audio": true
}
]
},
"mp3": {
"bitrate": 128000
},
"posters": [
{
"at": 0
}
]
},
"audio": {
"tracks": "all"
},
"subtitles": {
"tracks": "all"
},
"on_upscale": "skip",
"quality_metrics": false,
"metadata": {
"video_id": "123"
}
},
"source": {
"hdr": "pq"
},
"tasks": [
{
"type": "analysis",
"mode": "copy",
"formats": [
"hls"
],
"status": "pending"
}
],
"adjustments": [
{
"code": "deinterlaced"
}
],
"outputs": {
"quality": {
"metric": "vmaf"
}
},
"skipped": [
{
"reason": "upscale"
}
],
"skipped_tracks": [
{
"type": "audio",
"reason": "not_found"
}
],
"error": {
"category": "source"
}
}
]
}

Invalid fields: details lists each problem with its path.

Media typeapplication/json
object
error
required
object
code
required

Stable: branch on it.

string
Allowed values: validation_error unauthorized quota_exceeded insufficient_balance forbidden module_not_in_plan organization_suspended not_found conflict too_many_requests internal_error service_unavailable
message
required

English, for people; may change.

string
details
required

Each problem, as path: message (validation errors).

Array<string>

Example

{
"error": {
"code": "validation_error"
}
}

The API key is missing, invalid or revoked.

Media typeapplication/json
object
error
required
object
code
required

Stable: branch on it.

string
Allowed values: validation_error unauthorized quota_exceeded insufficient_balance forbidden module_not_in_plan organization_suspended not_found conflict too_many_requests internal_error service_unavailable
message
required

English, for people; may change.

string
details
required

Each problem, as path: message (validation errors).

Array<string>

Example

{
"error": {
"code": "validation_error"
}
}

Valid credentials that may not do this (forbidden), your plan doesn’t include the module the route belongs to (module_not_in_plan), or your organization is suspended (organization_suspended).

Media typeapplication/json
object
error
required
object
code
required

Stable: branch on it.

string
Allowed values: validation_error unauthorized quota_exceeded insufficient_balance forbidden module_not_in_plan organization_suspended not_found conflict too_many_requests internal_error service_unavailable
message
required

English, for people; may change.

string
details
required

Each problem, as path: message (validation errors).

Array<string>

Example

{
"error": {
"code": "validation_error"
}
}

Too many requests: wait and retry. Answered by the gateway, so the body may differ.

Media typeapplication/json
object
error
required
object
code
required

Stable: branch on it.

string
Allowed values: validation_error unauthorized quota_exceeded insufficient_balance forbidden module_not_in_plan organization_suspended not_found conflict too_many_requests internal_error service_unavailable
message
required

English, for people; may change.

string
details
required

Each problem, as path: message (validation errors).

Array<string>

Example

{
"error": {
"code": "validation_error"
}
}

Ours: retry, and tell us if it persists.

Media typeapplication/json
object
error
required
object
code
required

Stable: branch on it.

string
Allowed values: validation_error unauthorized quota_exceeded insufficient_balance forbidden module_not_in_plan organization_suspended not_found conflict too_many_requests internal_error service_unavailable
message
required

English, for people; may change.

string
details
required

Each problem, as path: message (validation errors).

Array<string>

Example

{
"error": {
"code": "validation_error"
}
}

Momentarily unavailable: retry in a few seconds.

Media typeapplication/json
object
error
required
object
code
required

Stable: branch on it.

string
Allowed values: validation_error unauthorized quota_exceeded insufficient_balance forbidden module_not_in_plan organization_suspended not_found conflict too_many_requests internal_error service_unavailable
message
required

English, for people; may change.

string
details
required

Each problem, as path: message (validation errors).

Array<string>

Example

{
"error": {
"code": "validation_error"
}
}