Campaign API

Campaign API позволяет управлять массовыми рассылками: создавать персонализированные цепочки сообщений, управлять списками контактов, отслеживать статистику и т.д.

Методы Campaign API Exolve для управления рассылками:

  • Create — создаёт рассылку;
  • GetList — получает список созданных рассылок по заданным параметрам;
  • GetInfo — получает информацию об одной рассылке;
  • Update — обновляет имя и статус рассылки (в т.ч. отправляет её);
  • GetHistory — показывает все коммуникации в рассылке по заданным параметрам;
  • DownloadFileTemplate — скачивает шаблон файла со списком контактов;
  • UploadContactFile — загружает файл с контактами для рассылки;
  • GetFileInfo — получает информацию о загруженном файле со списком контактов;
  • DownloadFileError — загружает файл с контактами для рассылки;
  • DeleteFile — удаляет файл со списком контактов;
  • CreateCallListFromFile — создаёт список контактов из провалидированного файла;
  • GetCallList — получает информацию о списке контактов.

Метод Create

Примените этот метод для создания массовой каскадной или SMS-рассылки. Узнайте, как отправить SMS-рассылку в этой инструкции.

Каскадная рассылка — это автоматизированная последовательная отправка уведомлений через голосовой и текстовый каналы. Например, можно запустить обзвон, а тем, до кого не получилось дозвониться, отправить SMS. Так вы быстрее сможете донести нужную информацию до ваших клиентов удобным для них способом.

Точка подключения: Выполните POST-запрос с входными параметрами к точке подключения:

POST: https://api.exolve.ru/campaign/v1/Create

Авторизация

Передайте следующие Заголовки HTTP для успешной авторизации.

ИмяТипОписание
AuthorizationstringAPI-ключ приложения с Bearer перед ним. Пример: Bearer e***s0, где e***s0 замените на API-ключ вашего приложения

Входные параметры

Передайте следующие параметры в теле запроса в JSON-формате. Параметры, отмеченные жирным шрифтом, являются обязательными.

ПараметрТипОписание
namestringнаименование рассылки
timezonebooleanпараметр учёта часового пояса. По умолчанию False - рассылка отправляется по московскому времени (UTC+3), True — учитывать часовой пояс, указанный в списке контактов
scheduleScheduleрасписание рассылки
channeloneof Channelодин из каналов рассылки (текстовое SMS, голосовое SMS или каскадная рассылка)

Channel

ПараметрТипОписание
smsSmsканал рассылки — текстовое SMS
voice_messageVoiceMessageканал рассылки — голосовое SMS (исходящий обзвон с предзаписанным аудио)
cascadeCascadeкаскадная рассылка (комбинация текстового и голосового каналов для последовательного уведомления абонентов)

Sms

ПараметрТипОписание
propsSmsPropsатрибуты сценария текстового SMS

SmsProps

ПараметрТипОписание
alpha_namestringсогласованное операторами имя, от которого отправляются текстовые SMS
textstringтекст сообщения

Текст рассылки можно персонализировать: обратиться к клиенту по имени, указать номер заказа или адрес доставки. Для этого в тексте введите переменные в двойных фигурных скобках. Поддерживается латиница и спецсимволы (кроме пробела). Максимум: 100 переменных.

Например: Здравствуйте, {{name}}! Ваш заказ {{order_number}} будет доставлен {{date}} по адресу: {{address}}

Затем скачайте шаблон файла с помощью метода DownloadFileTemplate, добавьте в него номера получателей и названия этих переменных как заголовки. Для каждого получателя укажите своё значение переменной.

Узнайте, как сэкономить и отправить рассылку по шаблону в этой инструкции.


VoiceMessage

ПараметрТипОписание
propsVoiceMessagePropsатрибуты сценария голосового SMS

VoiceMessageProps

ПараметрТипОписание
voice_message_idstringидентификатор ресурса голосового SMS
fromstringномер телефона Exolve, с которого отправляются голосовые SMS

Cascade

ПараметрТипОписание
elementsCascadeElementструктура каскадной рассылки. Один элемент (шаг) — один канал рассылки (текстовое или голосовое SMS). Максимум — 10 шагов

CascadeElement

ПараметрТипОписание
smsSmsканал рассылки — текстовое SMS
voice_messageVoiceMessageChannelканал рассылки — голосовое SMS
conditionenum Conditionусловие перехода к следующему каналу рассылки

SmsChannel

ПараметрТипОписание
propsSmsPropsатрибуты сценария текстового SMS
ttlstringпериод времени в формате ’60s’, по истечении которого будет запрошен статус SMS (от 10 до 300 секунд).

VoiceMessageChannel

ПараметрТипОписание
propsVoiceMessagePropsатрибуты сценария голосового SMS

Condition

ПараметрТипОписание
1enumзвонок не принят/SMS не доставлено
2enumзвонок принят/SMS доставлено
3enumв любом случае

Schedule

ПараметрТипОписание
daysCallIntervalDaysнастройка интервалов рассылки по дням недели

CallIntervalDays

ПараметрТипОписание
monCallIntervalинтервал понедельника
tueCallIntervalинтервал вторника
wedCallIntervalинтервал среды
thuCallIntervalинтервал четверга
friCallIntervalинтервал пятницы
satCallIntervalинтервал субботы
sunCallIntervalинтервал воскресенья

CallInterval

ПараметрТипОписание
fromFrom/Toвремя начала рассылки
toFrom/Toвремя завершения рассылки

From/To

ПараметрТипОписание
hoursuint32час интервала
minutesuint32минута интервала
secondsuint32секунда интервала
nanosuint32наносекунда интервала

Примечание

Если вы создаёте рассылку во время одного из указанных интервалов, рассылка будет запущена только при наступлении следующего интервала. Например, если вы создаете рассылку с расписанием с понедельника по среду с 10:00 по 13:00 МСК в понедельник в 10:30 МСК, то первая рассылка будет запущена только на следующий день, то есть во вторник в 10:00 МСК.

