> This page is for version v2026-02-09 (default).
> For other versions, use one of these documentation indexes:
> - v2026-02-09 (default): https://docs.extend.ai/2026-02-09/llms.txt
> - v2025-04-21: https://docs.extend.ai/2025-04-21/llms.txt
> - v2024-12-23: https://docs.extend.ai/2024-12-23/llms.txt

> ## Documentation Index
> Fetch the complete documentation index at: https://docs.extend.ai/llms.txt
> Use this file to discover all available pages before exploring further.
>
> ## API version
> The current API version is `2026-02-09`, served at the site root (no version prefix in URLs).
> If this page URL contains `/2025-04-21/` or `/2024-12-23/`, you are reading an older API version.
> Prefer the current docs at https://docs.extend.ai/llms.txt unless the user explicitly needs that older version.
> Do not treat older-version pages as the source of truth for new integrations.

# Splitters Migration

> Migrate from /processors to /splitters for splitter management

## What You Get

* **Dedicated `/splitters` endpoints** — No more `type: "SPLITTER"` filters
* **New `GET /splitters/{id}` endpoint** — Retrieve a single splitter (not available in old API)
* **Typed SDK responses** — `splitter` objects are typed, no casting needed
* **Simpler config** — No more `type` field required

> **Note**
>
> The old `/processors` endpoint is still supported in this API version for backward compatibility. You can migrate incrementally.

---

## Quick Start: Common Patterns

### Creating a Splitter

#### TypeScript

**`Before (2025-04-21)`**

```typescript title="Before (2025-04-21)"
const processor = await client.processor.create({
  name: "Invoice Packet Splitter",
  type: "SPLITTER",
  config: { type: "SPLITTER", splitClassifications: [...] }
});
```

**`After (2026-02-09)`**

```typescript title="After (2026-02-09)"
const splitter = await client.splitters.create({
  name: "Invoice Packet Splitter",
  config: { splitClassifications: [...] }
});
```

#### Python

**`Before (2025-04-21)`**

```python title="Before (2025-04-21)"
processor = client.processor.create(
    name="Invoice Packet Splitter",
    type="SPLITTER",
    config={"type": "SPLITTER", "split_classifications": [...]}
)
```

**`After (2026-02-09)`**

```python title="After (2026-02-09)"
splitter = client.splitters.create(
    name="Invoice Packet Splitter",
    config={"split_classifications": [...]}
)
```

#### Java

**`After (2026-02-09)`**

```java title="After (2026-02-09)"
var splitter = client.splitters().create(SplittersCreateRequest.builder()
    .name("Invoice Packet Splitter")
    .config(SplitConfig.builder().splitClassifications(classifications).build())
    .build());
```

### Retrieving a Splitter (New!)

#### TypeScript

```typescript
const splitter = await client.splitters.retrieve("spl_abc123");
console.log(splitter.draftVersion.config);
```

#### Python

```python
splitter = client.splitters.retrieve("spl_abc123")
print(splitter.draft_version.config)
```

#### Java

```java
var splitter = client.splitters().retrieve("spl_abc123");
System.out.println(splitter.getDraftVersion().getConfig());
```

### Listing Splitters

#### TypeScript

**`Before`**

```typescript title="Before"
const processors = await client.processor.list({ type: "SPLITTER" });
```

**`After`**

```typescript title="After"
const splitters = await client.splitters.list();
```

#### Python

**`Before`**

```python title="Before"
processors = client.processor.list(type="SPLITTER")
```

**`After`**

```python title="After"
splitters = client.splitters.list()
```

#### Java

**`After`**

```java title="After"
var splitters = client.splitters().list();
```

### Publishing a Version

#### TypeScript

**`Before`**

```typescript title="Before"
const version = await client.processorVersion.create("dp_abc123", { releaseType: "minor" });
```

**`After`**

```typescript title="After"
const version = await client.splitterVersions.create("spl_abc123", { releaseType: "minor" });
```

#### Python

**`Before`**

```python title="Before"
version = client.processor_version.create("dp_abc123", release_type="minor")
```

**`After`**

```python title="After"
version = client.splitter_versions.create("spl_abc123", release_type="minor")
```

#### Java

**`After`**

```java title="After"
var version = client.splitterVersions().create("spl_abc123",
    SplitterVersionsCreateRequest.builder().releaseType(ReleaseType.MINOR).build());
```

---

## Endpoint Changes Summary

| Old Endpoint                                | New Endpoint                                       |
| ------------------------------------------- | -------------------------------------------------- |
| `POST /processors` (type: SPLITTER)         | `POST /splitters`                                  |
| `GET /processors?type=SPLITTER`             | `GET /splitters`                                   |
| *(not available)*                           | `GET /splitters/{id}` **(new!)**                   |
| `POST /processors/{id}`                     | `POST /splitters/{id}`                             |
| `POST /processors/{id}/publish`             | `POST /splitters/{splitterId}/versions`            |
| `GET /processors/{id}/versions`             | `GET /splitters/{splitterId}/versions`             |
| `GET /processors/{id}/versions/{versionId}` | `GET /splitters/{splitterId}/versions/{versionId}` |

---

## Request Changes

| Old                       | New                    | Notes                  |
| ------------------------- | ---------------------- | ---------------------- |
| `type: "SPLITTER"`        | *(removed)*            | Implicit from endpoint |
| `cloneProcessorId`        | `cloneSplitterId`      | Renamed                |
| `config.type: "SPLITTER"` | *(removed)*            | Implicit               |
| `config.parser`           | `config.parseConfig`   | Renamed                |
| `config.baseProcessor`    | `config.baseProcessor` | No change (optional)   |

