Skip to main content

Assistant d’enregistrement 10DLC

L’assistant est la méthode recommandée pour effectuer l’enregistrement de la marque et de la campagne TCR. Il transforme le flux linéaire en une seule étape en un processus guidé et reprenable :
  • Enregistrer et reprendre — votre brouillon persiste entre les sessions, les onglets et les semaines. Fermez l’onglet ou revenez demain ; vous reprenez là où vous vous étiez arrêté.
  • Naviguer entre les étapes de manière non linéaire — l’assistant suit brand, campaign et review comme des étapes indépendantes. Remplissez les exemples de la campagne alors que la section marque est encore incomplète, la charge utile de progression conserve les deux décomptes.
  • Valider avant de payer — la validation par champ se déclenche à chaque enregistrement, et un passage de lint pré-soumission évalue le brouillon enregistré par rapport aux motifs de rejet TCR connus avant que les frais d’enregistrement amont ne soient facturés.
L’assistant écrit uniquement dans le stockage de brouillons de votre propre organisation. Il ne détient, ne bloque ni n’achemine aucun trafic de messages.
Tous les endpoints de l’assistant se trouvent sous /api/v1/compliance/10dlc/wizard. Authentifiez-vous avec votre clé API, exactement comme pour les endpoints marque et campagne.

Rôles et limites de débit

  • Lectures (GET /wizard, GET /wizard/draft) — tout rôle authentifié de l’organisation.
  • Écritures (PUT /wizard/draft, DELETE /wizard/draft, POST /wizard/phone/send, POST /wizard/phone/confirm, POST /wizard/preflight, POST /wizard/submit) — rôle propriétaire ou administrateur.
  • Profil d’écriture : 10 requêtes par minute, identique aux endpoints marque/campagne historiques. Pré-soumission de l’assistant : 30 requêtes par minute, identique à l’endpoint de pré-soumission ad hoc.

GET /10dlc/wizard — charge utile de progression

Renvoie l’objet de progression calculé que le tableau de bord utilise pour sa bannière « Reprendre là où vous vous étiez arrêté ». Toujours 200 OK — une organisation nouvelle reçoit la forme de brouillon vide avec state: "not_started".
Réponse :
state vaut l’un de not_started, in_progress, brand_pending, campaign_pending, ready, rejected. current_step vaut brand, campaign, ou review. next_action est un indice lisible par la machine : fill_brand, fill_campaign, review_and_submit, amend_brand, amend_campaign, ou done. Lorsque la marque ou la campagne a été soumise, la réponse porte également brand_id, campaign_id, ainsi que tout motif de rejet amont. GET /10dlc/wizard/draft renvoie le brouillon complet enregistré (champs de la marque, champs de la campagne, étape courante) pour le pré-remplissage du formulaire.

PUT /10dlc/wizard/draft — enregistrement partiel

Enregistre tout sous-ensemble de champs de la marque et/ou de la campagne. Chaque champ est optionnel — vous ne validez que les champs que vous envoyez, et les autres conservent leurs valeurs précédemment enregistrées. current_step se met à jour séparément afin qu’une reprise aboutisse sur le bon écran.
Un enregistrement qui échoue à la validation renvoie 422 et laisse le brouillon persisté intact — l’état précédemment enregistré est conservé. Champs de la marque : entity_type, display_name, company_name, ein, phone, street, city, state, postal_code, country, email, website, vertical. Champs de la campagne : usecase, description (40–4096 caractères), sample_message (1–10 messages), message_flow (min 40 caractères), help_message (min 20), optout_message (min 20), is_political, cv_token.
Enregistrez après chaque champ requis si vous le souhaitez — chaque enregistrement coûte moins d’un jeton de débit d’écriture et le brouillon est votre filet de sécurité. Le brand_id de la campagne n’est jamais saisi à la main : l’assistant le remplit à partir du résultat de la soumission de la marque.

Vérification du téléphone d’un propriétaire unique (OTP)