Если при создании рассылки вы не укажете интервалы расписания, рассылка будет запускаться по расписанию по умолчанию - с понедельника по пятницу с 9:00 до 18:00 МСК.

Выходные параметры

ПараметрТипОписание
campaign_iduint64идентификатор рассылки

Возможные ошибки

КодСтатусПример сообщенияОписание
404Not FoundNot Foundнекорректный URL запроса
401Unauthorizedinvalid tokenневалидный API-ключ
400Bad Requesttoken is emptyв запросе не передан API-ключ
400Bad Requestcouldn’t parse incoming jwt token: couldn’t parse token: invalid character ‘[character]’ looking for beginning of valueневалидный API-ключ
404Not Foundinvalid alpha name: alpha name is not foundвведённое имя отправителя (альфа-имя) для текстовой SMS не принадлежит приложению
404Not Foundinvalid number: number not foundвведённый номер телефона для голосовой SMS не принадлежит приложению
404Not Foundcouldn’t find voice message scenario [voice_message_id]: scenario not foundвведённый идентификатор ресурса голосового SMS не принадлежит приложению
409Conflictcouldn’t create campaign: campaign already existsрассылка с указанными параметрами уже существует
400Bad Requestinvalid SmsProps.AlphaName: value length must be between 3 and 11 runes, inclusiveполе alpha_name содержит некорректное количество символов (корректно от 3 до 11 символов)
400Bad Requestinvalid VoiceMessageProps.From: value length must be between 1 and 14 runes, inclusiveполе from содержит некорректное количество символов (корректно от 1 до 14 символов)
400Bad Requestinvalid CreateRequest.Name: value length must be between 3 and 40 runes, inclusiveполе name содержит некорректное количество символов (корректно от 3 до 40 символов)
400Bad Requestinvalid value for string type: [value]невалидное значение в одном из полей
400Bad Requestinvalid character " after object key:value pairв запросе пропущена запятая в одном из параметров

Примеры

Входные параметры:

Канал рассылки - текстовое SMS

{
    "name": "test",
    "timezone": true,
    "sms": {
        "props": {
            "alpha_name": "shop",
            "text": "Приходите к нам в магазин!"
        }
    }
}

Канал рассылки - голосовое SMS

{
    "name": "test",
    "timezone": true,
    "voice_message": {
        "props": {
            "voice_message_id": "41117356-c9d5-4c94-8c62-68d7d2dac285",
            "from": "79991112233"
        }
    }
}

Каскадная рассылка

{ 
    "name": "Рассылка с расписанием",
    "cascade": {
        "elements": [
            {
                "sms": {
                    "props": {
                        "alpha_name": "shop",
                        "text": "Приходите к нам!"
                    }
                },
                "condition": "1"
            },
            {
                "voice_message": {
                    "props": {
                        "voice_message_id": "353b86e0-a62c-47d4-9b94-8dba32c922fc",
                        "from": "79991112233"
                    }
                }
            }
        ]
    },
    "schedule": {
        "days": {
            "mon": {
                "intervals": [
                    {
                        "from": {
                            "hours": 10,
                            "minutes": 0,
                            "seconds": 0,
                            "nanos": 0
                        },
                        "to": {
                            "hours": 15,
                            "minutes": 30,
                            "seconds": 0,
                            "nanos": 0
                        }
                    }
                ]
            }
        }
    }
}

Выходные параметры:

{
    "campaign_id": "130370354778222592"
}

Метод GetList

Примените этот метод для получения списка созданных рассылок по заданным параметрам (если параметры не заданы, выводятся все созданные рассылки). Для этого выполните POST-запрос с входными параметрами к точке подключения, указанными ниже.

Точка подключения:

POST: https://api.exolve.ru/campaign/v1/GetList

Авторизация

Передайте следующие Заголовки HTTP для успешной авторизации.

ИмяТипОписание
AuthorizationstringAPI-ключ приложения с Bearer перед ним. Пример: Bearer e***s0, где e***s0 замените на API-ключ вашего приложения

Входные параметры

Передайте следующие параметры в теле запроса в JSON-формате. Параметры, отмеченные жирным шрифтом, являются обязательными.

ПараметрТипОписание
campaign_typeenum CampaignTypeтип (канла) рассылки
campaign_iduint64идентификатор рассылки
namestringнаименование рассылки
statusenum CampaignStatusстатус рассылки
date_fromstringдата создания рассылки в формате RFC-3339 / ISO-8601, от которой начинать выборку
date_tostringдата создания рассылки в формате RFC-3339 / ISO-8601, до которой продолжать выборку

CampaignType

ПараметрТипОписание
1enumтекстовые SMS
2enumголосовые SMS
3enumкаскадная рассылка

CampaignStatus

ПараметрТипОписание
1enumчерновик
2enumрассылка остановлена пользователем
3enumрассылка остановлена из-за нехватки баланса
4enumрассылка в процессе выполнения
5enumрассылка завершена

Выходные параметры

ПараметрТипОписание
itemsCampaignItemсписок найденных рассылок

CampaignItem

ПараметрТипОписание
iduint64идентификатор рассылки
namestringнаименование рассылки
scenario_idstringидентификатор сценария
call_list_iduint64идентификатор списка получателей
call_list_totaluint64количество записей в списке получателей
timezonebooleanпараметр учёта часового пояса. По умолчанию False — рассылка отправляется по московскому времени (UTC+3), True — учитывать часовой пояс, указанный в CallList
typeenum CampaignTypeтип рассылки (канал рассылки)
statusenum CampaignStatusстатус рассылки
created_atдата создания рассылки в формате RFC-3339 / ISO-8601
oneof Channelодин из каналов рассылки (текстовое SMS, голосовое SMS или каскадная рассылка)

Channel

ПараметрТипОписание
smsSmsканал рассылки — текстовое SMS
voice_messageVoiceMessageканал рассылки — голосовое SMS
cascadeCascadeкаскадная рассылка (последовательное уведомление абонентов в разных каналах)

Sms

ПараметрТипОписание
propsSmsPropsатрибуты сценария текстового SMS

SmsProps

