10DLC - Register a campaign via the API 10DLC - Register a campaign via the API

10DLC - Register a campaign via the API

10DLC Product Manager

 

Quick access:

 

Please make sure you have read our 10DLC campaign registration guide before proceeding.

important icon.png

Important information

Campaign applications go through several reviews to ensure compliance to 10DLC requirements and CTIA guidelines. These reviews have increased the processing time, so we advise you to submit your campaign applications several weeks in advance to reduce the risk of disruption.

 

You can find the complete 10DLC API description on this page.

 

Step 1 - Qualify your brand for a specific use-case

When using our APIs, you need to complete a preliminary step to registering the campaign itself. If registering a new campaign for a use-case that has never been used on your brand, you must first make sure that your brand is allowed to create a campaign for this specific use case.

 

This is done by calling the following endpoint:

GET 'https://api-eu.vonage.com/v1/10dlc/brands/:brand_id/usecases/:usecase'

 

If successful, you will get a 200 - OK response containing a payload that comprises of the use case qualified, as well as JSON objects for each MNO (Mobile Network Operator, or carrier) throughputs you can expect:

{
"usecase": "POLITICAL",
"mno_metadata": [
{
"network_id": "10017",
"min_msg_samples": 2,
"att_msg_class": "Q",
"req_subscriber_opt_in": false,
"req_subscriber_help": false,
"req_subscriber_opt_out": false,
"mno": "AT&T",
"att_tpm": 2000,
"att_mms_tpm": 2000,
"mno_support": true,
"mno_review": true,
"no_embedded_link": true,
"qualify": true,
"tmo_brand_tier": null
},
]
}

 

Step 2 - Register your campaign

Before proceeding, make sure you understand the 10DLC requirements and that all the information provided on your campaign application complies with those requirements.

POST 'https://api-eu.vonage.com/v1/10dlc/brands/:brand_id/campaigns'
{
"account_id" = "abcdef01", // required
"usecase" = "string", // required
"sub_usecases" = ["string"],
"label" = "string",
"description" = "string", // required - min 40 characters
"reseller_id" = "string", // required if application on behalf of customer
"message_flow" = "string", // deprecating later in 2024
"message_flow_details" = { // required - Replacing the older "message_flow" attribute - Max overall char: 4096
"brand_name" = "string",
"consent_mechanism" = [{ // requires between 1 and 5 items
"method" = "string", // ["ONLINE_FORM", "TEXT_TO_JOIN", "LIVE_OPERATOR", "POINT_OF_SALE", "OTHER"] - Use "POINT_OF_SALE" for paper forms
"details" = "string", // required
"attachment" = "string" // required (except optional when method is "TEXT_TO_JOIN") - max 255 char - Add link to URL of online form or hostel document
}],
"pricing_disclosure" = boolean, // required true - adds statement "Messages & data rates may apply"
"frequency" = ["ONE_TIME", "RECURRING"], // requires one of the options - "ONE_TIME" adds "One message per request", "RECURRING" adds "Message frequency varies"
"privacy_policy" = "string.url", // required
"terms_and_conditions" = "string.url", // required
"carrier_disclaimer" = boolean // optional - if the brand T&Cs don't include this statement: "Carriers are not liable for delayed or undelivered messages"
}
"subscriber_opt_in" = boolean, // required
"opt_in_keywords" = "string", // required if Text to Join opt-in available
"opt_in_message" = "string", // required if Text to Join opt-in available
"subscriber_opt_out" = boolean, // required
"opt_out_keywords" = "string", // default is "STOP"
"opt_out_message" = "string", // required
"subscriber_help" = boolean, // required
"help_keywords" = "string", // default is "HELP"
"help_message" = "string", // required
"sample_one" = "string", // required
"sample_two" = "string", // required (for all use cases except 2FA)
"sample_three" = "string",
"sample_four" = "string",
"sample_five" = "string",
"number_pool" = boolean,
"embedded_link" = boolean,
"embedded_phone" = boolean,
"age_gated" = boolean,
"direct_lending" = boolean,
"tc_agreed" = boolean. // required
}

 

