Skip to main content

Job Status

Poll a single email generation job for progress and the first 100 records.

Endpoint​

Method: GET Path: /email-generation/jobs/{job_id}/ Full URL: https://backend.ecoreservice.com/api/v1/email-generation/jobs/{job_id}/ Auth: Authorization: Bearer <JWT>

Poll every 3–5 seconds until status is Processed or Failed.

Response Payload​

{
"id": 123,
"uuid": "…",
"list_name": "Q3 prospects",
"status": "Processing",
"total_records": 4000,
"generated_count": 1800,
"no_email_count": 320,
"total_credits_charged": 20000,
"results_summary": "2120/4000",
"duration": "3m 12s",
"created_at": "…",
"started_at": "…",
"completed_at": null,
"records": [ /* first 100 records — same shape as Records */ ]
}
FieldTypeDescription
idintegerJob id
list_namestringDisplay label
statusstringUploading → Processing → Processed (terminal) / Failed (terminal, credits refunded)
total_recordsintegerContacts in the job
generated_countintegerContacts with an email found so far
no_email_countintegerContacts with no email found so far
total_credits_chargedintegerNet credits charged (after refunds)
results_summarystringprocessed/total
durationstringHuman-readable processing time
created_at / started_at / completed_atdatetime | nullLifecycle timestamps
recordsarrayFirst 100 records — see Records for the per-record shape

Progress & Polling​

  • Drive a progress bar from results_summary (processed/total) or generated_count + no_email_count.
  • Stop polling when status is Processed or Failed.
  • A Failed job has already had its credits refunded.

Error Responses​

HTTPWhenBody
404Job not found / not owned by this account{ "error": "..." }

See Error Codes for the full list.