Guides
Tasks (PDF tools)
Compress, convert, merge and OCR files with the Macaaw server tools through the API.
Tasks run the website's server tools — compression, Office conversion, OCR and more — on files you upload. One call uploads the files and starts the task; you poll it (or get the task_completed webhook) and download the result.
Available tools#
GET /tools returns every tool with its accepted file types, file count and options. Tools that run in the browser on the website are listed with "runs_on": "browser" and "api": false; they are not available through the API in v1.
| Tool id | Name | Accepts | Plan |
|---|---|---|---|
word-to-pdf | Word to PDF | doc | free |
excel-to-pdf | Excel to PDF | xls | free |
powerpoint-to-pdf | PowerPoint to PDF | ppt | free |
other-to-pdf | Other formats to PDF | odf, rtf, pub | free |
pdf-to-word | PDF to Word | free | |
pdf-to-excel | PDF to Excel | free | |
pdf-to-powerpoint | PDF to PowerPoint | free | |
edit-pdf | Edit PDF | pro | |
compress-pdf | Compress PDF | free | |
compress-to-size | Compress to a size | free | |
ocr-pdf | OCR PDF | free | |
scan-to-office | Scan to Word or Excel | free | |
extract-tables | Extract tables | free | |
extract-invoice-data | Extract invoice data | pro | |
protect-pdf | Protect PDF | free | |
unlock-pdf | Unlock PDF | free | |
compare-pdf | Compare PDFs | pro | |
repair-pdf | Repair PDF | free | |
pdf-to-pdfa | PDF to PDF/A | free | |
html-to-pdf | HTML to PDF | html | free |
Start a task#
Send multipart/form-data with one or more files[] parts and a data part: { "tool": "<tool id>", "options": { … } }. Options are the ones GET /tools lists for that tool; missing options take their defaults.
curl https://macaaw.com/public/v1/tasks \
-H "Authorization: API-Key $MACAAW_API_KEY" \
-F "files[]=@report.pdf;type=application/pdf" \
-F 'data={"tool": "compress-pdf", "options": {}}'{
"id": "3f0c9a52-6d1e-4c8b-a1f4-0e7d2b9c8a11",
"tool": "compress-pdf",
"status": "task.queued",
"error": null,
"input_size": 4831022,
"output_size": null,
"output_files": null,
"stats": null,
"sandbox": false,
"date_created": "2026-10-30T11:35:00.000000Z",
"date_completed": null,
"expires_at": null
}Task status#
| Status | Meaning |
|---|---|
task.queued | Accepted and waiting for a worker. |
task.processing | Running. |
task.completed | Done. Download the result before expires_at. |
task.failed | Failed; error holds a code and a plain-English detail. |
task.deleted | Files were deleted (by you, or when the retention time passed). |
{
"id": "3f0c9a52-6d1e-4c8b-a1f4-0e7d2b9c8a11",
"tool": "compress-pdf",
"status": "task.completed",
"error": null,
"input_size": 4831022,
"output_size": 1203311,
"output_files": 1,
"stats": {},
"sandbox": false,
"date_created": "2026-10-30T11:35:00.000000Z",
"date_completed": "2026-10-30T11:35:09.000000Z",
"expires_at": "2026-10-30T12:35:09.000000Z"
}Download and delete#
GET /tasks/{id}/download returns the result file, or a ZIP when the tool produces several files. DELETE /tasks/{id} deletes the files at once.
Limits#
Live tasks count against your plan exactly like tasks on the website: daily tasks, file size, OCR pages, Office conversions and credits. A tool your plan does not include answers 402 with LIMIT_PRO_TOOL; a used-up allowance answers 402 or 429 with another LIMIT_… code (see Errors).