Skip to main content
Sole Proprietor registration enables individuals and small businesses without a federal Tax ID (EIN) to register for 10DLC messaging. This guide covers the API workflow for creating Sole Proprietor brands, completing OTP verification, and managing campaigns programmatically.

Overview

Sole Proprietor brands have specific constraints compared to standard business brands:
ConstraintLimit
Campaigns per brand1
Phone numbers per campaign1
Mobile phone reuseMax 3 SP brands per mobile number
ThroughputLow-volume (varies by carrier)
Sole Proprietor registration requires identity verification via SMS OTP before campaigns can be created.

Prerequisites

  • Telnyx account with API access
  • At least one US 10DLC phone number
  • Valid US/CA mobile phone number for OTP verification
  • Personal information: name, address, date of birth

Registration Flow

Step 1: Create a Sole Proprietor Brand

Create a brand with entityType set to SOLE_PROPRIETOR:
Valid vertical values include: PROFESSIONAL, REAL_ESTATE, HEALTHCARE, RETAIL, ENTERTAINMENT, EDUCATION, NONPROFIT, GOVERNMENT, and others. See the Brand API Reference for the full list.
curl -X POST https://api.telnyx.com/v2/10dlc/brand \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "entityType": "SOLE_PROPRIETOR",
    "firstName": "Jane",
    "lastName": "Smith",
    "displayName": "Jane Smith Consulting",
    "email": "[email protected]",
    "phone": "+12025551234",
    "mobilePhone": "+12025559876",
    "street": "123 Main St",
    "city": "Austin",
    "state": "TX",
    "postalCode": "78701",
    "country": "US",
    "vertical": "PROFESSIONAL"
  }'

Response

{
  "brandId": "f5586561-8ff0-4291-a0ac-84fe544797bd",
  "entityType": "SOLE_PROPRIETOR",
  "displayName": "Jane Smith Consulting",
  "firstName": "Jane",
  "lastName": "Smith",
  "identityStatus": "PENDING",
  "mobilePhone": "+12025559876",
  "createdAt": "2026-02-03T12:00:00Z"
}
The brand will remain in PENDING identity status until OTP verification is completed. You cannot create campaigns until the brand is VERIFIED.

Step 2: Trigger OTP Verification

Send an OTP PIN to the mobile phone associated with the brand:
curl -X POST https://api.telnyx.com/v2/10dlc/brand/{brand_id}/smsOtp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "pinSms": "Your Telnyx verification code is @OTP_PIN@. This code expires in 24 hours.",
    "successSms": "Your Telnyx 10DLC brand has been verified successfully."
  }'

Request Parameters

ParameterTypeRequiredDescription
pinSmsstringYesSMS message containing @OTP_PIN@ placeholder (max 500 chars)
successSmsstringYesConfirmation SMS sent after successful verification (max 500 chars)

Response

{
  "brandId": "f5586561-8ff0-4291-a0ac-84fe544797bd",
  "referenceId": "OTP8A3B2C"
}
The @OTP_PIN@ placeholder in pinSms will be replaced with the actual 6-digit PIN when the SMS is sent.

Step 3: Check OTP Status

Poll the OTP status to confirm delivery:
curl -X GET https://api.telnyx.com/v2/10dlc/brand/{brand_id}/smsOtp \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

{
  "brandId": "f5586561-8ff0-4291-a0ac-84fe544797bd",
  "referenceId": "OTP8A3B2C",
  "mobilePhone": "+12025559876",
  "requestDate": "2026-02-03T12:05:00Z",
  "verifyDate": null,
  "deliveryStatus": "DELIVERED_HANDSET",
  "deliveryStatusDate": "2026-02-03T12:05:02Z",
  "deliveryStatusDetails": "Delivered to handset"
}

Delivery Status Values

