Développeurs

POST/tcr/v2/campaignBuilder

Enregistrer une campagne 10DLC

Soumettre une campagne qualifiée et distinguer l'enregistrement au registre de l'activation auprès de l'opérateur et de l'état prêt à envoyer.

Sur cette page
  1. Qualifiez une marque avant d'enregistrer sa campagne
  2. Gardez le sandbox et la production séparés
  3. Soumettre le JSON de campagne
  4. Champs de campagne et exigences conditionnelles
  5. Réessayez la même requête prévue en toute sécurité
  6. Un ID de campagne n'est pas la configuration d'envoi finale
  7. Frais de campagne en production
  8. Gérer les échecs de validation et partiels

Qualifiez une marque avant d'enregistrer sa campagne

Une campagne 10DLC décrit les messages qu'une entreprise enregistrée prévoit d'envoyer, la manière dont les destinataires consentent, et comment ils peuvent obtenir de l'aide ou arrêter les messages. Cette API crée l'enregistrement du registre ; l'activation complète de l'opérateur en production est une étape distincte de configuration du compte. Utilisez une marque détenue depuis enregistrement de marque, puis chargez ses cas d'usage disponibles et, pour le cas d'usage sélectionné, les exigences actuelles.

Utilisez le résultat actuel de qualification pour choisir les sous-cas d'usage, les ID de réseau éligibles, les exemples de messages et les déclarations d'opt-in/opt-out/help. Les exigences peuvent varier selon la marque et le réseau. Ne soumettez pas les identifiants de l'exemple et ne copiez pas sa description du consentement pour une entreprise dont le processus est différent.

Gardez le sandbox et la production séparés

Pour un exercice en sandbox, utilisez votre propre marque fictive et un cas d'usage actuel pour lequel elle est qualifiée. Utilisez TRIAL uniquement lorsqu'il est proposé par cette qualification. Le portail vérifie que la marque sélectionnée et l'environnement de campagne concordent. Une requête API directe n'exécute pas à votre place la validation complète de l'assistant du portail, préservez donc cette séparation dans votre intégration.

La création d'une campagne en production est facturable et ne rend pas automatiquement un numéro prêt à envoyer. Gardez l'environnement de campagne cohérent avec sa marque, et vérifiez les frais et les conditions applicables avant de créer une campagne réelle.

Soumettre le JSON de campagne

Préparez campaign.json avec vos valeurs qualifiées. R000000 signifie aucun revendeur ; utilisez-le uniquement lorsque c'est la configuration prévue. Pour la configuration normale de revendeur MultiTEL, obtenez l'identifiant de revendeur MultiTEL LLC autorisé depuis la collection de revendeurs de votre compte ou le flux de préparation du portail plutôt que de coder en dur l'identifiant d'un tiers.

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

Le JSON suivant illustre une campagne d'essai pour une marque fictive détenue. Remplacez la marque, le cas d'usage, le revendeur et le texte de consentement par les valeurs qui sont réellement qualifiées pour votre test.

{
  "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"
}

Définissez termsAndConditions sur true uniquement après que la personne autorisée a examiné et accepté les conditions applicables. L'exemple ne vaut pas consentement de votre part. Utilisez des booléens JSON pour les indicateurs, pas des chaînes entre guillemets.

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'

Champs de campagne et exigences conditionnelles

Demande de campagne 10DLC
ChampsÉléments à fournir
brandId, channelId, usecaseVotre marque détenue, le canal 10DLC et un code de cas d'usage actuel éligible. Utilisez les codes issus de la qualification, pas des libellés traduits.
subUsecasesUn tableau de codes de sous-cas d'usage éligibles. Respectez les nombres minimal et maximal de la qualification sélectionnée.
resellerIdUn identifiant de revendeur autorisé. La route détenue par le compte accepte les revendeurs détenus, son revendeur partagé configuré ou la valeur volontaire d'absence de revendeur. Un revendeur non lié est rejeté.
description, messageFlowDécrivez l'objectif réel et la manière dont le consentement est recueilli. Chacun doit contenir 40–4096 caractères. Indiquez l'action, le formulaire ou le processus réel de l'utilisateur ; n'inventez pas un consentement que votre application ne recueille pas.
sample1 … sample5Messages représentatifs, normalement 20–1024 caractères chacun. Le portail en exige au moins un ; les réseaux éligibles peuvent en exiger davantage. Fournissez le nombre requis par la qualification actuelle.
subscriberOptin, subscriberOptout, subscriberHelpDéclarez les flux destinataires pris en charge en utilisant ces noms de champ exacts. Lorsqu'un flux est activé, fournissez ses champs de mot-clé et de message. Les exigences des réseaux peuvent rendre certains flux obligatoires.
optinKeywords, optoutKeywords, helpKeywordsLes mots-clés réellement reconnus, jusqu'à 255 caractères. Ils doivent correspondre au comportement de l'application réceptrice.
optinMessage, optoutMessage, helpMessageLes messages correspondants. Les règles de champ publiées actuelles spécifient 20–1024 caractères. Incluez le comportement réel d'assistance et de désinscription.
embeddedLink, embeddedPhone, embeddedLinkSampleDéclarez honnêtement les liens ou numéros de téléphone intégrés. Un réseau par ailleurs qualifié peut les interdire. Un exemple de lien autorise jusqu'à 255 caractères.
mnoIdsUn tableau facultatif d'ID de réseau numériques éligibles issus de la qualification. Ne supposez pas que chaque réseau prend en charge le cas d'usage sélectionné.
numberPool, ageGated, directLendingCaractéristiques de campagne applicables sous forme de booléens JSON. Choisissez-les en fonction du service réel.
privacyPolicyLink, termsAndConditionsLinkVos URL publiques pertinentes de politique et de conditions, le cas échéant, jusqu'à 2048 caractères chacune. Elles doivent décrire le service de messagerie réel.
termsAndConditionsAcceptation explicite des conditions de campagne applicables. Le portail exige true et son assistant recueille également les confirmations individuelles actuelles.
autoRenewalIndique si la campagne se renouvelle. La valeur par défaut est true. La désactivation du renouvellement ne supprime pas un engagement minimal déjà associé à une campagne en production.
referenceId, tagVotre référence de campagne, jusqu'à 50 caractères, et des étiquettes facultatives. referenceId n'est pas l'en-tête Idempotency-Key.

