Start or resume a list migration (Preview)

Preview · Available to selected organizations. The complete encoded JSON request, including new-start metadata, must not exceed 3000000 bytes.

POST
/v1/contacts/imports

The complete encoded JSON request, including new-start metadata, must not exceed 3000000 bytes. Admits a durable import using the preview hash and an idempotency key, or resumes the same persisted input at its committed cursor. Imports never restore an existing unsubscribe, suppression or bounce. Namespace-scoped credentials cannot create organization-wide suppressions; those rows are conflicts and create no contact. New active contacts are billable and normal contact events apply. Requires listMigration for new admissions.

x-api-key<token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

mode*"new"

Value in

  • "new"
input*
planHash*string
idempotencyKey*string
Length1 <= length <= 255

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/contacts/imports" \  -H "Content-Type: application/json" \  -d '{    "mode": "new",    "input": {      "preset": "beehiiv",      "topicId": "string",      "files": [        {          "name": "string",          "csv": "string",          "evidence": {            "kind": "status_column"          }        }      ]    },    "planHash": "string",    "idempotencyKey": "string"  }'
{  "id": "string",  "namespaceId": "string",  "topicId": "string",  "preset": "beehiiv",  "status": "queued",  "generation": 0,  "counts": {    "totalRows": 0,    "uniqueAddresses": 0,    "subscribed": 0,    "unsubscribed": 0,    "suppressed": 0,    "skipped": 0,    "conflicts": 0,    "created": 0,    "existing": 0  },  "processedRows": 0,  "totalRows": 0,  "createdAt": "string",  "startedAt": "string",  "updatedAt": "string",  "completedAt": "string",  "failure": {    "code": "string",    "message": "string",    "retryable": true  },  "resumable": true}

Related documentation