Migration Guides2026-02-09

Classifiers Migration

What You Get

  • Dedicated /classifiers endpoints — No more type: "CLASSIFY" filters
  • New GET /classifiers/{id} endpoint — Retrieve a single classifier (not available in old API)
  • Typed SDK responsesclassifier 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 Classifier

Before (2025-04-21)
1const processor = await client.processor.create({
2 name: "Document Classifier",
3 type: "CLASSIFY",
4 config: { type: "CLASSIFY", classifications: [...] }
5});
After (2026-02-09)
1const classifier = await client.classifiers.create({
2 name: "Document Classifier",
3 config: { classifications: [...] }
4});

Retrieving a Classifier (New!)

1const classifier = await client.classifiers.retrieve("cl_abc123");
2console.log(classifier.draftVersion.config);

Listing Classifiers

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

Publishing a Version

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

Endpoint Changes Summary

Old EndpointNew Endpoint
POST /processors (type: CLASSIFY)POST /classifiers
GET /processors?type=CLASSIFYGET /classifiers
(not available)GET /classifiers/{id} (new!)
POST /processors/{id}POST /classifiers/{id}
POST /processors/{id}/publishPOST /classifiers/{classifierId}/versions
GET /processors/{id}/versionsGET /classifiers/{classifierId}/versions
GET /processors/{id}/versions/{versionId}GET /classifiers/{classifierId}/versions/{versionId}

Request Changes

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

cloneClassifierId and config are mutually exclusive. You can either clone an existing classifier 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)
{ "classifier": {...} }{...} (object returned directly)
processorsclassifiers
processorVersionclassifierVersion
versionsclassifierVersions
draftVersion.processorIddraftVersion.classifierId
List includes versions[](removed) — Use versions endpoint

SDK Method Reference

Old MethodNew Method
client.processor.create()client.classifiers.create()
client.processor.list()client.classifiers.list()
client.processor.update()client.classifiers.update()
client.classifiers.retrieve() (new!)
client.processorVersion.create()client.classifierVersions.create()
client.processorVersion.list()client.classifierVersions.list()
client.processorVersion.get()client.classifierVersions.retrieve()

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.