StatusDescription
PENDINGOTP request submitted, awaiting delivery
DELIVERED_HANDSETSMS delivered to the mobile device
DELIVERY_FAILEDSMS delivery failed
VERIFIEDOTP PIN successfully verified
EXPIREDOTP PIN expired (24-hour window)

Step 4: Verify OTP PIN

After the user receives and provides the PIN, verify it:
curl -X POST https://api.telnyx.com/v2/10dlc/brand/{brand_id}/smsOtp/verify \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "otpPin": "123456"
  }'
Upon successful verification:
  • The brand identityStatus changes to VERIFIED
  • The successSms message is sent to the mobile phone
  • The brand registration fee is charged
  • You can now create campaigns

Step 5: Create a Sole Proprietor Campaign

With a verified brand, create a campaign using the SOLE_PROPRIETOR usecase:
Sample messages (sample1, sample2) are required for campaign approval. Include realistic examples of messages you’ll send.
curl -X POST https://api.telnyx.com/v2/10dlc/campaignBuilder \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "brandId": "f5586561-8ff0-4291-a0ac-84fe544797bd",
    "usecase": "SOLE_PROPRIETOR",
    "description": "Customer appointment reminders and booking confirmations for consulting services.",
    "messageFlow": "Customers opt-in via web form when booking appointments. They receive confirmation and reminder messages.",
    "helpMessage": "Reply HELP for assistance. Contact [email protected]",
    "optoutMessage": "Reply STOP to unsubscribe from messages.",
    "sample1": "Hi Jane, this is a reminder of your appointment tomorrow at 2pm.",
    "sample2": "Your booking for March 15th has been confirmed. Reply STOP to opt out.",
    "termsAndConditions": true
  }'

Response

{
  "campaignId": "c5e5e598-95b3-4076-bfe2-c7d2c58ec57f",
  "brandId": "f5586561-8ff0-4291-a0ac-84fe544797bd",
  "usecase": "SOLE_PROPRIETOR",
  "status": "ACTIVE",
  "description": "Customer appointment reminders and booking confirmations for consulting services.",
  "createdAt": "2026-02-03T12:30:00Z"
}
Sole Proprietor campaigns are typically auto-approved and become ACTIVE immediately. Standard campaigns may require carrier review.

Step 6: Assign a Phone Number

Assign your 10DLC number to the campaign:
curl -X POST https://api.telnyx.com/v2/10dlc/phone_number_campaigns \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "phoneNumber": "+12025551234",
    "campaignId": "campaign_id_here"
  }'
Sole Proprietor campaigns can only have one phone number assigned. Attempting to assign additional numbers will return an error.

Error Handling

Common Errors

ErrorCauseSolution
Sole Proprietor brands can only have one active campaignAttempting to create a second campaignDelete or deactivate existing campaign first
Sole Proprietor campaigns can only have one phone number assignedAttempting to assign multiple numbersUse only one number per SP campaign
Cannot associate campaign with brand in pending or failed statusBrand not verifiedComplete OTP verification first
OTP PIN expired24-hour verification window exceededTrigger a new OTP with POST /10dlc/brand/{id}/smsOtp

Retrying OTP

If the OTP expires or the user needs a new PIN, simply call the trigger endpoint again:
curl -X POST https://api.telnyx.com/v2/10dlc/brand/{brand_id}/smsOtp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "pinSms": "Your new Telnyx verification code is @OTP_PIN@. This code expires in 24 hours.",
    "successSms": "Your Telnyx 10DLC brand has been verified successfully."
  }'

Fees

ItemAmountFrequency
Brand Registration$4.00One-time (charged after verification)
Campaign Vetting$15.00Per submission
Monthly Maintenance$2.00Monthly

Webhooks

Subscribe to brand and campaign status updates via webhooks. See 10DLC Event Notifications for details on:
  • 10dlc.brand.update — Brand status and identity verification changes
  • 10dlc.campaign.update — Campaign approval/rejection
  • 10dlc.phone_number.update — Phone number assignment status

Next Steps