---
name: "pdf123-rearrange-pages"
description: "Rearrange, duplicate, or delete PDF pages with visual drag-and-drop control. Runs the PDF123 \"Reorganize Pages\" tool (pdf123.xyz) over its REST API with curl, no account needed. Use when the user wants this done to their file. Also known as: 重排页面, Reordenar páginas, पृष्ठ क्रम बदलें, إعادة ترتيب الصفحات, Reorganizar páginas, Susun ulang halaman, Réorganiser les pages, Переставить страницы, ページの並べ替え, Seiten neu ordnen, 페이지 순서 변경, Sắp xếp lại trang, Sayfaları yeniden sırala, 重排頁面, Riordina pagine, จัดเรียงหน้าใหม่, Przestaw strony, Переставити сторінки, Pagina's herschikken, Susun semula halaman, Ordna om sidor, Αναδιάταξη σελίδων, Пренареждане на страници, Reordena pàgines, Panga upya kurasa."
compatibility: "Needs curl 7.76+ and outbound HTTPS to pdf123.xyz, or PDFX_API_BASE pointing at a self-hosted pdfx-server."
---

# Reorganize Pages (PDF123)

Rearrange, duplicate, or delete PDF pages with visual drag-and-drop control.

Web version: https://pdf123.xyz/rearrange-pages · All tools: https://pdf123.xyz/skills/pdf123.md

## When to use

- Reverse a stack scanned last-page-first
- Put odd pages then even pages in one file
- Drop the cover page or the last page in one step
- Duplicate every page once for a review copy

## Run it

Replace the sample file names and values with the user's, then run:

```bash
API="${PDFX_API_BASE:-https://pdf123.xyz}"
curl -sS --fail-with-body -X POST "$API/api/v1/general/rearrange-pages" \
  -F "fileInput=@input.pdf" \
  -F "customMode=REVERSE_ORDER" \
  -F "pageNumbers=all" \
  --output-dir "pdf123-output/$(date +%Y%m%d-%H%M%S)" --create-dirs -OJ -w '%{filename_effective} %{content_type}\n'
```

## Inputs

Everything is `multipart/form-data`. The command above already sends each field with its default; keep them all and change only the values the user asked for, since some endpoints reject a missing optional field.

| Field | Type | Required | Default | Notes |
| --- | --- | --- | --- | --- |
| `fileInput` | file | yes | | .pdf (one file) |
| `customMode` | choice | no | `REVERSE_ORDER` | Arrangement. One of: `CUSTOM` (Custom order (uses page list below)), `REVERSE_ORDER` (Reverse all pages), `DUPLEX_SORT` (Duplex scan sort), `BOOKLET_SORT` (Booklet sort), `ODD_EVEN_SPLIT` (Odd/even split), `REMOVE_FIRST` (Remove first page), `REMOVE_LAST` (Remove last page), `REMOVE_FIRST_AND_LAST` (Remove first and last page), `DUPLICATE` (Duplicate each selected page (uses page list below)) |
| `pageNumbers` | text | no | `all` | Page order. 1-based page list: `1,3-5`, open range `7-`, `all`, or an `n` expression such as `2n` for even pages |

## Result

curl saves the result in a new `pdf123-output/<timestamp>/` directory under the server's file name and prints its path and content type. Several output files come back as one ZIP. Tell the user where the file is.

## Limits

- Booklet sort reorders only; no two-up imposition
- A mode that leaves no pages is an error
- Password-protected files need the password
- Upload limit on this website: 500 MB per file, sent in chunks above about 95 MB. A single direct API request body is capped at 100 MB.

## Errors

- A non-zero curl exit means the request failed. The saved file then holds `application/problem+json`; read it and report its `detail` to the user instead of retrying blindly.
- `413`: the upload exceeds 100 MiB. `429`: wait for `Retry-After` seconds, then retry once.
- Send `X-API-KEY: $PDFX_API_KEY` only if the user has a PDF123 API key; anonymous calls work without it.

## Privacy

Files are uploaded to the API host, processed, and deleted once the response is sent. For confidential files, ask before uploading, or use a self-hosted server via `PDFX_API_BASE`.
