Recipients API — контакты, атрибуты, фильтры

Recipients API «Мой диалог» — управление получателями, атрибутами, фильтрами и тегами через API

Recipients API — контакты, атрибуты, фильтры

Коротко: Recipients API управляет получателями: контактами, атрибутами, фильтрами (таргетами) и тегами. Доступен только в сервисе «Мой диалог».

Кому подходит

  • Роль: Разработчик, Интегратор
  • Уровень: Опытный

Что это

Recipients API — интерфейс для работы с базой получателей. Позволяет создавать, читать, обновлять и удалять контакты, управлять их атрибутами, а также получать списки фильтров и тегов.

Все эндпоинты используют префикс /api/v1/recipient/.

Эндпоинты

МетодЭндпоинтДля чего
GET/recipient/recipientsСписок получателей
POST/recipient/recipientsСоздать получателя
PUT/recipient/recipientsОбновить получателя
DELETE/recipient/recipientsУдалить получателя
GET/recipient/attributesСписок атрибутов
POST/recipient/attributesСоздать атрибут
PUT/recipient/attributes/{id}Обновить атрибут
DELETE/recipient/attributes/{id}Удалить атрибут
GET/recipient/attributes/typesТипы атрибутов
GET/recipient/filtersСписок фильтров (таргетов)
GET/recipient/tagsСписок тегов

Полный URL: https://web.mydialogi.ru/api/v1/recipient/....

Контакты

Список получателей

Эндпоинт: GET /recipient/recipients

Query-параметры:

ПараметрТипОбязательноЧто указать
emailstringНетEmail получателя
phoneNumberstringНетНомер телефона с кодом страны, без «+»
tagsstringНетСписок тегов через запятую. Логика — OR
limitintegerНетМаксимум записей. По умолчанию 10
offsetintegerНетСмещение. По умолчанию 0

Можно также указать внутренние имена атрибутов как параметры. Например, Age=30 — вернёт получателей с атрибутом Age, равным 30.

Пример 1. Список по тегам:

curl --location 'https://web.mydialogi.ru/api/v1/recipient/recipients?limit=5&tags=test,test1' \
  --header 'X-API-Key: <ваш-ключ>'

Пример 2. Список по атрибуту:

curl --location 'https://web.mydialogi.ru/api/v1/recipient/recipients?limit=5&Age=30' \
  --header 'X-API-Key: <ваш-ключ>'

Формат ответа:

{
  "limit": 5,
  "offset": 0,
  "size": 2,
  "results": [
    {
      "id": 14045930,
      "name": "Anna",
      "phoneNumber": "48732231269",
      "surname": null,
      "city": null,
      "email": "Anna.test@gmail.com",
      "tags": ["test"],
      "attributes": {
        "Age": 30
      }
    }
  ]
}

Создание получателей

Эндпоинт: POST /recipient/recipients

Тело запроса:

ПолеТипОбязательноЧто указать
typestringДаENRICH, NOT_IMPORT или OVERWRITE
tagstringНетТег для всех импортируемых получателей
recipientsarrayДаМассив объектов получателей

Объект получателя в массиве recipients:

ПолеТипОбязательноЧто указать
phoneNumberstringДаНомер телефона с кодом страны, без «+»
namestringНетИмя
surnamestringНетФамилия
citystringНетГород
emailstringНетEmail
attributesobjectНетДополнительные атрибуты
tagsarrayНетСписок тегов

Пример:

curl --location 'https://web.mydialogi.ru/api/v1/recipient/recipients' \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <ваш-ключ>' \
  --data-raw '{
    "recipients": [
      {
        "email": "test.email@gmail.com",
        "tags": ["test1"]
      },
      {
        "name": "Alice",
        "phoneNumber": "48732231255",
        "tags": ["test2"]
      }
    ],
    "tag": "test-test",
    "type": "ENRICH"
  }'

Формат ответа:

ПолеЧто означает
importedСколько записей импортировано
overwrittenСколько записей перезаписано
failedСколько записей не импортировано из-за ошибки
enrichedСколько записей обогащено
{
  "imported": 1,
  "overwritten": 0,
  "failed": 1,
  "enriched": 0
}

Поле phoneNumber обязательно. Если его нет — запись не создаётся.

Обновление получателя

Эндпоинт: PUT /recipient/recipients

Тело запроса:

ПолеТипОбязательноЧто указать
phoneNumberstringДаНомер телефона получателя
namestringНетИмя
surnamestringНетФамилия
citystringНетГород
emailstringНетEmail
attributesobjectНетДополнительные атрибуты
tagsarrayНетСписок тегов

Пример:

curl --location --request PUT 'https://web.mydialogi.ru/api/v1/recipient/recipients' \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <ваш-ключ>' \
  --data-raw '{
    "phoneNumber": "48732231255",
    "name": "Alice",
    "attributes": {
      "Age": 25
    },
    "tags": ["new tag"]
  }'

Формат ответа — обновлённый объект получателя.

Удаление получателя

Эндпоинт: DELETE /recipient/recipients