> **Warning**
>
> **`cloneSplitterId` and `config` are mutually exclusive.** You can either clone an existing splitter or provide a config, but not both. The API will return a validation error if both are provided.

---

## Response Changes

> **Note**
>
> **Response shape changes:** Single object responses are now returned directly (no wrapper key), and list responses use `{ "object": "list", "data": [...] }` format. See [Simplified Response Shapes](/api-reference/migrations/2026-02-09/overview#simplified-response-shapes) for details.

| Old                        | New                                 |
| -------------------------- | ----------------------------------- |
| `success: true`            | *(removed)*                         |
| `{ "splitter": {...} }`    | `{...}` (object returned directly)  |
| `processors`               | `splitters`                         |
| `processorVersion`         | `splitterVersion`                   |
| `versions`                 | `splitterVersions`                  |
| `draftVersion.processorId` | `draftVersion.splitterId`           |
| List includes `versions[]` | *(removed)* — Use versions endpoint |

---

## SDK Method Reference

| Old Method                         | New Method                             |
| ---------------------------------- | -------------------------------------- |
| `client.processor.create()`        | `client.splitters.create()`            |
| `client.processor.list()`          | `client.splitters.list()`              |
| `client.processor.update()`        | `client.splitters.update()`            |
| —                                  | `client.splitters.retrieve()` *(new!)* |
| `client.processorVersion.create()` | `client.splitterVersions.create()`     |
| `client.processorVersion.list()`   | `client.splitterVersions.list()`       |
| `client.processorVersion.get()`    | `client.splitterVersions.retrieve()`   |

---

#### Detailed Schema Changes

### Splitter Schema

| Property       | Old (Processor)        | New (Splitter)    | Change        |
| -------------- | ---------------------- | ----------------- | ------------- |
| `object`       | `"document_processor"` | `"splitter"`      | Value changed |
| `id`           | Required `string`      | Required `string` | No change     |
| `name`         | Required               | Required          | No change     |
| `type`         | Required `"SPLITTER"`  | —                 | Removed       |
| `draftVersion` | `ProcessorVersion`     | `SplitterVersion` | No change     |
| `createdAt`    | Required               | Required          | No change     |
| `updatedAt`    | Required               | Required          | No change     |

### SplitterSummary Schema (List Response)

| Property   | Old                    | New          | Change        |
| ---------- | ---------------------- | ------------ | ------------- |
| `object`   | `"document_processor"` | `"splitter"` | Value changed |
| `type`     | Required               | —            | Removed       |
| `versions` | Required array         | —            | Removed       |

### SplitterVersion Schema

| Property        | Old (ProcessorVersion)         | New (SplitterVersion) | Change                  |
| --------------- | ------------------------------ | --------------------- | ----------------------- |
| `object`        | `"document_processor_version"` | `"splitter_version"`  | Value changed           |
| `id`            | Required `string`              | Required `string`     | No change               |
| `processorId`   | Required                       | —                     | Renamed to `splitterId` |
| `splitterId`    | —                              | Required              | New                     |
| `processorName` | Optional                       | —                     | Removed                 |
| `processorType` | Required                       | —                     | Removed                 |
| `version`       | Required                       | Required              | No change               |
| `description`   | Optional                       | Optional              | No change               |
| `config`        | `SplitterConfig`               | `SplitConfig`         | No change               |
| `createdAt`     | Required                       | Required              | No change               |
| `updatedAt`     | Required                       | —                     | Removed                 |

### SplitConfig Schema

| Property               | Old (SplitterConfig)  | New (SplitConfig) | Change                  |
| ---------------------- | --------------------- | ----------------- | ----------------------- |
| `type`                 | Required `"SPLITTER"` | —                 | Removed                 |
| `baseProcessor`        | Optional              | Optional          | No change               |
| `splitClassifications` | Required              | Required          | No change               |
| `parser`               | Optional              | —                 | Renamed                 |
| `parseConfig`          | —                     | Optional          | New (replaces `parser`) |

---

## Need Help?

If you encounter any issues while migrating, please contact our support team at [support@extend.app](mailto:support@extend.app).

---

## Migration Guides

| Guide                            | Migrating From           | Migrating To                            |
| -------------------------------- | ------------------------ | --------------------------------------- |
| [Overview](./overview)           | —                        | What's new and how to upgrade           |
| [Extract Runs](./extract)        | `/processor_runs`        | `/extract_runs` + `/extract`            |
| [Classify Runs](./classify)      | `/processor_runs`        | `/classify_runs` + `/classify`          |
| [Split Runs](./split)            | `/processor_runs`        | `/split_runs` + `/split`                |
| [Parse Runs](./parse)            | `/parse`, `/parse/async` | `/parse_runs` + `/parse`                |
| [Edit Runs](./edit)              | `/edit`, `/edit/async`   | `/edit_runs` + `/edit`                  |
| [Extractors](./extractors)       | `/processors`            | `/extractors`                           |
| [Classifiers](./classifiers)     | `/processors`            | `/classifiers`                          |
| [Splitters](./splitters)         | `/processors`            | `/splitters`                            |
| [Files](./files)                 | `/files`                 | `/files` (breaking changes)             |
| [Evaluation Sets](./evaluation)  | evaluation endpoints     | Updated evaluation endpoints            |
| [Workflow Runs](./workflow-runs) | `/workflow_runs`         | `/workflow_runs` (breaking changes)     |
| [Webhooks](./webhooks)           | `processor_run.*` events | `extract_run.*`, `classify_run.*`, etc. |