Guide / Async processing

Process documents the asynchronous way.

Routeser does not run extraction inside your create request. A job is accepted quickly, then you learn its outcome by polling a bounded status waiter or by receiving a signed webhook.

Why async

Accept fast, extract in the background.

Create-job returns once the request is validated and accepted, not when extraction finishes. This keeps the API responsive and lets backend work run with its own retries and budgets.

Reuse an idempotency key so a retried create returns the original job instead of duplicating work.

Poll

Bounded status waiter

Ask for job status on an interval within bounds. Waiters resolve when the job reaches a terminal state instead of holding a connection open.

Webhook

Signed callback

Provide a callback URL to receive a signed event when a job completes or needs review. Verify the signature and de-duplicate by the stable event id.

Terminal

Explicit outcomes

A job ends as completed, needs-review, failed, or deleted. Treat needs-review and warnings as workflow signals, not silent successes.

Handling results

What your integration should do.

  1. Create the job with a schema and an idempotency key.
  2. Wait via a bounded status poll or a signed webhook, never a long-held request.
  3. Validate the terminal result against your schema before acting on it.
  4. Route needs-review and warning outcomes to a human or a secondary check.

Questions, answered plainly

Frequently asked questions

Is extraction synchronous?

No. Create-job is accepted quickly and the terminal result arrives through a bounded status poll or a signed webhook.

What terminal states can a job reach?

A job resolves as completed, needs-review, failed, or deleted. Treat needs-review as a signal to validate before acting.

How do webhooks avoid duplicate processing?

Signed webhook events carry a stable event id for a given job and terminal status, so receivers can verify the signature and de-duplicate retries.

Next step

Build an async integration

Open the console to create jobs and try polling or signed webhooks in an authenticated workspace.

Open console