get
https://api.popt.in/v1/bulk-jobs
Poll a background bulk job until status is done or failed. Requires object_id and object_name from the 202 response of a queuing operation.
When to poll
Any operation that queues background work and returns 202 Accepted plus a bulk_job object requires polling until the job reaches a terminal state.
| Queuing operation | What it does | Job type value |
|---|---|---|
| Bulk import contacts (JSON) | Upserts up to 100 contacts in the background | json_bulk_contacts |
| Bulk import contacts (CSV) | Imports a spreadsheet in chunked background jobs | csv_import_contacts |
| Bulk delete contacts (JSON) | Hard-deletes up to 2,000 contacts by uid in the background | json_bulk_delete_contacts |
| Bulk delete conversions (JSON) | Scrubs PII from up to 2,000 conversions by uid in the background (rows may be kept for aggregate stats) | json_bulk_delete_conversions |
| Send template email | Sends one template email to a subscribed contact in the background | json_send_template_emails |
Single-contact operations (create or update contact, update contact status, delete contact) run synchronously and do not use this API.
Typical integration flow
- Call one of the queuing operations above.
- On 202, read
bulk_job.object_idandbulk_job.object_namefrom the response. - Call Show bulk job status with the same identifiers on an interval until
statusisdoneorfailed. - Interpret
progressanderrors:- Import jobs:
created,updated,failed,skipped,percent, cappederrors. - Delete jobs:
deleted,not_found,failed,percent, cappederrors(created/updatedstay zero).
- Import jobs:
Concurrency: Up to 10 async jobs per account may be new or running at once. Queue attempts beyond that return 409 Conflict.
Account lock: If the account is in a processing state, queueing operations return 423 Locked before a job is created.