ПараметрТипОписание
alpha_namestringимя отправителя (альфа-имя), от которого отправляются текстовые SMS
textstringтекст сообщения

VoiceMessage

ПараметрТипОписание
propsVoiceMessagePropsатрибуты сценария голосового SMS

VoiceMessageProps

ПараметрТипОписание
voice_message_idstringидентификатор ресурса голосового SMS
fromstringномер телефона МТС Exolve, с которого отправляются голосовые SMS

Cascade

ПараметрТипОписание
elementsCascadeElementструктура каскадной рассылки. Один элемент — один канал рассылки (текстовое или голосовое SMS)

CascadeElement

ПараметрТипОписание
smsSmsканал рассылки - текстовое SMS
voice_messageVoiceMessageChannelканал рассылки — голосовое SMS
conditionenum Conditionусловие перехода к следующему каналу рассылки

SmsChannel

ПараметрТипОписание
propsSmsPropsатрибуты сценария текстового SMS
ttlstringпериод времени, по истечении которого будет запрошен статус SMS (от 10 до 300 секунд)

VoiceMessageChannel

ПараметрТипОписание
propsVoiceMessagePropsатрибуты сценария голосового SMS

Condition

ПараметрТипОписание
1enumзвонок не принят/сSMSмс не доставлено
2enumзвонок принят/SMS доставлено
3enumв любом случае

Возможные ошибки

КодСтатусПример сообщенияОписание
404Not FoundNot Foundнекорректный URL-адрес запроса
401Unauthorizedinvalid tokenневалидный API-ключ
400Bad Requesttoken is emptyв запросе не передан API-ключ
400Bad Requestcouldn’t parse incoming jwt token: couldn’t parse token: invalid character ‘[character]’ looking for beginning of valueневалидный API-ключ
400Bad Requestinvalid character ‘[character]’ looking for beginning of valueневалидное или пустое значение в одном из полей
400Bad Requestinvalid value for uint64 type: ‘[value]’невалидное или пустое значение в одном из полей с типом uint64
400Bad Requestinvalid character " after object key:value pairв запросе пропущена запятая в одном из параметров

Примеры

Входные параметры:

{
    "date_from" : "2023-12-01T12:40:23.832213Z",
    "date_to" : "2023-12-28T15:40:23.832213Z"
}

Выходные параметры:

{
    "items": [
        // Текстовая SMS рассылка
        {
            "id": "130366147371216896",
            "name": "SMS Campaign",
            "scenario_id": "e1b9ae25-f36c-44b8-a327-ac46d414e180",
            "call_list_id": "130366147266359296",
            "timezone": true,
            "type": "1",
            "status": "1",
            "created_at": "2023-12-26T17:48:31.619796Z",
            "sms": {
                "props": {
                    "alpha_name": "SHOP",
                    "text": "Приходите к нам!"
                }
            }
        },
        // Голосовая SMS рассылка
        {
            "id": "130334219200901120",
            "name": "Voice Message Campaign",
            "scenario_id": "bb33e01b-9ec3-4d44-955c-c4cac2d23971",
            "call_list_id": "130334219041517568",
            "timezone": true,
            "type": "CAMPAIGN_TYPE_VOICE",
            "status": "CAMPAIGN_STATUS_IS_STOP",
            "created_at": "2023-12-26T15:41:39.350391Z",
            "voice_message": {
                "props": {
                    "voice_message_id": "41117356-c9d5-4c94-8c62-68d7d2dac285",
                    "from": "79991112233"
                }
            }
        },
        // Каскадная рассылка
        {
            "id": "130369523110653952",
            "name": "Cascade",
            "scenario_id": "a466b60e-ca5a-4da8-b60c-bc9cb9e6fd8a",
            "call_list_id": "130369523102265344",
            "type": "CAMPAIGN_TYPE_CASCADE",
            "status": "CAMPAIGN_STATUS_IS_RUN",
            "created_at": "2023-12-26T18:01:56.458047Z",
            "cascade": {
                "elements": [
                    {
                        "sms": {
                            "props": {
                                "alpha_name": "Shop",
                                "text": "Скидка 10% на все товары!"
                            },
                            "ttl": "10s"
                        },
                        "condition": "1"
                    },
                    {
                        "voice_message": {
                            "props": {
                                "voice_message_id": "353b86e0-a62c-47d4-9b94-8dba32c922fc",
                                "from": "79998889900"
                            }
                        }
                    }
                ]
            }
        }
    ]
}

Метод GetInfo

Примените этот метод для получения информации об одной рассылке. Для этого выполните POST-запрос с входными параметрами к точке подключения, указанными ниже.

Точка подключения:

POST: https://api.exolve.ru/campaign/v1/GetInfo

Авторизация

Передайте следующие Заголовки HTTP для успешной авторизации.

ИмяТипОписание
AuthorizationstringAPI-ключ приложения с Bearer перед ним. Пример: Bearer e***s0, где e***s0 замените на API-ключ вашего приложения

Входные параметры

Передайте следующие параметры в теле запроса в JSON-формате. Параметры, отмеченные жирным шрифтом, являются обязательными.

ПараметрТипОписание
iduint64идентификатор рассылки

Выходные параметры

ПараметрТипОписание
campaign_infoCampaignInfoинформация о рассылки
scheduleScheduleрасписание рассылки по дням недели

CampaignInfo

ПараметрТипОписание
iduint64идентификатор рассылки
namestringнаименование рассылки
scenario_idstringидентификатор сценария
call_listCallListInfoинформация о списке получателей
event_timestampEventTimestampинформация о дате и времени отправки, приостановки и завершения рассылки в UTC

CallListInfo

ПараметрТипОписание
iduint64идентификатор списка получателей
file_infosContactFileInfoинформация о файле со списком получателей
totaluint64количество контактов в файле
timezonebooleanпараметр учёта часового пояса. По умолчанию False - рассылка отправляется по московскому времени (UTC+3), True - учитывать часовой пояс, указанный в CallList
typeenum CampaignTypeтип рассылки (канал рассылки)
statusenum CampaignStatusстатус рассылки
created_atstringдата создания рассылки в формате RFC-3339 / ISO-8601
oneof Channelодин из каналов рассылки (текстовое SMS, голосовое SMS или каскадная рассылка)

