Справочник · Платформа
Клиенты
Контакты - карточки клиентов в CRM. Через API контакты можно искать по email и телефону, создавать и менять. Контакт принадлежит проекту: ключ видит контакты только своих проектов.
Объект клиента
Контакт - карточка клиента в CRM проекта.
objectстрокаобязателенТип объекта, всегда contact.
Значения: contact
iduuidобязателенid контакта.
project_iduuidобязателенid проекта, в котором контакт.
typeстрокаобязателенperson - человек, b2b_company - компания.
Значения: personb2b_company
nameстрокаобязателенИмя, как его показывает личный кабинет.
first_nameстрокаобязателенможет быть nullИмя.
last_nameстрокаобязателенможет быть nullФамилия.
emailстрокаобязателенможет быть nullОсновной email.
phoneстрокаобязателенможет быть nullОсновной телефон, обычно в E.164: +79101234567. Строка, которую не удалось разобрать как номер, хранится как есть.
positionстрокаобязателенможет быть nullДолжность.
lifecycleстрокаобязателенЭтап клиента: lead - лид, mql и sql - квалифицированный лид маркетингом и продажами, customer - клиент, churned - ушёл. Этап может быть и другой строкой, если его загрузили из файла в личном кабинете.
statusстрокаобязателенactive - рабочий контакт, archived - в архиве, blocked - заблокирован в личном кабинете.
Значения: activearchivedblocked
sourceстрокаобязателенОткуда пришёл контакт, например api - создан через API, manual - вручную в личном кабинете. Список значений может пополняться.
metadataобъектобязателенможет быть nullВаши данные, переданные при создании через API. У контактов из других источников - null. См. Формат данных.
created_atдата и время с зонойобязателенможет быть nullКогда контакт создан, UTC.
updated_atдата и время с зонойобязателенможет быть nullКогда контакт последний раз менялся, UTC.
{
"object": "contact",
"id": "01a0d7f0-b6c0-7a1a-82e4-2cab98a901c7",
"project_id": "01a0c4e2-3f10-7b4d-9c2e-5d8a1f6b3e20",
"type": "person",
"name": "Анна Смирнова",
"first_name": "Анна",
"last_name": "Смирнова",
"email": "anna@example.com",
"phone": "+79101234567",
"position": null,
"lifecycle": "lead",
"status": "active",
"source": "api",
"metadata": {
"crm_id": "A-10042"
},
"created_at": "2026-09-25T09:41:12Z",
"updated_at": "2026-09-25T09:41:12Z"
}/v1/contactsСписок контактов
contacts:readКонтакты проектов ключа, от новых к старым, по страницам. Фильтры можно сочетать: email и phone находят контакт по основному email и телефону.
Параметры запроса
limitцелое числоможет быть nullСколько контактов на странице, от 1 до 100.
По умолчанию: 20
starting_afteruuidможет быть nullid последнего контакта предыдущей страницы: страница начнётся после него. См. Пагинация.
project_iduuidможет быть nullТолько контакты этого проекта. Проекта нет в ключе - ошибка 403.
emailстрокаможет быть nullКонтакты с таким основным email, точное совпадение.
phoneстрокаможет быть nullКонтакты с таким основным телефоном. Номер в другой записи API приведёт к E.164.
lifecycleстрокаможет быть nullКонтакты на этом этапе.
Значения: leadmqlsqlcustomerchurned
Ответы
200Страница списка контактов.401Нет ключа, ключ неверный, истёк или отозван (unauthenticated).402У компании не подключено дополнение «Публичный API» (api-addon-required).403У ключа нет нужного права или доступа к проекту (forbidden).422Данные запроса не прошли проверку (validation). Какие поля и почему - в errors.429Превышен лимит запросов (rate-limited). Повторите через столько секунд, сколько указано в Retry-After.503Сервис временно недоступен (unavailable). Повторите позже.
curl https://api.ru.dialogi.io/v1/contacts \
-H "Authorization: Bearer dk_live_…"200{
"object": "list",
"data": [
{
"object": "contact",
"id": "01a0d7f0-b6c0-7a1a-82e4-2cab98a901c7",
"project_id": "01a0c4e2-3f10-7b4d-9c2e-5d8a1f6b3e20",
"type": "person",
"name": "Анна Смирнова",
"first_name": "Анна",
"last_name": "Смирнова",
"email": "anna@example.com",
"phone": "+79101234567",
"position": null,
"lifecycle": "lead",
"status": "active",
"source": "api",
"metadata": {
"crm_id": "A-10042"
},
"created_at": "2026-09-25T09:41:12Z",
"updated_at": "2026-09-25T09:41:12Z"
}
],
"has_more": true
}/v1/contactsСоздать контакт
contacts:write Idempotency-Key обязателенСоздаёт контакт в проекте. Ключ с одним проектом подставит его сам, с несколькими - передайте project_id.
Ответственного назначат правила распределения CRM, как у контакта из других источников. Если ни одно правило не сработало, контакт остаётся без ответственного. Правило может поменять и этап, если lifecycle не передан или равен lead: в ответе - этап, который сохранился.
Каждый запрос создаёт новый контакт, даже с тем же телефоном или email. Чтобы не завести дубль, сначала поищите контакт в списке по phone или email.
Параметры тела
project_iduuidможет быть nullПроект контакта. Обязателен, если в ключе несколько проектов.
typeстрокаможет быть nullperson - человек, b2b_company - компания.
Значения: personb2b_company
По умолчанию: "person"
nameстрокаобязателенИмя, как его показывать в личном кабинете.
first_nameстрокаможет быть nullИмя.
last_nameстрокаможет быть nullФамилия.
emailemailможет быть nullОсновной email.
phoneстрокаможет быть nullОсновной телефон, лучше в E.164. Номер в другой записи API приведёт к E.164.
positionстрокаможет быть nullДолжность.
lifecycleстрокаможет быть nullЭтап клиента. Если этап не передан или равен lead, его может поменять правило распределения CRM.
Значения: leadmqlsqlcustomerchurned
По умолчанию: "lead"
metadataобъектможет быть nullВаши данные: плоский объект до 50 ключей, ключ - до 40 символов и не число (10042 или -5 не подойдут), значение - строка до 500 символов, число, true/false или null. Пробелы по краям строки API убирает, пустая строка сохраняется как null. См. Формат данных.
Ответы
201Созданный контакт.400Нет заголовка Idempotency-Key (idempotency-key-required) или ключ в неверном формате (idempotency-key-invalid).401Нет ключа, ключ неверный, истёк или отозван (unauthenticated).402У компании не подключено дополнение «Публичный API» (api-addon-required).403У ключа нет нужного права или доступа к проекту (forbidden).409Idempotency-Key уже использован с другим запросом (idempotency-conflict) или первый запрос с ним ещё выполняется (idempotency-in-progress).422Данные запроса не прошли проверку (validation). Какие поля и почему - в errors.429Превышен лимит запросов (rate-limited). Повторите через столько секунд, сколько указано в Retry-After.503Сервис временно недоступен (unavailable). Повторите позже.
curl https://api.ru.dialogi.io/v1/contacts \
-H "Authorization: Bearer dk_live_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-20195208" \
-d '{
"type": "person",
"name": "Анна Смирнова",
"phone": "+79101234567",
"lifecycle": "lead"
}'201{
"object": "contact",
"id": "01a0d7f0-b6c0-7a1a-82e4-2cab98a901c7",
"project_id": "01a0c4e2-3f10-7b4d-9c2e-5d8a1f6b3e20",
"type": "person",
"name": "Анна Смирнова",
"first_name": "Анна",
"last_name": "Смирнова",
"email": "anna@example.com",
"phone": "+79101234567",
"position": null,
"lifecycle": "lead",
"status": "active",
"source": "api",
"metadata": {
"crm_id": "A-10042"
},
"created_at": "2026-09-25T09:41:12Z",
"updated_at": "2026-09-25T09:41:12Z"
}/v1/contacts/{contact}Получить контакт
contacts:readКонтакт по id. Контакт из проекта, которого нет в ключе, для ключа не существует - ответ 404.
Параметры пути
contactuuidобязателенid контакта.
Ответы
200Контакт.401Нет ключа, ключ неверный, истёк или отозван (unauthenticated).402У компании не подключено дополнение «Публичный API» (api-addon-required).403У ключа нет нужного права или доступа к проекту (forbidden).404Объекта с таким id нет или он в проекте, которого нет в ключе (not-found).429Превышен лимит запросов (rate-limited). Повторите через столько секунд, сколько указано в Retry-After.503Сервис временно недоступен (unavailable). Повторите позже.
curl https://api.ru.dialogi.io/v1/contacts/0192d3a1-7b2c-7c3e-9a51-2f6b8e4d1c90 \
-H "Authorization: Bearer dk_live_…"200{
"object": "contact",
"id": "01a0d7f0-b6c0-7a1a-82e4-2cab98a901c7",
"project_id": "01a0c4e2-3f10-7b4d-9c2e-5d8a1f6b3e20",
"type": "person",
"name": "Анна Смирнова",
"first_name": "Анна",
"last_name": "Смирнова",
"email": "anna@example.com",
"phone": "+79101234567",
"position": null,
"lifecycle": "lead",
"status": "active",
"source": "api",
"metadata": {
"crm_id": "A-10042"
},
"created_at": "2026-09-25T09:41:12Z",
"updated_at": "2026-09-25T09:41:12Z"
}/v1/contacts/{contact}Изменить контакт
contacts:writeМеняет только переданные поля. null очищает необязательное поле.
Параметры пути
contactuuidобязателенid контакта.
Параметры тела
nameстрокаИмя, как его показывать в личном кабинете.
first_nameстрокаможет быть nullИмя.
last_nameстрокаможет быть nullФамилия.
emailemailможет быть nullОсновной email.
phoneстрокаможет быть nullОсновной телефон, лучше в E.164. Номер в другой записи API приведёт к E.164.
positionстрокаможет быть nullДолжность.
lifecycleстрокаЭтап клиента.
Значения: leadmqlsqlcustomerchurned
statusстрокаactive - рабочий контакт, archived - в архиве.
Значения: activearchived
Ответы
200Контакт после изменения.401Нет ключа, ключ неверный, истёк или отозван (unauthenticated).402У компании не подключено дополнение «Публичный API» (api-addon-required).403У ключа нет нужного права или доступа к проекту (forbidden).404Объекта с таким id нет или он в проекте, которого нет в ключе (not-found).422Данные запроса не прошли проверку (validation). Какие поля и почему - в errors.429Превышен лимит запросов (rate-limited). Повторите через столько секунд, сколько указано в Retry-After.503Сервис временно недоступен (unavailable). Повторите позже.
curl -X PATCH https://api.ru.dialogi.io/v1/contacts/0192d3a1-7b2c-7c3e-9a51-2f6b8e4d1c90 \
-H "Authorization: Bearer dk_live_…" \
-H "Content-Type: application/json" \
-d '{
"lifecycle": "lead",
"status": "active"
}'200{
"object": "contact",
"id": "01a0d7f0-b6c0-7a1a-82e4-2cab98a901c7",
"project_id": "01a0c4e2-3f10-7b4d-9c2e-5d8a1f6b3e20",
"type": "person",
"name": "Анна Смирнова",
"first_name": "Анна",
"last_name": "Смирнова",
"email": "anna@example.com",
"phone": "+79101234567",
"position": null,
"lifecycle": "lead",
"status": "active",
"source": "api",
"metadata": {
"crm_id": "A-10042"
},
"created_at": "2026-09-25T09:41:12Z",
"updated_at": "2026-09-25T09:41:12Z"
}