Import job progress
/v1/contacts/import/{id}Secret key — sk_… or sk_test_… · Base URL https://api.volanea.com
Progress and final counts for a queued CSV import. Poll until status is done (counts are final) or failed (failureReason says why). Counts are recomputed from scratch on every worker attempt, never incremented, so a retried job never double-counts.
Path parameters
idstringrequiredImport job id (`importJobId` from the 202).
Response
The job's current state.
importJobIdstringrequiredstatusenumrequiredqueuedprocessingdonefailedtotalintegerrequiredData rows in the file.
processedintegerRows handled so far.
importedintegerNew contacts created.
updatedintegerskippedintegererrorsobject[]Up to the first 10 row failures. `skipped` counts them all — do not read this array's length as the failure count.
lineintegererrorstring
failureReasonstring | nullSet only when `status` is `failed`: the job itself died, not one row.
Errors
Every failure returns the standard envelope — branch on `code`, never on the wording of `error`.
401Missing or invalid API key.404Not found.422Request validation failed (code `validation_error`, 422).
Request
curl https://api.volanea.com/v1/contacts/import/id_123 \
-H "Authorization: Bearer sk_..."Response
200 · application/json
{
"success": true,
"data": {
"importJobId": "<importJobId>",
"status": "queued",
"total": 1,
"processed": 1,
"imported": 1,
"updated": 1,
"skipped": 1,
"errors": [
{
"line": 1,
"error": "<error>"
}
],
"failureReason": "<failureReason>"
}
}92 endpoints · OpenAPI document