Skip to main content

10DLC-Registrierungs-Wizard

Der Wizard ist der empfohlene Weg, die TCR-Marken- und Kampagnenregistrierung abzuschließen. Er wandelt den linearen Ein-Schritt-Ablauf in einen geführten, fortsetzbaren Prozess um:
  • Speichern und wieder aufnehmen — Ihr Entwurf bleibt über Sitzungen, Tabs und Wochen hinweg erhalten. Schließen Sie den Tab oder kommen Sie morgen zurück; Sie setzen dort fort, wo Sie aufgehört haben.
  • Zwischen Schritten nicht-linear wechseln — der Wizard verfolgt brand, campaign und review als unabhängige Schritte. Füllen Sie die Kampagnen-Samples aus, während der Markenabschnitt noch unvollständig ist, und die Fortschritts-Payload hält beide Zähler.
  • Vor dem Zahlen validieren — feldspezifische Validierung feuert bei jedem Speichern, und ein Pre-Submission-Lint-Durchlauf bewertet den gespeicherten Entwurf gegen bekannte TCR-Ablehnungsmuster, bevor die Upstream-Registrierungsgebühr fällig wird.
Der Wizard schreibt nur in den Entwurfsspeicher Ihrer eigenen Organisation. Er hält, gate-t oder routet keinen Nachrichtenverkehr.
Alle Wizard-Endpunkte liegen unter /api/v1/compliance/10dlc/wizard. Authentifizieren Sie mit Ihrem API-Schlüssel, genau wie bei den Marken- und Kampagnen-Endpunkten.

Rollen und Ratenlimits

  • Lesen (GET /wizard, GET /wizard/draft) — jede authentifizierte Rolle in der Organisation.
  • Schreiben (PUT /wizard/draft, DELETE /wizard/draft, POST /wizard/phone/send, POST /wizard/phone/confirm, POST /wizard/preflight, POST /wizard/submit) — Owner- oder Admin-Rolle.
  • Schreibprofil: 10 Anfragen pro Minute, entsprechend den Legacy-Marken/Kampagnen-Endpunkten. Wizard-Preflight: 30 Anfragen pro Minute, entsprechend dem Ad-hoc-Preflight-Endpunkt.

GET /10dlc/wizard — Fortschritts-Payload

Gibt das berechnete Fortschrittsobjekt zurück, das das Dashboard für sein Banner „Fortsetzen, wo Sie aufgehört haben” verwendet. Immer 200 OK — eine frische Organisation erhält die Leer-Entwurfsform mit state: "not_started".
Antwort:
state ist einer von not_started, in_progress, brand_pending, campaign_pending, ready, rejected. current_step ist brand, campaign oder review. next_action ist ein maschinenlesbarer Hinweis: fill_brand, fill_campaign, review_and_submit, amend_brand, amend_campaign oder done. Sobald die Marke oder Kampagne eingereicht wurde, enthält die Antwort auch brand_id, campaign_id und etwaige Upstream-Ablehnungsgründe. GET /10dlc/wizard/draft gibt den vollständig gespeicherten Entwurf (Markenfelder, Kampagnenfelder, aktueller Schritt) zur Formularvorbefüllung zurück.

PUT /10dlc/wizard/draft — Teilspeichern

Speichert eine beliebige Teilmenge von Marken- und/oder Kampagnenfeldern. Jedes Feld ist optional — Sie validieren nur die Felder, die Sie senden, und die anderen behalten ihre vorher gespeicherten Werte. current_step aktualisiert sich separat, sodass ein Resume auf dem richtigen Bildschirm landet.
Ein Speichern, das die Validierung nicht besteht, gibt 422 zurück und lässt den persistierten Entwurf unberührt — der vorher gespeicherte Zustand überlebt. Markenfelder: entity_type, display_name, company_name, ein, phone, street, city, state, postal_code, country, email, website, vertical. Kampagnenfelder: usecase, description (40–4096 Zeichen), sample_message (1–10 Nachrichten), message_flow (min 40 Zeichen), help_message (min 20), optout_message (min 20), is_political, cv_token.
Speichern Sie nach jedem Pflichtfeld, wenn Sie möchten — jedes Speichern kostet unter einem Schreib-Raten-Token und der Entwurf ist das Sicherheitsnetz. Die brand_id der Kampagne wird niemals manuell eingegeben: Der Wizard füllt sie aus dem Marken-Einreichungsergebnis.

Sole-Proprietor-Telefonverifizierung (OTP)

