Migration Guides2026-02-09

Splitters Migration

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 responsessplitter objects are typed, no casting needed
  • Simpler config — No more type field required

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

Before (2025-04-21)
1const processor = await client.processor.create({
2 name: "Invoice Packet Splitter",
3 type: "SPLITTER",
4 config: { type: "SPLITTER", splitClassifications: [...] }
5});
After (2026-02-09)
1const splitter = await client.splitters.create({
2 name: "Invoice Packet Splitter",
3 config: { splitClassifications: [...] }
4});

Retrieving a Splitter (New!)

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

Listing Splitters

Before
1const processors = await client.processor.list({ type: "SPLITTER" });
After
1const splitters = await client.splitters.list();

Publishing a Version

Before
1const version = await client.processorVersion.create("dp_abc123", { releaseType: "minor" });
After
1const version = await client.splitterVersions.create("spl_abc123", { releaseType: "minor" });

Endpoint Changes Summary

Old EndpointNew Endpoint
POST /processors (type: SPLITTER)POST /splitters
GET /processors?type=SPLITTERGET /splitters
(not available)GET /splitters/{id} (new!)
POST /processors/{id}POST /splitters/{id}
POST /processors/{id}/publishPOST /splitters/{splitterId}/versions
GET /processors/{id}/versionsGET /splitters/{splitterId}/versions
GET /processors/{id}/versions/{versionId}GET /splitters/{splitterId}/versions/{versionId}

Request Changes

OldNewNotes
type: "SPLITTER"(removed)Implicit from endpoint
cloneProcessorIdcloneSplitterIdRenamed
config.type: "SPLITTER"(removed)Implicit
config.parserconfig.parseConfigRenamed
config.baseProcessorconfig.baseProcessorNo change (optional)

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

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 for details.

OldNew
success: true(removed)
{ "splitter": {...} }{...} (object returned directly)
processorssplitters
processorVersionsplitterVersion
versionssplitterVersions
draftVersion.processorIddraftVersion.splitterId
List includes versions[](removed) — Use versions endpoint

SDK Method Reference

Old MethodNew 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()

Splitter Schema

PropertyOld (Processor)New (Splitter)Change
object"document_processor""splitter"Value changed
idRequired stringRequired stringNo change
nameRequiredRequiredNo change
typeRequired "SPLITTER"Removed
draftVersionProcessorVersionSplitterVersionNo change
createdAtRequiredRequiredNo change
updatedAtRequiredRequiredNo change

SplitterSummary Schema (List Response)

PropertyOldNewChange
object"document_processor""splitter"Value changed
typeRequiredRemoved
versionsRequired arrayRemoved

SplitterVersion Schema

PropertyOld (ProcessorVersion)New (SplitterVersion)Change
object"document_processor_version""splitter_version"Value changed
idRequired stringRequired stringNo change
processorIdRequiredRenamed to splitterId
splitterIdRequiredNew
processorNameOptionalRemoved
processorTypeRequiredRemoved
versionRequiredRequiredNo change
descriptionOptionalOptionalNo change
configSplitterConfigSplitConfigNo change
createdAtRequiredRequiredNo change
updatedAtRequiredRemoved

SplitConfig Schema

PropertyOld (SplitterConfig)New (SplitConfig)Change
typeRequired "SPLITTER"Removed
baseProcessorOptionalOptionalNo change
splitClassificationsRequiredRequiredNo change
parserOptionalRenamed
parseConfigOptionalNew (replaces parser)

Need Help?

If you encounter any issues while migrating, please contact our support team at support@extend.app.


Migration Guides

GuideMigrating FromMigrating To
OverviewWhat’s new and how to upgrade
Extract Runs/processor_runs/extract_runs + /extract
Classify Runs/processor_runs/classify_runs + /classify
Split Runs/processor_runs/split_runs + /split
Parse Runs/parse, /parse/async/parse_runs + /parse
Edit Runs/edit, /edit/async/edit_runs + /edit
Extractors/processors/extractors
Classifiers/processors/classifiers
Splitters/processors/splitters
Files/files/files (breaking changes)
Evaluation Setsevaluation endpointsUpdated evaluation endpoints
Workflow Runs/workflow_runs/workflow_runs (breaking changes)
Webhooksprocessor_run.* eventsextract_run.*, classify_run.*, etc.