> ## Documentation Index
> Fetch the complete documentation index at: https://developer.box.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Manual split

> Divide a PDF stored in Box into sub-documents using the exact page ranges you define.

export const MultiRelatedLinks = ({sections = []}) => {
  if (!sections || sections.length === 0) {
    return null;
  }
  return <div className="space-y-8">
      {sections.map((section, index) => <RelatedLinks key={index} title={section.title} items={section.items} />)}
    </div>;
};

export const RelatedLinks = ({title, items = []}) => {
  const getBadgeClass = badge => {
    if (!badge) return "badge-default";
    const badgeType = badge.toLowerCase().replace(/\s+/g, "-");
    return `badge-${badge === "ガイド" ? "guide" : badgeType}`;
  };
  if (!items || items.length === 0) {
    return null;
  }
  return <div className="my-8">
      {}
      <h3 className="text-sm font-bold uppercase tracking-wider mb-4">{title}</h3>

      {}
      <div className="flex flex-col gap-3">
        {items.map((item, index) => <a key={index} href={item.href} className="py-2 px-3 rounded related_link hover:bg-[#f2f2f2] dark:hover:bg-[#111827] flex items-center gap-3 group no-underline hover:no-underline border-b-0">
            {}
            <span className={`px-2 py-1 rounded-full text-xs font-semibold uppercase tracking-wide flex-shrink-0 ${getBadgeClass(item.badge)}`}>
              {item.badge}
            </span>

            {}
            <span className="text-base">{item.label}</span>
          </a>)}
      </div>
    </div>;
};

export const Link = ({href, children, className, ...props}) => {
  const localizedHref = localizeLink(href);
  return <a href={localizedHref} className={className} {...props}>
      {children}
    </a>;
};

A manual split divides a PDF into sub-documents using the exact page ranges you define.

Use this split type when you already know which pages belong together, such as a standard packet layout, a file an operator has reviewed, or page ranges supplied by an upstream system.

## Prerequisites

Before you start, follow the steps in the <Link href="/guides/docgen/docgen-getting-started">get started with Box Doc Gen</Link> guide to create a platform app and generate an access token.

You also need:

* A source PDF already stored in Box.
* A destination folder in Box that your app can write to.
* The page ranges for each output document.

If the boundaries depend on content or markers rather than fixed page numbers, use a <Link href="/guides/docgen/smart-split">smart split</Link> instead.

## What you configure

| Parameter                      | Description                                               |
| ------------------------------ | --------------------------------------------------------- |
| `source_file_id`               | The Box file ID of the PDF to split                       |
| `destination_folder_id`        | The Box folder ID where Box stores the output documents   |
| `split_input.split_type`       | `manual`                                                  |
| `split_input.split_definition` | One or more page ranges, each with a `start` and an `end` |

Each `{ start, end }` pair creates one output document. Page numbers are 1-based and ranges are inclusive.

## Example

You have a 14-page sales packet and want two files, one for the order summary on pages 1 to 5 and one for the exhibits and terms on pages 6 to 14. The corresponding `split_definition` is:

```json theme={null}
[
  { "start": 1, "end": 5 },
  { "start": 6, "end": 14 }
]
```

## Create a manual split job

```sh cURL theme={null}
curl -L 'https://api.box.com/2.0/document_splits' \
     -H 'Accept: application/json; version=1' \
     -H 'box-version: 2026.0' \
     -H 'Content-Type: application/json' \
     -H 'Authorization: Bearer <ACCESS_TOKEN>' \
     -d '{
       "source_file_id": "21040505661",
       "destination_folder_id": "10720019396",
       "input_source": "api",
       "split_input": {
         "split_type": "manual",
         "split_definition": [
           { "start": 1, "end": 5 },
           { "start": 7, "end": 9 }
         ]
       }
     }'
```

The response contains the ID of the split job:

```json theme={null}
{
  "id": "11678",
  "type": "document_split"
}
```

Use this ID to <Link href="/guides/docgen/document-split">retrieve the status and the generated files</Link>.

## Best practices

* Use page ranges that do not overlap, so no page appears in more than one output document.
* Order your ranges by page number to match the reading order of the source PDF.
* Choose a manual split whenever the page numbers are already known, because the results are deterministic.
* Give destination folders meaningful names, such as `Splits / Customer A / 2026-07`, so reviewers can find the output quickly.

## When to use a smart split instead

Choose a <Link href="/guides/docgen/smart-split">smart split</Link> when:

* Break points are marked by QR codes or separator pages.
* You need to keep only certain types of content, such as signatures and ID proofs.
* Page ranges vary from file to file and are easier to describe than to calculate.

<RelatedLinks
  title="RELATED GUIDES"
  items={[
{ label: translate("Document Split"), href: "/guides/docgen/document-split", badge: "GUIDE" },
{ label: translate("Smart split"), href: "/guides/docgen/smart-split", badge: "GUIDE" }
]}
/>
