Get an import job
One job with its rows and counts. This is the fallback whenever an SSE event is missed — the stored row is authoritative, the events are only a live nudge.
One job with its rows and counts. This is the fallback whenever an SSE event is missed — the stored row is authoritative, the events are only a live nudge.
counts is zero-filled across every state, so a missing key never has to be read as "unknown". row_states echoes the full state vocabulary: pending, running, success, needs_2fa, needs_2fa_expired, failed, canceled, invalid, skipped, slot_exhausted.
Rows never carry credentials — each has has_password / has_totp_secret flags instead, and a row parked on 2FA also reports two_fa_remaining_seconds.
Authorization
apiKey Your CRM panel API key
In: header
Path Parameters
Import job ID (32-character hex) returned by POST /import/jobs.
Query Parameters
Rows per page (1–1000).
1 <= value <= 10001000Row offset for pagination.
0Return only rows in this state. An unrecognised value is a 400, not an empty page.
Value in
- "pending"
- "running"
- "success"
- "needs_2fa"
- "needs_2fa_expired"
- "failed"
- "canceled"
- "invalid"
- "skipped"
- "slot_exhausted"
Response Body
application/json
curl -X GET "https://example.com/import/jobs/string"{ "counts": null, "job": null, "row_states": [], "rows": [], "success": true, "total": 0}Start a bulk import POST
Create an import job and start working through the rows in the background. Returns 202 immediately with the job and its per-status counts.
Cancel an import job POST
Stop an import. Cancellation is cooperative: pending rows are canceled at once and nothing further is claimed, but a row already mid-login runs to completion — we cannot…