PDF Merge API
BASE URLhttps://api-server.compdf.com/server/
❖ Feature Description
Merge multiple PDF files into a single PDF in order, with per-file page ranges and passwords.
❖ Request Mode
Synchronous Request (Sync) ✓
The API returns the result file directly after processing. Recommended for small files and real-time interactive scenarios that need immediate feedback.
Asynchronous Request (Async)
The API first returns task acceptance information, then you query progress and results with taskId. Suitable for large files and batch workloads.
Secure Request Mode
Upload and process files through secure mechanisms such as pre-signed URLs. Suitable for high-security and privacy compliance scenarios.
▎Call Flow
1Upload file
2Call API (sync)
3Get result URL
4Download file
▎Usage Limits
| Download validity | 24 hours |
synchronous执行
❖ Request Parameters
Authentication credential sent in the header: x-api-key
Body Parameters multipart/form-data
No file selected
List of PDF files to merge (at least 2). Submission order determines merge order.
Default open password. Use this if all source PDFs share the same password; otherwise use passwords[] for per-file passwords.
API error message language. 1 = English, 2 = Chinese (default).
File 1
File 2
Each row maps 1:1 to a file in the upload list above; fill in one row per file in the same order.
与 file[] 列表一一对应的页范围;每个文件单独一项。页码从 1 开始,可填写 "all" 或 "1-3,6"(多段以英文逗号分隔)。
File 1
File 2
Each row maps 1:1 to a file in the upload list above; fill in one row per file in the same order.
与 file[] 列表一一对应的打开密码;不需要密码的位置用空字符串占位。
Output PDF file name. Defaults to merged.pdf if not provided.
❖ Response Properties
| Field | Type | Description |
|---|---|---|
code | String | Business status code |
msg | String | Message |
data | Array | Response data |
data[].fileKey | String | Unique key of the file in the storage system. |
data[].taskId | String | Task ID. Returned after task creation; used to launch conversion or query task status. |
data[].fileName | String | Source file name. Required in presigned mode to generate the object storage upload URL. |
data[].downFileName | String | Output file name after conversion. |
data[].fileUrl | String | Source file storage URL or object storage key. |
data[].downloadUrl | String | File download URL |
data[].sourceType | String | Source file type or feature category, e.g. pdf, docx, img, documentAI, idp. |
data[].targetType | String | Target file type or feature, e.g. docx, pdf, split, ocr. |
data[].fileSize | Integer | Source file size in bytes. |
data[].convertSize | Integer | Converted file size in bytes. |
data[].convertTime | Integer | Conversion time for a single file, typically in milliseconds. |
data[].status | String | File processing status. Common values: success, failed, processing, etc. |
data[].failureCode | String | Error code when file conversion fails. |
data[].failureReason | String | Error reason when file conversion fails. |
data[].fileParameter | String | Conversion parameter JSON string submitted when creating the task. |
Request Example
curl --request POST \
--url https://api-server.compdf.com/server/v2/process/pdf/merge \
--header 'x-api-key: YOUR API-KEY' \
--form [email protected] \
--form [email protected]Response Example
200 OK
{
"code": "200",
"msg": "success",
"data": [
{
"fileKey": "<string>",
"taskId": "<string>",
"fileName": "<string>",
"downFileName": "<string>",
"fileUrl": "<string>",
"downloadUrl": "<string>",
"sourceType": "<string>",
"targetType": "<string>",
"fileSize": 0,
"convertSize": 0,
"convertTime": 0,
"status": "<string>",
"failureCode": "<string>",
"failureReason": "<string>",
"fileParameter": "<string>"
}
]
}