Split API — Free Tier + Pay-As-You-Go
Split PDFs by page range, videos by duration, audio by silence detection via API. Per-output naming and ZIP delivery.
What it does
The Split API divides a single input file into multiple outputs along format-appropriate axes. PDF splitting supports per-page output (`mode=every-page`), per-range output (`ranges=1-5,6-10,11-15`), bookmark-based splitting (`mode=by-bookmark` — one output per top-level bookmark), or fixed-page-count output (`pagesPerFile=10`). Video splitting supports duration-based output (`maxDuration=60s` produces 60-second chunks), scene-based output (`mode=scene-detect` with configurable threshold), and explicit timestamp-based output (`timestamps=["00:00:00","00:01:30","00:03:00"]`).
Audio splitting supports silence-based output (auto-detect track boundaries in long recordings via FFmpeg's `silencedetect` filter) and duration-based output. Image splitting supports tile-based output (slice into an N×M grid). All split jobs produce a ZIP containing the individual outputs plus a `manifest.json` mapping output names to their source ranges.
Per-output naming is configurable via the `namePattern={index:03d}.{ext}` template (e.g., `001.pdf`, `002.pdf`).
Supported formats
Source formats (10)
- mp4
- mov
- mkv
- webm
- mp3
- wav
- flac
- jpg
- png
Target formats (10)
- mp4
- mov
- mkv
- webm
- mp3
- wav
- flac
- jpg
- png
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/split \
-H "X-Api-Key: ck_your_api_key" \
-F "file=@document.pdf" \
-F "mode=by-bookmark" \
-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.split({
file: fs.createReadStream("document.pdf"),
mode: "by-bookmark",
target: "pdf",
});
const result = await client.waitForJob(job.id);
console.log("ZIP:", result.outputUrl, "Parts:", result.partCount);from convertintomp4 import Client
client = Client(api_key="ck_your_api_key")
with open("document.pdf", "rb") as f:
job = client.split(file=f, mode="by_bookmark", target="pdf")
result = client.wait_for_job(job.id)
print(f"ZIP: {result.output_url} ({result.part_count} parts)")Features
- PDF: per-page, per-range, by-bookmark, fixed-count
- Video: duration, scene-detect, timestamp-based
- Audio: silence-detect, duration-based
- Image: tile-based grid
- Configurable output naming patterns
- ZIP delivery with manifest.json
- Up to 500 outputs per split job
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
How does scene-detect split work for video?
FFmpeg's scene-detect filter computes per-frame visual difference; when the delta exceeds your `sceneThreshold` (default 0.4), a new clip starts. Useful for splitting long recordings (lectures, interviews) into per-segment files automatically.
What's the difference between by-bookmark and by-range PDF splitting?
By-bookmark uses the source PDF's top-level bookmarks as cut points — one output per bookmark. By-range uses explicit `ranges=1-5,6-10` parameters. Bookmark mode is ideal for chapter-based books; range mode is ideal for known page boundaries.
Can the API detect silence in audio for auto-splitting?
Yes. Pass `mode=silence-detect`, `silenceThreshold=-30dB`, and `silenceMinDuration=2s`. The API uses FFmpeg's silencedetect filter to find audio gaps matching those thresholds and splits at each gap. Default thresholds work for typical podcast and DJ-mix recordings.
How are output files named?
Default pattern is `{index:03d}-{originalName}` producing `001-document.pdf`, `002-document.pdf`, etc. Override via `namePattern=chapter-{index}-{bookmark}.pdf` for bookmark-aware names (where applicable).
What's the max number of output files per job?
500 output files per split job. Larger splits chunk into multiple jobs automatically; the response includes job IDs for follow-up polling.
Related APIs
- Compression APICompress video, image, PDF, and audio files programmatically. Per-file-type presets and target-size mode.
- Merge APIMerge PDFs, videos, images, and audio files programmatically. Order-preserving, format-aware concatenation.
- 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 Split API in five minutes. Read the docs, grab a key, and ship your first conversion before the trial coffee cools.