Skip to main content
This tool requires a publicly accessible PDF URL. If your file is stored locally or in memory, you can upload it to our temporary bucket first using the Get Signed Upload URL endpoint.
POST https://api.pdfnoodle.com/v1/tools/split-pdf

Request

# Split by intervals (every 2 pages)
curl --location 'https://api.pdfnoodle.com/v1/tools/split-pdf' \
--header 'Authorization: Bearer pdfnoodle_api_123456789' \
--header 'Content-Type: application/json' \
--data '{
    "url": "https://example.com/large-document.pdf",
    "splitMode": "intervals",
    "interval": 2,
    "finalFilename": "chapter.pdf",
    "expiration": 3600
}'

Response

{
  "status": "SUCCESS",
  "totalParts": 3,
  "fileName": "chapter.pdf",
  "urlValidUntil": "2025-01-01T02:00:00.000Z",
  "urls": [
    "https://s3.amazonaws.com/.../chapter_1.pdf",
    "https://s3.amazonaws.com/.../chapter_2.pdf",
    "https://s3.amazonaws.com/.../chapter_3.pdf"
  ],
  "zipUrl": "https://s3.amazonaws.com/.../chapter.zip"
}
The response contains an array of urls, each pointing to a split part of the original PDF. Parts are named using the pattern {filename}_{partNumber}.pdf (e.g., chapter_1.pdf, chapter_2.pdf). A zipUrl is also included, which points to a .zip archive containing all split parts for convenient bulk download. All files are stored persistently and can be re-downloaded at any time from the dashboard logs.

Split Modes

There are two ways to split a PDF:

Intervals Mode (default)

Splits the PDF every N pages. For example, a 10-page PDF with interval: 3 will produce 4 parts: pages 1-3, 4-6, 7-9, and 10.
{
  "url": "https://example.com/document.pdf",
  "splitMode": "intervals",
  "interval": 3
}

Ranges Mode

Splits the PDF by specific page ranges. Use comma-separated ranges like 1-3,5,7-10.
{
  "url": "https://example.com/document.pdf",
  "splitMode": "ranges",
  "ranges": "1-3,5,7-10"
}
When using splitMode: "ranges", the ranges parameter is required. When using splitMode: "intervals", the interval parameter is required.

Operation Tracking

Each split operation creates a record in your dashboard logs, allowing you to:
  • View all past split operations with their status and metadata
  • Re-download split files at any time via the logs table
  • Track usage across your team
Business and Scale plans: Split operations are unlimited and do not count toward your PDF generation quota.Starter plans: Split operations count toward your total volume quota.

Async Mode

By default, the request waits for the split to complete before returning a response. If you set async: true, the endpoint returns immediately with a requestId and statusUrl that you can use to poll for the result.
Async Response (200 OK)
{
  "requestId": "pdfnoodle_request_123456789",
  "statusUrl": "https://api.pdfnoodle.com/v1/tools/status/pdfnoodle_request_123456789",
  "message": "The tool is being executed asynchronously. Check the status using the status URL."
}
Use the Get Tool Status endpoint to check the result.

Request Timeout (>30 seconds)

Even without async: true, if the operation takes more than 30 seconds it will automatically be processed in the background.
If the split takes longer than 30 seconds, you’ll receive a 202 Accepted response with a requestId and statusUrl to poll for the result:
Timeout (202 Accepted)
{
  "requestId": "pdfnoodle_request_123456789",
  "statusUrl": "https://api.pdfnoodle.com/v1/tools/status/pdfnoodle_request_123456789",
  "message": "Couldn't complete the operation within 30 seconds, it is being processed asynchronously. Check the status using the status URL."
}

Parameters

url
string
required
A valid, publicly accessible URL pointing to the PDF file you want to split.
splitMode
string
default:"intervals"
The method to use for splitting. Must be either "ranges" or "intervals". Default: "intervals".
ranges
string
Specific page ranges to extract (e.g., "1-3,5,7-10"). Required when splitMode is "ranges".
interval
number
default:"1"
Split the PDF every N pages. Must be at least 1. Required when splitMode is "intervals". Default: 1.
finalFilename
string
The base filename for the split parts. Must end with .pdf. Each part will be named {basename}_{partNumber}.pdf. If not provided, the original filename from the URL will be used, or a random name will be generated.
expiration
number
default:"3600"
Number of seconds that the generated signed URLs will take to expire. Must be between 60 (1 minute) and 604800 (7 days). Default: 3600 (1 hour).
async
boolean
default:"false"
If true, the request returns immediately with a requestId and statusUrl instead of waiting for the operation to complete. You can then poll the Get Tool Status endpoint to check when the result is ready.