Le schéma publié contient des incohérences de casse dans les tableaux descriptifs. La requête actuelle du portail utilise subscriberOptin et subscriberOptout comme indiqué ci-dessus. Conservez exactement cette casse. Ce guide couvre le flux 10DLC destiné au locataire ; ne supposez pas que les champs requis ou les étapes d'activation d'un autre canal sont identiques.

Réessayez la même requête prévue en toute sécurité

Utilisez un Idempotency-Key unique pour cette création prévue. La clé comporte 1–128 caractères ASCII imprimables sans espaces et est limitée au compte propriétaire. Conservez inchangés la méthode HTTP, le chemin, la chaîne de requête et les octets exacts du corps lors d'une nouvelle tentative. Un fichier JSON reformaté entre en conflit même si ses valeurs sont équivalentes.

Un doublon en cours peut renvoyer HTTP 409 avec Retry-After ; les requêtes terminées peuvent rejouer leur réponse stockée. Une erreur mise en cache ne prouve pas que le registre n'a rien créé. Enregistrez campaignId, requestId et tout en-tête de corrélation, inspectez la campagne existante et rapprochez un échec partiel avant d'envisager une nouvelle clé.

Un ID de campagne n'est pas la configuration d'envoi finale

La réponse utilise le statut HTTP et du JSON direct. En cas de création réussie, conservez campaignId et lisez son état actuel :

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

Le flux de production actuel du portail partage également la campagne avec l'opérateur de messagerie et charge la marque/campagne dans le compte d'envoi. Ce sont des opérations distinctes de cet appel public de création. Une campagne de registre peut exister même si une étape ultérieure de partage ou de chargement auprès de l'opérateur échoue.

Utilisez le flux intégré de création en production du portail lorsque vous avez besoin de la séquence combinée d'enregistrement, de partage et de chargement auprès de l'opérateur. Pour une campagne en production déjà créée directement par cette API, conservez son ID de campagne et faites rapprocher la configuration d'opérateur du compte par l'assistance. L'interface client actuelle n'expose pas de bouton général de reprise pour chaque campagne en production créée directement. Ne créez pas un autre enregistrement pour réessayer son activation. Confirmez que la campagne est active et que la configuration d'opérateur est terminée avant d'attribuer un numéro d'envoi. Le numéro doit également être détenu, actif et compatible SMS. La création de campagne n'envoie pas de messages.

Frais de campagne en production

Frais de campagne mensuels configurés actuels
Cas d'usageFrais mensuels
LOW_VOLUME, UCAAS_LOW$1.67
SOLE_PROPRIETOR$2.23
CHARITY$3.34
EMERGENCY$5.56
AGENTS_FRANCHISES$33.34
Autres cas d'usage de repli configurés$11.12

Ces montants de détail ont été vérifiés par rapport à la configuration actuelle du portail le 24 octobre 2026. Confirmez le cas d'usage qualifié actuel et le prix affiché avant une soumission en production. Un monthlyFee dans une réponse de qualification du registre n'est pas automatiquement votre prix de détail MultiTEL.

Le portail actuel indique un engagement minimal de trois mois pour les campagnes en production non politiques. Examinez les conditions applicables et le choix de renouvellement avant de confirmer. L'enregistrement, la location de numéro, la vérification supplémentaire et l'utilisation des messages sont des frais distincts. Une réponse de création réussie ne prouve pas à elle seule que toutes les étapes de facturation ou d'activation auprès de l'opérateur sont terminées.

Gérer les échecs de validation et partiels

Lisez le status HTTP et le JSON renvoyé. Les échecs de validation peuvent être des tableaux d'objets code/description ; les échecs locaux peuvent au contraire être des objets avec message, status et, pour certaines erreurs de traitement, requestId.

Échecs de campagne
Résultat HTTPAction suivante
400Corrigez les champs spécifiques ou la clé d'idempotence. Relisez la qualification actuelle, le nombre requis d'exemples et les exigences de flux destinataires.
401, 403 ou 404Vérifiez les identifiants API et l'IP source autorisée, puis la propriété et les autorisations de marque/revendeur. N'utilisez pas d'identifiants d'un autre compte.
402Vérifiez le financement de production et l'autorisation d'achat avant de réessayer la même création prévue.
409Distinguez le rejeu en cours d'une requête modifiée utilisant la même clé. Conservez la campagne existante et les détails de requête lors du rapprochement.
429 ou limiteur indisponibleRespectez Retry-After lorsqu'il est présent et conservez la clé d'origine et la requête exacte.
500 ou 502La création a peut-être déjà eu lieu. Enregistrez tout campaignId et requestId, vérifiez la campagne existante, et reprenez ou rapprochez son activation plutôt que de créer un doublon.