Extract

Get the status and result of an async extract job

GET
/api/v1/extract/{job_id}

Get the status and result of an async extract job

Poll for the status and result of an async extract job submitted via POST /api/v1/extract with options.async=true. Returns the same envelope shape as the synchronous extract endpoint once status is completed.

Pagination: when completed, result.data is paginated with a fixed page size of 15. Use the page query param (1-based) to navigate; result.pagination reports total_items, total_pages, has_next, has_prev.

Recommended polling cadence: 1s for the first 10s, then 5s, capped at 30s. Stop polling once status is in {completed, failed}.

Authorization

bearerAuth
AuthorizationBearer <token>

Console session token (Authorization: Bearer <session>) or product API key (Authorization: Bearer <api-key> or x-api-key). Session tokens are validated via Better Auth get-session; API keys against the shared database.

In: header

Path Parameters

job_id*Job Id

Query Parameters

page?|

1-based page index for navigating result.data. Fixed page size of 15 items. Returns 400 if the page is out of range.

Header Parameters

authorization?string|null
x-api-key?string|null

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/api/v1/extract/string"
{  "id": "string",  "status": "string",  "created_at": "2019-08-24T14:15:22Z",  "completed_at": "2019-08-24T14:15:22Z",  "processing_time_ms": 0,  "document": {    "filename": "string",    "page_count": 0,    "file_size_bytes": 0,    "mime_type": "string"  },  "result": {    "data": [      {}    ],    "pagination": {      "page": 0,      "page_size": 0,      "total_items": 0,      "total_pages": 0,      "has_next": true,      "has_prev": true    }  },  "usage": {    "pages_processed": 0  },  "progress": {    "percentage": 0,    "pages_processed": 0  }}