CampaignType

ПараметрТипОписание
1enumтекстовые SMS
2enumголосовые SMS
3enumкаскадная рассылка

CampaignStatus

ПараметрТипОписание
1enumчерновик
2enumрассылка остановлена пользователем
3enumрассылка остановлена из-за нехватки баланса
4enumрассылка в процессе выполнения
5enumрассылка завершена

Channel

ПараметрТипОписание
smsSmsканал рассылки — текстовое SMS
voice_messageVoiceMessageканал рассылки — голосовое SMS
cascadeCascadeкаскадная рассылка (последовательное уведомление абонентов в разных каналах)

Sms

ПараметрТипОписание
propsSmsPropsатрибуты сценария текстового SMS

SmsProps

ПараметрТипОписание
alpha_namestringимя отправителя (альфа-имя), от которого отправляются текстовые SMS
textstringтекст сообщения

VoiceMessage

ПараметрТипОписание
propsVoiceMessagePropsатрибуты сценария голосового SMS

VoiceMessageProps

ПараметрТипОписание
voice_message_idstringидентификатор ресурса голосового SMS
fromstringномер телефона МТС Exolve, с которого отправляются голосовые SMS

Cascade

ПараметрТипОписание
elementsCascadeElementструктура каскадной рассылки. Один элемент — один канал рассылки (текстовое или голосовое SMS)

CascadeElement

ПараметрТипОписание
smsSmsканал рассылки — текстовое SMS
voice_messageVoiceMessageChannelканал рассылки — голосовое SMS
conditionenum Conditionусловие перехода к следующему каналу рассылки

SmsChannel

ПараметрТипОписание
propsSmsPropsатрибуты сценария текстового SMS
ttlstringпериод времени, по истечении которого будет запрошен статус SMS (от 10 до 300 секунд)

VoiceMessageChannel

ПараметрТипОписание
propsVoiceMessagePropsатрибуты сценария голосового SMS

Condition

ПараметрТипОписание
1enumзвонок не принят/SMS не доставлено
2enumзвонок принят/SMS доставлено
3enumв любом случае

ContactFileInfo

ПараметрТипОписание
namestringимя файла
totaluint64количество контактов в файле
created_atstringдата создания файла в формате RFC-3339 / ISO-8601

EventTimestamp

ПараметрТипОписание
start_atgoogle.protobuf.Timestampдата и время старта рассылки в UTC
stop_atgoogle.protobuf.Timestampдата и время приостановки рассылки в UTC
finish_atgoogle.protobuf.Timestampдата и время завершения рассылки в UTC

Schedule

ПараметрТипОписание
start_atCallIntervalDaysнастройка интервалов рассылки по дням недели

CallIntervalDays

ПараметрТипОписание
monCallIntervalинтервал понедельника
tueCallIntervalинтервал вторника
wedCallIntervalинтервал среды
thuCallIntervalинтервал четверга
friCallIntervalинтервал пятницы
satCallIntervalинтервал субботы
sunCallIntervalинтервал воскресенья

CallInterval

ПараметрТипОписание
fromFrom/Toвремя начала рассылки
toFrom/Toвремя завершения рассылки

From/To

ПараметрТипОписание
hoursuint32час интервала
minutesuint32минута интервала
secondsuint32секунда интервала
nanosuint32наносекунда интервала

Возможные ошибки

КодСтатусПример сообщенияОписание
404Not FoundNot Foundнекорректный URL-адрес запроса
401Unauthorizedinvalid tokenневалидный API-ключ
400Bad Requesttoken is emptyв запросе не передан API-ключ
400Bad Requestcouldn’t parse incoming jwt token: couldn’t parse token: invalid character ‘[character]’ looking for beginning of valueневалидный API-ключ
404Not Foundcouldn’t get info from campaign by id = [id]: campaign not foundв приложении не найдена рассылка с указанным ID
400Bad Requestinvalid GetInfoRequest.Id: value must be greater than 0поле ID и его значение отсутствуют в запросе
400Bad Requestinvalid character ‘[character]’ looking for beginning of valueневалидное значение в поле id
400Bad Requestinvalid value for uint64 type: ‘[value]’невалидное или пустое значение в поле id с типом uint64

Примеры

Входные параметры:

{
    "id": 129931120807677952
}

Выходные параметры:

{
    "campaign_info": {
        "id": "129931120807677952",
        "name": "test12356",
        "scenario_id": "5d8eb1f8-0bfa-49a8-9109-e383a5653c42",
        "call_list": {
            "id": "128511757563326464",
            "file_infos": [
                {
                    "name": "contacts.csv",
                    "total": "2",
                    "created_at": "2024-12-21T15:04:37.112Z"
                }
            ],
            "total": "2"
        },
        "type": 3,
        "status": 1,
        "created_at": "2024-12-21T14:59:50.637856Z",
        "cascade_info": {
            "elements": [
                {
                    "voice_message": {
                        "voice_message_id": "366dbec4-c2ab-4a1c-993f-d1d221faec44",
                        "from": "79813340026"
                    },
                    "condition": "1",
                    "step": "1"
                },
                {
                    "sms": {
                        "alpha_name": "test_name",
                        "text": "Test",
                        "ttl": {
                            "seconds": "10",
                            "nanos": 0
                        }
                    },
                    "condition": "",
                    "step": "2"
                }
            ]
        },
         "event_timestamp": {
            "start_at": "2024-12-05T14:02:48.068046975Z",
            "finish_at": "2024-12-05T14:03:20.425123760Z"
        }
    },
    "schedule": {
        "days": {
            "mon": {
                "intervals": [
                    {
                        "from": {
                            "hours": 12,
                            "minutes": 0,
                            "seconds": 0,
                            "nanos": 0
                        },
                        "to": {
                            "hours": 23,
                            "minutes": 30,
                            "seconds": 0,
                            "nanos": 0
                        }
                    }
                ]
            },
        }
    }
}

