---
title: "Bulk Import Contacts"
method: POST
path: "/v1/contacts/bulk"
tags: ["Contacts"]
---

# Bulk Import Contacts

`POST /v1/contacts/bulk`

Bulk import contacts. Requires API key with audience:write.

## Headers

- `Idempotency-Key` string

## Request body

- BulkImportSubscribersRequest
  - `subscribers` AddSubscriberRequest[], required
    - `email` string, email, required
    - `firstName` string
    - `lastName` string
    - `phone` string — Phone number (free-form, max 30 chars)
    - `country` string
    - `language` string
    - `tags` string[]
    - `customFields` object
    - `status` 'subscribed' | 'unsubscribed' | 'bounced' | 'non-subscribed' — Contact subscription status. Defaults to subscribed.
    - `projectId` string, required
  - `projectId` string, required

## Response `200`

Bulk import result

- ApiResponseBulkImportResult
  - `success` boolean, required
  - `data` object, nullable
    - `success` integer
    - `failed` integer
    - `updated` integer
    - `errors` string[]
  - `error` string, nullable

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Unauthorized
- `409` — Conflict - the Idempotency-Key was reused with a different request body (code: IDEMPOTENCY_CONFLICT)

---

[API](https://skmtc.net/migma/apis/migma-ai-api-v1.md) · [All operations](https://skmtc.net/migma/apis/migma-ai-api-v1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/migma/migma-ai-api-v1/revisions/2d06ad0e0bc3/schema)
