Developer API
Automate PDF processing with a simple HTTP request — the same pipelines that power the site.
Quickstart
Create an API key in your dashboard, under Developer API. Then send a file with the key in the X-Api-Key header:
curl -X POST https://makeitpdf.com/api/v1/compress/ \
-H "X-Api-Key: mip_your_key_here" \
-F "file=@document.pdf"
The response contains download links for the processed files:
{
"success": true,
"tool": "compress",
"files": ["https://makeitpdf.com/media/temp/…/document_compressed.pdf"],
"credits_remaining": 18
}
Endpoints
All endpoints accept POST with multipart/form-data. Attach files in the file field (repeat it for multiple files). A machine-readable list lives at /api/v1/tools/.
| Endpoint | Input | Extra fields |
|---|---|---|
POST /api/v1/merge/ |
PDF files (2+) | — |
POST /api/v1/rotate/ |
PDF files; rotation: 90|180|270 (default 90) | rotation |
POST /api/v1/extract-pages/ |
One PDF; pages: e.g. "1-3,5" | pages |
POST /api/v1/compress/ |
PDF files; compression_level: low|recommended|high | compression_level |
POST /api/v1/repair/ |
One PDF | — |
POST /api/v1/flatten/ |
One PDF | — |
POST /api/v1/grayscale/ |
One PDF | — |
POST /api/v1/word-to-pdf/ |
Word documents (.doc/.docx) | — |
POST /api/v1/excel-to-pdf/ |
Excel workbooks (.xls/.xlsx) | — |
POST /api/v1/powerpoint-to-pdf/ |
PowerPoint files (.ppt/.pptx) | — |
POST /api/v1/image-to-pdf/ |
Images (JPG/PNG/WebP…); merge_images: true|false | page_size, page_orientation, page_margin, merge_images |
POST /api/v1/pdf-to-word/ |
PDF files | — |
POST /api/v1/pdf-to-excel/ |
PDF files | — |
POST /api/v1/pdf-to-powerpoint/ |
PDF files | — |
POST /api/v1/pdf-to-jpg/ |
PDF files; image_quality: normal|high | conversion_type, image_quality |
POST /api/v1/pdf-to-text/ |
One PDF | — |
POST /api/v1/pdf-to-pdfa/ |
PDF files | pdfa_conformance |
POST /api/v1/ocr/ |
Scanned PDFs; ocr_language: eng|deu|fra|… (default eng) | ocr_language, ocr_quality |
POST /api/v1/protect/ |
PDF files; password required | password |
POST /api/v1/unlock/ |
PDF files; password required | password |
POST /api/v1/translate/ |
One PDF; target_language required (e.g. "de"), source_language optional (default auto) | target_language, source_language |
Example: translate a PDF to German
curl -X POST https://makeitpdf.com/api/v1/translate/ \
-H "X-Api-Key: mip_your_key_here" \
-F "file=@report.pdf" \
-F "target_language=de"
Pricing and limits
API requests use the same allowance as your account on the website: your plan's daily tasks and monthly AI quotas first, then your credits (1 credit per standard task, 5 per AI document). There is no separate API subscription.
- Free account: 5 tasks/day to try the API — no card required.
- Credit packs: $5 for 20 credits, never expire — predictable pay-as-you-go.
- Pro and Business subscriptions raise daily task, file-size and page limits for every API call.
- Rate limit: 60 requests per minute per key. Result files follow your plan's retention window.
Errors
Errors return a JSON body with an error code and a human-readable message:
{ "success": false, "error": "daily_limit_reached",
"message": "Daily task limit reached for your plan…", "credits_remaining": 0 }
| Status | Meaning |
|---|---|
| 400 | Missing file or required field — the message names it |
| 401 | Missing, unknown or revoked API key |
| 403 | Plan or credit limit reached — the error code names the limit |
| 422 | The file could not be processed |
| 429 | Rate limit exceeded — retry after a minute |
| 500 | Unexpected server error — retry, then contact us |
The API is in beta. Questions or a tool you need exposed?
Contact us