US 10DLC API Installation
A quick start to install a US 10 DLC number
Last updated
A quick start to install a US 10 DLC number
Last updated
10DLC is a local 10-digit phone number that requires Brand & Use Case registration and supports throughput levels suitable for A2P SMS campaigns. 10DLC is sanctioned by mobile carriers for A2P messaging and is intended to provide a reliable user experience, better deliverability, and higher messaging speed. To find out more about 10DLC see the following
To setup a new channel to send SMS messages using a United states 10 digit long code number the following steps are required
Some of the following requests will lead to additional workspace charges. Ensure you before proceeding
The following API requests can only be made using a valid access key and attached to an access role with the an access policy that at least specifies the permissions to the resources outlined in each section below.
If you do not already have a US 10DLC number available in your workspace you can find one to purchase .You can filter by country, prefix, number type and number capabilities.
The following example will return the first available US local number required for use with 10DLC registration.
Once you have found an available number you can purchase this by providing the number (in E.1624 format) and the country (using a two digit ISO code).
A successful request to this endpoint will start a recurring monthly subscription based on the monthly cost of the number
The following example will purchase the number if it still available and you have sufficient balance in your workspace wallet. Provide number in E.1624 format and country in 2 digit ISO code (e.g. US)
You can set up a Web Hook subscription to be notified of any brand or campaign event. Brand and camping creation work in sync, and subscribing to all related events will automate the 10DLC registration process.
The Following example will Create a subscrscrition listing to all Brand Related events
The Following example will Create a subscription listing to all Brand Related events
A-Sync : this will start a background process that may require some time to complete. A Get call may be required to to retrieve the final result .
After creating a brand, this will be submitted for approval by the campaign registry. The brand must be approved before you can register a campaign with the campaign registry. Brand registration may take some time.
You can find the full list of brand management endpoints here
The following example will create a new brand that will be submitted for registration with the campaign registry.
A-Sync : this will start a background process that may require some time to complete. A Get call may be required to to retrieve the final result .
The final result of If your brand is not being accepted or your company is not part of the Russell 3000 stock index you can also request additional vetting. For brands that are not part of the Russell 3000 stock index this can provide access to higher messaging throughputs (depending on your vetting score)
The following example will create a new brand vetting request that will be submitted for registration with the campaign registry. You must have previously created a brand
To reduce the likelihood of rejection, ensure you are familiar with 10dlc registration examples and best practices. Specifically
Check this article for tips on how to write an effective Campaign description
Check this article on how to write an effective messageFlow
Most 10DLC rejections are caused by unclear or incomplete description and/or messageFlow
A-Sync : this will start a background process that may require some time to complete. A Get call may be required to to retrieve the final result .
After creating a campaign, this will be submitted for approval by the campaign registry. The campaign must be approved before you can associate this with an SMS channel. Campaign registration can take 1-2 weeks to be approved.
You can find the full list of campaign management endpoints here
The following example will create a new campaign that will be submitted for registration with the campaign registry. Your associated brand must be approved
Same as done before, you can create a workspace subscription to listen to Channel Status changes
The example below will create a workspace-wide subscription tracking all updates regarding your channels you can use to track channels' status changes
A-Sync : this will start a background process that may require some time to complete. A Get call may be required to to retrieve the final result .
The following example will create a new SMS connector with an approved 10DLC campaign and US local number:
Once you have created your SMS connector, this will create an SMS channel. You can then get your channel ID to before setting up channel webhooks
If you are listening to channels events the channelId
will be returned with the first channel updated event
The following example will get the connector you have created in the previous step. Parse the channel.channelId
to get the id of your new SMS channel
Once your channel has been installed you will then need to setup a webhook subscription to receive status updates and inbound messages
The following request example will create a new SMS subscription for inbound and outbound messages
Inbound messages
Outbound messages
A-Sync : this will start a background process that may require some time to complete. A Get call may be required to retrieve the final result
10DLC numbers can only send traffic to the USA when linked to a campaign. Number Campaign link is an A-sync process requiring confirmations from multiple carriers.
The bird will only consider a number linked if all major USA carriers acknowledge the links. Delays in carrier acknowledgment can vary between 15 minutes to several hours and are usually longer around peak linking hours (afternoon/evening USA Pacific time)
Based on whether you have subscribed or not to channel events, you can determine the readiness of a given channel in 2 ways
if you have a "channel.updated"
event subscription, each change in a channel status will trigger an event. You can associate those events to the number you have used to install the channel by referring to "identifier"
field. A channel ready to send SMS will have "status": "active"
.
if so you can query the GET connector status endpoint and wait for the "useCaseStatus"
to turn to "ok"
This could happen if the number linked to its campaigns is not acknowledged or the 10DLC registration experiences issues. In this case, the "useCaseStatus"
's value will not be "ok"
In this case "useCaseStatus"
will be "ok"
The ID for the organization.
"d0b85ccc-b63a-4e81-b698-c359d77d250e"
OK
The token that can be passed as pageToken in URL to retrieve the next set of results. If missing, no more results to display. To know more, refer to the pagination section.
Assigns Long Code Numbers to the current workspace, charging the wallet for their subscription price. When creating LCNs as a User, all specified Number Stock Items should be reserved.
The ID for the workspace.
"d386a801-ee8d-4aba-a7e4-78671bd3b11e"
The unique identifiers of the numbers you want to buy. You can buy up to 25 numbers at a time. This operation will incur wallet charges for the numbers. Before buying the number, you must reserve it.
Created
Before you can use a US 10DLC number to send SMS messages, you must be and campaign with an external registry called the campaign registry.
A successful request to this endpoint will mean you are charged a fee. If you later need to update or resubmit your brand there may be additional fees.
Create a brand at workspace level. This means it will be available only for this workspace. A brand registration is mandatory due to compliance requirements.
The ID for the workspace.
"d386a801-ee8d-4aba-a7e4-78671bd3b11e"
Legal entity type. It can't be updated when the brand is approved.
"PRIVATE_PROFIT"
First or given name. Applicable to entity type.
"John"
Last or Surname. Applicable to entity type.
"Doe"
Display or marketing name your brand.
"ABC Mobile"
Legal company name. This should match the legal company name used to register your EIN/Tax ID.
"ABC Inc."
Government assigned corporate tax ID. EIN is 9-digits in the U.S.
"111111111"
The 2 letter ISO country of registration submitted with your EIN / Tax ID registration.
"US"
Valid phone number in e.164 international format.
"+12024567890"
Street number and name.
"123 6th Ave"
City name
"New York"
State. Must be a 2 letter state code for US states.
"NY"
Postal code. Must be a 5 digit zip code for the United States.
"10001"
ISO 2 character country code.
"US"
Valid email address of brand support contact.
"johndoe@abc.com"
Stock symbol. Required for entityType PUBLIC.
"ABC"
Stock exchange. Required for entityType PUBLIC.
"NASDAQ"
Brand website URL.
"https://example.com"
Vertical or industry segment of the brand.
"RETAIL"
Alternate business identifier.
Alternate business identifier type. Required if altBusinessId is provided.
Business contact email.
Brand successfully created
The ID of the number.
Timestamp (UTC) when the brand was created.
Timestamp (UTC) when the brand was last updated.
Brand status
"PENDING"
Legal entity type. It can't be updated when the brand is approved.
"PRIVATE_PROFIT"
First or given name. Applicable to entity type.
"John"
Last or Surname. Applicable to entity type.
"Doe"
Display or marketing name your brand.
"ABC Mobile"
Legal company name. This should match the legal company name used to register your EIN/Tax ID.
"ABC Inc."
Government assigned corporate tax ID. EIN is 9-digits in the U.S.
"111111111"
The 2 letter ISO country of registration submitted with your EIN / Tax ID registration.
"US"
Valid phone number in e.164 international format.
"+12024567890"
Street number and name.
"123 6th Ave"
City name
"New York"
State. Must be a 2 letter state code for US states.
"NY"
Postal code. Must be a 5 digit zip code for the United States.
"10001"
ISO 2 character country code.
"US"
Valid email address of brand support contact.
"johndoe@abc.com"
Stock symbol.
"ABC"
Stock exchange. Required for entityType PUBLIC.
"NASDAQ"
Brand website URL.
"https://example.com"
Vertical or industry segment of the brand.
"RETAIL"
Alternate business identifier.
Alternate business identifier type. Required if altBusinessId is provided.
Business contact email.
Timestamp (UTC) when the brand businessContactEmail was verified.
Workspace IDs with access to the brand.
Rejection details
A successful request to this endpoint will mean you are charged a fee.
Create a brand vetting in a workspace. Brand vetting should be requested when the brand is not getting approved, or if the customer needs a higher throughput.
The ID for the workspace.
"d386a801-ee8d-4aba-a7e4-78671bd3b11e"
A unique identifier for the brand.
Identifies the vetting classification.
"STANDARD"
External vetting provider ID for the brand.
Brand vetting successfully created
Unique ID that identifies a vetting transaction performed by a vetting provider.
Vetting submission date (UTC). This is the date when the vetting request is generated
Timestamp (UTC) when the brand vetting was last updated.
Identifies the vetting request status.
"PENDING"
External vetting provider ID for the Brand vetting.
Brand vetting score (0-100). Higher is better.
Identifies the vetting classification.
"STANDARD"
A list of reasons for FAILED vetting.
Once your brand status is approved you can then create your first . Brands can have multiple campaigns. A campaign describes what types of messages you will send from your SMS channel.
A successful request to this endpoint will mean you are charged a and a three month minimum commitment fee. If you later need to update or resubmit your brand there may be additional fees.
To create a campaign, it is essential to ensure that the brand has already been approved. Campaigns can only be initiated under the umbrella of brands that meet this prerequisite. Once a campaign is created, it cannot begin directing traffic immediately. Instead, it must go through a formal approval process. Only after the campaign has been reviewed and approved it will be authorized to send traffic.
The ID for the workspace.
"d386a801-ee8d-4aba-a7e4-78671bd3b11e"
A unique identifier for the brand.
Campaign name
A use case that best matches the purpose of the campaign.
If use case is MIXED or LOW_VOLUME mixed an array of 2-5 use cases.
A detailed description of what the campaign is for.
Whether messages will contain links. Provide at least one sample containing a link.
Whether messages will contain phone number. Provide at least one sample containing a phone number.
Whether a campaign will be associated with more than 50 numbers e.g. customer service use case.
Whether a campaign contains age-gated content based on carrier/ctia guidelines.
Whether a campaign includes content related to direct lending or loan arrangements.
Confirm customer opt in is collected and processed.
Confirm customer opt out is collected and processed.
Confirm an info message is returned if a customer sends "HELP".
Between 1-5 sample messages. If directLending, embeddedPhone, embeddedLink is true provide relevant examples.
Up to 5 attachments.
Provide details of how the customer will opt into this campaign. If you have a live web opt-in provide the URL and ensure the page has details on the T&Cs/data collection for opting in, and how to opt out.
Help message of the campaign. A help message shall state the name of the service, contact (email or call centre), OPT IN and OPT OUT keywords.
A comma separated list of keywords. Support of the word HELP is the minimum requirement for requesting help/info.
A comma separated list of keywords. Support of the word STOP is the minimum requirement for OPT OUT.
A comma separated list of keywords. Support of the word START is the minimum requirement for OPT OUT.
Provide an example of the message that will be sent after a customer has opted in.
Provide an example of the message that will be sent after a customer has opted out.
Indicates the campaign follows CTIA messaging principles and best practices.
Campaign successfully created
UUID of the campaign.
Campaign name
Describes status of Campaign Subscription
Campaign status
A use case that best matches the purpose of the campaign.
If use case is MIXED or LOW_VOLUME mixed an array of 2-5 use cases.
A detailed description of what the campaign is for.
Whether messages will contain links. Provide at least one sample containing a link.
Whether messages will contain phone number. Provide at least one sample containing a phone number.
Whether a campaign will be associated with more than 50 numbers e.g. customer service use case.
Whether a campaign contains age-gated content based on carrier/ctia guidelines.
Whether a campaign includes content related to direct lending or loan arrangements.
Confirm customer opt in is collected and processed.
Confirm customer opt out is collected and processed.
Confirm an info message is returned if a customer sends "HELP".
Between 1-5 sample messages. If directLending, embeddedPhone, embeddedLink is true provide relevant examples.
Provide details of how the customer will opt into this campaign. If you have a live web opt-in provide the URL and ensure the page has details on the T&Cs/data collection for opting in, and how to opt out.
Help message of the campaign. A help message shall state the name of the service, contact (email or call centre), OPT IN and OPT OUT keywords.
A comma separated list of keywords. Support of the word HELP is the minimum requirement for requesting help/info.
A comma separated list of keywords. Support of the word STOP is the minimum requirement for OPT OUT.
A comma separated list of keywords. Support of the word START is the minimum requirement for OPT OUT.
Provide an example of the message that will be sent after a customer has opted in.
Provide an example of the message that will be sent after a customer has opted out.
Indicates the campaign follows CTIA messaging principles and best practices.
UUID of the brand associated with this campaign. The specified brand MUST be APPROVED.
Rejection details
Attachments associated with this campaign.
Timestamp (UTC) when the campaign was created.
Timestamp (UTC) when the campaign was last updated.
To start receiving notifications via webhooks, the first step is to create a subscription. A webhook subscription specifies the destination URL for events and defines how they should be filtered. During setup, you can select which events to send to the specified URL. You can create multiple webhook subscriptions to route different types of events to various URLs as needed. Event filters are applied using AND operators, meaning that all specified criteria must be met for an event to be sent. If you want to handle multiple interactionTypes, you’ll need to create separate webhook subscriptions for each.
The service that the webhook is subscribed to. For example, to get events regarding channels, the service would be channels
.
The event name identifies the webhook event, such as sms.outbound
for notifications about SMS messages being sent.
"sms.outbound"
Filters to apply to the events that are sent to the webhook. This is a key-value list of filters that are specific to the service that the webhook is subscribed to.
One example would be a key of channelId
and a value of a UUID (in string format) that represents a channel.
The URL of the webhook is used to send events to the webhook. The URL must be a valid URL that respects the established pattern and is accessible from the internet.
"https://example.com/webhook"
^https://([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}(/[^\s]*)?$
The signing key for the webhook and can be used to verify the authenticity of the webhook.
"KeV+/HGoIQrxuE5YPCRR6AuQOJveldYNNhbVi1i22qk="
The webhook subscription was created successfully.
The unique identifier for the webhook subscription. This identifier is used to reference the webhook subscription in other API calls.
"cb28a94e-8557-4394-80ea-5bbd2170d434"
"b4e02c85-c6d2-4b15-8885-e09671799c61"
The service that the webhook is subscribed to. For example, to get events regarding channels, the service would be channels
.
The event name identifies the webhook event, such as sms.outbound
for notifications about SMS messages being sent.
"sms.outbound"
The URL of the webhook is used to send events to the webhook. The URL must be a valid URL that respects the established pattern and is accessible from the internet.
"https://example.com/webhook"
^https://([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}(/[^\s]*)?$
The signing key for the webhook and can be used to verify the authenticity of the webhook.
"KeV+/HGoIQrxuE5YPCRR6AuQOJveldYNNhbVi1i22qk="
To start receiving notifications via webhooks, the first step is to create a subscription. A webhook subscription specifies the destination URL for events and defines how they should be filtered. During setup, you can select which events to send to the specified URL. You can create multiple webhook subscriptions to route different types of events to various URLs as needed. Event filters are applied using AND operators, meaning that all specified criteria must be met for an event to be sent. If you want to handle multiple interactionTypes, you’ll need to create separate webhook subscriptions for each.
The ID for the workspace.
"b4e02c85-c6d2-4b15-8885-e09671799c61"
The ID for the organization.
"cb28a94e-8557-4394-80ea-5bbd2170d434"
The service that the webhook is subscribed to. For example, to get events regarding channels, the service would be channels
.
The event name identifies the webhook event, such as sms.outbound
for notifications about SMS messages being sent.
"sms.outbound"
Filters to apply to the events that are sent to the webhook. This is a key-value list of filters that are specific to the service that the webhook is subscribed to.
One example would be a key of channelId
and a value of a UUID (in string format) that represents a channel.
The URL of the webhook is used to send events to the webhook. The URL must be a valid URL that respects the established pattern and is accessible from the internet.
"https://example.com/webhook"
^https://([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}(/[^\s]*)?$
The signing key for the webhook and can be used to verify the authenticity of the webhook.
"KeV+/HGoIQrxuE5YPCRR6AuQOJveldYNNhbVi1i22qk="
The webhook subscription was created successfully.
The unique identifier for the webhook subscription. This identifier is used to reference the webhook subscription in other API calls.
"cb28a94e-8557-4394-80ea-5bbd2170d434"
"b4e02c85-c6d2-4b15-8885-e09671799c61"
The service that the webhook is subscribed to. For example, to get events regarding channels, the service would be channels
.
The event name identifies the webhook event, such as sms.outbound
for notifications about SMS messages being sent.
"sms.outbound"
The URL of the webhook is used to send events to the webhook. The URL must be a valid URL that respects the established pattern and is accessible from the internet.
"https://example.com/webhook"
^https://([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}(/[^\s]*)?$
The signing key for the webhook and can be used to verify the authenticity of the webhook.
"KeV+/HGoIQrxuE5YPCRR6AuQOJveldYNNhbVi1i22qk="
OK
The ID of this connector.
The ID of the workspace this connector belongs to.
The Name of this connector.
The Region in which this connector was installed in.
The Description of this connector.
Pre-configured arguments for this connector.
The slug for the template this connector is based on.
The ref for the template this connector is based on.
When the connector was created.
When the connector was last updated.
Provide the arguments required by the security scheme(s) on the connector template.
OK
The ID of this connector.
The ID of the workspace this connector belongs to.
The Name of this connector.
The Region in which this connector was installed in.
The Description of this connector.
Pre-configured arguments for this connector.
The slug for the template this connector is based on.
The ref for the template this connector is based on.
When the connector was created.
When the connector was last updated.