Тело запроса:

ПолеТипОбязательноЧто указать
phoneNumberstringДа*Номер телефона
emailstringДа*Email

*- нужен либо phoneNumber, либо email.

Пример:

curl --location --request DELETE 'https://web.mydialogi.ru/api/v1/recipient/recipients' \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <ваш-ключ>' \
  --data-raw '{
    "phoneNumber": "4915735987904"
  }'

Если в базе несколько получателей с одинаковым email — API вернёт ошибку. Удаляйте по номеру телефона.

Атрибуты

Атрибуты — дополнительные поля контакта (например, возраст, город, hobby).

Список атрибутов

Эндпоинт: GET /recipient/attributes

curl --location 'https://web.mydialogi.ru/api/v1/recipient/attributes' \
  --header 'X-API-Key: <ваш-ключ>'

Формат ответа:

{
  "limit": 0,
  "offset": 0,
  "size": 8,
  "results": [
    {
      "id": 1,
      "name": "phoneNumber",
      "typeId": 5,
      "type": null,
      "title": "Phone number",
      "nullable": false
    },
    {
      "id": 3,
      "name": "name",
      "typeId": 7,
      "type": null,
      "title": "Name",
      "nullable": true
    }
  ]
}

Поля атрибута:

ПолеЧто означает
idID атрибута
nameВнутреннее имя (используется в API)
titleОтображаемое имя
typeIdID типа атрибута
nullableМожет ли быть пустым

Создание атрибута

Эндпоинт: POST /recipient/attributes

Тело запроса:

ПолеТипОбязательноЧто указать
namestringДаВнутреннее имя атрибута
titlestringДаОтображаемое имя
typeIdintegerДаID типа атрибута
nullablebooleanНетМожет ли быть пустым

Обновление атрибута

Эндпоинт: PUT /recipient/attributes/{id}

Тело запроса:

ПолеТипЧто указать
namestringНовое внутреннее имя
titlestringНовое отображаемое имя
isToCardbooleanПоказывать ли атрибут в карточке

Удаление атрибута

Эндпоинт: DELETE /recipient/attributes/{id}

Успешное удаление возвращает 204 No Content.

Типы атрибутов

Эндпоинт: GET /recipient/attributes/types

curl --location 'https://web.mydialogi.ru/api/v1/recipient/attributes/types' \
  --header 'X-API-Key: <ваш-ключ>'

Базовые типы (baseType):

ТипЧто означает
BOOLEANЛогическое значение
DATEДата
NUMBERЧисло
TEXTТекст

Фильтры (таргеты)

Эндпоинт: GET /recipient/filters

Возвращает список фильтров (таргетов) компании.

curl --location 'https://web.mydialogi.ru/api/v1/recipient/filters' \
  --header 'X-API-Key: <ваш-ключ>'

Формат ответа:

ПолеЧто означает
dataСписок фильтров
totalCountОбщее количество фильтров

Поля фильтра:

ПолеЧто означает
idID фильтра
nameНазвание
conditionУсловие
expressionsСписок выражений фильтра
recipientsКоличество получателей в фильтре
launchesКоличество запусков
createdAtДата создания
updatedAtДата обновления
visibleВидимость

Теги

Эндпоинт: GET /recipient/tags

Возвращает список всех тегов компании.

curl --location 'https://web.mydialogi.ru/api/v1/recipient/tags' \
  --header 'X-API-Key: <ваш-ключ>'

Ответ — массив строк с названиями тегов.

Коды ответов

КодЧто означает
200 OKУспешно
204 No ContentУспешно, тело пустое (для удаления)
400Ошибка параметров
401Неверный или отсутствующий API-ключ
403Нет прав
404Ресурс не найден
500Внутренняя ошибка сервера

Пример ответа с ошибкой:

{
  "execId": null,
  "key": "errors.recipient_service.phone_not_valid",
  "code": "ValidationError",
  "message": "Phone number can`t be null",
  "args": null
}

Частые проблемы

Причина: в запросе не указан обязательный phoneNumber.

Решение: укажите номер телефона с кодом страны, без «+».

Причина: при создании получателей не указан type.

Решение: укажите один из вариантов: ENRICH, NOT_IMPORT, OVERWRITE.

Причина: в запросе указан атрибут, которого нет в системе.

Решение: проверьте список атрибутов через GET /recipient/attributes.

Причина: удаление по email, а в базе несколько получателей с таким email.

Решение: удаляйте по номеру телефона — он уникален.

Причина: неверный или отсутствующий API-ключ.

Решение: проверьте заголовок X-API-Key.

Причина: у ключа нет scope recipients.

Решение: откройте ключ в разделе API Подключения и добавьте нужный scope.

См. также

OMNI API — отправка сообщений

Эндпоинты /messages, /omnimessages

Broadcasts API

Запуск рассылок, шаблоны

Подключение к API

Аутентификация и базовый URL

Обзор API «Мой диалог»

OMNI, Broadcasts, Recipients — обзор

Нужна помощь?