---
title: "Создать контакт"
method: POST
path: "/v1/public/lists/{listId}/contacts"
tags: ["Контакты"]
---

# Создать контакт

`POST /v1/public/lists/{listId}/contacts`

## Request

- Base URL: `https://api.rusender.ru/api`
- URL: `https://api.rusender.ru/api/v1/public/lists/{listId}/contacts`
- Auth: HTTP bearer

Создаёт контакт или переиспользует существующий. Контакт ищется по email в пределах вашего аккаунта: если контакт с таким email уже существует, он переиспользуется, а name и phone из запроса игнорируются; иначе создаётся новый. Добавление в список идемпотентно (уже в списке — no-op). Переменные применяются в обоих случаях. Дубликат email никогда не является ошибкой. Флаг created в ответе различает эти два исхода.

## Path parameters

- `listId` integer, required

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `data` object, required: Основные данные запроса.
    - `email` string, required: Email-адрес нового контакта.
    - `name` string: Имя контакта.
    - `phone` string: Телефон контакта.
    - `variables` object: Начальные значения переменных (key → value).
  - `meta` PublicApiRequestMetaDto
    - `requestId` string: Client-provided request ID для корреляции.

## Response `200`

Контакт успешно создан.

- object
  - `ok` boolean, required: Флаг успешного выполнения.
  - `data` object, required: Полезная нагрузка успешного ответа.
    - `id` number, required: Уникальный идентификатор контакта.
    - `email` string, required: Email-адрес контакта.
    - `name` string: Имя контакта.
    - `phone` string: Телефон контакта.
    - `status` 'new' | 'active' | 'unsubscribed' | 'unsubscribed_by_us' | 'soft_bounced' | 'hard_bounced' | 'error' | 'complaint', required: Статус контакта.
    - `listIds` number[], required: Идентификаторы списков, к которым принадлежит контакт.
    - `lists` ContactListDto[]: Списки, к которым принадлежит контакт.
      - `id` number, required: Идентификатор списка.
      - `name` string, required: Название списка.
    - `variables` object: Значения переменных (key → value). Присутствует только в контексте списка.
    - `createdAt` string, required: Дата создания контакта в формате ISO-8601.
    - `updatedAt` string, required: Дата последнего обновления в формате ISO-8601.
    - `lastActivityAt` object: Дата последней активности в формате ISO-8601.
    - `dashboardUrl` string, required: Прямая ссылка на контакт в дашборде.
    - `created` boolean, required: true — создан новый контакт; false — найден и переиспользован существующий контакт с тем же email.
  - `meta` PublicApiResponseMetaDto, required
    - `requestId` string, required: Итоговый идентификатор запроса, использованный сервером.
    - `timestamp` string, required: Время формирования ответа в формате ISO-8601.
    - `pagination` PublicApiPaginationMetaDto
      - `page` number, required: Текущая страница.
      - `limit` number, required: Количество элементов на странице.
      - `totalItems` number, required: Общее количество элементов.
      - `totalPages` number, required: Общее количество страниц.

## Other responses

- `400`: Некорректный запрос.
- `401`: Требуется валидный токен Public API.
- `403`: Для вызова endpoint не хватает требуемого scope.
- `404`: Запрошенный ресурс не найден.
- `422`: Запрос синтаксически корректен, но не может быть обработан.
- `429`: Превышен rate limit для текущего API key.
- `500`: Внутренняя ошибка сервера.

---

[API](https://skmtc.dev/rusender/apis/public-api.md) · [All operations](https://skmtc.dev/rusender/apis/public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/rusender/apis/public-api/revisions/8e86bca789ea?raw)
