> For the complete documentation index, see [llms.txt](https://docs.mioffice.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mioffice.ai/pdf.md).

# PDF

## Process PDF files

> Merge, split, compress PDFs or convert DOCX/XLSX to PDF. Returns processed file or queues job for async processing.

```json
{"openapi":"3.0.3","info":{"title":"MiOffice API","version":"1.0.0"},"servers":[{"url":"https://mioffice.ai","description":"Production"}],"paths":{"/api/pdf-process":{"post":{"operationId":"processPdf","summary":"Process PDF files","description":"Merge, split, compress PDFs or convert DOCX/XLSX to PDF. Returns processed file or queues job for async processing.","tags":["PDF"],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["merge","split","compress","docToPdf","xlsxToPdf"],"description":"PDF operation to perform"},"file":{"type":"string","format":"binary","description":"Single file for split/compress/convert operations"},"file_0":{"type":"string","format":"binary","description":"First file for merge (supports file_0 through file_99)"},"file_1":{"type":"string","format":"binary","description":"Second file for merge"},"options":{"type":"string","description":"JSON string with action-specific options. Split: {\"pages\": \"1,2,5-10\"}"}}}}}},"responses":{"200":{"description":"Processed PDF file","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}},"headers":{"X-Processing":{"schema":{"type":"string"}}}},"202":{"description":"Job queued for async processing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueuedJob"}}}},"400":{"description":"Invalid action, missing files, or validation error"},"413":{"description":"Total file size exceeds 100MB limit"},"429":{"description":"Rate limit exceeded or queue full"}}}}},"components":{"schemas":{"QueuedJob":{"type":"object","properties":{"jobId":{"type":"string","description":"Unique job identifier"},"jobToken":{"type":"string","description":"Authorization token for this job"},"position":{"type":"integer","description":"Current position in queue"},"estimatedWaitMs":{"type":"integer","description":"Estimated wait time in milliseconds"},"pollUrl":{"type":"string","description":"URL to poll for job status"}}}}}}
```
