Merge API â Free Tier + Pay-As-You-Go
Merge PDFs, videos, images, and audio files programmatically. Order-preserving, format-aware concatenation.
What it does
The Merge API concatenates multiple input files of the same type into a single output. PDF merging stitches input pages in submission order, preserving bookmarks, links, form fields, and metadata from the first input. Video merging normalises all inputs to a common resolution, frame rate, and audio sample rate (auto-detected from the first file or pinned via `commonResolution=1920x1080`), then runs FFmpeg's concat demuxer for seamless transitions.
Image merging produces either a multi-page TIFF / PDF, a vertical photo collage, or a horizontal photo strip depending on the `layout` parameter. Audio merging concatenates with optional crossfade transitions (`crossfade=2s`) producing seamless DJ-mix-style output. Per-job parameters control the merge order (defaults to multipart upload order; override with `order=[2,0,1]`), output container, and optional table-of-contents injection (`tocPdf=true` adds a clickable index page to merged PDFs).
The API supports up to 200 input files per merge job, with the total post-merge payload capped at your plan's file-size limit (200 MB Free, 2 GB Pro, 10 GB Business).
Supported formats
Source formats (12)
- mp4
- mov
- mkv
- webm
- jpg
- png
- webp
- mp3
- wav
- flac
- m4a
Target formats (8)
- mp4
- mov
- tiff
- jpg
- mp3
- wav
- flac
Quick start
All three SDK languages show the same conversion: a single POST to /v1/convert with your API key in the X-Api-Key header.
curl -X POST https://api.convertintomp4.com/v1/merge \
-H "X-Api-Key: ck_your_api_key" \
-F "file=@page1.pdf" \
-F "file=@page2.pdf" \
-F "file=@page3.pdf" \
-F "target=pdf"import { ConvertIntoMP4 } from "@convertintomp4/sdk";
import fs from "node:fs";
const client = new ConvertIntoMP4({ apiKey: process.env.CIM4_API_KEY });
const job = await client.merge({
files: [
fs.createReadStream("page1.pdf"),
fs.createReadStream("page2.pdf"),
fs.createReadStream("page3.pdf"),
],
target: "pdf",
});
const result = await client.waitForJob(job.id);
console.log("Merged:", result.outputUrl);from convertintomp4 import Client
client = Client(api_key="ck_your_api_key")
job = client.merge(
files=[open("page1.pdf", "rb"), open("page2.pdf", "rb"), open("page3.pdf", "rb")],
target="pdf",
)
result = client.wait_for_job(job.id)
print("Merged:", result.output_url)Features
- PDF merge: preserves bookmarks, links, form fields
- Video merge: auto-normalises resolution + fps + audio
- Image merge: multi-page TIFF or photo collage
- Audio merge: optional crossfade transitions
- Up to 200 files per job
- Custom merge order via index array
- Auto-injected table-of-contents for merged PDFs
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
Does PDF merge preserve internal links and bookmarks?
Yes. Bookmarks from each input are flattened into a single bookmark tree with the input filename as the section header. Internal links (cross-page anchors) re-target to the new merged page numbers. Form fields and embedded JavaScript pass through unchanged.
What happens if input videos have different resolutions?
The API auto-detects the most common resolution across inputs and re-scales the rest to match (preserving aspect ratio with letterboxing). Override via `commonResolution=1920x1080`. Frame rate and audio sample rate are normalised similarly. The result is a seamless single MP4.
Can I merge images into a multi-page PDF?
Yes. POST images with `target=pdf` and each image becomes a page. Page size auto-fits to image dimensions; pass `pageSize=A4` to force A4 with centered scaling. Useful for ad-hoc scanning workflows (phone camera â multi-page PDF).
How is the merge order controlled?
By default, files merge in multipart submission order. Override via `order=[2,0,1]` (zero-indexed array). Or pass an explicit named order: `order=["page3.pdf","page1.pdf","page2.pdf"]`.
What's the maximum file count for one merge job?
200 input files per job, with the total merged payload capped at your plan's file-size limit. Larger merges should be chunked into multiple jobs and then concatenated as the final pass.
Related APIs
- Compression APICompress video, image, PDF, and audio files programmatically. Per-file-type presets and target-size mode.
- Split APISplit PDFs by page range, videos by duration, audio by silence detection via API. Per-output naming and ZIP delivery.
- OCR APIOptical Character Recognition for PDFs and images via API. 100+ languages, searchable PDF output, plain-text extraction.
- Watermark APIAdd text or image watermarks to PDFs, videos, and images via API. Configurable position, opacity, rotation, and tiling.
- 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 Merge API in five minutes. Read the docs, grab a key, and ship your first conversion before the trial coffee cools.