Document Conversion API — Free Tier + Pay-As-You-Go
Convert Word, Excel, PowerPoint, OpenDocument, RTF, Markdown, and 60+ document formats. LibreOffice + Pandoc backed.
What it does
The Document Conversion API converts between 70 document formats backed by a dual LibreOffice + Pandoc pipeline. LibreOffice handles Office Suite interop — DOC/DOCX/XLS/XLSX/PPT/PPTX/ODT/ODS/ODP — including formula recalculation, embedded chart re-rendering, and font fallback for missing typefaces via a curated 200-font bundle. Pandoc handles markup formats — Markdown, AsciiDoc, reStructuredText, Org-mode, DocBook, Textile, MediaWiki, and TWiki — with custom Lua filters for typography, code-block syntax highlighting via Pygments, and footnote/citation handling via citeproc.
PDF output is rendered via LibreOffice for Office sources and weasyprint for markup sources. Neither pipeline runs a PDF/UA tagging pass, so treat accessibility conformance as something you validate and remediate downstream rather than something the conversion guarantees. EPUB and HTML output carry embedded CSS and table-of-contents metadata.
The per-job options that exist are `pageSize`, `margin`, `pdfEngine`, `tableOfContents`, `numberSections`, `fontSize` and `language`; header and footer text, watermarking and font embedding are not parameters on this endpoint — watermarking is a separate `add-watermark-pdf` job on the resulting PDF. Large workbooks — Excel files with >100 sheets or 1M+ cells — are processed via the slower batch queue with extended timeouts.
Supported formats
Source formats (36)
- doc
- docx
- xls
- xlsx
- ppt
- pptx
- odt
- ods
- odp
- rtf
- txt
- csv
- tsv
- md
- rst
- tex
- org
- html
- htm
- epub
- mobi
- azw3
- fb2
- djvu
- ps
- wps
- wpd
- pages
- key
- numbers
- xhtml
- xml
- json
- yaml
- toml
Target formats (14)
- docx
- doc
- html
- epub
- txt
- rtf
- odt
- md
- tex
- csv
- xlsx
- pptx
- fb2
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.docx" \
-F "targetFormat=pdf"
-F "pageSize=A4"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.docx"),
"input.docx",
"application/octet-stream",
{ targetFormat: "pdf" },
);
// 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.docx", "rb") as f:
job = client.upload_direct(
f, "input.docx", "application/octet-stream", "pdf"
)
# 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
- 70 source formats, 14+ target formats
- LibreOffice for Office, Pandoc for markup
- PDF/UA-compliant tagged output via accessible=true
- Per-job page size, margins, watermark, font embed
- 200-font fallback bundle for missing typefaces
- EPUB output with semantic landmarks + TOC
- Async batch queue for large workbooks (>100 sheets)
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 accurate is DOCX → PDF rendering compared to Microsoft Word?
LibreOffice renders DOCX with ~99% fidelity for native Word documents. Complex layouts using SmartArt, ActiveX controls, or VBA macros may not render identically. Use `pdfEngine=word365` on the Business plan for Microsoft-rendered PDFs at full fidelity.
Can the API process password-protected DOCX or PDF files?
Yes. Pass `password=<secret>` in the request body — it's not logged or persisted, only forwarded to the underlying engine. For PDFs, owner and user passwords are both supported.
Does Markdown → PDF support code-block syntax highlighting?
Pandoc applies its own default syntax highlighting when it renders fenced code blocks, but the theme is not exposed — there is no `highlightStyle` parameter on the request, so you get Pandoc's default and nothing else. If the theme matters, pre-render the highlighting into your source document.
Are tables and charts preserved across XLSX → PDF?
Yes. Excel charts re-render via LibreOffice's chart engine; pivot tables flatten to static values; conditional formatting is preserved. Embedded images and shapes pass through unchanged.
Can I generate accessible (tagged) PDFs?
No. There is no `accessible` parameter and no PDF/UA-1 tagging pass — whatever structure LibreOffice or Pandoc emits is what you get, which is not a compliance guarantee. If you need PDF/UA or WCAG 2.1 conformance, run the output through a dedicated remediation tool and validate it before you rely on it.
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.
- 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 Document Conversion API in five minutes. Read the docs, grab a key, and ship your first conversion before the trial coffee cools.