Les marques américaines avec entity_type: "SOLE_PROPRIETOR", et seulement celles-ci, substituent un numéro de mobile vérifié à un EIN : TCR ancre l’identité du propriétaire unique sur un numéro de téléphone dont le déclarant prouve qu’il a le contrôle. Tout autre type d’entité américaine doit soumettre un EIN à la place. Vérifiez le numéro avant la soumission :
Réponse :
Réponse :
La preuve est liée à la chaîne de téléphone exacte enregistrée sur le brouillon. Si vous modifiez brand.phone après la vérification, l’ancienne preuve ne compte plus et la soumission échoue avec 422 jusqu’à ce que vous exécutiez un nouveau défi contre le nouveau numéro. Appeler /phone/send sur un numéro déjà vérifié renvoie 409 ALREADY_VERIFIED ; appeler /phone/confirm sans défi en attente renvoie 404.

POST /10dlc/wizard/preflight — contrôler le brouillon enregistré

Évalue le brouillon persisté de l’assistant par rapport au catalogue des motifs de rejet TCR connus, afin que l’écran « Review & submit » voie les constats sur le brouillon exact qu’il s’apprête à soumettre — aucun risque de dérive de lint comme l’endpoint de pré-soumission ad hoc en présente lorsqu’il contrôle une charge utile construite à la main. Le corps de la requête est optionnel : expected_msg_per_day_per_number (pour la règle du niveau de débit) et brand_vetting_score (0–100) lorsque vous en possédez déjà un.
La forme de la réponse — score, verdict, findings[] — est identique au linter de pré-soumission de la page d’enregistrement. Comme pour cet endpoint, un verdict pass signifie « aucun motif de rejet connu détecté », et non « TCR approuvera ».

POST /10dlc/wizard/submit — marque + campagne atomiques

Valide le brouillon complet, puis soumet la marque et la campagne en un seul appel. La vérification de la marque aboutit généralement en 1 à 48 heures ; la campagne suit immédiatement après.
Réponse (201 Created) :
Les échecs de validation renvoient 422 avant toute facturation, avec details.section indiquant si les champs manquants ou invalides se trouvent dans la section brand ou campaign. Sémantique des échecs — la garantie atomique :
  • Marque rejetée en amont — aucune campagne n’est soumise. Le brouillon est conservé avec le motif de rejet de la marque horodaté, et next_action bascule sur amend_brand. Modifiez les champs de la marque et re-soumettez.
  • Campagne rejetée en amont — le brand_id accepté est persisté, l’état reste à brand_pending, et le motif de rejet de la campagne est horodaté. Une re-soumission ignore entièrement l’étape de la marque, de sorte que les frais de marque ne sont jamais refacturés ; seule la campagne paie à nouveau.
  • 5xx amont ou fournisseur indisponible — le brouillon est conservé tel quel et vous pouvez réessayer à l’identique.
L’état bascule sur ready dès que la marque et la campagne reviennent toutes deux avec le statut APPROVED de la révision opérateur.

DELETE /10dlc/wizard/draft — réinitialisation

Renvoie 204 No Content. Réinitialise l’assistant au brouillon vide (state: "not_started"). Cela n’efface pas les identifiants de marque ou de campagne approuvés enregistrés — cela réinitialise uniquement l’état de travail de l’assistant, ce qui est sûr comme nettoyage post-approbation ou pour « recommencer ».

Ordre complet du cycle de vie

  1. PUT /10dlc/wizard/draft — remplir progressivement la marque + la campagne.
  2. (SOLE_PROPRIETOR uniquement) POST /10dlc/wizard/phone/sendPOST /10dlc/wizard/phone/confirm.
  3. POST /10dlc/wizard/preflight — corriger les constats jusqu’à ce que le verdict passe.
  4. POST /10dlc/wizard/submit — soumission atomique.
  5. GET /10dlc/wizard — interroger l’état jusqu’à ready (ou GET /10dlc/campaigns/:id/status pour la carte par opérateur, comme sur la page d’enregistrement).
  6. DELETE /10dlc/wizard/draft — nettoyage optionnel post-approbation.
Les endpoints historiques en une seule étape (POST /10dlc/brand, POST /10dlc/campaign) restent disponibles pour les pipelines scriptés. L’assistant est le flux opérateur recommandé ; les endpoints directs exigent une charge utile entièrement remplie en une seule requête.