---
title: "Merge PDFs"
method: POST
path: "/pdf/merge"
tags: ["PDF tools"]
---

# Merge PDFs

`POST /pdf/merge`

## Request

- Base URL: `https://api.podpdf.com`
- URL: `https://api.podpdf.com/pdf/merge`
- Auth: API key in header `X-API-Key`

One `files` part per PDF, in merge order. Up to 4 MB in total; larger sets go through `/pdf/upload-url` and `/pdf/jobs`.

## Response `200`

The merged PDF, or JSON when `store` is true or the result is over 4.4 MB

- PdfOpResult: A stored merge or split result, with a link for each output.
  - `job_id` string
  - `operation` 'pdf_merge' | 'pdf_split'
  - `status` 'completed'
  - `input_pages` integer
  - `output_count` integer
  - `outputs` PdfOutputFile[]
    - `index` integer
    - `name` string
    - `pages` integer
    - `page_range` string: The pages of the input this file holds.
    - `size_bytes` integer
    - `warnings` string[]
    - `download_url` string, uri: Signed link, valid one hour.
  - `zip_url` string, uri, nullable: Signed link to a ZIP of every output, valid one hour. Null when there is one output.
  - `download_url_expires_at` string, date-time
  - `warnings` string[]: `FORM_FIELDS_NOT_PRESERVED`, `SIGNATURE_INVALIDATED`, `BOOKMARKS_NOT_PRESERVED` or `XFA_FORM`.

## Other responses

- `400`: The request was invalid
- `401`: Missing or invalid API key
- `403`: `INSUFFICIENT_CREDITS`, `CONVERSION_TYPE_NOT_ENABLED`, `PDF_TOOLS_NOT_ENABLED`, `RATE_LIMIT_EXCEEDED` or `ACCOUNT_NOT_FOUND`. Note that a plan's rate limit is a 403, not a 429.
- `413`: The request body is over the limit

---

[API](https://skmtc.dev/podpdf/apis/podpdf-api.md) · [All operations](https://skmtc.dev/podpdf/apis/podpdf-api/llms.txt) · [OpenAPI document](https://skmtc.dev/podpdf/apis/podpdf-api/revisions/84eb21f3ee27?raw)
