Media infrastructure for
apps with user uploads.
One API for video, audio, and images: transcode, moderate, and deliver user-generated media without running your own FFmpeg fleet.
Media processing capabilities
Automated Tier Routing
Our engine analyzes job metadata in real-time. It automatically routes simple 1:1 transcodes to Standard while escalating complex multi-output AI jobs to Premium.
Smart Multiplexing
Avoid redundant encoding. We transmux compatible streams into HLS/Dash containers instantly to save on compute costs.
Neural Image Ops
Premium tier access to AI-driven face detection, smart cropping, and background removal directly within your media pipeline.
Content Moderation
Premium tier: Automated safety checks with NSFW detection, violence assessment, and custom policy enforcement. Get actionable verdicts in real-time.
Pro-Grade Codec Library
From standard H.264 to high-efficiency HEVC and AV1. Deliver the highest visual quality at the lowest possible bitrates across all device tiers.
Quickstart
Three calls from file to finished output.
MediaRuntime is asynchronous. Submitting a job returns QUEUED immediately, and finished outputs arrive later on your signed webhook.
- 1
Request an upload URL
You get a short-lived URL plus the file_uri to submit the job with.
- 2
Upload the bytes
PUT the file straight to that URL, sending the headers step 1 returned.
- 3
Queue the job
Submit the file_uri with the output presets you want back.
# 1. Ask for a short-lived upload URL
curl -X POST https://mediaruntime.com/v1/upload-url \
-H "X-API-Key: $MEDIARUNTIME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"filename": "trailer.mp4",
"content_type": "video/mp4"
}'
# -> { "upload_url": "...", "file_uri": "..." }
# 2. Upload the bytes to the URL you were given
curl -X PUT "<upload_url from step 1>" \
--upload-file ./trailer.mp4
# 3. Queue the job with the file_uri from step 1
curl -X POST https://mediaruntime.com/v1/transcode \
-H "X-API-Key: $MEDIARUNTIME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"file_url": "<file_uri from step 1>",
"outputs": [{ "type": "mp4", "preset": "mp4_720p_h264_aac" }]
}'
# -> { "job_id": "job_...", "status": "QUEUED" }Condensed for length. The full quickstart covers the upload headers, webhook payloads, and the same flow in Node, Python, Go and PHP.