Метод Update

Примените этот метод для обновления имени и статуса рассылки. Для этого выполните POST-запрос с входными параметрами к точке подключения, указанными ниже.

Точка подключения:

POST: https://api.exolve.ru/campaign/v1/Update

Авторизация

Передайте следующие Заголовки HTTP для успешной авторизации.

ИмяТипОписание
AuthorizationstringAPI-ключ приложения с Bearer перед ним. Пример: Bearer e***s0, где e***s0 замените на API-ключ вашего приложения

Входные параметры

Передайте следующие параметры в теле запроса в JSON-формате. Параметры, отмеченные жирным шрифтом, являются обязательными.

ПараметрТипОписание
iduint64идентификатор рассылки
namestringнаименование рассылки
statusenum CampaignStatusстатус рассылки

CampaignStatus

ПараметрТипОписание
2enumостановить рассылку
4enumначать выполнение рассылки
5enumзавершить рассылку

Примечание

  • Невозможно начать выполнение рассылки при отсутствии списка получателей.
  • Нельзя изменить статус завершённой рассылки.

Выходные параметры

Пустой JSON с 200 OK статусом.

Возможные ошибки

КодСтатусПример сообщенияОписание
404Not FoundNot Foundнекорректный URL-адрес запроса
401Unauthorizedinvalid tokenневалидный API-ключ
400Bad Requesttoken is emptyв запросе не передан API-ключ
400Bad Requestcouldn’t parse incoming jwt token: couldn’t parse token: invalid character ‘[character]’ looking for beginning of valueневалидный API-ключ
404Not Foundcouldn’t get info from campaign by id = [id]: campaign not foundв приложении не найдена рассылка с указанным ID
400Bad Requestinvalid character ‘[character]’ looking for beginning of valueневалидное значение в одном из полей
400Bad Requestinvalid UpdateRequest.Id: value must be greater than 0поле id и его значение отсутствуют в запросе
400Bad Requestinvalid value for uint64 type: ‘[value]’невалидное или пустое значение в поле id с типом uint64
400Bad Requestinvalid character " after object key:value pairв запросе пропущена запятая в одном из параметров

Примеры

Входные параметры:

{
    "id": "129883751852937216",
    "name": "SHOP",
    "status": 2
}

Выходные параметры:

{}

Метод GetHistory

Примените этот метод для просмотра всех коммуникаций в рассылке по заданным параметрам (если параметры не указаны, выводятся все коммуникации в рамках рассылки). Для этого выполните POST-запрос с входными параметрами к точке подключения, указанными ниже.

Точка подключения:

POST: https://api.exolve.ru/campaign/v1/GetHistory

Авторизация

Передайте следующие Заголовки HTTP для успешной авторизации.

ИмяТипОписание
AuthorizationstringAPI-ключ приложения с Bearer перед ним. Пример: Bearer e***s0, где e***s0 замените на API-ключ вашего приложения

Входные параметры

Передайте следующие параметры в теле запроса в JSON-формате. Параметры, отмеченные жирным шрифтом, являются обязательными.

ПараметрТипОписание
campaign_iduint64идентификатор рассылки
idsarray of uint64идентификаторы коммуникаций
tostringномер получателя
operation_idstringидентификатор уведомления (для SMS — message_id, для звонка ещё не реализовано)
date_tostringдата отправки уведомления RFC-3339 / ISO-8601, от которой продолжать выборку
date_fromstringдата отправки уведомления RFC-3339 / ISO-8601, до которой начинать выборку
limituint32лимит выводимых данных
offsetuint32номер строки, с которой начинать выборку (начинается с 0)

Выходные параметры

ПараметрТипОписание
campaign_iduint64идентификатор рассылки
call_list_iduint64идентификатор списка получателей
itemsHistoryItemпараметры коммуникации
limituint32лимит выводимых данных
offsetuint32номер строки, с которой начинается выборка (начинается с 0)
totaluint64количество коммуникаций

HistoryItem

ПараметрТипОписание
idstringидентификатор коммуникации
tostringномер получателя
fromstringномер/имя получателя
timezoneuint32часовой пояс получателя (по умолчанию 3 — UTC+3)
operation_idstringидентификатор уведомления (для SMS — message_id, для звонка ещё не реализовано)
datestringдата отправки уведомления
statusenum CallListStatusстатус коммуникации

CallListStatus

ПараметрТипОписание
1enumчерновик
2enumвыполняется
3enumостановлена пользователем
4enumв очереди
5enumначата
6enumзавершено
7enumнеуспешно
8enumнедостаточно средств для отправки уведомления
10enumотменена пользователем

Примеры

Входные параметры:

{
    "campaign_id": 129886921253588992
}

Выходные параметры:

{
    "campaign_id": "129886921253588992",
    "call_list_id": "129886921245200384",
    "items": [
        {
            "id": "129928904844120064",
            "to": "79991112233",
            "from": "Exolve",
            "timezone": 3,
            "operation_id": "603251350989474631",
            "date": "2026-01-22T15:23:55.356227Z",
            "status": "2"
        },
        {
            "id": "129928904844120065",
            "to": "79995556677",
            "timezone": 6,
            "operation_id": "603251350989474632",
            "date": "2026-01-22T15:27:33.356227Z",
            "status": "6"
        }
    ],
    "limit": 3000,
    "total": "2"
}

Возможные ошибки

КодСтатусПример сообщенияОписание
400Bad Requesttoken is emptyв запросе не передан API-ключ
400Bad Requestcouldn’t parse incoming jwt token: couldn’t parse token: invalid character ‘[character]’ looking for beginning of valueневалидный API-ключ
404Not Foundcouldn’t get info from campaign by id = [id]: campaign not foundв приложении не найдена рассылка с указанным ID
400Bad Requestinvalid GetHistoryRequest.CampaignId: value must be greater than 0поле campaign_id и его значение отсутствуют в запросе
400Bad Requestinvalid character ‘[character]’ looking for beginning of valueневалидное значение в поле campaign_id
400Bad Requestinvalid value for uint64 type: ‘[value]’невалидное или пустое значение в поле campaign_id с типом uint64
401Unauthorizedinvalid tokenневалидный API-ключ
404Not FoundNot Foundнекорректный URL-адрес запроса

