---
title: "Add Contact"
method: POST
path: "/v1/contacts"
tags: ["Contacts"]
---

# Add Contact

`POST /v1/contacts`

Add a single contact. Requires API key with audience:write.

## Headers

- `Idempotency-Key` string

## Request body

- AddSubscriberRequest
  - `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

## Response `200`

Contact created

- ApiResponseSubscriber
  - `success` boolean, required
  - `data` object, nullable
    - `id` string
    - `email` string, email
    - `firstName` string
    - `lastName` string
    - `phone` string — Phone number
    - `country` string
    - `language` string
    - `tags` string[]
    - `customFields` object
    - `status` 'subscribed' | 'unsubscribed' | 'bounced' | 'non-subscribed'
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
  - `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/5ed4a5a287b5/schema)
