Разработчикам

POST/tcr/v2/campaignBuilder

Зарегистрировать кампанию 10DLC

Отправьте квалифицированную кампанию и различайте регистрацию в реестре, активацию у оператора и готовность к отправке.

На этой странице
  1. Квалифицируйте бренд перед регистрацией его кампании
  2. Держите песочницу и промышленную среду отдельно
  3. Отправьте JSON кампании
  4. Поля кампании и условные требования
  5. Безопасно повторите тот же задуманный запрос
  6. Идентификатор кампании — это не окончательная настройка отправки
  7. Платы за промышленные кампании
  8. Обрабатывайте ошибки валидации и частичные сбои

Квалифицируйте бренд перед регистрацией его кампании

Кампания 10DLC описывает сообщения, которые зарегистрированный бизнес намерен отправлять, как получатели дают согласие, а также как они могут получить помощь или остановить сообщения. Этот API создает запись в реестре; завершение промышленной активации у оператора — это отдельный шаг настройки учетной записи. Используйте собственный бренд из регистрации бренда, затем загрузите его доступные варианты использования и выбранного варианта использования текущие требования.

Используйте текущий результат квалификации, чтобы выбрать суб-варианты использования, допустимые идентификаторы сетей, образцы сообщений и декларации подписки/отписки/помощи. Требования могут различаться в зависимости от бренда и сети. Не отправляйте идентификаторы из примера и не копируйте его описание согласия для бизнеса с другим процессом.

Держите песочницу и промышленную среду отдельно

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

Создание промышленной кампании платное и не делает номер автоматически готовым к отправке. Держите среду кампании согласованной с ее брендом и просмотрите плату и применимые условия перед созданием рабочей кампании.

Отправьте JSON кампании

Подготовьте campaign.json с вашими квалифицированными значениями. R000000 означает отсутствие реселлера; используйте его только тогда, когда это задуманная конфигурация. Для обычной конфигурации реселлера MultiTEL получите разрешенный идентификатор реселлера MultiTEL LLC из коллекции реселлеров вашей учетной записи или из потока подготовки портала, а не прописывайте жестко чужой идентификатор.

curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
  'https://api.multitel.net/tcr/v2/reseller?companyName=MultiTEL%20LLC&recordsPerPage=500'

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

{
  "brandId": "B123ABC",
  "channelId": "10DLC",
  "usecase": "TRIAL",
  "subUsecases": [],
  "resellerId": "R000000",
  "description": "Trial account notices requested by users of the example application.",
  "messageFlow": "Test users explicitly select an unchecked consent box before requesting these trial notices.",
  "sample1": "Example application: your requested account notice is available. Reply STOP to stop notices.",
  "subscriberOptin": true,
  "optinKeywords": "START",
  "optinMessage": "You are subscribed to the example application's requested account notices.",
  "subscriberOptout": true,
  "optoutKeywords": "STOP",
  "optoutMessage": "You will no longer receive the example application's account notices.",
  "subscriberHelp": true,
  "helpKeywords": "HELP",
  "helpMessage": "For help with example account notices, contact support@example.invalid.",
  "embeddedLink": false,
  "embeddedPhone": false,
  "numberPool": false,
  "ageGated": false,
  "directLending": false,
  "termsAndConditions": true,
  "autoRenewal": false,
  "mnoIds": [],
  "referenceId": "your-trial-reference"
}

Установите termsAndConditions в значение true только после того, как уполномоченное лицо просмотрело и приняло применимые условия. Пример не является согласием от вашего имени. Для флагов используйте булевы значения JSON, а не строки в кавычках.

curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
  --header 'Content-Type: application/json' \
  --header "Idempotency-Key: $IDEMPOTENCY_KEY" \
  --data-binary @campaign.json \
  'https://api.multitel.net/tcr/v2/campaignBuilder'

Поля кампании и условные требования

Запрос кампании 10DLC
ПоляЧто указать
brandId, channelId, usecaseВаш собственный бренд, канал 10DLC и допустимый текущий код варианта использования. Используйте коды из квалификации, а не переведенные названия.
subUsecasesМассив допустимых кодов суб-вариантов использования. Соблюдайте минимальное и максимальное количество, определенные выбранной квалификацией.
resellerIdРазрешенный идентификатор реселлера. Маршрут, принадлежащий учетной записи, принимает собственных реселлеров, его настроенного общего реселлера или намеренное значение без реселлера. Несвязанный реселлер отклоняется.
description, messageFlowОпишите фактическую цель и способ сбора согласия. Каждое поле должно содержать 40–4096 символов. Укажите реальное действие пользователя, форму или процесс; не выдумывайте согласие, которое ваше приложение не собирает.
sample1 … sample5Репрезентативные сообщения, обычно 20–1024 символа каждое. Портал требует как минимум одно; допустимые сети могут требовать больше. Укажите количество, требуемое текущей квалификацией.
subscriberOptin, subscriberOptout, subscriberHelpЗадекларируйте поддерживаемые потоки получателей, используя эти точные имена полей. Когда поток включен, укажите его поля ключевых слов и сообщений. Требования сетей могут делать отдельные потоки обязательными.
optinKeywords, optoutKeywords, helpKeywordsФактические распознаваемые ключевые слова, до 255 символов. Они должны соответствовать поведению принимающего приложения.
optinMessage, optoutMessage, helpMessageСоответствующие сообщения. Текущие опубликованные правила полей определяют 20–1024 символа. Укажите реальное поведение поддержки и отписки.
embeddedLink, embeddedPhone, embeddedLinkSampleЧестно задекларируйте встроенные ссылки или номера телефонов. Даже сеть, соответствующая остальным требованиям квалификации, может их запретить. Образец ссылки допускает до 255 символов.
mnoIdsНеобязательный массив допустимых числовых идентификаторов сетей из квалификации. Не предполагайте, что каждая сеть поддерживает выбранный вариант использования.
numberPool, ageGated, directLendingПрименимые характеристики кампании как булевы значения JSON. Выбирайте их в соответствии с фактическим сервисом.
privacyPolicyLink, termsAndConditionsLinkВаши соответствующие публичные URL-адреса политики и условий, когда применимо, до 2048 символов каждый. Они должны описывать фактический сервис обмена сообщениями.
termsAndConditionsЯвное принятие применимых условий кампании. Портал требует true, а его мастер также собирает текущие индивидуальные подтверждения.
autoRenewalПродлевается ли кампания. По умолчанию — true. Отключение продления не снимает минимальное обязательство, уже связанное с промышленной кампанией.
referenceId, tagВаша ссылка на кампанию, до 50 символов, и необязательные теги. referenceId — это не заголовок Idempotency-Key.

