Skip to navigation
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 responses — splitter 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)
const processor = await client.processor.create({
name: "Invoice Packet Splitter",
type: "SPLITTER",
config: { type: "SPLITTER", splitClassifications: [...] }
});
After (2026-02-09)
const splitter = await client.splitters.create({
name: "Invoice Packet Splitter",
config: { splitClassifications: [...] }
});

Retrieving a Splitter (New!)

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

Listing Splitters

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

Publishing a Version

Before
const version = await client.processorVersion.create("dp_abc123", { releaseType: "minor" });
After
const 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
typeRequired—Removed
versionsRequired array—Removed

SplitterVersion Schema

PropertyOld (ProcessorVersion)New (SplitterVersion)Change
object"document_processor_version""splitter_version"Value changed
idRequired stringRequired stringNo change
processorIdRequired—Renamed to splitterId
splitterId—RequiredNew
processorNameOptional—Removed
processorTypeRequired—Removed
versionRequiredRequiredNo change
descriptionOptionalOptionalNo change
configSplitterConfigSplitConfigNo change
createdAtRequiredRequiredNo change
updatedAtRequired—Removed

SplitConfig Schema

PropertyOld (SplitterConfig)New (SplitConfig)Change
typeRequired "SPLITTER"—Removed
baseProcessorOptionalOptionalNo change
splitClassificationsRequiredRequiredNo change
parserOptional—Renamed
parseConfig—OptionalNew (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
Overview—What’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.