File Conversion API — Free Tier + Pay-As-You-Go
One unified file conversion API for video, audio, image, document, ebook, archive, and font formats — 255 formats, 2,290+ conversion pairs.
What it does
The File Conversion API is the unified entry-point covering every format ConvertIntoMP4 supports — 255 formats across video, audio, image, document, ebook, archive, and font categories, with 2,290+ honest conversion pairs. A single POST endpoint (`/v1/convert`) accepts any source file plus a target format identifier; the backend auto-routes to the correct conversion engine (FFmpeg, Sharp, ImageMagick, LibreOffice, Pandoc, Calibre, Ghostscript, fonttools, p7zip) based on the source/target combination. The API surface is uniform regardless of file type — same authentication, same idempotency semantics, same webhook callback contract, same cloud-import / cloud-export options.
Format-specific parameters (video codec, image quality, PDF page size, etc.) pass through transparently; unsupported parameters for a given conversion are silently ignored with a warning in the job's `warnings` array. Honest-output gating means the API rejects conversion requests for pairs we can't faithfully produce (e.g., MP3 to MOD font, video to font) with a clear `UNSUPPORTED_TARGET` error — we don't produce wrong-extension fake outputs. Conversion latency averages 6-9 seconds for sub-100 MB files; rate limits scale by plan: 50/day Free, 2,000/day Pro, 20,000/day Business.
Supported formats
Source formats (43)
- mp4
- mov
- avi
- mkv
- webm
- flv
- wmv
- mp3
- wav
- flac
- aac
- m4a
- jpg
- png
- webp
- avif
- heic
- tiff
- gif
- bmp
- svg
- docx
- xlsx
- pptx
- odt
- rtf
- md
- tex
- html
- epub
- mobi
- azw3
- fb2
- zip
- rar
- 7z
- tar
- gz
- ttf
- otf
- woff
- woff2
Target formats (19)
- mp4
- webm
- mp3
- wav
- flac
- jpg
- png
- webp
- avif
- tiff
- docx
- html
- epub
- mobi
- zip
- 7z
- ttf
- woff2
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.any" \
-F "targetFormat=mp4"
-F "engine=auto"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.any"),
"input.any",
"application/octet-stream",
{ targetFormat: "mp4" },
);
// 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.any", "rb") as f:
job = client.upload_direct(
f, "input.any", "application/octet-stream", "mp4"
)
# 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
- 255 formats, 2,290+ conversion pairs
- Auto-routed to the optimal engine per pair
- Single uniform endpoint surface
- Honest-output gate — no fake outputs
- Cloud-to-cloud workflows (S3, GCS, Azure, SFTP)
- 9 language SDKs (Node, Python, PHP, Java, Go, Ruby, C#, Kotlin, Swift)
- Webhook-driven async + waitForJob sync modes
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
Why use the unified File Conversion API instead of category-specific endpoints?
When you don't know the input file type upfront (e.g., user-uploaded files in a SaaS dropbox), the unified endpoint auto-detects and routes. When the input type is fixed (always video, always PDF), the category-specific endpoints have better-documented per-format parameter surfaces. Both share the same underlying engines and pricing.
What's the difference between Pro and Business plans for API use?
Pro: 2,000 conversions/day, files up to 2 GB, 60 req/min. Business: 20,000 conversions/day, files up to 10 GB, 300 req/min, dedicated support, processing region preference (EU / US / Auto). API-only customers can also pick the pay-as-you-go API plan with per-conversion pricing for variable workloads.
How does the API handle conversion pairs it can't honestly produce?
Rejected at request time with `UNSUPPORTED_TARGET` and a clear error message. We don't produce wrong-extension or visibly-fake outputs. The 2,290 honest pairs are listed in the public registry — see the X-to-Y conversion catalogue at the homepage.
Are file uploads encrypted?
Yes. All uploads use TLS 1.2+ in transit. Files at rest are encrypted with AES-256 on Cloudflare R2. Files auto-delete after the retention window (1h Free, 24h Pro, 7d Business) and can be deleted immediately via DELETE /v1/jobs/:id. ClamAV scanning runs on every upload.
Is there a per-job time limit?
Yes. 5 minutes default; 30 minutes for video; 2 minutes for images; 10 minutes for documents; 15 minutes for archives; 45 minutes for merge operations. Jobs that exceed the limit fail with `TIMEOUT_EXCEEDED` and incur no credit cost. Business customers can request extended limits for archival workflows.
Related APIs
- Convert APIProduction-grade file conversion API with 9 language SDKs, async webhooks, and cloud-to-cloud workflows. Free tier available.
- Media Conversion APIVideo and audio conversion API in one endpoint. 27 video + 21 audio formats, FFmpeg-backed, GPU-accelerated.
Or browse the full catalogue of 23 API products →
Get an API key
Start integrating the File Conversion API in five minutes. Read the docs, grab a key, and ship your first conversion before the trial coffee cools.