Опубликованная схема содержит некоторые несогласованности в использовании заглавных букв в описательных таблицах. Текущий запрос портала использует subscriberOptin и subscriberOptout, как показано выше. Сохраняйте именно такой регистр. Это руководство охватывает рабочий процесс 10DLC для арендаторов; не делайте вывода, что обязательные поля или шаги активации другого канала такие же.

Безопасно повторите тот же задуманный запрос

Используйте один Idempotency-Key для этого задуманного создания. Ключ — это 1–128 печатных символов ASCII без пробелов, привязанный к учетной записи владельца. При повторной попытке сохраняйте без изменений метод HTTP, путь, строку запроса и точные байты тела. Переформатированный файл JSON конфликтует, даже если его значения эквивалентны.

Выполняющийся дубликат может вернуть HTTP 409 с Retry-After; выполненные запросы могут повторно воспроизвести свой сохраненный ответ. Кешированная ошибка не доказывает, что реестр ничего не создал. Сохраните campaignId, requestId и любые корреляционные заголовки, проверьте существующую кампанию и проверьте фактическое состояние и устраните расхождения после частичного сбоя, прежде чем рассматривать новый ключ.

Идентификатор кампании — это не окончательная настройка отправки

Ответ использует статус HTTP и прямой JSON. При успешном создании сохраните campaignId и прочитайте его текущее состояние:

curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
  "https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"

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

Используйте интегрированный промышленный рабочий процесс создания портала, когда вам нужна объединенная последовательность регистрации, предоставления доступа и загрузки у оператора. Для промышленной кампании, уже созданной напрямую этим API, сохраните ее идентификатор кампании и через поддержку проверьте фактическое состояние настройки оператора учетной записи и устраните расхождения. Текущий клиентский интерфейс не предоставляет общей кнопки продолжения для каждой напрямую созданной промышленной кампании. Не создавайте другую регистрацию, чтобы повторить ее активацию. Убедитесь, что кампания активна и настройка оператора завершена, прежде чем назначать номер для отправки. Номер также должен принадлежать вам, быть активным и поддерживать SMS. Создание кампании не отправляет сообщения.

Платы за промышленные кампании

Текущие настроенные ежемесячные платы за кампании
Вариант использованияЕжемесячная плата
LOW_VOLUME, UCAAS_LOW$1.67
SOLE_PROPRIETOR$2.23
CHARITY$3.34
EMERGENCY$5.56
AGENTS_FRANCHISES$33.34
Другие настроенные резервные варианты использования$11.12

Эти розничные суммы были проверены по текущей конфигурации портала по состоянию на 24 октября 2026 года. Подтвердите текущий квалифицированный вариант использования и отображаемую цену перед промышленной отправкой. monthlyFee в ответе квалификации реестра не является автоматически вашей розничной ценой MultiTEL.

Текущий портал указывает трехмесячное минимальное обязательство для неполитических промышленных кампаний. Просмотрите применимые условия и выбор продления перед подтверждением. Регистрация, аренда номера, дополнительная проверка и использование сообщений — это отдельные платы. Успешный ответ о создании сам по себе не доказывает, что каждый шаг выставления счетов или активации у оператора завершен.

Обрабатывайте ошибки валидации и частичные сбои

Читайте HTTP status и возвращенный JSON. Ошибки валидации могут быть массивами объектов code/description; локальные сбои вместо этого могут быть объектами с message, status и, для некоторых ошибок обработки, requestId.

Сбои кампаний
Результат HTTPСледующее действие
400Исправьте конкретные поля или ключ идемпотентности. Перечитайте текущую квалификацию, требуемое количество образцов и требования к потокам получателей.
401, 403 или 404Проверьте учетные данные API и разрешенный исходный IP, затем владение брендом/реселлером и разрешения. Не используйте идентификаторы из другой учетной записи.
402Просмотрите финансирование промышленной среды и разрешение на покупку, прежде чем повторять то же задуманное создание.
409Различайте повторное воспроизведение выполняющегося запроса и измененный запрос с тем же ключом. Сохраняйте существующую кампанию и детали запроса при проверке фактического состояния и устранении расхождений.
429 или ограничитель недоступенСоблюдайте Retry-After, когда он присутствует, и сохраняйте исходный ключ и точный запрос.
500 или 502Создание уже могло произойти. Сохраните любые campaignId и requestId, проверьте существующую кампанию и возобновите ее активацию или проверьте ее фактическое состояние и устраните расхождения, а не создавайте дубликат.