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

Use the PDF rotate API to rotate pages in a PDF document. The /build endpoint handles the rotate operation. Add the source PDF as a parts item, and add a rotate action.

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

Rotate a PDF by 90 degrees

The following example rotates all pages in document.pdf clockwise by 90 degrees and writes the output to result.pdf:

curl -X POST https://api.nutrient.io/build \
-H "Authorization: Bearer your_api_key_here" \
-o result.pdf \
--fail \
-F document=@document.pdf \
-F instructions='{
"parts": [
{
"file": "document"
}
],
"actions": [
{
"type": "rotate",
"rotateBy": 90
}
]
}'

Rotate by 180 or 270 degrees

The rotateBy value controls the clockwise rotation angle. Supported values are 90, 180, and 270.

Use this instructions object to rotate all pages by 180 degrees:

{
"parts": [
{
"file": "document"
}
],
"actions": [
{
"type": "rotate",
"rotateBy": 180
}
]
}

Use this instructions object to rotate all pages by 270 degrees:

{
"parts": [
{
"file": "document"
}
],
"actions": [
{
"type": "rotate",
"rotateBy": 270
}
]
}

Rotate a PDF from a URL

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"
}
}
],
"actions": [
{
"type": "rotate",
"rotateBy": 90
}
]
}

Shell

Run this request to rotate a PDF from a URL:

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"
}
}
],
"actions": [
{
"type": "rotate",
"rotateBy": 90
}
]
}' \
-o result.pdf

Rotate selected page ranges

The rotate action applies to the assembled PDF in the request. To rotate only a range of pages, first extract the pages you want to rotate with parts[].pages. Then rotate that output and merge it back into the final document if needed.

The following example extracts pages three through five from document.pdf and rotates only those extracted pages in the output PDF:

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

To create a final PDF that contains both rotated and unrotated sections, process the rotated section first, and then merge it with the other page ranges. For merge workflows, refer to the PDF merge API guide.

Rotate 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"
}
],
"actions": [
{
"type": "rotate",
"rotateBy": 90
}
]
}

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 rotation with other actions

The /build endpoint can assemble a document, rotate it, and then apply additional actions. Actions run in the order specified in the actions array.

The following example merges two PDFs, rotates the assembled document, and then adds a watermark:

{
"parts": [
{
"file": "first_half"
},
{
"file": "second_half"
}
],
"actions": [
{
"type": "rotate",
"rotateBy": 90
},
{
"type": "watermark",
"text": "REVIEW",
"width": "50%",
"height": "20%",
"opacity": 0.3,
"rotation": 45
}
]
}

For workflows that include signing, rotate pages before signing the final PDF.

Reference

A PDF rotate request uses the Build API actions array with a rotate action:

type RotateAction = {
type: "rotate",
// Clockwise rotation angle. Supported values are 90, 180, and 270.
rotateBy: 90 | 180 | 270,
};
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 before rotating.
pages?: {
start?: number,
end?: number,
},
};
type BuildInstructions = {
parts: FilePart[],
actions: RotateAction[],
output?: {
type?: "pdf",
},
};
  • Refer to the build document endpoint API reference for rotating PDFs, selecting page ranges, assembling documents, and applying follow-up actions in a single request.