Preview a list migration (Preview)

Preview · Available to selected organizations. The complete encoded JSON request must not exceed 3000000 bytes.

POST
/v1/contacts/imports/plan

The complete encoded JSON request must not exceed 3000000 bytes. Reads multiple declared export files without changing contacts. Restrictive evidence wins per address. Returns estimated counts and at most 100 diagnostics; processing rechecks current restrictions. Filenames never establish permission. Requires listMigration. Missing required columns refuse the file; unknown status values are conflicts and never subscribe a reader.

x-api-key<token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

preset*string

Value in

  • "beehiiv"
  • "substack"
  • "kit"
  • "mailchimp"
topicId*TopicId
Match^unsub_[0-9a-hjkmnp-tv-z]{16,24}$
namespaceId?|null
files*array<>
Items1 <= items <= 20

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/contacts/imports/plan" \  -H "Content-Type: application/json" \  -d '{    "preset": "beehiiv",    "topicId": "string",    "files": [      {        "name": "string",        "csv": "string",        "evidence": {          "kind": "status_column"        }      }    ]  }'
{  "planHash": "string",  "presetVersion": "string",  "namespaceId": "string",  "topicId": "string",  "canStart": true,  "counts": {    "totalRows": 0,    "uniqueAddresses": 0,    "subscribed": 0,    "unsubscribed": 0,    "suppressed": 0,    "skipped": 0,    "conflicts": 0,    "created": 0,    "existing": 0  },  "diagnostics": [    {      "file": "string",      "row": -9007199254740991,      "code": "string",      "message": "string",      "email": "string"    }  ],  "diagnosticsTruncated": true}

Related documentation