Register your brand and campaign for 10DLC A2P messaging. Complete guide with Portal walkthrough and API/SDK examples.
10DLC (10-Digit Long Code) is the industry standard for application-to-person (A2P) messaging on US long code numbers. Registering your brand and campaigns provides higher throughput, better deliverability, and reduced carrier filtering.
Register your business identity with The Campaign Registry (TCR)
Instant
2. Vet Brand
Third-party vetting determines your trust score (0-100)
1-7 business days
3. Create Campaign
Register your messaging use case
Instant (pending carrier approval)
4. Assign Numbers
Link phone numbers to your campaign
Instant
Vetting is critical. Your brand’s vetting score directly determines your throughput limits — especially on AT&T and T-Mobile. See 10DLC Rate Limits for details.
Click on the brand you want to vet on the Brands page.
2
Request vetting
Under the Vetting Request section, select Aegis Mobile as the provider and Standard as the vetting class.
3
Submit
Click Apply for Vetting. Results typically arrive within 1-7 business days.
Timeline: Standard vetting takes 1-7 business days. Enhanced vetting (for higher scores) may take longer. You can create campaigns before vetting completes, but throughput will be limited until a score is assigned.
A campaign defines your messaging use case and is required for each distinct type of messaging you do.
API
Portal
curl -X POST https://api.telnyx.com/v2/10dlc/campaignBuilder \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_API_KEY" \ -d '{ "brandId": "your_brand_id", "usecase": "MIXED", "description": "Order confirmations and delivery updates", "sample1": "Your order #12345 has been confirmed. Track at https://acme.com/track/12345", "sample2": "Your package is out for delivery and will arrive by 5 PM today.", "messageFlow": "Customers opt in at checkout by checking a box to receive order updates via SMS.", "helpMessage": "Reply HELP for support. Contact us at support@acmecorp.com or call +15551234567.", "optinKeywords": "START, YES", "optoutKeywords": "STOP, UNSUBSCRIBE", "helpKeywords": "HELP, INFO", "embeddedLink": true, "numberPool": false, "ageGated": false }'
campaign_data = { "brandId": "your_brand_id", "usecase": "MIXED", "description": "Order confirmations and delivery updates", "sample1": "Your order #12345 has been confirmed.", "sample2": "Your package is out for delivery.", "messageFlow": "Customers opt in at checkout.", "helpMessage": "Reply HELP for support.", "optinKeywords": "START, YES", "optoutKeywords": "STOP, UNSUBSCRIBE", "helpKeywords": "HELP, INFO", "embeddedLink": True, "numberPool": False, "ageGated": False,}response = requests.post( "https://api.telnyx.com/v2/10dlc/campaignBuilder", headers=headers, json=campaign_data,)campaign = response.json()print(f"Campaign created: {campaign['data']['campaignId']}")
const campaignData = { brandId: 'your_brand_id', usecase: 'MIXED', description: 'Order confirmations and delivery updates', sample1: 'Your order #12345 has been confirmed.', sample2: 'Your package is out for delivery.', messageFlow: 'Customers opt in at checkout.', helpMessage: 'Reply HELP for support.', optinKeywords: 'START, YES', optoutKeywords: 'STOP, UNSUBSCRIBE', helpKeywords: 'HELP, INFO', embeddedLink: true, numberPool: false, ageGated: false,};const response = await axios.post( 'https://api.telnyx.com/v2/10dlc/campaignBuilder', campaignData, { headers });console.log(`Campaign created: ${response.data.data.campaignId}`);
Choose the use case that best matches your messaging purpose and click Next.
3
Review terms
Review the carrier terms and your brand score. Click Next.
4
Configure campaign details
Add industry vertical, sample messages, and campaign attributes. Accept the terms and conditions.
Sample messages matter. Carriers review your sample messages during approval. Make them realistic and representative of your actual messaging. Include opt-out language (e.g., “Reply STOP to unsubscribe”).
Prohibited content (cannabis, gambling in some states, etc.)
Fix: Review and update your sample messages, ensure opt-out language is included, and verify your use case is accurate.
Messages still being filtered after registration
Even with 10DLC registration, messages can be filtered if:
Content doesn’t match the registered campaign use case
Messages look like spam (identical content to many recipients)
Links are flagged by carrier content filters
Volume exceeds your campaign’s throughput allocation
Fix: Ensure message content matches your campaign description. Personalize messages. Use link shorteners carefully. Monitor Message Detail Records for delivery issues.