Naar hoofdinhoud gaan
Developer Platform

ConvertIntoMP4 API: Drop-in file conversion for your app

A single REST endpoint that converts between 268 video, audio, image, document, ebook, archive and font formats. Backed by 13 specialized production engines, with sub-second p50 latency on images, all jobs processed in EU regions, and official SDKs for Node.js (npm) and Python (PyPI).

270+ formats13 enginesSub-second p50 (images)EU-region processingNode.js and Python SDKs
No code required

Build it visually

Drag-and-drop your pipeline in the interactive Job Builder, then copy the generated code in 9 languages. Same job shape across REST and every SDK.

Quick start

One POST /v1/convert turns any source file into MP4 (or any of 267 other formats). Same shape across all three languages, pick yours and ship.

Node.jsjavascript
import { ConvertIntoMP4Client } from "convertintomp4";
import { readFileSync } from "node:fs";

const client = new ConvertIntoMP4Client({ apiKey: process.env.CIM4_API_KEY });

// Quick convert: upload a file and wait for the MP4
const file = new Blob([readFileSync("clip.mov")]);
const job = await client.convert(file, "mp4", {
  quality: "high",
  resolution: "1080p",
});

console.log("Job:", job.jobId);
const completed = await client.waitForJob(job.jobId, { interval: 2000, timeout: 120_000 });
console.log("Download:", completed.tasks["export"].result.url);
Pythonpython
from convertintomp4 import Client
import os

client = Client(api_key=os.environ["CIM4_API_KEY"])

# Quick convert: upload a file and wait for the MP4
with open("clip.mov", "rb") as f:
    job = client.convert(f, "mp4", quality="high", resolution="1080p")

print("Job:", job["jobId"])
completed = client.wait_for_job(job["jobId"], interval=2.0, timeout=120.0)
print("Download:", completed.tasks["export"].result["url"])
cURLbash
curl -X POST "https://api.convertintomp4.com/v1/convert" \
  -H "X-Api-Key: $CIM4_API_KEY" \
  -F "file=@clip.mov" \
  -F "output_format=mp4" \
  -F "quality=high" \
  -F "resolution=1080p"

# Then poll status, or use a webhook for async completion
curl "https://api.convertintomp4.com/v1/jobs/job_abc123" \
  -H "X-Api-Key: $CIM4_API_KEY"

Need a different language? Skip to the SDK list - 9 are available officially, or call the REST API directly with any HTTP client.

What developers build with the API

Four of the most common integration patterns we see across teams shipping production workloads on top of ConvertIntoMP4.

SaaS file ingestion

Accept any upload your users throw at you and normalize it to a canonical format before it touches your storage. Presigned multipart uploads, virus scanning, format probing and engine routing are handled for you in a single POST.

Video transcoding pipelines

Convert MOV, AVI, MKV, WebM and 40+ other video formats into MP4 H.264/H.265 or AV1 at any resolution from 240p to 4K. Two-pass encoding, device presets for iPhone / Android / Xbox, and async webhooks for jobs that run longer than a few seconds.

Document workflows

DOCX → PDF, XLSX → PDF, PPTX → PDF, RTF → DOCX, MD → HTML and 70+ document pairs, on office, markup and eBook engines. Useful for invoice generators, contract platforms and any product that emails customers a PDF of something they typed into a form.

Automated thumbnail generation

Generate WebP, AVIF, JPG and PNG thumbnails from video frames, PDF pages or source images in a single batched call. Sub-second p50 latency on images, with a fallback engine for exotic formats like HEIC, RAW, CR2, ARW and NEF.

Everything you need in production

REST + OAuth2, batch + async, webhooks + WebSockets, presigned uploads + cloud storage. The features below are live today on api.convertintomp4.com.

  • REST API

    Plain JSON over HTTPS. No vendor SDK required, every endpoint is documented and callable with curl, fetch, requests, or any HTTP client.

  • Node.js and Python SDKs

    Node.js / TypeScript on npm and Python on PyPI, both MIT-licensed and sharing the same job/task shape. An n8n community node is on npm too. Any other language calls the REST API.

  • OAuth2 client_credentials

    Long-lived API keys (`ck_*` / `sk_*`) for server-to-server auth, or short-lived bearer tokens via the standard OAuth2 client-credentials grant.

  • Webhooks

    HMAC-signed POST callbacks on 16 events (job.created, job.completed, file.uploaded, quota.exceeded, subscription.updated, and more). Slack and Discord payload formats built-in.

  • Async polling

    Jobs return immediately with a `jobId`; poll `GET /v1/jobs/:id` or subscribe to the `/ws/user/jobs` WebSocket for real-time progress.

  • Batch + multipart

    Group several files into one `/v1/jobs` request. Resumable S3-multipart uploads for files >50MB via presigned URLs, direct browser-to-R2, no proxy through your server.

  • Presigned uploads

    Generate scoped, time-limited PUT URLs for direct uploads from the browser to our R2 bucket. Cuts your egress costs and keeps the file off your servers entirely.

  • EU-region processing

    All jobs run in Helsinki (EU) by default. US and Auto regions are on the roadmap for customers with data-residency requirements.

  • Sandbox environment

    Send the `X-Sandbox: true` header to api.convertintomp4.com to test with sandbox limits (1 MB files, 100 POST requests a month per key, 1 POST a second).