US-Marken mit entity_type: "SOLE_PROPRIETOR", und nur diese, ersetzen eine verifizierte Mobilnummer für eine EIN: TCR verankert die Sole-Proprietor-Identität an einer Rufnummer, deren Kontrolle der Registrant nachweist. Jeder andere US-Entity-Typ muss stattdessen eine EIN einreichen. Verifizieren Sie die Nummer vor der Einreichung:
Antwort:
Antwort:
Der Nachweis ist auf die exakte Rufnummern-Zeichenfolge des Entwurfs ausgelegt. Bearbeiten Sie brand.phone nach der Verifizierung, zählt der alte Nachweis nicht mehr, und die Einreichung scheitert mit 422, bis Sie eine frische Challenge gegen die neue Nummer laufen lassen. /phone/send auf einer bereits verifizierten Nummer gibt 409 ALREADY_VERIFIED zurück; /phone/confirm ohne ausstehende Challenge gibt 404 zurück.

POST /10dlc/wizard/preflight — Den gespeicherten Entwurf linten

Bewertet den persistierten Wizard-Entwurf gegen den Katalog bekannter TCR-Ablehnungsmuster, sodass der Bildschirm „Prüfen & Einreichen” Befunde gegen genau den Entwurf sieht, der gleich eingereicht wird — keine Chance auf Lint-Drift, wie ihn der Ad-hoc-Preflight-Endpunkt hat, wenn er eine manuell gebaute Payload lint. Der Request-Body ist optional: expected_msg_per_day_per_number (für die Durchsatzstufen-Regel) und brand_vetting_score (0–100), wenn Sie bereits einen haben.
Die Antwortform — score, verdict, findings[] — ist identisch mit dem Preflight-Linter auf der Registrierungsseite. Wie bei jenem Endpunkt bedeutet ein pass-Urteil „keine bekannten Ablehnungsmuster gefunden”, nicht „TCR wird zustimmen”.

POST /10dlc/wizard/submit — Atomare Marke + Kampagne

Validiert den vollständigen Entwurf, dann reicht er Marke und Kampagne in einem Aufruf ein. Das Marken-Vetting landet typischerweise in 1–48 Stunden; die Kampagne folgt unmittelbar danach.
Antwort (201 Created):
Validierungsfehler geben 422 zurück, bevor irgendetwas belastet wird, mit details.section, das Ihnen sagt, ob die fehlenden oder ungültigen Felder im brand- oder campaign-Abschnitt liegen. Fehlersemantik — der atomare Schutz:
  • Marke upstream abgelehnt — keine Kampagne wird eingereicht. Der Entwurf bleibt mit dem Markenablehnungsgrund gestempelt erhalten, und next_action wechselt auf amend_brand. Korrigieren Sie die Markenfelder und reichen Sie erneut ein.
  • Kampagne upstream abgelehnt — die akzeptierte brand_id wird persistiert, der Zustand bleibt bei brand_pending, und der Kampagnenablehnungsgrund wird gestempelt. Eine Neuesreichung überspringt die Markenstufe komplett, sodass die Markengebühr niemals erneut belastet wird; nur die Kampagne zahlt wieder.
  • Upstream 5xx oder Provider nicht verfügbar — der Entwurf bleibt verbatim erhalten, und Sie können ihn so erneut versuchen.
Zustandsübergänge auf ready, sobald sowohl Marke als auch Kampagne von der Carrier-Prüfung als APPROVED zurückkommen.

DELETE /10dlc/wizard/draft — Zurücksetzen

Gibt 204 No Content zurück. Setzt den Wizard auf den leeren Entwurf (state: "not_started") zurück. Dies löscht die genehmigten Marken- oder Kampagnen-IDs nicht — es setzt nur den Wizard-Arbeitszustand zurück, sodass es als Nach-Genehmigungs-Aufräumen oder „Neustart” sicher ist.

Vollständiger Lebenszyklus

  1. PUT /10dlc/wizard/draft — Marke + Kampagne progressiv füllen.
  2. (nur SOLE_PROPRIETOR) POST /10dlc/wizard/phone/sendPOST /10dlc/wizard/phone/confirm.
  3. POST /10dlc/wizard/preflight — Befunde beheben, bis das Urteil durchgeht.
  4. POST /10dlc/wizard/submit — atomare Einreichung.
  5. GET /10dlc/wizard — Zustand pollen bis ready (oder GET /10dlc/campaigns/:id/status für die Carrier-Map, wie auf der Registrierungsseite).
  6. DELETE /10dlc/wizard/draft — optionales Nach-Genehmigungs-Aufräumen.
Die Legacy-Ein-Aufruf-Endpunkte (POST /10dlc/brand, POST /10dlc/campaign) bleiben für Skript-Pipelines verfügbar. Der Wizard ist der empfohlene Operator-Ablauf; die direkten Endpunkte verlangen eine vollständig befüllte Payload in einem einzigen Request.