Метод DownloadFileTemplate

Примените этот метод для получения шаблона файла со списком контактов. Для этого выполните POST-запрос с входными параметрами к точке подключения, указанными ниже.

Точка подключения:

POST: https://api.exolve.ru/campaign/v1/DownloadFileTemplate

Авторизация

Передайте следующие Заголовки HTTP для успешной авторизации.

ИмяТипОписание
AuthorizationstringAPI-ключ приложения с Bearer перед ним. Пример: Bearer e***s0, где e***s0 замените на API-ключ вашего приложения

Входные параметры

Пустой JSON.

Выходные параметры

ПараметрТипОписание
fileFileфайл с шаблоном для списка контактов

File

ПараметрТипОписание
namestringназвание шаблона
mime_typestringтип объекта для браузера
contentbytesшаблон файла в формате base64 с указанием обязательных заголовков

Возможные ошибки

КодСтатусПример сообщенияОписание
404Not FoundNot Foundнекорректный URL-адрес запроса
401Unauthorizedinvalid tokenневалидный API-ключ
400Bad Requesttoken is emptyв запросе не передан API-ключ
400Bad Requestcouldn’t parse incoming jwt token: couldn’t parse token: invalid character ‘[character]’ looking for beginning of valueневалидный API-ключ

Примеры

Входные параметры:

{}

Выходные параметры:

{
    "file": {
        "name": "template.csv",
        "mime_type": "text/csv",
        "content": "bnVtYmVyO3RpbWUgem9uZQo="
    }
}

Метод UploadContactFile

Примените этот метод для загрузки файла с контактами для рассылки. Для этого выполните POST запрос с входными параметрами к точке подключения, указанными ниже.

Точка подключения:

POST: https://api.exolve.ru/campaign/v1/UploadContactFile

Авторизация

Передайте следующие Заголовки HTTP для успешной авторизации.

ИмяТипОписание
AuthorizationstringAPI-ключ приложения с Bearer перед ним. Пример: Bearer e***s0, где e***s0 замените на API-ключ вашего приложения

Входные параметры

Передайте следующие параметры в теле запроса в JSON формате. Параметры, отмеченные жирным шрифтом, являются обязательными.

ПараметрТипОписание
campaign_iduint64идентификатор рассылки
fileFileфайл с контактами

File

ПараметрТипОписание
namestringназвание файла
mime_typestringтип объекта для браузера (text/csv, text/x-csv, text/plain, application/csv, application/x-csv)
contentbytesсписок контактов в формате base64

Выходные параметры

ПараметрТипОписание
file_iduint64идентификатор загруженного файла

Возможные ошибки

КодСтатусПример сообщенияОписание
404Not FoundNot Foundнекорректный URL запроса
401Unauthorizedinvalid tokenневалидный API-ключ
400Bad Requesttoken is emptyв запросе не передан API-ключ
400Bad Requestcouldn’t parse incoming jwt token: couldn’t parse token: invalid character ‘[character]’ looking for beginning of valueневалидный API-ключ
400Bad Requestcouldn’t upload contact file: format file not csvформат загружаемого файла не является .csv
400Bad Requestcouldn’t upload info contact file: empty campaign idотсутствует поле campaign_id
400Bad Requestcouldn’t upload info contact file: empty file contentотсутствует поле content
400Bad Requestinvalid character ‘[character]’ looking for beginning of valueневалидное значение в одном из полей
400Bad Requestinvalid value for uint64 type: ‘[value]’невалидное или пустое значение в поле id с типом uint64
400Bad Requestinvalid character " after object key:value pairв запросе пропущена запятая в одном из параметров

Примеры

Входные параметры:

{
    "campaign_id": "12345",
    "file": {
        "content": "bnVtYmVyO3RpbWUgem9uZQ0KNzk5OTExMTIyMzM7VVRDKzINCjc5OTk0NDQ1NTY2O1VUQys1",
        "mime_type": "text/csv",
        "name": "contacts.csv"
    }
}

Выходные параметры:

{
    "file_id": "119362165802627072"
}

Метод GetFileInfo

Примените этот метод для получения информации о загруженном файле со списком контактов. Для этого выполните POST-запрос с входными параметрами к точке подключения, указанными ниже.

Точка подключения:

POST: https://api.exolve.ru/campaign/v1/GetFileInfo

Авторизация

Передайте следующие Заголовки HTTP для успешной авторизации.

ИмяТипОписание
AuthorizationstringAPI-ключ приложения с Bearer перед ним. Пример: Bearer e***s0, где e***s0 замените на API-ключ вашего приложения

Входные параметры

Передайте следующие параметры в теле запроса в JSON-формате. Параметры, отмеченные жирным шрифтом, являются обязательными.

ПараметрТипОписание
campaign_iduint64идентификатор рассылки
file_iduint64идентификатор загруженного файла

Выходные параметры

ПараметрТипОписание
iduint64идентификатор загруженного файла
namestringнаименование загруженного файла
statusenum FileStatusстатус загрузки файла
amount_contactsuint64количество загруженных контактов (значение передаётся только в статусе FILE_STATUS_VERIFIED)

FileStatus

ПараметрТипОписание
1enumидёт загрузка файла
2enumфайл загружен
3enumфайл в стадии валидации
4enumошибка валидации (ошибки в полях number/timezone, доступно скачивание файла с ошибками)
5enumошибка загрузки файла (неверный формат файла, некорректные заголовки)
6enumфайл загружен, валидация завершена
7enumфайл удалён

Возможные ошибки

