Job Status and Lifecycle

Overview

When you submit a job to the Extract API, it progresses through a series of states that track its execution from submission to completion. Understanding these states helps you monitor job progress, troubleshoot issues, and know when outputs are ready.

Job Lifecycle

A successfully completed job progresses through these states in order:

Job Lifecycle

Job Statuses

StatusDefinitionDescription
queuedJob received and created
ingestingData validationDownloading the documents from customer’s storage for processing
validatingData ingestionValidate source files against data contract. Validation starts after ingestion
runningData processing and extractionPipeline has started
completedData ready for collectionPipeline has completed and output is available for customer to collect. Customer should call /collect to upload output to their storage
transferringUploading outputs to customer storageUploading the output files to the customer’s s3 bucket
transfer_completedOutput files have been successfully transferred to customer storage
transfer_failedFile download/upload was interrupted before all files were transferredAn error occurred during the file transfer - For e.g. STS credentials expired
failedFailure occurred during the data ingestion phase due to an authentication or data validation errorAuthentication to the customer’s storage failed or one or more data contract requirements were not met. Fix and create a new job.
cancelledJob was cancelled. Job can be cancelled if not completed or paused.
pausedJob was pausedJobs can only be paused and resumed by System Administrator. If you wish to stop a job, you should call /cancel. Paused state allows for emtelligent personnel to investigate.

State Transitions

Job Transition

Job Status Polling

How to Check Job Status

Use the API endpoint to check the current status of your job:

curl -X 'GET' \
'https://extraction-api.emtelligent.com/api/v1/jobs/<job_id>/status' \
-H 'accept: application/json' \
-H 'X-API-Key: <api-key>'

Response Example:

{
"job_id": "<job_id>",
"job_name": "<job_name>",
"job_status": "running",
"job_details": {
"queued": {
"pipeline_name": "<pipeline_name>",
"pipeline_params": {
"extraction_type": [
"labs",
"vitals"
]
}
},
"extract": {
"queued_at": "<date-time>"
}
}
}