---
title: "Create subscriber import"
method: POST
path: "/subscribers/imports"
tags: ["Subscribers"]
---

# Create subscriber import

`POST /subscribers/imports`

Queues an asynchronous full-record subscriber import of up to 5,000 contacts.

## Request body

- object
  - `subscribers` SubscriberImportRecord[], required
    - `email` string, email — Optional when the record has a phone.
    - `externalId` string
    - `firstName` string
    - `lastName` string
    - `phone` string — Phone number. National-format values use the batch defaultPhoneCountry. Required when the record has no email.
    - `status` 'active' | 'unsubscribed' | 'bounced'
    - `tags` string[]
    - `customAttributes` object
    - `createdAt` string, date-time — Original signup date on the source platform. Preserves the contact's real history so date-relative segments are correct right after the import. An existing contact's date only ever moves earlier. An unusable value rejects the whole request with a 400 naming the row.
  - `duplicateStrategy` 'skip' | 'merge' | 'overwrite'
  - `fileName` string
  - `listIds` string[]
  - `enrollInSequences` boolean
  - `defaultPhoneCountry` string
  - `smsConsent` boolean
  - `optInMode` 'default' | 'confirmed' | 'double_opt_in'

## Response `202`

Import queued

- object
  - `success` boolean
  - `import` SubscriberImport
    - `id` string
    - `batchId` string
    - `fileName` string
    - `status` 'running' | 'completed'
    - `totalRows` integer
    - `emailCount` integer
    - `duplicateRows` integer
    - `addedCount` integer
    - `updatedCount` integer
    - `skippedCount` integer
    - `failedCount` integer
    - `processedCount` integer
    - `totalChunks` integer
    - `completedChunks` integer
    - `failedChunks` integer
    - `skippedReasons` object
    - `failedReasons` object
    - `failedChunkReasons` object
    - `startedAt` string, date-time
    - `completedAt` string, date-time, nullable
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
  - `message` string

## Other responses

- `400` — Invalid list or request
- `401` — Unauthorized
- `403` — Missing required scope
- `500` — Import could not be queued

---

[API](https://skmtc.net/sequenzy/apis/sequenzy-api.md) · [All operations](https://skmtc.net/sequenzy/apis/sequenzy-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sequenzy/sequenzy-api/versions/af1cf9620482/schema)