КодСтатусПример сообщенияОписание
404Not FoundNot Foundнекорректный URL-адрес запроса
401Unauthorizedinvalid tokenневалидный API-ключ
400Bad Requesttoken is emptyв запросе не передан API-ключ
400Bad Requestcouldn’t parse incoming jwt token: couldn’t parse token: invalid character ‘[character]’ looking for beginning of valueневалидный API-ключ
400Bad Requestinvalid GetFileInfoRequest.CampaignId: value must be greater than 0поле campaign_id и его значение отсутствуют в запросе
400Bad Requestinvalid GetFileInfoRequest.FileId: value must be greater than 0поле file_id и его значение отсутствуют в запросе
400Bad Requestinvalid character ‘[character]’ looking for beginning of valueневалидное или пустое значение в одном из полей
400Bad Requestinvalid value for uint64 type: ‘[value]’невалидное или пустое значение в одном из полей с типом uint64
400Bad Requestinvalid character " after object key:value pairв запросе пропущена запятая в одном из параметров

Примеры

Входные параметры:

{
    "campaign_id": 129931120807677952,
    "file_id": 130798251019812864
}

Выходные параметры:

{
    "id": "130798251019812864",
    "name": "contacts.csv",
    "status": "3",
    "amount_contacts": "2"
}

Метод DownloadFileError

Примените этот метод для скачивания файла с ошибками валидации. Для этого выполните POST запрос с входными параметрами к точке подключения, указанными ниже.

Точка подключения:

POST: https://api.exolve.ru/campaign/v1/DownloadFileError

Авторизация

Передайте следующие Заголовки HTTP для успешной авторизации.

ИмяТипОписание
AuthorizationstringAPI-ключ приложения с Bearer перед ним. Пример: Bearer e***s0, где e***s0 замените на API-ключ вашего приложения

Входные параметры

Передайте следующие параметры в теле запроса в JSON формате. Параметры, отмеченные жирным шрифтом, являются обязательными.

ПараметрТипОписание
campaign_iduint64идентификатор рассылки
file_iduint64идентификатор загруженного файла

Выходные параметры

ПараметрТипОписание
fileFileфайл с результатами валидации

File

ПараметрТипОписание
namestringназвание файла
mime_typestringтип объекта для браузера
contentbytesсписок контактов и ошибок валидации в формате base64

Возможные ошибки

КодСтатусПример сообщенияОписание
404Not FoundNot Foundнекорректный URL запроса
401Unauthorizedinvalid tokenневалидный API-ключ
400Bad Requesttoken is emptyв запросе не передан API-ключ
400Bad Requestcouldn’t parse incoming jwt token: couldn’t parse token: invalid character ‘[character]’ looking for beginning of valueневалидный API-ключ
404Not Foundfile not foundфайл с указанным ID в поле file_id не найден
403Forbiddenpermission deniedданные введены в неверном формате
400Bad Requestinvalid DownloadFileErrorRequest.CampaignId: value must be greater than 0поле campaign_id и его значение отсутствуют в запросе
400Bad Requestinvalid DownloadFileErrorRequest.FileId: value must be greater than 0поле file_id и его значение отсутствуют в запросе
400Bad Requestinvalid character ‘[character]’ looking for beginning of valueневалидное или пустое значение в одном из полей
400Bad Requestinvalid value for uint64 type: ‘[value]’невалидное или пустое значение в одном из полей с типом uint64
400Bad Requestinvalid character " after object key:value pairв запросе пропущена запятая в одном из параметров

Примеры

Входные параметры:

{
    "campaign_id": "12345",
    "file_id": "119362165802627072"
}

Выходные параметры:

{
    "file": {
        "name": "report_contacts.csv",
        "mime_type": "text/csv",
        "content": "bnVtYmVyO3RpbWUgem9uZTtlcnJvciAobnVtYmVyKQo3OTEzMTIwMjEyMjs7Cjc5MTMxMjAyMTIyO1VUQysyO2R1cGxpY2F0ZQo3OTA1MTIzNDU2NztVVEMrNTsK"
    }
}

Метод DeleteFile

Примените этот метод для удаления файла со списком контактов. Для этого выполните POST запрос с входными параметрами к точке подключения, указанными ниже.

Точка подключения:

POST: https://api.exolve.ru/campaign/v1/DeleteFile

Авторизация

Передайте следующие Заголовки HTTP для успешной авторизации.

ИмяТипОписание
AuthorizationstringAPI-ключ приложения с Bearer перед ним. Пример: Bearer e***s0, где e***s0 замените на API-ключ вашего приложения

Входные параметры

Передайте следующие параметры в теле запроса в JSON формате. Параметры, отмеченные жирным шрифтом, являются обязательными.

ПараметрТипОписание
campaign_iduint64идентификатор рассылки
file_iduint64идентификатор загруженного файла

Выходные параметры

Пустой JSON с 200 OK статусом.

Возможные ошибки

КодСтатусПример сообщенияОписание
404Not FoundNot Foundнекорректный URL запроса
401Unauthorizedinvalid tokenневалидный API-ключ
400Bad Requesttoken is emptyв запросе не передан API-ключ
400Bad Requestcouldn’t parse incoming jwt token: couldn’t parse token: invalid character ‘[character]’ looking for beginning of valueневалидный API-ключ
403Forbiddenpermission deniedданные введены в неверном формате
400Bad Requestcouldn’t delete contact file: the file does not belong to the campaignфайл со списком контактов не принадлежит рассылки
400Bad Requestinvalid DeleteFileRequest.CampaignId: value must be greater than 0поле campaign_id и его значение отсутствуют в запросе
400Bad Requestinvalid DeleteFileRequest.FileId: value must be greater than 0поле file_id и его значение отсутствуют в запросе
400Bad Requestinvalid character ‘[character]’ looking for beginning of valueневалидное или пустое значение в одном из полей
400Bad Requestinvalid value for uint64 type: ‘[value]’невалидное или пустое значение в одном из полей с типом uint64
400Bad Requestinvalid character " after object key:value pairв запросе пропущена запятая в одном из параметров

Примеры

Входные параметры:

{
    "campaign_id": "12345",
    "file_id": "119362165802627072"
}

Выходные параметры:

{}

Метод CreateCallListFromFile

Примените этот метод для создания списка контактов из провалидированного файла. Для этого выполните POST-запрос с входными параметрами к точке подключения, указанными ниже.

