Get extraction result for a job
const url = 'https://dashboard.justcrawl.io/api/v1/extraction/results/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://dashboard.justcrawl.io/api/v1/extraction/results/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Authorization: Bearer <token>'Fetches the extraction result for one job, with explicit state codes for the extraction-done → bulk-writer-flush handoff (Phase 1 Lane D). Three terminal shapes:
- 200 — bulk-writer landed the row; full
ExtractionResultreturned. - 202 — job is in
extraction_done, awaiting the next bi-postgres flush. The response sets both the standardRetry-AfterHTTP header and a body fieldretryAfterSecondsso polling clients can drive their backoff from either source. Body shape{ indexingPending: true, ... }is the discriminator the React polling hook union-narrows on. - 500 — job is
completedbut noextraction_resultsrow landed (bulk-writer ack mismatch). The backend’sstuck_extraction_done_rowssystem_job cron alerts ops independently; this surface returns 500 so the UI shows “something went wrong” instead of spinning forever.
404 covers every other job status (pending / running / extracting / failed)
and missing jobs alike — by design, an org never learns whether a missing UUID was
another tenant’s job or never existed.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Responses
Section titled “ Responses ”Extraction result row has landed.
object
object
Internal storage key for the raw HTML blob.
Example generated
{ "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "orgId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "jobId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "domain": "example", "schemaId": "example", "dataType": "example", "normalized": {}, "rawBlobKey": "example", "qualityCompleteness": 1, "qualityValidation": 1, "qualityComposite": 1, "latencyMs": 1, "deliveredAt": "2026-04-15T12:00:00Z", "createdAt": "2026-04-15T12:00:00Z"}Extraction completed; awaiting bulk-writer flush. Retry after retryAfterSeconds (also sent as the standard Retry-After HTTP header).
object
Example
{ "indexingPending": true, "status": "extraction_done"}Headers
Section titled “Headers ”Suggested delay in seconds before the next poll.
Missing or invalid authentication token
object
Example
{ "error": "Missing or invalid authentication token"}Insufficient permissions for this operation
object
Example
{ "error": "No organization. Complete onboarding first."}Resource not found
object
Example
{ "error": "Workflow not found"}Unexpected server error. Logs and PostHog $exception capture
object
Example
{ "error": "Something went wrong"}