Skip to main content
Updated Aug 13, 2026

Transform Media

Use this action when you have an audio or video file in your company storage and want it converted to another format.

Best for

  • Re-encoding a video you downloaded or generated into a standard mp4
  • Converting an audio file to a specific format — Opus, WAV or FLAC
  • Pulling the soundtrack out of a video: point one of the audio presets at a video file and you get its audio

Use something else when

You wantUse
Only to read a file's duration or dimensionsInspect media — it is cheaper, and free the second time
A transcript of speechTranscribe audio — it already converts the audio for you
To resize or convert an imageExecute code, Python. Pillow is available there

Main fields

FieldWhat it does
FileThe audio or video file to convert, usually step(0).file from an earlier step
Bucket and Full pathAn alternative to File when you want to point at the object directly
PresetThe format to produce — see the table below
PurposeOptional label for what this step is for, shown in the logs

Presets

PresetYou get
mp4Video re-encoded to H.264 with AAC audio, ready to play almost anywhere
ogg_opusAudio as Opus in an Ogg container — small, good for voice
wavUncompressed audio
flac_16k_monoLossless mono audio at 16 kHz, the shape speech tools usually want

What later steps can use

ValueWhat it is
step(N).jobIdThe transform job's ID
step(N).jobStatusThe job's status when it was queued — normally pending
step(N).presetThe preset the job was queued with

This action queues the job — it does not wait for it

The step hands back a job ID and finishes immediately. Converting a large video can take minutes, so it runs in the background.

That means the converted file is not available to the next step in the same run. Do not try to send step(N).output — there is nothing there yet.

To use the result, check on the job until it is done:

  • the get_transcode_job tool or GET /v1/transcodes/{id}, using the job ID; or
  • a scheduled workflow that looks for transform jobs whose status is done.

When a job is done, output.fullPath and output.bucket are the converted file.

You can also check on a job at any time through the API (GET /v1/transcodes/{id}) or the get_transcode_job tool.

Limits

LimitValue
File size512 MB
Length, video presets30 minutes
Length, audio presets4 hours
Jobs queued at once10 per company

If you need to check a file's length before converting it, use Inspect media first and branch on step(N).durationSeconds.

Cost

Converting media is billed as transcoding time, against your plan's transcoding allowance. Longer and larger files cost more.

Converting the same file to the same preset again is free. The result is kept and reused, so a workflow that runs repeatedly over the same file only pays once. Changing the file changes the result, so an updated file is converted again.

When a job fails

A failed job carries a reason in doc.errorCode:

CodeWhat happened
too_largeThe file is over 512 MB
too_longThe file is longer than the preset allows
undecodableThe file could not be read as media, or this preset cannot produce it. Retrying will not help
output_too_largeThe converted file came out too big
unavailableThe conversion service could not be reached. Worth retrying

If the conversion service is simply busy, the job is not failed — it goes back in the queue and runs shortly after, without using up any of its retries.