Sync, polling, or webhooks
Chunkr gives you two ways to get a result: poll the task, or receive a webhook. Extend keeps both and adds a third, synchronous endpoints that hold the HTTP request open until the run finishes.Polling
Replacing a polling loop
If you followed our task handling guide, you have atenacity or p-retry loop around tasks.parse.get. create_and_poll replaces it, including backoff.
max_wait_ms it polls indefinitely; with it, a PollingTimeoutError is raised when exceeded.
Separate create and retrieve
If you store IDs and poll from a separate worker, the two-step pattern still exists.Async Python
Chunkr’sAsyncChunkr client has an equivalent: AsyncExtend. Method names and arguments are identical to the sync client; add await.
Webhooks
What changes
Chunkr fired a webhook for
Starting and Processing as well as completion. If your handler ignored non-terminal events, nothing changes. If it relied on them for progress tracking, poll retrieve for intermediate status instead.Extend only emits run events for runs created through the API. Runs started from the Extend dashboard do not trigger webhooks.
Create an endpoint
You can do this in the dashboard or programmatically. ThesigningSecret is returned once; store it in your secrets manager.
Verify and handle events
Replace your Svix verification with the SDK helper. Pass the raw request body; re-serializing JSON changes whitespace and breaks the signature.2xx promptly, as you did for Chunkr. Extend retries failed deliveries and the dashboard lets you inspect and re-send any message. For manual verification steps and the Go SDK, see Extend’s webhook guide.
Event payloads
Chunkr’s payload was{ event_type, task_id, status, message }. Extend’s payload depends on the event: parse_run.* events carry a minimal status object (id, status, failureReason, failureMessage, metadata) with no output, while extract_run.* events carry the full run. Treat the webhook as a notification and fetch the run by payload.id, as the handler above does; that keeps both paths identical and avoids depending on payload size. For very large payloads you can configure the endpoint to deliver a signed download URL instead; verify_and_parse handles that when called with allow_signed_url=True. The full catalogue is on Extend’s events page.
Data retention
Chunkr stored outputs indefinitely unless you setexpires_in. Extend has no per-run expiry parameter. To use Extend as a pure processing engine, delete runs and files once you have retrieved results.
Presigned URLs
Chunkr’sbase64_urls=True option embedded assets inline so they would not expire. On Extend, figure images (details.imageUrl), outputUrl, and file presignedUrl all expire (15 minutes for parse outputs and file downloads). Download anything you need to keep as soon as the run completes.
Limits
Error handling
Extend returns structured errors with acode, a retryable flag, and a requestId to quote to support.
Failed runs (
status: "FAILED") carry failureReason and failureMessage. See Extend’s error reference.
Next Steps
FAQ
Accounts, deployment, legacy API, and feature differences.
Extend async processing guide
Full polling options and webhook recommendations.