Official SDKs

Hand-written wrappers for Node.js (npm) and Python (PyPI), with the same job/task shape, webhook payloads and error codes as the REST API. Any other language can call the REST API directly with its usual HTTP client.

Node.js

npm install convertintomp4

convertintomp4

Python

pip install convertintomp4

convertintomp4

Build on the API: start free, scale when you need to

Available now

The free tier gives you 20 conversion-minutes/day, no card required. Pro ($9.99/mo) adds 1,500 conversion-minutes/month; Business ($24.99/mo) adds 4,000/month, 10 GB files and priority processing. Every tier includes the full REST API, the Node.js and Python SDKs, webhooks, presigned uploads and OAuth2.

See full pricing →

Built for production

Engineered to handle real workloads, from one-off prototypes to high-throughput ingestion pipelines.

Security and compliance

TLS 1.2+ in transit. AES-256 at rest. Auto-delete after 1h/24h/7d, or call DELETE /v1/jobs/:id to wipe immediately. GDPR + DPA available. See the security page for the full pipeline diagram.

Async, observable

HMAC-signed webhooks across 16 events. Real-time progress on the /ws/user/jobs WebSocket. Per-API-key rate-limit headers on every response so you can throttle gracefully.

Cloud-to-cloud

Import from S3, Azure Blob, GCS, SFTP, Google Drive, Dropbox or OneDrive. Export back to any of the same. Never touches your servers, saves you the egress bill and the storage round-trip.

Frequently asked questions

Everything teams ask before shipping the first API call.

How do I get an API key?

Create a free ConvertIntoMP4 account, head to /account/api in the dashboard, and click "Generate key". Keys are prefixed `ck_` for public/client-side use and `sk_` for server-side use; both are SHA-256 hashed at rest. You can scope keys to read-only, convert-only, or full access and rotate them at any time with a 24-hour grace period.

What's the free tier?

20 conversions per day, 500 MB max file size, no API key required. Rate-limited to 5 requests per minute and 30 per hour by IP. This is enough to integrate, prototype, and ship a side project; the Pro and Business tiers raise the monthly quota to 2,000 and 20,000 conversions respectively, plus larger file caps and faster engines.

Which formats are supported?

255 formats across 6 categories: 44 video, 45 audio, 49 image, 70 document, 22 archive, and 9 font. Routing is automatic, POST /v1/convert with `output_format=mp4` and we pick the right engine for the pair. The full registry is queryable at GET /v1/formats.

Is processing synchronous or asynchronous?

Both. Short jobs (images, small audio) typically complete in under a second and you can block on `client.waitForJob(id)`. Longer jobs (4K video transcode, large documents) return immediately with a job ID; you can poll GET /v1/jobs/:id, subscribe to the /ws/user/jobs WebSocket, or register an HMAC-signed webhook for job.completed events.

Where are files processed and stored?

All conversions run in our data centre in Helsinki, Finland (EU). Source and output files are kept in encrypted object storage and auto-deleted when the plan's retention ends: 24 hours on Free, 7 days on Pro, 30 days by default on Business (up to 1 year). You can also call DELETE /v1/jobs/:id at any time to wipe everything immediately. TLS 1.2+ in transit, AES-256 at rest.

Do you offer webhooks?

Yes, 16 event types covering job lifecycle (created, queued, started, progress, completed, failed, cancelled, expired), file events (uploaded, downloaded, deleted), subscription changes, and quota warnings. Payloads are signed with HMAC-SHA256. Slack Block Kit and Discord embed formats are built-in alongside the default JSON format.

Can I use cloud storage as source or destination?

Yes. We support Amazon S3, Azure Blob Storage, Google Cloud Storage, SFTP, Google Drive, Dropbox and OneDrive as both import sources and export targets. Configure once with scoped credentials and reference the bucket/container/folder in your convert request.

Is there a sandbox?

There is no separate sandbox host. Add the header `X-Sandbox: true` to requests on api.convertintomp4.com (the SDKs do it with the `sandbox` option) to run under sandbox limits: 1 MB files, 100 POST requests a month per key and 1 POST a second. Drop the header for production traffic.

Ship your first conversion in five minutes

Create an account, generate an API key in the dashboard, and copy any of the code samples above. The free tier gives you 50 conversions per day, enough to prototype, integrate and ship a side project without paying a cent.