Note that we are deprecating the current attribute named "message_flow" on April 1st 2024. Please update your implementation to provide instead the new "message_flow_details" object.

 

Example of campaign application:

POST 'https://api-eu.vonage.com/v1/10dlc/brands/:brand_id/campaigns'
{
"account_id" = "abcdef01",
"usecase" = "Low Volume Mixed",
"sub_usecases" = ["Customer Care", "Account Notification"],
"label" = "Geri's Limo app - ride notifications",
"description" = "This campaign aims to provide schedules of Limousine meet ups",
"message_flow_details" = {
"brand_name" = "Geri's Limo",
"consent_mechanism" = [{
"method" = "POINT_OF_SALE",
"details" = "Flyers promote the brand in coffee shops in the city.",
"attachment" = "http://www.dropbox.com/abcde01"
       }],
"pricing_disclosure" = true,
"frequency" = "RECURRING",
"privacy_policy" = "https://example.com/privacy.html",
"terms_and_conditions" = "https://example.com/terms.html"
}
"subscriber_opt_in" = true,
"subscriber_opt_out" = true,
"opt_out_message" = "Geri’s Limo: You have successfully unsubscribed & will no longer receive any additional messages." [optional: "Text HELP for assistance or JOIN to rejoin.",
"subscriber_help" = true,
"help_message" = "Geri’s Limo: For support, please visit www.website.com, or contact us at care@email.com, or call 1-XXX-XXX-XXXX.",
"sample_one" = "Geri's Limo: Your driver has arrived! Reply STOP to opt-out.",
"sample_two" = "Geri's Limo: Thank you for using our services. Reply STOP to opt-out.",
"number_pool" = true,
"tc_agreed" = true.
}

 

When the request has been processed, you will receive a 200 - OK response with the payload containing the campaign ID, the attributes provided when creating the campaign as well as the campaign status.

 

From our example above, the response payload would look like:

{
"account_id": "abcdef01",
"brand_id": "string",
"campaign_id": "VC987XYZ",
"tcr_campaign_id": "C123ABC",
"usecase": "Low Volume Mixed",
"sub_usecases": [
"Customer Care",
"Account Notification"
],
"label": "Geri's Limo app - ride notifications",
"description": "This campaign aims to provide schedules of Limousine meet ups",
"message_flow": "Brand: Geri's Limo, Consent mechanisms: - POINT_OF_SALE: Flyers promote the brand in coffee shops in the city. Link: http://www.dropbox.com/abcde01. Message & data rates may apply. - Message frequency varies. Text HELP for help. Text STOP to opt-out. Terms & Conditions: https://example.com/terms.html Privacy Policy: https://example.com/privacy.html",
"age_gated": false,
"direct_lending": false,
"subscriber_opt_in": true,
"subscriber_opt_out": true,
"opt_out_keywords": "STOP",
"opt_out_message": "Geri’s Limo: You have successfully unsubscribed & will no longer receive any additional messages.",
"subscriber_help": true,
"help_keywords": "HELP",
"help_message": "Geri’s Limo: For support, please visit www.website.com, or contact us at care@email.com, or call 1-XXX-XXX-XXXX.",
"sample_one": "Geri's Limo: Your driver has arrived! Reply STOP to opt-out.",
"sample_two" = "Geri's Limo: Thank you for using our services. Reply STOP to opt-out.",
"number_pool": true,
"embedded_link": false,
"embedded_phone": false,
"auto_renewal": true,
"partner": false,
"mno_metadata": [],
"status": "PENDING_REVIEW",
"tcr_status": "UNKNOWN",
"created_date": "2023-03-14T13:12:37.183Z",
"last_updated": "2023-03-14T13:12:37.183Z",
"billed_date": "2023-03-14T13:12:37.183Z",
"last_status_changes": [],
"_links": {
"self": {
"href": "string"
},
"brand": {
"href": "string"
},
"numbers": {
"href": "string"
}
}
}

 

You have now completed the registration of your 10DLC campaign.

 

Back to 10DLC campaign registration guide

Back to Guide of guides