📚

API Documentation

Integrate Docify PDF tools into your applications

RESTful API

Simple HTTP endpoints

High Performance

Fast processing

Secure

API key authentication

Base URL

https://api.docify.example.com

1. Upload Files

POST/api/upload

Upload one or more files for processing.

Request (multipart/form-data):

files: File[]  // Array of files to upload

Response:

{
  "success": true,
  "data": [{
    "fileId": "abc123",
    "filename": "document.pdf",
    "size": 1024000,
    "mimeType": "application/pdf"
  }]
}

2. Process Files

POST/api/process/:tool

Process uploaded files with the specified tool.

Available Tools:

mergesplitcompressrotatepdf-to-wordword-to-pdfpdf-to-pptppt-to-pdfpdf-to-excelexcel-to-pdfimage-to-pdfpdf-to-jpgprotectunlockwatermarkpage-numbersreorderdelete-pagesrepairocr

Request (JSON):

{
  "fileIds": ["abc123", "def456"],
  "options": {
    "quality": "medium"  // Tool-specific options
  }
}

Response:

{
  "success": true,
  "data": {
    "jobId": "job-789",
    "status": "pending"
  }
}

3. Get Job Status

GET/api/jobs/:jobId

Response:

{
  "success": true,
  "data": {
    "jobId": "job-789",
    "status": "completed",  // pending, processing, completed, failed
    "progress": 100,
    "downloadUrl": "/api/jobs/job-789/download"
  }
}

4. Download Result

GET/api/jobs/:jobId/download

Returns the processed file as a binary stream.

Example: Merge PDFs

// 1. Upload files
const formData = new FormData();
formData.append('files', file1);
formData.append('files', file2);

const uploadRes = await fetch('/api/upload', {
  method: 'POST',
  body: formData
});
const { data: files } = await uploadRes.json();

// 2. Start merge job
const processRes = await fetch('/api/process/merge', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    fileIds: files.map(f => f.fileId)
  })
});
const { data: job } = await processRes.json();

// 3. Poll for completion
const pollInterval = setInterval(async () => {
  const statusRes = await fetch(`/api/jobs/${job.jobId}`);
  const { data } = await statusRes.json();
  
  if (data.status === 'completed') {
    clearInterval(pollInterval);
    window.location.href = data.downloadUrl;
  }
}, 2000);

Rate Limits

• 100 requests per 15 minutes per IP
• Maximum file size: 100MB
• Files auto-delete after 30 minutes