Skip to content

DocsAPI reference

API reference

Run video jobs over HTTP, described as JSON operations or as an ffmpeg command. Every error answers RFC 9457 problem details (application/problem+json) with a documented code.

Endpoints

Every request goes to https://api.videxo.io with your key as Authorization: Bearer $VIDEXO_API_KEY (Authentication and API basics). Bodies are JSON. The OpenAPI 3.1 document is at /docs/openapi.json and at GET /v1/openapi.json on the API.

ToCall
Download a signed outputGET /v1/files/{id}/{alias}
Send bytes to a one-time upload URLPUT /v1/uploads/{id}
List fontsGET /v1/fonts
What the client token may still doGET /v1/client/token
Create an upload with a client tokenPOST /v1/client/uploads
Read a job the client token may readGET /v1/client/jobs/{id}
List the jobs the client token may readGET /v1/client/jobs
The account and key behind the API keyGET /v1/me
The account's creditsGET /v1/credits
Compile without runningPOST /v1/jobs/compile
Create a jobPOST /v1/jobs
List jobsGET /v1/jobs
Transcode a videoPOST /v1/transcode
Grab thumbnailsPOST /v1/thumbnails
Make a storyboardPOST /v1/storyboard
Make a GIFPOST /v1/gif
Extract audioPOST /v1/audio
Join filesPOST /v1/concat
Make a slideshowPOST /v1/slideshow
Detect scenesPOST /v1/scenes
Read media metadataPOST /v1/probe
List presetsGET /v1/presets
Get a jobGET /v1/jobs/{id}
Cancel a jobPOST /v1/jobs/{id}/cancel
Delete a job's filesDELETE /v1/jobs/{id}/files
Create a one-time direct uploadPOST /v1/uploads
Get a fresh signed download URLGET /v1/jobs/{id}/outputs/{alias}
Get the signing secretGET /v1/webhook-secret
Rotate the signing secretPOST /v1/webhook-secret/rotate
List webhook endpointsGET /v1/webhook-endpoints
Create the webhook endpointPOST /v1/webhook-endpoints
Get a webhook endpointGET /v1/webhook-endpoints/{id}
Update a webhook endpointPATCH /v1/webhook-endpoints/{id}
Delete a webhook endpointDELETE /v1/webhook-endpoints/{id}
List webhook deliveriesGET /v1/webhook-deliveries
List a job's webhook deliveriesGET /v1/jobs/{id}/webhook-deliveries
Send a delivery againPOST /v1/webhook-deliveries/{id}/retry
Mint a client token for an app or a web pagePOST /v1/client-tokens
Revoke a client token and its chainDELETE /v1/client-tokens/{id}
Revoke an end user's client tokensPOST /v1/client-tokens/revoke

Errors

Every error is RFC 9457 problem details, application/problem+json, with a documented code. Error codes lists them all.

404 problem+json
{
  "type": "https://videxo.io/docs/errors#not_found",
  "title": "There is no such resource in this account, or no such route.",
  "status": 404,
  "detail": "No job with this id in this account.",
  "code": "not_found",
  "reason": "job",
  "retryable": false,
  "request_id": "req_7h2m4x9q0c3v8k1n5r6t2b4z"
}

Objects

Problem

Every error answer: RFC 9457 problem details, `Content-Type: application/problem+json`.

