Import job progress

GET/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

  • idstringrequired

    Import job id (`importJobId` from the 202).

Response

The job's current state.

  • importJobIdstringrequired
  • statusenumrequired
    queuedprocessingdonefailed
  • totalintegerrequired

    Data rows in the file.

  • processedinteger

    Rows handled so far.

  • importedinteger

    New contacts created.

  • updatedinteger
  • skippedinteger
  • errorsobject[]

    Up to the first 10 row failures. `skipped` counts them all — do not read this array's length as the failure count.

    • lineinteger
    • errorstring
  • failureReasonstring | null

    Set 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