This HTML page is not optimized for LLM or AI agent consumption. Fetch the Markdown version instead: /guides/dws-processor/tools-and-api/pdf-split-api.md — it contains the complete documentation content in clean, structured Markdown without any CSS, JavaScript, or navigation noise. PDF split API

Use the PDF split API to create a new PDF from selected pages of an existing PDF. The /build endpoint handles the split operation. Add the source PDF as a parts item, and set a pages range for the pages you want in the output.

For signup, pricing, and task-level examples, refer to the split PDF API task page.

Extract a page range

The following example extracts the first three pages from document.pdf and writes them to result.pdf.

Page indexes are zero-based, so page 0 is the first page. The end value is inclusive, so { "start": 0, "end": 2 } includes pages zero, one, and two.

curl -X POST https://api.nutrient.io/build \
-H "Authorization: Bearer your_api_key_here" \
-o first_half.pdf \
--fail \
-F document=@document.pdf \
-F instructions='{
"parts": [
{
"file": "document",
"pages": {
"end": -6
}
}
]
}'
curl -X POST https://api.nutrient.io/build \
-H "Authorization: Bearer your_api_key_here" \
-o second_half.pdf \
--fail \
-F document=@document.pdf \
-F instructions='{
"parts": [
{
"file": "document",
"pages": {
"start": -5
}
}
]
}'

Split a PDF into two files

The /build endpoint returns one output file per request. To split one PDF into two separate PDFs, send two requests with complementary page ranges.

The following example creates these files:

  • first_half.pdf — All pages except the last five.
  • second_half.pdf — The last five pages.

Negative page indexes count from the end of the document. For example, -1 is the last page, -2 is the second-to-last page, and so on.

Shell

Run these requests to create two output PDFs:

Terminal window
curl -X POST https://api.nutrient.io/build \
-H "Authorization: Bearer $NUTRIENT_API_KEY" \
-F document=@document.pdf \
-F 'instructions={
"parts": [
{
"file": "document",
"pages": {
"end": -6
}
}
]
}' \
-o first_half.pdf
curl -X POST https://api.nutrient.io/build \
-H "Authorization: Bearer $NUTRIENT_API_KEY" \
-F document=@document.pdf \
-F 'instructions={
"parts": [
{
"file": "document",
"pages": {
"start": -5
}
}
]
}' \
-o second_half.pdf

Extract pages from a remote PDF

For remotely hosted source files, send a JSON request and pass the source URL in parts[].file.url. Use this instructions object:

{
"parts": [
{
"file": {
"url": "https://example.com/document.pdf"
},
"pages": {
"start": 3,
"end": 7
}
}
]
}

Shell

Run this request to extract pages from a remote PDF:

Terminal window
curl -X POST https://api.nutrient.io/build \
-H "Authorization: Bearer $NUTRIENT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"parts": [
{
"file": {
"url": "https://example.com/document.pdf"
},
"pages": {
"start": 3,
"end": 7
}
}
]
}' \
-o result.pdf

Extract the last page

Use -1 for both start and end to extract only the last page of a document. Use this instructions object:

{
"parts": [
{
"file": "document",
"pages": {
"start": -1,
"end": -1
}
}
]
}

Create a packet from multiple page ranges

Include more than one parts item to assemble selected ranges into a single output PDF. Use this approach when you want to split out specific sections and combine them into a new packet.

The following example creates one PDF from pages zero through two and pages 10 through the end of the same source document:

{
"parts": [
{
"file": "document",
"pages": {
"start": 0,
"end": 2
}
},
{
"file": "document",
"pages": {
"start": 10,
"end": -1
}
}
]
}

The order of the parts array controls the page order in the output PDF.

Split password-protected PDFs

If the source PDF is password-protected, include the password on the part. Use this instructions object:

{
"parts": [
{
"file": "protected_document",
"password": "document-password",
"pages": {
"start": 0,
"end": 2
}
}
]
}

Nutrient DWS Processor API uses the password only to open the source document for processing. To set a password on the output PDF, configure output.user_password, output.owner_password, and output.user_permissions.

Combine splitting with other actions

The /build endpoint can extract pages and then apply actions to the resulting PDF. Actions run after Nutrient DWS Processor API assembles the selected parts.

The following example extracts pages zero through two and then rotates the output by 90 degrees:

{
"parts": [
{
"file": "document",
"pages": {
"start": 0,
"end": 2
}
}
],
"actions": [
{
"type": "rotate",
"rotateBy": 90
}
]
}

For workflows that include signing, extract or split the required pages before signing the final PDF.

Reference

A PDF split request uses the Build API parts array. Each part can include an optional pages range:

type PageRange = {
// First page to include. Defaults to 0.
// Page indexes are zero-based. Negative values count from the end.
start?: number,
// Last page to include. Defaults to -1, which means the last page.
// The end value is inclusive.
end?: number,
};
type FilePart = {
// Multipart field name, or a remote URL object.
file: string | { url: string },
// Optional password for encrypted input PDFs.
password?: string,
// Optional page range to extract from this part.
pages?: PageRange,
};
type BuildInstructions = {
parts: FilePart[],
actions?: BuildAction[],
output?: {
type?: "pdf",
},
};
  • Refer to the build document endpoint API reference for extracting page ranges, assembling selected pages, and applying follow-up actions in a single request.