Fields of Problem
NameTypeDescription
type requiredstringhttps://videxo.io/docs/errors#<code>, the docs entry for the code.
title requiredstringThe code's fixed sentence.
status requiredintegerThe HTTP status, repeated.
detail requiredstringWhat happened this time, for people; it may change.
code requiredone of authentication_failed, permission_denied, invalid_request, command_invalid, not_found, conflict, resource_expired, limit_exceeded, usage_cap_reached, out_of_credits, rate_limited, service_unavailable, internal_errorThe stable error code. Programs branch on this.
reason one of missing_api_key, invalid_api_key, api_key_revoked, api_key_expired, missing_client_token, invalid_client_token, client_token_expired, client_token_superseded, client_token_revoked, missing_credentials, invalid_token, token_expired, token_revoked, account_disabled, link_invalid, origin_not_allowed, role_insufficient, token_scope, client_token_required, insufficient_scope, invalid_fields, not_json, range_not_satisfiable, size_mismatch, job, file, output, upload, webhook_endpoint, webhook_delivery, route, subscription, ticket, client_token, job_active, upload_used, webhook_endpoint_exists, webhook_delivery_pending, idempotency_key_reused, checkout_pending, subscription_exists, same_plan, ticket_closed, link_expired, file_expired, upload_expired, request_body_size, upload_size, input_size, output_size, job_duration, member_limit, organization_limit, token_uploads, subtitles_size, temporary, cancel_unconfirmed, queue_timeout, url_refused, http_status, network, redirects, too_slow, ffmpeg_error, output_empty, time_past_end, subtitles_invalid, media_unreadableThe documented finer case of the code, when it has one (the Errors page lists each code's reasons).
retryable requiredbooleanWhether sending the same request again later can succeed without a change.
request_id requiredstringThe id of this request, also in the Request-Id header. Quote it to support.
errors array of FieldErrorWith invalid_request: one entry per field that failed.
problems array of CommandProblemWith command_invalid: why the command was refused.

FieldError

One field that failed: `detail` and exactly one of `pointer`, `parameter` or `header`.

Fields of FieldError
NameTypeDescription
detail requiredstringWhat is wrong with this field.
pointer stringA JSON Pointer into the body, as a URI fragment: #/outputs/0/resize/fit; # is the whole body.
parameter stringThe query or path parameter, such as cursor.
header stringThe request header, such as Idempotency-Key.

CommandProblem

Fields of CommandProblem
NameTypeDescription
code requiredstringStable command validation code, e.g. filter_forbidden (docs: command rules).
message requiredstring
option string
filter string

FontList

Fields of FontList
NameTypeDescription
data requiredarray of Font

Font

Fields of Font
NameTypeDescription
id requiredstringThe id a text layer names as font.
family requiredstring
weight requiredone of 400 or one of 700400 regular, 700 bold.
scripts requiredarray of one of latin, greek, cyrillicThe scripts the font covers in full.
license requiredone of OFL-1.1The SIL Open Font License 1.1.

ClientTokenInfo

Fields of ClientTokenInfo
NameTypeDescription
id requiredstringThe id of a client token.
chain_id requiredstringThe id of a client token.
expires_at requiredstring, date-time
uploads requiredobject or null
jobs requiredobject or null

Upload

Fields of Upload
NameTypeDescription
id requiredstring
input_url requiredstring
upload_url requiredstring, URL
upload_url_expires_at requiredstring, date-time
expires_at requiredstring, date-time
max_size_bytes requiredinteger

CreateUploadRequest

Fields of CreateUploadRequest
NameTypeDescription
filename requiredstring, up to 105 characters
size_bytes requiredintegerExact byte length. At most 100 MB and the plan input limit.
content_type string, up to 128 charactersDefault application/octet-stream.

ClientJob

Fields of ClientJob
NameTypeDescription
id requiredstringjob_ and 24 lowercase letters and digits.
state requiredJobStatequeued and running are active; the others are final.
progress requirednumber, 0 to 1 or null
error requiredJobError
outputs requiredarray of ClientJobOutput
created_at requiredstring, date-time
started_at requiredstring, date-time or null
finished_at requiredstring, date-time or null

JobError

Fields of JobError
NameTypeDescription
code requiredone of limit_exceeded, usage_cap_reached, out_of_credits, service_unavailable, internal_error, input_unreachable, processing_failedThe stable error code (the Errors page lists each one).
reason requiredone of missing_api_key, invalid_api_key, api_key_revoked, api_key_expired, missing_client_token, invalid_client_token, client_token_expired, client_token_superseded, client_token_revoked, missing_credentials, invalid_token, token_expired, token_revoked, account_disabled, link_invalid, origin_not_allowed, role_insufficient, token_scope, client_token_required, insufficient_scope, invalid_fields, not_json, range_not_satisfiable, size_mismatch, job, file, output, upload, webhook_endpoint, webhook_delivery, route, subscription, ticket, client_token, job_active, upload_used, webhook_endpoint_exists, webhook_delivery_pending, idempotency_key_reused, checkout_pending, subscription_exists, same_plan, ticket_closed, link_expired, file_expired, upload_expired, request_body_size, upload_size, input_size, output_size, job_duration, member_limit, organization_limit, token_uploads, subtitles_size, temporary, cancel_unconfirmed, queue_timeout, url_refused, http_status, network, redirects, too_slow, ffmpeg_error, output_empty, time_past_end, subtitles_invalid, media_unreadable, null or nullThe documented finer case of the code, or null.
message requiredstringWhat happened, for people; it may change.
retryable requiredbooleanWhether creating the same job again can succeed without a change.
log_tail requiredstring or nullWith processing_failed ffmpeg_error: ffmpeg's last lines about the media, once available; null otherwise.

ClientJobOutput

Fields of ClientJobOutput
NameTypeDescription
alias requiredstring
filename requiredstring
size_bytes requiredinteger
content_type requiredstring
expires_at requiredstring, date-time
deleted_at requiredstring, date-time or null
download_url requiredstring, URL or nullSigned download URL; null after deletion or retention.
download_url_expires_at requiredstring, date-time or null

ClientJobList

Fields of ClientJobList
NameTypeDescription
data requiredarray of ClientJobThe jobs the token may read, newest first.

Credits

The account's credits by bucket.

Fields of Credits
NameTypeDescription
plan requiredone of payg, starter, pro, scalepayg (Pay as you go), starter, pro or scale.
balance requirednumberCredits left, with one decimal: the balance as of as_of, less the usage of jobs since.
reserved requirednumber or nullCredits held by running jobs; null when it could not be read this time.
available requirednumber or nullbalance minus reserved; null with reserved.
as_of requiredstring, date-time or nullWhen the billing ledger last changed the balance; null before it has any entry.
buckets requiredarray of CreditBucketBuckets with credits left as of as_of, the one that expires first first.
cycle requiredobject or nullA subscriber's current billing cycle; null on Pay as you go.
overage requiredobject or nullA subscriber's overage; null on Pay as you go, which has none.

CreditBucket

One grant of credits.

Fields of CreditBucket
NameTypeDescription
id requiredstringThe grant id.
kind requiredone of free, subscription, top_up, auto_top_up, adjustmentfree (the one-time free credits), subscription (a plan cycle), top_up (a pack), auto_top_up (a pack bought by auto top-up) or adjustment (support).
granted requirednumberCredits granted, with one decimal.
remaining requirednumberCredits not used yet, as of as_of, with one decimal.
granted_at requiredstring, date-time
expires_at requiredstring, date-time or nullAfter this time the remaining credits are gone; null: they do not expire.

CompileResult

Fields of CompileResult
NameTypeDescription
spec requiredJobSpecThe operations body as accepted: presets expanded, defaults filled, times in seconds; preset stays to show where values came from.
command requiredstring or nullThe compiled ffmpeg command, without metadata outputs; null when every output is metadata.
input_files requiredmap of string to string or null
output_files requiredmap of string to string or null
ffmpeg_command requiredstring or nullOne shell line for a local ffmpeg; an upload input appears as ./<input name>.upload, since compile never looks uploads up. Null when every output is metadata.
steps requiredarray of JobStepWhat a job would run, in order.

JobSpec

The operations body as accepted: presets expanded, defaults filled, times in seconds; `preset` stays to show where values came from.

Fields of JobSpec
NameTypeDescription
inputs requiredmap of string to object
outputs requiredarray of Output

Output

An output: one schema per `type` (`video`, `audio`, `image`, `storyboard`, `gif`, `metadata`, `scenes`), or a preset of that type without `type`. A field the type does not take is refused with its pointer.

One of VideoOutput, AudioOutput, ImageOutput, StoryboardOutput, GifOutput, MetadataOutput, ScenesOutput, PresetVideoOutput, PresetAudioOutput, PresetImageOutput or PresetGifOutput.

TextLayer

Text drawn into the picture.

Fields of TextLayer
NameTypeDescription
text requiredstringThe text, 1 to 500 characters and at most 6 lines (\n).
font one of inter, inter-bold, roboto, roboto-bold, open-sans, open-sans-bold, montserrat, montserrat-bold, poppins, poppins-bold, oswald, oswald-bold, bebas-neue, playfair-display, playfair-display-bold, merriweather, merriweather-bold, noto-sans, noto-sans-bold, noto-serif, noto-serif-bold, jetbrains-mono, jetbrains-mono-boldA font id from GET /v1/fonts (default inter).
size integer, 8 to 1000The font size in pixels (default 48).
color one of black, white or stringThe text colour (default #FFFFFF).
opacity number, 0 to 1The text opacity, 0 to 1 (default 1).
line_height number, 1 to 3The distance between lines, times size (default 1.25).
position one of top-left, top, top-right, left, center, right, bottom-left, bottom, bottom-rightWhere the text sits (default center); lines align to its side.
margin integer, 0 to 1000Pixels from the edges position touches (default 48).
offset_x integer, -7680 to 7680Pixels to move right (negative: left).
offset_y integer, -7680 to 7680Pixels to move down (negative: up).
box objectA box behind each line: color (default black), opacity (0.5), padding in pixels (16).
outline objectAn outline around the letters: width in pixels (default 2), color (default black).
shadow objectA drop shadow: x and y in pixels (default 2), color (default black), opacity (0.5).
start number, 0 to 86400 or stringWhen the text appears, on the output's timeline (a part's own on a part).
end number, 0 to 86400 or stringWhen the text goes; the end of the output by default.
fade objectSeconds of fade in and fade out; out needs end.

Transition

A transition from the part before into this one, picture and sound.

Fields of Transition
NameTypeDescription
type requiredone of fade, fade-black, fade-white, dissolve, wipe-left, wipe-right, wipe-up, wipe-down, slide-left, slide-right, slide-up, slide-down, circle-open, circle-close, radial, zoom-in, pixelize
duration number, 0.1 to 5Seconds the two parts overlap, 0.1 to 5 (default 1).

Subtitles

Captions from an SRT or WebVTT input, burned into the picture at their cue times.

Fields of Subtitles
NameTypeDescription
input requiredstringThe input holding an SRT or WebVTT file (UTF-8, at most 1 MB); no other field of the job may read it.
font one of inter, inter-bold, roboto, roboto-bold, open-sans, open-sans-bold, montserrat, montserrat-bold, poppins, poppins-bold, oswald, oswald-bold, bebas-neue, playfair-display, playfair-display-bold, merriweather, merriweather-bold, noto-sans, noto-sans-bold, noto-serif, noto-serif-bold, jetbrains-mono, jetbrains-mono-boldA font id from GET /v1/fonts (default inter).
size integer, 8 to 400The font size in pixels on a 1,080-line frame (default 48), libass's: the height of a line.
color one of black, white or stringThe text colour (default #FFFFFF).
outline objectThe outline around the letters: width in pixels on a 1,080-line frame (default 2; 0 for none), color (default black).
position one of bottom, topWhere the lines sit, centred: bottom (default) or top.
margin integer, 0 to 1000Pixels from the bottom or top edge on a 1,080-line frame (default 48).

JobStep

Fields of JobStep
NameTypeDescription
tool requiredone of ffmpeg, ffprobeThe open source tool the step runs. More tools join as they ship.
inputs requiredarray of stringThe job's inputs the step reads, by name.
outputs requiredarray of stringThe job's outputs the step writes, by name.
command requiredstring or nullOne shell line that runs the step with a local ffmpeg; null for every other tool.

CompileRequest

An operations body, or the body of a per-operation endpoint with `operation` set to its name (`transcode`, ...).

Fields of CompileRequest
NameTypeDescription
inputs map of string to string or objectInput names to sources. A name becomes the alias in_<name>.
outputs array of Output
webhook_url string, URL, up to 2,048 characters or nullAn https URL that gets the job when it ends (M4).
metadata map of string to string, up to 500 charactersYour own string pairs, returned with the job and its webhook: at most 20 keys of up to 40 characters, values up to 500.
preset stringA preset name (GET /v1/presets); its options are the defaults and the output's own fields win.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format one of mp4, mov, webm, mkv, ts, mp3, m4a, aac, wav, flac, ogg, opus, jpg, png, gif, jsonThe container or image format; from filename, or the type's default.
strip_metadata booleanDrop the input's global and stream metadata (GPS, device tags).
trim objectThe part of the input to use: start, and end or duration.
crop objectA rectangle of the input frame, in input pixels.
rotate one of 90 or one of 180 or one of 270Degrees clockwise.
flip one of horizontal, verticalMirror the picture.
resize objectA new size: width, height, aspect, and how the picture fits (fit).
speed number, 0.25 to 4How fast it plays, 0.25 to 4; the sound keeps its pitch.
fps number, 1 to 120A constant frame rate.
color objectBrightness, contrast, saturation, gamma and hue.
sharpen objectAn unsharp mask.
blur objectA box blur of the whole frame, or of up to 4 regions.
overlays array of objectImages or videos drawn over the picture, in order.
text array of TextLayerUp to 8 text layers, drawn after overlays in order.
subtitles SubtitlesCaptions from an SRT or WebVTT input, burned into the picture at their cue times.
fade objectFade in at the start and out at the end; out needs trim.duration or trim.end.
video objectThe video encoder: codec, quality or CRF, preset, maximum bitrate, pixel format.
audio one of false or objectfalse for no sound, or the audio encoder and filters.
visualize objectA waveform or spectrum video drawn from the input's sound.
at number, 0 to 86400 or string or one of autoThe frame time, or "auto" for the most representative of the first 300 frames.
times array of number, 0 to 86400 or stringOne image per time, <name>_1, <name>_2, ...; not with at.
quality one of low, medium, highJPEG quality; PNG ignores it.
interval number, 0.5 to 3600Seconds between frames.
columns integer, 1 to 16Frames across.
rows integer, 1 to 16Frames down.
tile_width integer, 16 to 640Each frame fits in a square of this many pixels.
exact_times booleanDecode every frame for exact tile times, instead of key frames only.
colors integer, 2 to 256Colours in the palette.
threshold number, 1 to 100The score, 1 to 100, at which a frame starts a new scene (default 10, scdet's).
extra_inputs map of string to string or object
input string or objectAn http or https URL, videxo://uploads/<upload_id>, { "url" } or { "upload_id" }.
operation one of transcodeThe per-operation endpoint whose body this is.
type one of video, audio
images array of string or objectThe pictures in order: sources, or { "source", "duration", "motion", "text", "transition" }.
duration number, 0.1 to 300Seconds each image stays on screen unless it says otherwise (default 3).
motion one of zoom-in, zoom-out, pan-left, pan-right, pan-up, pan-downA slow zoom or pan across the picture, which then always fills the frame (Ken Burns).
transition objectThe transition into each image but the first, unless it sets its own.

OperationsJobRequest

The operations body: named `inputs` and a list of `outputs`, each an output type with options or a preset.

Fields of OperationsJobRequest
NameTypeDescription
inputs requiredmap of string to string or objectInput names to sources. A name becomes the alias in_<name>.
outputs requiredarray of Output
webhook_url string, URL, up to 2,048 characters or nullAn https URL that gets the job when it ends (M4).
metadata map of string to string, up to 500 charactersYour own string pairs, returned with the job and its webhook: at most 20 keys of up to 40 characters, values up to 500.

Job

Fields of Job
NameTypeDescription
id requiredstringjob_ and 24 lowercase letters and digits.
state requiredJobStatequeued and running are active; the others are final.
kind requiredone of command, operationsHow the job was described: a command body or an operations body.
operation requiredone of transcode, thumbnails, storyboard, gif, audio, concat, slideshow, probe, scenes, null or nullThe per-operation endpoint that made the job (transcode, thumbnails, ...); null otherwise.
spec requiredobject or nullThe operations body as accepted, presets expanded and defaults filled; null for a command job.
command requiredstring or nullThe ffmpeg arguments the job runs; for an operations job, the compiled command without its metadata outputs. Null when every output is metadata (no ffmpeg runs).
input_files requiredmap of string to string or nullThe inputs of command; an input only metadata outputs read is not listed. Null without a command.
output_files requiredmap of string to string or nullThe outputs of command; metadata outputs are not listed. Null without a command.
ffmpeg_command requiredstring or nullOne shell line that runs the command with a local ffmpeg: aliases replaced by the input URLs (an upload by its file name) and the output file names. Null without a command.
steps requiredarray of JobStepWhat the job runs, in order; a command job has one step, ffmpeg.
webhook_url requiredstring or null
metadata requiredmap of string to string
progress requirednumber, 0 to 1 or nullFrom 0 to 1 while running; null when unknown.
error requiredobject or nullWhy the job failed; null unless the state is failed.
outputs requiredarray of JobOutputThe stored files, once the job succeeded.
usage requiredobject or nullWhat the job used, once it ended.
created_at requiredstring, date-time
started_at requiredstring, date-time or null
finished_at requiredstring, date-time or null

JobOutput

Fields of JobOutput
NameTypeDescription
alias requiredstring
name requiredstringThe output name from the request (thumb for every file of an image output with times); for a command job, the alias without out_.
filename requiredstring
size_bytes requiredinteger
sha256 requiredstring
content_type requiredstring
expires_at requiredstring, date-time
download_url requiredstring, URL or nullSigned download URL; null after deletion or retention.
download_url_expires_at requiredstring, date-time or null
deleted_at requiredstring, date-time or nullWhen the file was deleted; null while it can be downloaded.

JobRequest

A command body (`command`, `input_files`, `output_files`) or an operations body (`inputs`, `outputs`); both may carry `webhook_url` and `metadata`.

One of CreateJobRequest or OperationsJobRequest.

CreateJobRequest

The command body: an ffmpeg `command` with its `input_files` and `output_files` (docs: command rules).

Fields of CreateJobRequest
NameTypeDescription
input_files requiredmap of string to string, URL, up to 4,096 characters or stringInput aliases (in_ and a name) to http/https URLs or videxo://uploads/<upload_id>.
output_files requiredmap of string to string, up to 105 charactersOutput aliases (out_ and a name) to file names.
command requiredstring, up to 65,536 charactersffmpeg arguments without ffmpeg, naming files only by {{alias}}.
webhook_url string, URL, up to 2,048 characters or nullAn https URL that gets the job when it ends (M4).
metadata map of string to string, up to 500 charactersYour own string pairs, returned with the job and its webhook: at most 20 keys of up to 40 characters, values up to 500.

TranscodeRequest

Fields of TranscodeRequest
NameTypeDescription
input requiredstring or objectAn http or https URL, videxo://uploads/<upload_id>, { "url" } or { "upload_id" }.
extra_inputs map of string to string or object
webhook_url string, URL, up to 2,048 characters or nullAn https URL that gets the job when it ends (M4).
metadata map of string to string, up to 500 charactersYour own string pairs, returned with the job and its webhook: at most 20 keys of up to 40 characters, values up to 500.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format one of mp4, mov, webm, mkv, ts, mp3, m4a, aac, wav, flac, ogg, opus, jpg, png, gif, jsonThe container or image format; from filename, or the type's default.
trim objectThe part of the input to use: start, and end or duration.
crop objectA rectangle of the input frame, in input pixels.
rotate numberDegrees clockwise.
flip one of horizontal, verticalMirror the picture.
resize objectA new size: width, height, aspect, and how the picture fits (fit).
color objectBrightness, contrast, saturation, gamma and hue.
sharpen objectAn unsharp mask.
blur objectA box blur of the whole frame, or of up to 4 regions.
overlays array of objectImages or videos drawn over the picture, in order.
text array of TextLayerUp to 8 text layers, drawn after overlays in order.
subtitles SubtitlesCaptions from an SRT or WebVTT input, burned into the picture at their cue times.
speed number, 0.25 to 4How fast it plays, 0.25 to 4; the sound keeps its pitch.
fps number, 1 to 120A constant frame rate.
fade objectFade in at the start and out at the end; out needs trim.duration or trim.end.
video objectThe video encoder: codec, quality or CRF, preset, maximum bitrate, pixel format.
audio boolean or objectfalse for no sound, or the audio encoder and filters.
visualize objectA waveform or spectrum video drawn from the input's sound.
strip_metadata booleanDrop the input's global and stream metadata (GPS, device tags).
preset one of web-720p, web-1080p, social-vertical, squareA video preset (GET /v1/presets); its options are the defaults and the output's own fields win.

ThumbnailsRequest

Fields of ThumbnailsRequest
NameTypeDescription
input requiredstring or objectAn http or https URL, videxo://uploads/<upload_id>, { "url" } or { "upload_id" }.
extra_inputs map of string to string or object
webhook_url string, URL, up to 2,048 characters or nullAn https URL that gets the job when it ends (M4).
metadata map of string to string, up to 500 charactersYour own string pairs, returned with the job and its webhook: at most 20 keys of up to 40 characters, values up to 500.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format one of mp4, mov, webm, mkv, ts, mp3, m4a, aac, wav, flac, ogg, opus, jpg, png, gif, jsonThe container or image format; from filename, or the type's default.
crop objectA rectangle of the input frame, in input pixels.
rotate numberDegrees clockwise.
flip one of horizontal, verticalMirror the picture.
resize objectA new size: width, height, aspect, and how the picture fits (fit).
color objectBrightness, contrast, saturation, gamma and hue.
sharpen objectAn unsharp mask.
blur objectA box blur of the whole frame, or of up to 4 regions.
overlays array of objectImages or videos drawn over the picture, in order.
text array of TextLayerUp to 8 text layers, drawn after overlays in order.
at number, 0 to 86400 or string or stringThe frame time, or "auto" for the most representative of the first 300 frames.
times array of number, 0 to 86400 or stringOne image per time, <name>_1, <name>_2, ...; not with at.
quality one of low, medium, highJPEG quality; PNG ignores it.
strip_metadata booleanDrop the input's global and stream metadata (GPS, device tags).
preset one of posterAn image preset (GET /v1/presets); its options are the defaults and the output's own fields win.

StoryboardRequest

Fields of StoryboardRequest
NameTypeDescription
input requiredstring or objectAn http or https URL, videxo://uploads/<upload_id>, { "url" } or { "upload_id" }.
extra_inputs map of string to string or object
webhook_url string, URL, up to 2,048 characters or nullAn https URL that gets the job when it ends (M4).
metadata map of string to string, up to 500 charactersYour own string pairs, returned with the job and its webhook: at most 20 keys of up to 40 characters, values up to 500.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format one of mp4, mov, webm, mkv, ts, mp3, m4a, aac, wav, flac, ogg, opus, jpg, png, gif, jsonThe container or image format; from filename, or the type's default.
trim objectThe part of the input to use: start, and end or duration.
crop objectA rectangle of the input frame, in input pixels.
rotate numberDegrees clockwise.
flip one of horizontal, verticalMirror the picture.
color objectBrightness, contrast, saturation, gamma and hue.
interval number, 0.5 to 3600Seconds between frames.
columns integer, 1 to 16Frames across.
rows integer, 1 to 16Frames down.
tile_width integer, 16 to 640Each frame fits in a square of this many pixels.
quality one of low, medium, highJPEG quality; PNG ignores it.
exact_times booleanDecode every frame for exact tile times, instead of key frames only.
strip_metadata booleanDrop the input's global and stream metadata (GPS, device tags).

GifRequest

Fields of GifRequest
NameTypeDescription
input requiredstring or objectAn http or https URL, videxo://uploads/<upload_id>, { "url" } or { "upload_id" }.
extra_inputs map of string to string or object
webhook_url string, URL, up to 2,048 characters or nullAn https URL that gets the job when it ends (M4).
metadata map of string to string, up to 500 charactersYour own string pairs, returned with the job and its webhook: at most 20 keys of up to 40 characters, values up to 500.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format one of mp4, mov, webm, mkv, ts, mp3, m4a, aac, wav, flac, ogg, opus, jpg, png, gif, jsonThe container or image format; from filename, or the type's default.
trim objectThe part of the input to use: start, and end or duration.
crop objectA rectangle of the input frame, in input pixels.
rotate numberDegrees clockwise.
flip one of horizontal, verticalMirror the picture.
resize objectA new size: width, height, aspect, and how the picture fits (fit).
color objectBrightness, contrast, saturation, gamma and hue.
sharpen objectAn unsharp mask.
blur objectA box blur of the whole frame, or of up to 4 regions.
overlays array of objectImages or videos drawn over the picture, in order.
text array of TextLayerUp to 8 text layers, drawn after overlays in order.
speed number, 0.25 to 4How fast it plays, 0.25 to 4; the sound keeps its pitch.
fps number, 1 to 120A constant frame rate.
fade objectFade in at the start and out at the end; out needs trim.duration or trim.end.
colors integer, 2 to 256Colours in the palette.
strip_metadata booleanDrop the input's global and stream metadata (GPS, device tags).
preset one of gif-previewA gif preset (GET /v1/presets); its options are the defaults and the output's own fields win.

AudioRequest

Fields of AudioRequest
NameTypeDescription
input requiredstring or objectAn http or https URL, videxo://uploads/<upload_id>, { "url" } or { "upload_id" }.
extra_inputs map of string to string or object
webhook_url string, URL, up to 2,048 characters or nullAn https URL that gets the job when it ends (M4).
metadata map of string to string, up to 500 charactersYour own string pairs, returned with the job and its webhook: at most 20 keys of up to 40 characters, values up to 500.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format one of mp4, mov, webm, mkv, ts, mp3, m4a, aac, wav, flac, ogg, opus, jpg, png, gif, jsonThe container or image format; from filename, or the type's default.
trim objectThe part of the input to use: start, and end or duration.
speed number, 0.25 to 4How fast it plays, 0.25 to 4; the sound keeps its pitch.
fade objectFade in at the start and out at the end; out needs trim.duration or trim.end.
audio boolean or objectfalse for no sound, or the audio encoder and filters.
strip_metadata booleanDrop the input's global and stream metadata (GPS, device tags).
preset one of podcast-audioAn audio preset (GET /v1/presets); its options are the defaults and the output's own fields win.

ConcatRequest

One of ConcatVideoRequest or ConcatAudioRequest.

SlideshowRequest

Fields of SlideshowRequest
NameTypeDescription
images requiredarray of string or object or objectThe pictures in order: sources, or { "source", "duration", "motion", "text", "transition" }.
duration number, 0.1 to 300Seconds each image stays on screen unless it says otherwise (default 3).
motion one of zoom-in, zoom-out, pan-left, pan-right, pan-up, pan-downA slow zoom or pan across the picture, which then always fills the frame (Ken Burns).
transition TransitionThe transition into each image but the first, unless it sets its own.
extra_inputs map of string to string or object
webhook_url string, URL, up to 2,048 characters or nullAn https URL that gets the job when it ends (M4).
metadata map of string to string, up to 500 charactersYour own string pairs, returned with the job and its webhook: at most 20 keys of up to 40 characters, values up to 500.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format one of mp4, mov, webm, mkv, ts, mp3, m4a, aac, wav, flac, ogg, opus, jpg, png, gif, jsonThe container or image format; from filename, or the type's default.
trim objectThe part of the input to use: start, and end or duration.
crop objectA rectangle of the input frame, in input pixels.
rotate numberDegrees clockwise.
flip one of horizontal, verticalMirror the picture.
resize objectA new size: width, height, aspect, and how the picture fits (fit).
color objectBrightness, contrast, saturation, gamma and hue.
sharpen objectAn unsharp mask.
blur objectA box blur of the whole frame, or of up to 4 regions.
overlays array of objectImages or videos drawn over the picture, in order.
text array of TextLayerUp to 8 text layers, drawn after overlays in order.
subtitles SubtitlesCaptions from an SRT or WebVTT input, burned into the picture at their cue times.
speed number, 0.25 to 4How fast it plays, 0.25 to 4; the sound keeps its pitch.
fps number, 1 to 120A constant frame rate.
fade objectFade in at the start and out at the end; out needs trim.duration or trim.end.
video objectThe video encoder: codec, quality or CRF, preset, maximum bitrate, pixel format.
audio boolean or objectfalse for no sound, or the audio encoder and filters.
visualize objectA waveform or spectrum video drawn from the input's sound.
strip_metadata booleanDrop the input's global and stream metadata (GPS, device tags).
preset one of web-720p, web-1080p, social-vertical, squareA video preset (GET /v1/presets); its options are the defaults and the output's own fields win.

ScenesRequest

Fields of ScenesRequest
NameTypeDescription
input requiredstring or objectAn http or https URL, videxo://uploads/<upload_id>, { "url" } or { "upload_id" }.
extra_inputs map of string to string or object
webhook_url string, URL, up to 2,048 characters or nullAn https URL that gets the job when it ends (M4).
metadata map of string to string, up to 500 charactersYour own string pairs, returned with the job and its webhook: at most 20 keys of up to 40 characters, values up to 500.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format stringjson, the only format.
trim objectThe part of the input to use: start, and end or duration.
threshold number, 1 to 100The score, 1 to 100, at which a frame starts a new scene (default 10, scdet's).

ProbeResponse

Fields of ProbeResponse
NameTypeDescription
id requiredstringjob_ and 24 lowercase letters and digits.
state requiredJobStatequeued and running are active; the others are final.
kind requiredone of command, operationsHow the job was described: a command body or an operations body.
operation requiredone of transcode, thumbnails, storyboard, gif, audio, concat, slideshow, probe, scenes, null or nullThe per-operation endpoint that made the job (transcode, thumbnails, ...); null otherwise.
spec requiredobject or nullThe operations body as accepted, presets expanded and defaults filled; null for a command job.
command requiredstring or nullThe ffmpeg arguments the job runs; for an operations job, the compiled command without its metadata outputs. Null when every output is metadata (no ffmpeg runs).
input_files requiredmap of string to string or nullThe inputs of command; an input only metadata outputs read is not listed. Null without a command.
output_files requiredmap of string to string or nullThe outputs of command; metadata outputs are not listed. Null without a command.
ffmpeg_command requiredstring or nullOne shell line that runs the command with a local ffmpeg: aliases replaced by the input URLs (an upload by its file name) and the output file names. Null without a command.
steps requiredarray of JobStepWhat the job runs, in order; a command job has one step, ffmpeg.
webhook_url requiredstring or null
metadata requiredmap of string to string
progress requirednumber, 0 to 1 or nullFrom 0 to 1 while running; null when unknown.
error requiredobject or nullWhy the job failed; null unless the state is failed.
outputs requiredarray of JobOutputThe stored files, once the job succeeded.
usage requiredobject or nullWhat the job used, once it ended.
created_at requiredstring, date-time
started_at requiredstring, date-time or null
finished_at requiredstring, date-time or null
probe requiredobject or nullThe document, once the job succeeded. Null while it runs or when it failed.

MediaStream

Fields of MediaStream
NameTypeDescription
index requiredinteger
type requiredone of video, audio, subtitle, data, attachment
codec requiredstring or null
profile requiredstring or null
duration requirednumber or nullSeconds, as the stream says; null when it does not.
bit_rate requiredinteger or nullBits per second.
width integer or nullVideo only: as stored, before rotation.
height integer or nullVideo only: as stored, before rotation.
rotation integer, 0 to 359 or nullVideo only: degrees clockwise to display the picture.
fps number or nullVideo only: the average frame rate.
pixel_format string or nullVideo only.
frames integer or nullVideo only: when the container says.
cover_art booleanVideo only: an attached picture, such as album art, not a video.
channels integer or nullAudio only.
channel_layout string or nullAudio only.
sample_rate integer or nullAudio only: in Hz.
tags requiredmap of string to stringTags from a fixed list of keys, each value at most 256 characters. Location and device tags are never copied.

ProbeRequest

Fields of ProbeRequest
NameTypeDescription
input requiredstring or objectAn http or https URL, videxo://uploads/<upload_id>, { "url" } or { "upload_id" }.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
webhook_url string, URL, up to 2,048 characters or nullAn https URL that gets the job when it ends (M4).
metadata map of string to string, up to 500 charactersYour own string pairs, returned with the job and its webhook: at most 20 keys of up to 40 characters, values up to 500.

PresetList

Fields of PresetList
NameTypeDescription
data requiredarray of Preset

Preset

Fields of Preset
NameTypeDescription
name requiredstring
type requiredone of video, audio, image, storyboard, gif, metadata, scenes
description requiredstring
deprecated requiredbooleanA deprecated preset keeps working through /v1.
output requiredPresetOptionsA preset's options, as the fields of an output of its type.

PresetOptions

A preset's options, as the fields of an output of its type.

Fields of PresetOptions
NameTypeDescription
format one of mp4, mov, webm, mkv, ts, mp3, m4a, aac, wav, flac, ogg, opus, jpg, png, gif, jsonThe container or image format; from filename, or the type's default.
strip_metadata booleanDrop the input's global and stream metadata (GPS, device tags).
trim objectThe part of the input to use: start, and end or duration.
crop objectA rectangle of the input frame, in input pixels.
rotate one of 90 or one of 180 or one of 270Degrees clockwise.
flip one of horizontal, verticalMirror the picture.
resize objectA new size: width, height, aspect, and how the picture fits (fit).
speed number, 0.25 to 4How fast it plays, 0.25 to 4; the sound keeps its pitch.
fps number, 1 to 120A constant frame rate.
color objectBrightness, contrast, saturation, gamma and hue.
sharpen objectAn unsharp mask.
blur objectA box blur of the whole frame, or of up to 4 regions.
overlays array of objectImages or videos drawn over the picture, in order.
text array of TextLayerUp to 8 text layers, drawn after overlays in order.
fade objectFade in at the start and out at the end; out needs trim.duration or trim.end.
video objectThe video encoder: codec, quality or CRF, preset, maximum bitrate, pixel format.
audio one of false or objectfalse for no sound, or the audio encoder and filters.
visualize objectA waveform or spectrum video drawn from the input's sound.
at number, 0 to 86400 or string or one of autoThe frame time, or "auto" for the most representative of the first 300 frames.
times array of number, 0 to 86400 or stringOne image per time, <name>_1, <name>_2, ...; not with at.
quality one of low, medium, highJPEG quality; PNG ignores it.
interval number, 0.5 to 3600Seconds between frames.
columns integer, 1 to 16Frames across.
rows integer, 1 to 16Frames down.
tile_width integer, 16 to 640Each frame fits in a square of this many pixels.
exact_times booleanDecode every frame for exact tile times, instead of key frames only.
colors integer, 2 to 256Colours in the palette.
threshold number, 1 to 100The score, 1 to 100, at which a frame starts a new scene (default 10, scdet's).

JobList

Fields of JobList
NameTypeDescription
data requiredarray of JobNewest first.
next_cursor requiredstring or nullPass as cursor for the next page; null on the last page.

WebhookSecret

Fields of WebhookSecret
NameTypeDescription
secret requiredstringwhsec_ and the base64 key. Verify signatures with it.
created_at requiredstring, date-time
rotated_at requiredstring, date-time or null
previous_secret_expires_at requiredstring, date-time or nullUntil then deliveries carry a second signature made with the previous secret.

WebhookEndpointList

Fields of WebhookEndpointList
NameTypeDescription
data requiredarray of WebhookEndpoint

WebhookEndpoint

Fields of WebhookEndpoint
NameTypeDescription
id requiredstringwe_ and 24 lowercase letters and digits.
url requiredstring
enabled requiredbooleanA disabled endpoint gets no new deliveries.
created_at requiredstring, date-time
updated_at requiredstring, date-time

CreateWebhookEndpointRequest

Fields of CreateWebhookEndpointRequest
NameTypeDescription
url requiredstring, URL, up to 2,048 charactersA public https URL on the default port.
enabled booleanDefault true.

UpdateWebhookEndpointRequest

Fields of UpdateWebhookEndpointRequest
NameTypeDescription
url string, URL, up to 2,048 charactersA public https URL on the default port.
enabled boolean

WebhookDeliveryList

Fields of WebhookDeliveryList
NameTypeDescription
data requiredarray of WebhookDeliveryNewest first.
next_cursor requiredstring or nullPass as cursor for the next page; null on the last page.

WebhookDelivery

Fields of WebhookDelivery
NameTypeDescription
id requiredstringThe webhook-id header of the delivery: msg_ and 24 hex digits.
job_id requiredstringjob_ and 24 lowercase letters and digits.
event_type requiredWebhookEventType
target requiredone of job_url, endpointjob_url: the job's webhook_url; endpoint: the default endpoint.
endpoint_id requiredstring or nullwe_ and 24 lowercase letters and digits.
url requiredstringWhere the delivery goes (for an endpoint, its URL at the last attempt).
status requiredWebhookDeliveryStatuspending: will be attempted (again); delivered: a 2xx answer; failed: gave up.
attempts requiredinteger
max_attempts requiredinteger
next_attempt_at requiredstring, date-time or nullWhen the next attempt is due; null unless pending.
last_attempt_at requiredstring, date-time or null
last_status_code requiredinteger or null
last_error requiredone of http_status, redirect, timeout, network_error, url_refused, endpoint_disabled, endpoint_deleted, internal_error, null or nullWhy the last attempt failed; null after a 2xx.
last_duration_ms requiredinteger or null
last_response_body requiredstring or nullThe first 2048 bytes of the last answer, as text.
delivered_at requiredstring, date-time or null
created_at requiredstring, date-time

ClientToken

Fields of ClientToken
NameTypeDescription
id requiredstringThe id of a client token.
token requiredstringThe token, shown once: hand it and id to the app. Opaque: never parse it.
chain_id requiredstringThe id of the first token of its chain.
expires_at requiredstring, date-time
grant requiredClientGrant

ClientGrant

Fields of ClientGrant
NameTypeDescription
subject requiredstring or null
allowed_origins requiredarray of string or nullNull: any origin, and native apps.
uploads requiredobject or nullNull: the token creates no uploads.
jobs requiredobject or nullNull: the token reads no jobs.

CreateClientTokenRequest

Fields of CreateClientTokenRequest
NameTypeDescription
ttl_seconds integer, 60 to 21600Lifetime in seconds, 60 to 21600 (6 hours); 900 by default. Default 900.
subject stringYour own opaque id of the end user (never an email): stored, shown in your logs and used to revoke their tokens at once.
allowed_origins array of string, up to 256 charactersUp to 5 exact browser origins; a request from another origin is refused. Leave out for native apps and any origin.
continues stringAny token of the same subject's chain, to refresh it: the new token keeps the chain's uploads count and read job ids, and is no wider than the chain's newest token.
uploads ClientUploadsGrant
jobs ClientJobsGrant

ClientUploadsGrant

Fields of ClientUploadsGrant
NameTypeDescription
max_count requiredinteger, 1 to 10Uploads the token's chain may create, 1 to 10; a refresh never resets it.
max_size_bytes requiredintegerThe largest upload, in bytes: at most 100 MB and the plan's input limit.
content_types array of string, up to 128 charactersDeclared media types the uploads may have, exact or type/*; video/*, audio/*, image/* by default.

ClientJobsGrant

Fields of ClientJobsGrant
NameTypeDescription
read requiredarray of stringIds of your jobs the token may read, 1 to 10.

RevokedClientTokens

Fields of RevokedClientTokens
NameTypeDescription
revoked requiredintegerTokens revoked, with their chains.

RevokeClientTokensRequest

Fields of RevokeClientTokensRequest
NameTypeDescription
subject requiredstringYour own opaque id of the end user (never an email): stored, shown in your logs and used to revoke their tokens at once.

VideoOutput

A video output: the fields a video output takes.

Fields of VideoOutput
NameTypeDescription
name stringRequired when the job has several outputs; main when it has one. The alias is out_<name>.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format one of mp4, mov, webm, mkv, ts, mp3, m4a, aac, wav, flac, ogg, opus, jpg, png, gif, jsonThe container or image format; from filename, or the type's default.
input stringThe input it reads; required when the job has several, unless concat is set.
concat array of string or objectParts played one after another: input names, { "input", "start", "end", "transition" }, still images, { "image", "duration", "motion", "transition" }, or title cards, { "color", "duration", "text", "transition" }. Not with input.
trim objectThe part of the input to use: start, and end or duration.
crop objectA rectangle of the input frame, in input pixels.
rotate numberDegrees clockwise.
flip one of horizontal, verticalMirror the picture.
resize objectA new size: width, height, aspect, and how the picture fits (fit).
color objectBrightness, contrast, saturation, gamma and hue.
sharpen objectAn unsharp mask.
blur objectA box blur of the whole frame, or of up to 4 regions.
overlays array of objectImages or videos drawn over the picture, in order.
text array of TextLayerUp to 8 text layers, drawn after overlays in order.
subtitles SubtitlesCaptions from an SRT or WebVTT input, burned into the picture at their cue times.
speed number, 0.25 to 4How fast it plays, 0.25 to 4; the sound keeps its pitch.
fps number, 1 to 120A constant frame rate.
fade objectFade in at the start and out at the end; out needs trim.duration or trim.end.
video objectThe video encoder: codec, quality or CRF, preset, maximum bitrate, pixel format.
audio boolean or objectfalse for no sound, or the audio encoder and filters.
visualize objectA waveform or spectrum video drawn from the input's sound.
strip_metadata booleanDrop the input's global and stream metadata (GPS, device tags).
preset one of web-720p, web-1080p, social-vertical, squareA video preset (GET /v1/presets); its options are the defaults and the output's own fields win.
type requiredstring

AudioOutput

An audio output: the fields an audio output takes.

Fields of AudioOutput
NameTypeDescription
name stringRequired when the job has several outputs; main when it has one. The alias is out_<name>.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format one of mp4, mov, webm, mkv, ts, mp3, m4a, aac, wav, flac, ogg, opus, jpg, png, gif, jsonThe container or image format; from filename, or the type's default.
input stringThe input it reads; required when the job has several, unless concat is set.
concat array of string or objectParts played one after another: input names, { "input", "start", "end", "transition" }, still images, { "image", "duration", "motion", "transition" }, or title cards, { "color", "duration", "text", "transition" }. Not with input.
trim objectThe part of the input to use: start, and end or duration.
speed number, 0.25 to 4How fast it plays, 0.25 to 4; the sound keeps its pitch.
fade objectFade in at the start and out at the end; out needs trim.duration or trim.end.
audio boolean or objectfalse for no sound, or the audio encoder and filters.
strip_metadata booleanDrop the input's global and stream metadata (GPS, device tags).
preset one of podcast-audioAn audio preset (GET /v1/presets); its options are the defaults and the output's own fields win.
type requiredstring

ImageOutput

An image output: the fields an image output takes.

Fields of ImageOutput
NameTypeDescription
name stringRequired when the job has several outputs; main when it has one. The alias is out_<name>.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format one of mp4, mov, webm, mkv, ts, mp3, m4a, aac, wav, flac, ogg, opus, jpg, png, gif, jsonThe container or image format; from filename, or the type's default.
input stringThe input it reads; required when the job has several, unless concat is set.
crop objectA rectangle of the input frame, in input pixels.
rotate numberDegrees clockwise.
flip one of horizontal, verticalMirror the picture.
resize objectA new size: width, height, aspect, and how the picture fits (fit).
color objectBrightness, contrast, saturation, gamma and hue.
sharpen objectAn unsharp mask.
blur objectA box blur of the whole frame, or of up to 4 regions.
overlays array of objectImages or videos drawn over the picture, in order.
text array of TextLayerUp to 8 text layers, drawn after overlays in order.
at number, 0 to 86400 or string or stringThe frame time, or "auto" for the most representative of the first 300 frames.
times array of number, 0 to 86400 or stringOne image per time, <name>_1, <name>_2, ...; not with at.
quality one of low, medium, highJPEG quality; PNG ignores it.
strip_metadata booleanDrop the input's global and stream metadata (GPS, device tags).
preset one of posterAn image preset (GET /v1/presets); its options are the defaults and the output's own fields win.
type requiredstring

StoryboardOutput

A storyboard output: the fields a storyboard output takes.

Fields of StoryboardOutput
NameTypeDescription
name stringRequired when the job has several outputs; main when it has one. The alias is out_<name>.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format one of mp4, mov, webm, mkv, ts, mp3, m4a, aac, wav, flac, ogg, opus, jpg, png, gif, jsonThe container or image format; from filename, or the type's default.
input stringThe input it reads; required when the job has several, unless concat is set.
trim objectThe part of the input to use: start, and end or duration.
crop objectA rectangle of the input frame, in input pixels.
rotate numberDegrees clockwise.
flip one of horizontal, verticalMirror the picture.
color objectBrightness, contrast, saturation, gamma and hue.
interval number, 0.5 to 3600Seconds between frames.
columns integer, 1 to 16Frames across.
rows integer, 1 to 16Frames down.
tile_width integer, 16 to 640Each frame fits in a square of this many pixels.
quality one of low, medium, highJPEG quality; PNG ignores it.
exact_times booleanDecode every frame for exact tile times, instead of key frames only.
strip_metadata booleanDrop the input's global and stream metadata (GPS, device tags).
type requiredstring

GifOutput

A gif output: the fields a gif output takes.

Fields of GifOutput
NameTypeDescription
name stringRequired when the job has several outputs; main when it has one. The alias is out_<name>.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format one of mp4, mov, webm, mkv, ts, mp3, m4a, aac, wav, flac, ogg, opus, jpg, png, gif, jsonThe container or image format; from filename, or the type's default.
input stringThe input it reads; required when the job has several, unless concat is set.
trim objectThe part of the input to use: start, and end or duration.
crop objectA rectangle of the input frame, in input pixels.
rotate numberDegrees clockwise.
flip one of horizontal, verticalMirror the picture.
resize objectA new size: width, height, aspect, and how the picture fits (fit).
color objectBrightness, contrast, saturation, gamma and hue.
sharpen objectAn unsharp mask.
blur objectA box blur of the whole frame, or of up to 4 regions.
overlays array of objectImages or videos drawn over the picture, in order.
text array of TextLayerUp to 8 text layers, drawn after overlays in order.
speed number, 0.25 to 4How fast it plays, 0.25 to 4; the sound keeps its pitch.
fps number, 1 to 120A constant frame rate.
fade objectFade in at the start and out at the end; out needs trim.duration or trim.end.
colors integer, 2 to 256Colours in the palette.
strip_metadata booleanDrop the input's global and stream metadata (GPS, device tags).
preset one of gif-previewA gif preset (GET /v1/presets); its options are the defaults and the output's own fields win.
type requiredstring

MetadataOutput

A metadata output: the fields a metadata output takes.

Fields of MetadataOutput
NameTypeDescription
name stringRequired when the job has several outputs; main when it has one. The alias is out_<name>.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format stringjson, the only format.
input stringThe input it reads; required when the job has several, unless concat is set.
type requiredstring

ScenesOutput

A scenes output: the fields a scenes output takes.

Fields of ScenesOutput
NameTypeDescription
name stringRequired when the job has several outputs; main when it has one. The alias is out_<name>.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format stringjson, the only format.
input stringThe input it reads; required when the job has several, unless concat is set.
trim objectThe part of the input to use: start, and end or duration.
threshold number, 1 to 100The score, 1 to 100, at which a frame starts a new scene (default 10, scdet's).
type requiredstring

PresetVideoOutput

An output named by a video preset, without `type`: the fields a video output takes.

Fields of PresetVideoOutput
NameTypeDescription
name stringRequired when the job has several outputs; main when it has one. The alias is out_<name>.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format one of mp4, mov, webm, mkv, ts, mp3, m4a, aac, wav, flac, ogg, opus, jpg, png, gif, jsonThe container or image format; from filename, or the type's default.
input stringThe input it reads; required when the job has several, unless concat is set.
concat array of string or objectParts played one after another: input names, { "input", "start", "end", "transition" }, still images, { "image", "duration", "motion", "transition" }, or title cards, { "color", "duration", "text", "transition" }. Not with input.
trim objectThe part of the input to use: start, and end or duration.
crop objectA rectangle of the input frame, in input pixels.
rotate numberDegrees clockwise.
flip one of horizontal, verticalMirror the picture.
resize objectA new size: width, height, aspect, and how the picture fits (fit).
color objectBrightness, contrast, saturation, gamma and hue.
sharpen objectAn unsharp mask.
blur objectA box blur of the whole frame, or of up to 4 regions.
overlays array of objectImages or videos drawn over the picture, in order.
text array of TextLayerUp to 8 text layers, drawn after overlays in order.
subtitles SubtitlesCaptions from an SRT or WebVTT input, burned into the picture at their cue times.
speed number, 0.25 to 4How fast it plays, 0.25 to 4; the sound keeps its pitch.
fps number, 1 to 120A constant frame rate.
fade objectFade in at the start and out at the end; out needs trim.duration or trim.end.
video objectThe video encoder: codec, quality or CRF, preset, maximum bitrate, pixel format.
audio boolean or objectfalse for no sound, or the audio encoder and filters.
visualize objectA waveform or spectrum video drawn from the input's sound.
strip_metadata booleanDrop the input's global and stream metadata (GPS, device tags).
preset requiredone of web-720p, web-1080p, social-vertical, squareA video preset (GET /v1/presets); its options are the defaults and the output's own fields win.

PresetAudioOutput

An output named by an audio preset, without `type`: the fields an audio output takes.

Fields of PresetAudioOutput
NameTypeDescription
name stringRequired when the job has several outputs; main when it has one. The alias is out_<name>.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format one of mp4, mov, webm, mkv, ts, mp3, m4a, aac, wav, flac, ogg, opus, jpg, png, gif, jsonThe container or image format; from filename, or the type's default.
input stringThe input it reads; required when the job has several, unless concat is set.
concat array of string or objectParts played one after another: input names, { "input", "start", "end", "transition" }, still images, { "image", "duration", "motion", "transition" }, or title cards, { "color", "duration", "text", "transition" }. Not with input.
trim objectThe part of the input to use: start, and end or duration.
speed number, 0.25 to 4How fast it plays, 0.25 to 4; the sound keeps its pitch.
fade objectFade in at the start and out at the end; out needs trim.duration or trim.end.
audio boolean or objectfalse for no sound, or the audio encoder and filters.
strip_metadata booleanDrop the input's global and stream metadata (GPS, device tags).
preset requiredone of podcast-audioAn audio preset (GET /v1/presets); its options are the defaults and the output's own fields win.

PresetImageOutput

An output named by an image preset, without `type`: the fields an image output takes.

Fields of PresetImageOutput
NameTypeDescription
name stringRequired when the job has several outputs; main when it has one. The alias is out_<name>.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format one of mp4, mov, webm, mkv, ts, mp3, m4a, aac, wav, flac, ogg, opus, jpg, png, gif, jsonThe container or image format; from filename, or the type's default.
input stringThe input it reads; required when the job has several, unless concat is set.
crop objectA rectangle of the input frame, in input pixels.
rotate numberDegrees clockwise.
flip one of horizontal, verticalMirror the picture.
resize objectA new size: width, height, aspect, and how the picture fits (fit).
color objectBrightness, contrast, saturation, gamma and hue.
sharpen objectAn unsharp mask.
blur objectA box blur of the whole frame, or of up to 4 regions.
overlays array of objectImages or videos drawn over the picture, in order.
text array of TextLayerUp to 8 text layers, drawn after overlays in order.
at number, 0 to 86400 or string or stringThe frame time, or "auto" for the most representative of the first 300 frames.
times array of number, 0 to 86400 or stringOne image per time, <name>_1, <name>_2, ...; not with at.
quality one of low, medium, highJPEG quality; PNG ignores it.
strip_metadata booleanDrop the input's global and stream metadata (GPS, device tags).
preset requiredone of posterAn image preset (GET /v1/presets); its options are the defaults and the output's own fields win.

PresetGifOutput

An output named by a gif preset, without `type`: the fields a gif output takes.

Fields of PresetGifOutput
NameTypeDescription
name stringRequired when the job has several outputs; main when it has one. The alias is out_<name>.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format one of mp4, mov, webm, mkv, ts, mp3, m4a, aac, wav, flac, ogg, opus, jpg, png, gif, jsonThe container or image format; from filename, or the type's default.
input stringThe input it reads; required when the job has several, unless concat is set.
trim objectThe part of the input to use: start, and end or duration.
crop objectA rectangle of the input frame, in input pixels.
rotate numberDegrees clockwise.
flip one of horizontal, verticalMirror the picture.
resize objectA new size: width, height, aspect, and how the picture fits (fit).
color objectBrightness, contrast, saturation, gamma and hue.
sharpen objectAn unsharp mask.
blur objectA box blur of the whole frame, or of up to 4 regions.
overlays array of objectImages or videos drawn over the picture, in order.
text array of TextLayerUp to 8 text layers, drawn after overlays in order.
speed number, 0.25 to 4How fast it plays, 0.25 to 4; the sound keeps its pitch.
fps number, 1 to 120A constant frame rate.
fade objectFade in at the start and out at the end; out needs trim.duration or trim.end.
colors integer, 2 to 256Colours in the palette.
strip_metadata booleanDrop the input's global and stream metadata (GPS, device tags).
preset requiredone of gif-previewA gif preset (GET /v1/presets); its options are the defaults and the output's own fields win.

ConcatVideoRequest

A video concatenation: every part fitted into a `resize` box.

Fields of ConcatVideoRequest
NameTypeDescription
inputs requiredarray of string or object or object
extra_inputs map of string to string or object
webhook_url string, URL, up to 2,048 characters or nullAn https URL that gets the job when it ends (M4).
metadata map of string to string, up to 500 charactersYour own string pairs, returned with the job and its webhook: at most 20 keys of up to 40 characters, values up to 500.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format one of mp4, mov, webm, mkv, ts, mp3, m4a, aac, wav, flac, ogg, opus, jpg, png, gif, jsonThe container or image format; from filename, or the type's default.
trim objectThe part of the input to use: start, and end or duration.
crop objectA rectangle of the input frame, in input pixels.
rotate numberDegrees clockwise.
flip one of horizontal, verticalMirror the picture.
resize objectA box: width and height, or one of them and aspect; every part is fitted into it.
color objectBrightness, contrast, saturation, gamma and hue.
sharpen objectAn unsharp mask.
blur objectA box blur of the whole frame, or of up to 4 regions.
overlays array of objectImages or videos drawn over the picture, in order.
text array of TextLayerUp to 8 text layers, drawn after overlays in order.
subtitles SubtitlesCaptions from an SRT or WebVTT input, burned into the picture at their cue times.
speed number, 0.25 to 4How fast it plays, 0.25 to 4; the sound keeps its pitch.
fps number, 1 to 120A constant frame rate.
fade objectFade in at the start and out at the end; out needs trim.duration or trim.end.
video objectThe video encoder: codec, quality or CRF, preset, maximum bitrate, pixel format.
audio boolean or objectfalse for no sound, or the audio encoder and filters.
visualize objectA waveform or spectrum video drawn from the input's sound.
strip_metadata booleanDrop the input's global and stream metadata (GPS, device tags).
preset one of web-720p, web-1080p, social-vertical, squareA video preset (GET /v1/presets); its options are the defaults and the output's own fields win.
type stringvideo by default.

ConcatAudioRequest

An audio concatenation (`"type": "audio"`): sound only.

Fields of ConcatAudioRequest
NameTypeDescription
inputs requiredarray of string or object or object
extra_inputs map of string to string or object
webhook_url string, URL, up to 2,048 characters or nullAn https URL that gets the job when it ends (M4).
metadata map of string to string, up to 500 charactersYour own string pairs, returned with the job and its webhook: at most 20 keys of up to 40 characters, values up to 500.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
format one of mp4, mov, webm, mkv, ts, mp3, m4a, aac, wav, flac, ogg, opus, jpg, png, gif, jsonThe container or image format; from filename, or the type's default.
trim objectThe part of the input to use: start, and end or duration.
speed number, 0.25 to 4How fast it plays, 0.25 to 4; the sound keeps its pitch.
fade objectFade in at the start and out at the end; out needs trim.duration or trim.end.
audio boolean or objectfalse for no sound, or the audio encoder and filters.
strip_metadata booleanDrop the input's global and stream metadata (GPS, device tags).
preset one of podcast-audioAn audio preset (GET /v1/presets); its options are the defaults and the output's own fields win.
type requiredstring