Skip to main content

Job Status

Retrieve full details and aggregate statistics for a single email validation job, plus the first 100 records inline. For more records, use Job Records.

Endpoint

Method: GET Path: /email-validation/jobs/{job_id}/ Full URL: https://app.ecoreservice.com/backend/api/v1/email-validation/jobs/{job_id}/ Auth: Authorization: Token YOUR_API_TOKEN — see Authentication

{job_id} is the integer returned by Upload Emails.

Example Request

curl -X GET \
"https://app.ecoreservice.com/backend/api/v1/email-validation/jobs/42/" \
-H "Authorization: Token YOUR_API_TOKEN"

Successful Response — 200 OK

{
"id": 42,
"uuid": "f8a1c3e5-9b2d-4e6f-a8c1-0d3e5f7a9b2d",
"list_name": "Q1 Leads",
"status": "Processed",
"total_records": 250,
"valid_count": 178,
"invalid_count": 49,
"unknown_count": 23,
"total_credits_charged": 178.0,
"credits_charged_at": "2026-05-06T11:42:08.913Z",
"created_at": "2026-05-06T11:41:55.001Z",
"started_at": "2026-05-06T11:42:01.220Z",
"completed_at": "2026-05-06T11:43:17.880Z",
"duration": "1m 16s",
"results_summary": "250/250",
"records": [
{
"id": 9881,
"ec_id": null,
"email": "jane@acme.com",
"status": "Valid",
"validator_used": "ZeroBounce",
"is_cached": false,
"error_message": null,
"processed_at": "2026-05-06T11:42:31.412Z"
}
]
}

Response Fields

FieldTypeDescription
idintegerThe job's primary key
uuidstringUUID4
list_namestringDisplay label
statusstringUploading / Processing / Processed / Failed
total_recordsintegerTotal unique emails in the job
valid_countintegerRecords with status = Valid
invalid_countintegerRecords with status = Invalid
unknown_countintegerRecords with status = Unknown
total_credits_chargednumberNet charge after refunds for non-Valid emails
credits_charged_atdatetimeWhen the upfront charge was applied
created_atdatetimeJob creation timestamp
started_atdatetime | nullWhen the async worker picked it up
completed_atdatetime | nullWhen processing finished (or failed)
durationstringHuman-readable processing duration
results_summarystringprocessed/total count
recordsarrayFirst 100 records inline — see Job Records per-record fields

Polling Guidance

  • Poll every few seconds for small jobs.
  • Poll every 15–30 seconds for large jobs.
  • Stop polling when status is Processed or Failed.
  • A Failed job has already had credits refunded — no action needed.

Error Responses

HTTPBodyWhen
401{"detail": "Invalid token."}Missing or invalid token
404{"detail": "Not found."}job_id doesn't exist or belongs to another user

See Error Codes for the full list.