npx skills add ...
npx skills add sentdm/sent-plugin --skill sms-10dlc-registration
Prepares and validates Sent US A2P 10DLC brand and campaign registration through Sender Profiles, including inheritance, all campaign use cases, opt-in evidence, sample-message policy, autoresponses, sandbox validation, TCR status, and rejection remediation.
npx skills add sentdm/sent-plugin --skill sms-10dlc-registration
Use this skill for US A2P SMS over 10-digit long codes. Separate the compliance evidence packet from the exact Sent API request; they have different schemas and validators.
There is no standalone brand CRUD path in the current v3 API.
POST /v3/profiles using brand and inherit_tcr_brand: false.GET|POST /v3/profiles/{profileId}/campaigns.PUT|DELETE /v3/profiles/{profileId}/campaigns/{campaignId}.Reject guidance that reintroduces a free-standing brand path.
| Brand | Campaign | Settings |
|---|---|---|
| Inherit both | Organization brand and campaign | inherit_tcr_brand: true, inherit_tcr_campaign: true |
| Inherit brand, own campaign | Shared legal brand with tenant-specific traffic | brand true, campaign false |
| Own both | Dedicated tenant/business | both false and supply brand during profile creation |
Inherited campaigns are read-only. A profile cannot supply brand while brand inheritance is true.
The private packet uses the explicit internal version sent-10dlc-evidence/v1 and snake_case evidence fields. It is not an API payload.
Collect legal identity, public website/policy links, consent proof, message flow, opt-in/opt-out/help responses and keywords, use cases, and realistic samples. See references/10dlc-evidence-checklist.md.
The API request uses exact camelCase and a campaign wrapper:
Validate it with:
Support all 13 current values:
MARKETING, ACCOUNT_NOTIFICATION, CUSTOMER_CARE, FRAUD_ALERT, TWO_FA, DELIVERY_NOTIFICATION, SECURITY_ALERT, M2M, MIXED, HIGHER_EDUCATION, POLLING_VOTING, PUBLIC_SERVICE_ANNOUNCEMENT, and LOW_VOLUME.
Each use case structurally accepts 1–5 samples, each no longer than 1,024 characters. The compliance layer requires at least two samples for marketing and mixed traffic, including low-volume mixed. Keep that policy distinction visible instead of pretending OpenAPI requires two for all traffic.
volume is optional and, when supplied, is a numeric string. Values below "2000" use the documented low-volume tier; "2000" is the boundary to the next tier.
Campaign responses currently expose statuses SENT_CREATED, ACTIVE, and EXPIRED, plus submittedToTCR. Preserve unknown future status strings. Do not confuse a successful Sent record creation with TCR submission or carrier activation.
sandbox: true.submittedToTCR, raw status, and review evidence.webHookUrl only after prerequisites are ready.Never use real consumer data in fixtures or samples. Use references/tcr-use-cases.md for classification and references/10dlc-rejection-remediation.md for failures.
python scripts/validate_campaign_payload.py campaign.json