Video encoding you don’t have to operate.

Send a source URL and the name of a preset. VideoTranscode runs the FFmpeg pipeline on managed workers, writes the result to object storage, and calls your webhook when the job is done.

hls_abr_264_standardOne request, five renditions
1080p5200k
720p2800k
480p1200k
360p600k
240p300k

CMAF fragmented MP4, six-second segments, two-second GOP, H.264 video with AAC audio.

One endpoint, one job

Authenticate with an API key, name a preset, and the job is accepted or refused immediately. Refusals say which presets your plan allows and how much quota is left.

POST /api/v1/jobsRequest
curl -X POST https://videotranscode.cloud/api/v1/jobs \
  -H "Authorization: Bearer $VT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "inputUrl": "https://cdn.example.com/master.mov",
    "preset": "hls_abr_264_standard"
  }'
201 CreatedResponse
{
  "id": "9d1f5c0a-4e7b-4a61-9b2e-8f1c3d5a7e42",
  "status": "queued",
  "preset": "hls_abr_264_standard",
  "estimatedProcessingTime": "8-18 minutes",
  "links": {
    "self": "/api/v1/jobs/9d1f5c0a-4e7b-4a61-9b2e-8f1c3d5a7e42",
    "cancel": "/api/v1/jobs/9d1f5c0a-4e7b-4a61-9b2e-8f1c3d5a7e42/cancel"
  },
  "user": {
    "remainingJobs": 97,
    "plan": "Pro"
  }
}

What happens after you post

A job moves through four states. You can poll it, or let the webhook tell you, in which case every delivery carries an HMAC-SHA256 signature you can verify.

queued
The job claims a slot from your monthly quota and enters the queue. If it cannot be queued, the slot is released and nothing is counted against you.
processing
A worker fetches the source and runs the FFmpeg command the preset describes. Start time and progress are recorded on the job.
completed
Output is written to object storage. Reading the job returns a signed download URL and the exact moment that URL stops working.
failed
The worker retries up to three times, then records the reason on the job. The quota slot is not returned, and webhook delivery is attempted three times.
POST your webhook URLDelivered on every state change
{
  "jobId": "9d1f5c0a-4e7b-4a61-9b2e-8f1c3d5a7e42",
  "status": "completed",
  "preset": "hls_abr_264_standard",
  "outputUrl": "https://cdn.videotranscode.cloud/...",
  "resolution": "1920x1080",
  "duration": 742,
  "fileSize": 486703104,
  "timestamp": "2026-09-10T14:21:07.412Z"
}

Twenty-three presets, no FFmpeg flags to write

Each preset is a reviewed encoding ladder with fixed codecs, bitrates and packaging. Name one and you get the same output every time.

Progressive MP4

mp4_264_240pH.264 240p for low bandwidthFree
mp4_264_480pH.264 480p, broadest device supportFree
mp4_264_720pH.264 720pFree
mp4_264_1080pH.264 1080pPro
mp4_265_1080p_efficientHEVC 1080p at a lower bitrateBusiness

Adaptive streaming

hls_abr_264_basicHLS, three rungs, CMAF fMP4Free
hls_abr_264_standardHLS, five rungs, CMAF fMP4Pro
hls_abr_265_efficient_4kHLS with HEVC up to 4KEnterprise
dash_abr_vp9_standardDASH with VP9 video and Opus audioPro
dash_abr_av1_efficient_1080pDASH with AV1 up to 1080pBusiness
dash_abr_av1_efficient_4kDASH with AV1 up to 4KEnterprise

Live

live_hls_264_basicLive HLS, three rungsBusiness
live_hls_264_standardLive HLS with a 1080p rungBusiness

Social formats

social_square_1080Square 1080 by 1080Pro
social_portrait_1080x1920Portrait 1080 by 1920Pro

Audio only

audio_aac_podcastAAC, tuned for spoken wordFree
audio_opus_voiceOpus, tuned for voicePro

Thumbnails and captions

util_thumbnailsOne frame every ten secondsFree
util_thumbnails_spriteSprite sheet with a WebVTT indexBusiness
util_subs_sidecar_basicSubRip converted to WebVTTFree

Repair and conversion

filters_basicDeinterlace and denoiseBusiness
filters_advancedStabilise and tone-mapEnterprise
mp4_265_hdr10_to_sdrHDR10 down to SDR 1080pEnterprise

Limits

Quota is counted in jobs per calendar month, claimed when the job is created. Source length is measured by the worker after it downloads the file, so a source over the limit fails rather than being refused up front.

PlanLongest sourceJobs per monthDownload link valid forPresets available
Free10 minutes104 hours7 presets
Pro60 minutes1007 days13 presets
Business180 minutes1,0007 days19 presets
Enterprise480 minutesBy agreement7 daysAll 23 presets

Download links are capped at seven days by the storage signer, so reading a job again returns a fresh link. Scheduled deletion of stored output is planned but not yet switched on, so build against the link lifetime rather than a retention guarantee.

Start on the free plan

Ten jobs a month, seven presets and full API access, without a card. Your key works the moment you create it.