Точка подключения:

POST: https://api.exolve.ru/campaign/v1/CreateCallListFromFile

Авторизация

Передайте следующие Заголовки HTTP для успешной авторизации.

ИмяТипОписание
AuthorizationstringAPI-ключ приложения с Bearer перед ним. Пример: Bearer e***s0, где e***s0 замените на API-ключ вашего приложения

Входные параметры

Передайте следующие параметры в теле запроса в JSON-формате. Параметры, отмеченные жирным шрифтом, являются обязательными.

ПараметрТипОписание
campaign_iduint64идентификатор рассылки
file_iduint64идентификатор загруженного файла

Выходные параметры

ПараметрТипОписание
call_list_iduint64идентификатор списка контактов

Возможные ошибки

КодСтатусПример сообщенияОписание
404Not FoundNot Foundнекорректный URL-адрес запроса
401Unauthorizedinvalid tokenневалидный API-ключ
400Bad Requesttoken is emptyв запросе не передан API-ключ
400Bad Requestcouldn’t parse incoming jwt token: couldn’t parse token: invalid character ‘[character]’ looking for beginning of valueневалидный API-ключ
404Not Foundfile not foundфайл с указанным ID в поле file_id не найден
400Bad Requestinvalid CreateCallListFromFileRequest.CampaignId: value must be greater than 0поле campaign_id и его значение отсутствуют в запросе
400Bad Requestinvalid CreateCallListFromFileRequest.FileId: value must be greater than 0поле file_id и его значение отсутствуют в запросе
400Bad Requestinvalid character ‘[character]’ looking for beginning of valueневалидное или пустое значение в одном из полей
400Bad Requestinvalid value for uint64 type: ‘[value]’невалидное или пустое значение в одном из полей с типом uint64
400Bad Requestinvalid character " after object key:value pairв запросе пропущена запятая в одном из параметров

Примеры

Входные параметры:

{
    "campaign_id": 128462752095809536,
    "file_id": 128466384803266560
}

Выходные параметры:

{
    "call_list_id": "128462752087420928"
}

Метод GetCallList

Примените этот метод для получения информации о списке контактов. Для этого выполните POST-запрос с входными параметрами к точке подключения, указанными ниже.

Точка подключения:

POST: https://api.exolve.ru/campaign/v1/GetCallList

Авторизация

Передайте следующие Заголовки HTTP для успешной авторизации.

ИмяТипОписание
AuthorizationstringAPI-ключ приложения с Bearer перед ним. Пример: Bearer e***s0, где e***s0 замените на API-ключ вашего приложения

Входные параметры

Передайте следующие параметры в теле запроса в JSON-формате. Параметры, отмеченные жирным шрифтом, являются обязательными.

ПараметрТипОписание
campaign_iduint64идентификатор рассылки
call_list_iduint64идентификатор списка получателей
limituint32лимит выводимых данных (3000 по умолчанию)
offsetuint32номер строки, с которой начинается выборка (начинается с 0)

Выходные параметры

ПараметрТипОписание
campaign_iduint64идентификатор рассылки
campaign_idstringнаименование рассылки
call_list_iduint64идентификатор списка получателей
call_list_totaluint64количество записей в списке получателей
file_namestringимя файла со списком контактов
file_upload_atstringдата загрузки файла в формате RFC-3339 / ISO-8601
call_list_itemsCallListItemинформация о получателях

CallListItem

ПараметрТипОписание
tostringномер получателя
timezoneuint32часовой пояс получателя
statusenum CallListStatusстатус списка контактов
created_atstringдата создания списка контактов
updated_atstringдата обновления списка контактов

CallListStatus

ПараметрТипОписание
1enumчерновик
2enumв процессе выполнения
3enumостановлена пользователем
4enumв очереди
5enumначата
6enumзакончена
7enumнеуспешна
8enumнедостаточно средств для выполнения коммуникации
9enumошибка отправки на сервисе
10enumотменена пользователем

Возможные ошибки

КодСтатусПример сообщенияОписание
404Not FoundNot Foundнекорректный URL-адрес запроса
401Unauthorizedinvalid tokenневалидный API-ключ
400Bad Requesttoken is emptyв запросе не передан API-ключ
400Bad Requestcouldn’t parse incoming jwt token: couldn’t parse token: invalid character ‘[character]’ looking for beginning of valueневалидный API-ключ
404Not Foundcouldn’t get campaign by id = [campaign_id], app = ‘[app_id]’ : campaign not foundрассылка по заданным параметрам не найдена
400Bad Requestinvalid GetCallListRequest.CampaignId: value must be greater than 0поле campaign_id и его значение отсутствуют в запросе
400Bad Requestinvalid GetCallListRequest.CallListId: value must be greater than 0поле call_list_id и его значение отсутствуют в запросе
400Bad Requestinvalid character ‘[character]’ looking for beginning of valueневалидное или пустое значение в одном из полей
400Bad Requestinvalid value for uint64 type: ‘[value]’невалидное или пустое значение в одном из полей с типом uint64
400Bad Requestinvalid character " after object key:value pairв запросе пропущена запятая в одном из параметров

Примеры

Входные параметры:

{
    "campaign_id": 128484451264724992,
    "call_list_id": 130334219041517568,
    "limit":10
}

Выходные параметры:

{
    "campaign_id": "130334219200901120",
    "campaign_name": "test",
    "call_list_id": "130334219041517568",
    "call_list_total": "2",
    "file_name": "contacts.csv",
    "file_upload_at": "2023-12-28T11:25:38.428Z",
    "call_list_items": [
        {
            "to": "79991112233",
            "timezone": 2,
            "status": "1",
            "created_at": "2023-12-28T11:25:49.428275Z",
            "updated_at": "1970-01-01T00:00:00Z"
        },
        {
            "to": "79994445566",
            "timezone": 5,
            "status": "1",
            "created_at": "2023-12-28T11:25:49.428337Z",
            "updated_at": "1970-01-01T00:00:00Z"
        }
    ],
    "limit": 10
}