Migrating to API Version 2026-02-09
Welcome to the New API
The 2026-02-09 API version is a significant improvement designed to make your integration cleaner, more type-safe, and easier to maintain. Weβve listened to developer feedback and restructured the API around clearer resource types and better SDK support.
Why Migrate?
Hereβs what youβll get with the new API version:
Dedicated Endpoints with Typed Responses
The unified /processors and /processor_runs endpoints have been split into dedicated endpoints for each resource type:
This means fully typed SDK responsesβno more checking type fields or casting outputs:
TypeScript
Python
Java
TypeScript bonus: Define schemas with Zod for fully typed output values:
Run Without Pre-Creating a Resource
Previously, you had to create and manage an extractor, classifier, or splitter resource before running. Now you can pass your config inlineβperfect for managing schemas entirely in code.
TypeScript
Python
Java
Synchronous Endpoints
New synchronous endpoints let you process a file and get the result in a single requestβno polling or webhooks needed. These are ideal for onboarding, testing, and low-volume use cases:
TypeScript SDK
Python SDK
REST API
Polling Helpers
The async *_runs endpoints are the recommended approach for production. The SDK provides createAndPoll / create_and_poll methods that handle polling with exponential backoff:
TypeScript
Python
Java
Available for all run types: extractRuns, classifyRuns, splitRuns, parseRuns, editRuns, workflowRuns.
Workflow runs can take a long time. Complex workflows may run for hours. For workflows, consider using webhooks instead of polling unless you know the workflow will complete quickly.
Simplified Response Shapes
API responses are now cleaner and more consistent:
Single object responses are unwrapped. Instead of { "extractRun": { ... }, "success": true }, the API now returns the object directly:
List responses use a standardized format. All list endpoints now return { "object": "list", "data": [...] }:
SDK users: These changes are handled automatically by the SDK. Youβll access results directly (e.g., result.output instead of result.extractRun.output).
SDK Webhook Helpers
For event-driven processing, the SDK includes utilities for verifying signatures and parsing events with type-safe payloads:
See the Webhooks Migration guide for full details and examples in all languages.
Coming Soon
The following features will be added to the 2026-02-09 API version:
How to Upgrade
Step 1: Update to the New API Version
TypeScript
Python
Java (Maven)
REST API
The latest SDK automatically uses the 2026-02-09 API version.
Step 2: Migrate Endpoint by Endpoint
You donβt have to migrate everything at once. Start with the endpoints you use most and work through the detailed guides:
Processing Runs:
- Extract Runs Migration β
/processor_runsβ/extract_runs(+ new sync/extract) - Classify Runs Migration β
/processor_runsβ/classify_runs(+ new sync/classify) - Split Runs Migration β
/processor_runsβ/split_runs(+ new sync/split) - Parse Runs Migration β
/parse_runs(+ sync/parse) - Edit Runs Migration β
/edit_runs(+ sync/edit)
Resource Management:
- Extractors Migration β
/processorsβ/extractors - Classifiers Migration β
/processorsβ/classifiers - Splitters Migration β
/processorsβ/splitters
Other Endpoints:
- Files Migration β Changes to
/filesendpoints - Evaluation Sets Migration β Changes to evaluation sets and evaluation set runs
- Workflow Runs Migration β Breaking changes to
/workflow_runsrequest/response shapes
Step 3: Migrate Webhooks
If you use webhooks, follow the Webhooks Migration guide to update your webhook handlers. This includes:
- New event type names (e.g.,
processor_run.processedβextract_run.processed) - New payload structures with typed responses
- New SDK helpers for signature verification
Need Help?
- Questions? Contact our support team at support@extend.app
- Found a bug? Let us know and weβll fix it ASAP
- Feedback on the new API? Weβd love to hear itβreach out on Slack!
Migration Guides
Jump to the specific guide for the endpoints you use:

