# Actions overview
What an action is, the full catalog of 17 actions grouped by capability, the /v1/<action> convention, and how outputs feed back in as inputs.
An **action** is a single, pure PDF transformation exposed as one endpoint. You
send a document, the action does exactly one thing to it — merge, watermark,
encrypt, rotate, split — and you get the result back. Actions hold no state and
share no context; each call stands alone. That uniformity is what lets you snap
them together into pipelines.
## What an action is
Every action is a `POST` to `/v1/<action>`, where `<action>` is the wire name in
the tables below. They all follow the same
[request and response contract](/docs/api/requests-and-responses): a
`multipart/form-data` body with the input PDF in a `file` field, authenticated
with the `X-API-Key` header. Most return a single `application/pdf`; the split
family returns several documents.
## The catalog
Seventeen actions, grouped by capability. Each links to its full reference.
### Merge & Split
| Action | Route | What it does |
| --- | --- | --- |
| [Merge documents](/docs/api/merge-pdf-documents) | `/v1/merge_documents` | Combine an ordered array of PDFs into one document. |
| [Split by page count](/docs/api/split-pdf-by-page-count) | `/v1/split_by_page_count` | Break a PDF into consecutive parts of a fixed page count. |
| [Split at page](/docs/api/split-pdf-at-page) | `/v1/split_at_page` | Split a PDF into two parts at a page boundary. |
| [Split by file size](/docs/api/split-pdf-by-file-size) | `/v1/split_by_size` | Break a PDF into parts each no larger than a byte limit. |
| [Split into page groups](/docs/api/split-pdf-into-page-groups) | `/v1/split_by_groups` | Break a PDF into groups of pages that you define. |
The four split actions each produce several documents; you choose the packaging
with the `Accept` header — see [Response formats](/docs/api/response-formats).
### Watermarks
| Action | Route | What it does |
| --- | --- | --- |
| [Add text watermark](/docs/api/add-text-watermark-to-pdf) | `/v1/add_text_watermark` | Stamp up to three lines of styled text across the pages. |
| [Add image watermark](/docs/api/add-image-watermark-to-pdf) | `/v1/add_image_watermark` | Stamp a PNG or JPEG image, such as a logo, across the pages. |
### Passwords and security
| Action | Route | What it does |
| --- | --- | --- |
| [Add password](/docs/api/add-password-to-pdf) | `/v1/add_password` | Encrypt a document with an open and/or permissions password. |
| [Remove password](/docs/api/remove-password-from-pdf) | `/v1/remove_password` | Decrypt a document when you know its password. |
| [Add restrictions](/docs/api/add-restrictions-to-pdf) | `/v1/add_restrictions` | Set permission flags for printing, copying, and editing. |
| [Remove restrictions](/docs/api/remove-restrictions-from-pdf) | `/v1/remove_restrictions` | Clear the permission flags from a document. |
| [Remove signatures](/docs/api/remove-signatures-from-pdf) | `/v1/remove_signatures` | Strip digital signatures so the document can be edited. |
### Pages
| Action | Route | What it does |
| --- | --- | --- |
| [Extract pages](/docs/api/extract-pages-from-pdf) | `/v1/extract_pages` | Keep a chosen set of pages and drop the rest. |
| [Remove pages](/docs/api/remove-pages-from-pdf) | `/v1/remove_pages` | Drop a chosen set of pages and keep the rest. |
| [Rotate pages](/docs/api/rotate-pages-in-pdf) | `/v1/rotate_pages` | Turn chosen pages by a multiple of 90 degrees. |
| [Reverse pages](/docs/api/reverse-pages-of-pdf) | `/v1/reverse_pages` | Flip the page order end to end. |
| [Reorder pages](/docs/api/reorder-pages-of-pdf) | `/v1/reorder_pages` | Rearrange pages into a caller-specified order. |
## How actions compose
Because every action takes a PDF and (for single-output actions) returns a PDF,
one action's output is a valid input to the next. Nothing is stored between
calls, so you compose by piping bytes: hold the response of one request in
memory and post it as the `file` of the next.
A typical pipeline reads left to right:
```text
merge_documents → add_text_watermark → add_password
(many PDFs) (one watermarked) (one encrypted)
```
The [Chaining actions](/docs/api/chaining-actions) guide shows this end to end,
in code, without touching disk.
## Single-output vs. multi-output
Most actions return one `application/pdf` document. The four split actions return
many, and let you pick how they are packaged — a ZIP archive, a JSON envelope, or
a `multipart/mixed` body — through content negotiation. That mechanism has one
home: [Response formats](/docs/api/response-formats).
What an action is, the full catalog of 17 actions grouped by capability, the /v1/<action> convention, and how outputs feed back in as inputs.
An action is a single, pure PDF transformation exposed as one endpoint. You
send a document, the action does exactly one thing to it — merge, watermark,
encrypt, rotate, split — and you get the result back. Actions hold no state and
share no context; each call stands alone. That uniformity is what lets you snap
them together into pipelines.
Every action is a POST to /v1/<action>, where <action> is the wire name in
the tables below. They all follow the same
request and response contract: a
multipart/form-data body with the input PDF in a file field, authenticated
with the X-API-Key header. Most return a single application/pdf; the split
family returns several documents.
Because every action takes a PDF and (for single-output actions) returns a PDF,
one action’s output is a valid input to the next. Nothing is stored between
calls, so you compose by piping bytes: hold the response of one request in
memory and post it as the file of the next.
Most actions return one application/pdf document. The four split actions return
many, and let you pick how they are packaged — a ZIP archive, a JSON envelope, or
a multipart/mixed body — through content negotiation. That mechanism has one
home: Response formats.