Media Conversion API — Free Tier + Pay-As-You-Go
Video and audio conversion API in one endpoint. 27 video + 21 audio formats, FFmpeg-backed, GPU-accelerated.
What it does
The Media Conversion API is a focused surface for video and audio workflows — 27 video formats and 21 audio codecs sharing a single endpoint, single SDK surface, and unified webhook contract. The API auto-detects whether the input is video, audio, or both, and routes to the right FFmpeg pipeline accordingly. Video jobs use H.264, H.265, AV1, VP9, or ProRes encoders with per-job CRF or target-bitrate control, optional two-pass mode, and GPU acceleration (NVENC) on Business tier.
Audio jobs use LAME (MP3), libfdk-aac (AAC), libopus (Opus), libvorbis (OGG), FLAC, or PCM (WAV) encoders with per-job bitrate, sample-rate, and channel control. Mixed jobs — e.g., extracting audio from video, demuxing video without re-encoding — work without explicit mode selection: just specify the target format and the API figures out the right pipeline. Webhook payloads include video-specific metadata (resolution, frame rate, codec, duration) for video outputs and audio-specific metadata (bitrate, sample rate, channels, duration) for audio outputs.
Cloud-to-cloud is supported on both ingress and egress; resumable uploads handle large media files cleanly.
Supported formats
Source formats (27)
- mp4
- mov
- avi
- mkv
- webm
- flv
- wmv
- m4v
- mts
- ts
- 3gp
- vob
- ogv
- f4v
- mpg
- mpeg
- mxf
- mp3
- wav
- flac
- aac
- ogg
- m4a
- aiff
- alac
- amr
- opus
Target formats (13)
- mp4
- webm
- mov
- mkv
- avi
- gif
- mp3
- wav
- flac
- aac
- ogg
- m4a
- opus
Quick start
Every sample posts the job, then polls /v1/status/{jobId} until it finishes, with your API key in the X-Api-Key header. The parameter names below are the ones the endpoint actually accepts — anything else is dropped rather than rejected.
curl -X POST https://api.convertintomp4.com/v1/convert \
-H "X-Api-Key: ck_your_api_key" \
-F "file=@input.mp4" \
-F "targetFormat=mp3"import { readFileSync } from "node:fs";
import { ConvertIntoMP4Client } from "convertintomp4";
const apiKey = process.env.CIM4_API_KEY;
const client = new ConvertIntoMP4Client({ apiKey });
// Presigned direct-to-R2 upload, then queue the conversion.
const { jobId } = await client.uploadDirect(
readFileSync("input.mp4"),
"input.mp4",
"application/octet-stream",
{ targetFormat: "mp3" },
);
// Poll until the job reaches a terminal state.
let job;
do {
await new Promise((r) => setTimeout(r, 2000));
job = await fetch(`https://api.convertintomp4.com/v1/status/${jobId}`, {
headers: { "X-Api-Key": apiKey },
}).then((r) => r.json());
} while (job.status !== "completed" && job.status !== "failed");
console.log("Download URL:", job.result?.downloadUrl);import time, requests
from convertintomp4 import Client
api_key = "ck_your_api_key"
client = Client(api_key=api_key)
# Presigned direct-to-R2 upload, then queue the conversion.
with open("input.mp4", "rb") as f:
job = client.upload_direct(
f, "input.mp4", "application/octet-stream", "mp3"
)
# Poll until the job reaches a terminal state.
while True:
status = requests.get(
f"https://api.convertintomp4.com/v1/status/{job['jobId']}",
headers={"X-Api-Key": api_key},
).json()
if status["status"] in ("completed", "failed"):
break
time.sleep(2)
print("Download URL:", status.get("result", {}).get("downloadUrl"))Features
- 27 video formats + 21 audio codecs
- Single endpoint for video, audio, and cross-format jobs
- GPU acceleration (NVENC) on Business
- FFmpeg with two-pass encoding and CRF/bitrate control
- Cloud-to-cloud workflows for large media
- Resumable multipart uploads
- Webhook payloads with media-specific metadata
Pricing
From $9.99/mo (Pro) or $24.99/mo (Business) — or pay-as-you-go on the API plan.
Free tier: 5 conversions/day, 100 MB file size, no API key required (IP-gated). Pro $9.99/mo: 100/day (2,000/month), 2 GB files. Business $24.99/mo: 1,000/day (20,000/month), 10 GB files, GPU encoding, dedicated support.
See full pricing breakdown →Built for production
99.9% uptime SLA
Multi-region failover, transparent status page, 60-second response-time guarantee on Business.
Encryption + auto-delete
TLS 1.2+ in transit, AES-256 at rest. Files deleted after 1h / 24h / 7d depending on plan, or instantly via DELETE endpoint. See the security page.
~7s median latency
Most sub-100 MB jobs complete in 6-9 seconds. Webhook-driven async for heavier workloads; waitForJob for synchronous flows.
Frequently Asked Questions
Should I use the Media Conversion API or the Video / Audio APIs directly?
Use the Media Conversion API when you handle both audio and video in the same pipeline (e.g., a podcast platform that ingests both raw audio and video-with-talking-heads). Use the Video API or Audio API when you exclusively handle one or the other and want the format-specific parameter surface documented more thoroughly.
Is GPU acceleration always faster?
For H.264 and H.265 encoding at typical web bitrates, GPU encoding is substantially faster. For complex filter work — denoising, scaling, colour grading — CPU is sometimes faster, because GPU paths cannot pipeline every FFmpeg filter efficiently. There is no `forceCpu` flag; the way to pin the path is `engine=ffmpeg` for the plain CPU pipeline, or `gpuEncoder` to request hardware encoding, which is a paid-tier feature and returns a 403 for anonymous and free callers.
What's the difference between Opus and AAC at the same bitrate?
Opus is roughly 30-50% more efficient than AAC at low bitrates (under 96 kbps) and roughly equivalent at high bitrates. Opus is the modern recommendation for any new audio pipeline; AAC remains relevant for Apple ecosystem compatibility (iTunes, podcast distribution).
Can I crop / trim / rotate as part of conversion?
Yes, and they run in the same FFmpeg pass as the transcode — no separate job. The field names are individual, not packed: `cropWidth`, `cropHeight`, `cropX` and `cropY` for cropping, `startTime` with `endTime` or `duration` for trimming, and `rotate` for 90, 180 or 270. There are no combined `crop=W:H:X:Y` or `trim=start:end` shorthands. You can combine all three in one request.
Is there a difference in quality between this API and FFmpeg locally?
No — the underlying encoder is the same FFmpeg binary. The API just provides hosted infrastructure, GPU access, resumable uploads, webhook orchestration, and 9 language SDKs around the encoder. For maximum reproducibility, every job logs the exact FFmpeg command used in the response's `engineCommand` field.
Related APIs
- File Conversion APIOne unified file conversion API for video, audio, image, document, ebook, archive, and font formats — 255 formats, 2,290+ conversion pairs.
- Convert APIProduction-grade file conversion API with 9 language SDKs, async webhooks, and cloud-to-cloud workflows. Free tier available.
Or browse the full catalogue of 23 API products →
Get an API key
Start integrating the Media Conversion API in five minutes. Read the docs, grab a key, and ship your first conversion before the trial coffee cools.