10DLC Brand and Campaign Provisioning

Overview

APIs relating to 10DLC brand and campaign management

For more information, please read the following documentation:

Changes

Upcoming changes

Reseller requirements

Date: Dec 1st 2024
The feature was postponed by TCR. In an effort to give more time to adapt to our customers, this change is being rescheduled and should be released around the 6th of January 2025.

TCR is making the reseller ID attribute mandatory on all new and updated campaigns starting on December 1st.

Customer campaigns (aka non reseller campaigns) will be assigned a default reseller ID R000000 by Vonage. Preventing any further modification to the reseller information for that campaign.

As a reminder, Vonage introduced the concept of reseller brands, handling automatically the reseller information for all its campaigns, by setting brand.reseller to true.

More information here.


message_flow deprecation

Date: Jan 6th 2025

The message_flow field in the POST /brands/{brand_id}/campaigns and PATCH /brands/{brand_id}/campaigns/{campaign_id} endpoints was deprecated in favor of message_flow_details. It will be removed on January 6th.

The message_flow will still exist and be readable. Its value will be computed by the API from the message_flow_details object.

Please make the appropriate changes in the time.

Changelog

Active campaign reviews

Date: Oct 28th 2024

Vonage is introducing a new traffic_enabled flag and will now trigger a new compliance review after campaign updates. Please remember that 10DLC campaign should adhere to 10DLC compliance requirements through their lifetime.

More information on:

  • The october changes here.
  • 10DLC campaign requirements here.

Authentication+

Date: Oct 17th 2024

TCR is introduction a new brand verification process named "Authentication+" which involves a 2FA verification email. This new verification process is required for all new and existing PUBLIC_PROFIT brands. TCR will extend to more entity types in the future.

More information here.

Download OpenAPI Specification

Enums

The list of values available for enum properties across all APIs

Available Operations

Get enumeration values

Get the list of all enum values available for each enum parameter

gethttps://api-eu.vonage.com/v1/10dlc/enum

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Responses
Content Type
application/json

List of all enumeration values

alt_business_id_type
array
id
string
brand_relationship
array
id
string
brand_status
array
id
string
campaign_status
array
description
string
id
string
campaign_op_status
array
id
string
compliance
array
id
string
country
array
description
string
id
string
cnp
array
description
string
id
string
dca
array
description
string
id
string
entity_type
array
id
string
event_category
array
id
string
identity_status
array
id
string
mno
array
id
string
mno
string
nudge_intent
array
id
string
number_status
array
id
string
opt_attribute_name
array
description
string
id
string
type
string
sharing_status
array
id
string
stock_exchange
array
country
string
description
string
id
string
tcr_campaign_status
array
id
string
tmo_brand_tier
array
id
string
usecase
array
classification
string
description
string
display_name
string
id
string
max_sub_usecases
number
min_sub_usecases
number
valid_sub_usecase
number
min_msg_samples
number

This is the minimum number of message samples for a campaign's usecase. This does not account for additional samples needed by a campaign's sub usecases.

usstate
array
description
string
id
string
vertical
array
description
string
display_name
string
id
string
industry_id
string
vetting_class
array
description
string
display_name
string
enabled
number
id
string
validity_months
number
vetting_provider
array
display_name
string
id
string
vetting_classes
string
vetting_status
array
id
string
vetting_appeal_category
array
id
string
display_name
string
description
string

Example Response

{
   "alt_business_id_type": [
      {
         "id": "string"
      }
   ],
   "brand_relationship": [
      {
         "id": "string"
      }
   ],
   "brand_status": [
      {
         "id": "string"
      }
   ],
   "campaign_status": [
      {
         "description": "string",
         "id": "string"
      }
   ],
   "campaign_op_status": [
      {
         "id": "string"
      }
   ],
   "compliance": [
      {
         "id": "string"
      }
   ],
   "country": [
      {
         "description": "string",
         "id": "string"
      }
   ],
   "cnp": [
      {
         "description": "string",
         "id": "string"
      }
   ],
   "dca": [
      {
         "description": "string",
         "id": "string"
      }
   ],
   "entity_type": [
      {
         "id": "string"
      }
   ],
   "event_category": [
      {
         "id": "string"
      }
   ],
   "identity_status": [
      {
         "id": "string"
      }
   ],
   "mno": [
      {
         "id": "string",
         "mno": "string"
      }
   ],
   "nudge_intent": [
      {
         "id": "string"
      }
   ],
   "number_status": [
      {
         "id": "string"
      }
   ],
   "opt_attribute_name": [
      {
         "description": "string",
         "id": "string",
         "type": "string"
      }
   ],
   "sharing_status": [
      {
         "id": "string"
      }
   ],
   "stock_exchange": [
      {
         "country": "string",
         "description": "string",
         "id": "string"
      }
   ],
   "tcr_campaign_status": [
      {
         "id": "string"
      }
   ],
   "tmo_brand_tier": [
      {
         "id": "string"
      }
   ],
   "usecase": [
      {
         "classification": "string",
         "description": "string",
         "display_name": "string",
         "id": "string",
         "max_sub_usecases": 0,
         "min_sub_usecases": 0,
         "valid_sub_usecase": 0,
         "min_msg_samples": 0
      }
   ],
   "usstate": [
      {
         "description": "string",
         "id": "string"
      }
   ],
   "vertical": [
      {
         "description": "string",
         "display_name": "string",
         "id": "string",
         "industry_id": "string"
      }
   ],
   "vetting_class": [
      {
         "description": "string",
         "display_name": "string",
         "enabled": 0,
         "id": "string",
         "validity_months": 0
      }
   ],
   "vetting_provider": [
      {
         "display_name": "string",
         "id": "string",
         "vetting_classes": "string"
      }
   ],
   "vetting_status": [
      {
         "id": "string"
      }
   ],
   "vetting_appeal_category": [
      {
         "id": "string",
         "display_name": "string",
         "description": "string"
      }
   ]
}

Account

This section outlines the endpoints to view and manage all account level 10DLC features:

Get account settings

Get all 10DLC account level settings and features.

gethttps://api-eu.vonage.com/v1/10dlc/account

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Responses
Content Type
application/json

OK

opt_out_assist
boolean
exampletrue

Specifies whether opt-out assist is enabled for this account.

Documentation - Developer

It is only possible to enable opt out assist. To disable, please reach out to support.

Example Response

{
   "opt_out_assist": true
}

Update account settings

Update account settings. Oonly the primary account is allowed to update the account attributes.

patchhttps://api-eu.vonage.com/v1/10dlc/account

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Request Body
Content Type
application/json

opt_out_assist
boolean
Required
exampletrue

Specifies whether opt-out assist is enabled for this account.

Documentation - Developer

It is only possible to enable opt out assist. To disable, please reach out to support.

Example Request

{
   "opt_out_assist": true
}

Responses

No Content

Brands

This section outlines the endpoints to register and manage your 10DLC brands.

Guide - Requirements

Recently updated:

  • reseller (boolean): designates a brand as reseller brand
    Updating the reseller boolean on existing brands will attempt to update all existing campaigns with the reseller ID information.
    All campaigns registered on reseller brands will be designated as reseller campaigns automatically.
  • PUBLIC_PROFIT brands only
    • verification_email (string): Email address used for the Authentication+ verification
    • verification_email_completion_date (string): Completion date of the Authentication+ verification
  • Only registered 10DLC Resellers (PENDING or APPROVED) can register reseller brands

Get all brands with specific Account ID.

Retrieve all brands with Account ID.

gethttps://api-eu.vonage.com/v1/10dlc/brands

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Query Parameters

page
integer
Min1
example2

Page of results to jump to

page_size
integer
example10

Number of results per page

filter
array

Narrow down results based on matching conditions. Follow the comprehensive guide to learn how to craft filter queries.

status
string

One or multiple status can be given. Thus ACTIVE and SUSPENDED. The endpoint then returns the brands with the chosen status. If no status is chosen, both ACTIVE and SUSPENDED brands would be returned.

Must be one of:ACTIVESUSPENDEDTERMINATEDDELETED

Responses
Content Type
application/json

List of brands that are associated with an account

page_size
integer
example10

Items per page

page
integer
Min1
example2

Page Offset

total_pages
integer
Min1
example100

Number of pages in the entire result set

total_items
integer
example100

Number of items in the entire result set

_embedded
object
brands
array
account_id
string
exampleabcd1234

The Vonage Account ID

primary_account_id
string
exampleabcd1234

The Vonage Primary Account ID (the parent account of account_id).

entity_type
string
examplePUBLIC_PROFIT

Entity type behind the brand. This is the form of business establishment. NB: The GOVERNMENT entity_type is ONLY applicable to US governmental agencies (FBI, CIA, Department of defence etc.) Other countries’ governmental agencies must use NON_PROFIT entity type. Please refer to the /enum endpoint for an update list of valid values.

Must be one of:PRIVATE_PROFITPUBLIC_PROFITNON_PROFITSOLE_PROPRIETORGOVERNMENT
first_name
string
Max100
exampleJohn

First name of business contact. NB: Required for SOLE_PROPRIETOR entity type

last_name
string
Max100
exampleSmith

last name of business contact. NB: Required for SOLE_PROPRIETOR entity type

display_name
string
Max255
exampleVonage

Display or marketing name of the brand.

company_name
string
Max255
exampleVonage

Legal company name.

ein
string
Max21
example20-1111111

(Required for Non-profit) Government assigned corporate tax ID. EIN is 9-digits in U.S.A.

ein_issuing_country
string
exampleUS

ISO3166-Alpha2 country code.

universal_ein
string
Max50
example20-1111111

Universal EIN of Brand, Read-Only

alt_business_id_type
string
Max50
exampleDUNS

Required if alt_business_id is provided.

Must be one of:DUNSGIINLEI
alt_business_id
string
Max50
example150483782

Required if alt_business_id_type is provided.

phone
string
example15556660001

Valid phone number in E.164 international format without the + prefix.

mobile_phone
string
example123123222334

Valid mobile phone number in E.164 international format without the + prefix. It is required field for SoleProprietor brand.

street
string
Max100
example23 Main Street

Street number and name.

city
string
Max100
exampleHolmdel

City name

state
string
Max20
exampleNJ

State. Must be 2 letters code for U.S.A.

postal_code
string
Max10
example07733

Postal codes. Use 5 digit zipcode for United States

country
string
exampleUS

ISO3166-Alpha2 country code.

email
string
Max100
exampledevrel@vonage.com

Valid email address of brand support contact.

stock_symbol
string
Max10
exampleVG

Stock Symbol - Required if entity_type=PUBLIC_PROFIT.

stock_exchange
string
Max10
exampleNASDAQ

Required if entity_type=PUBLIC_PROFIT.

Must be one of:NONEAMEXAMXASXB3BMEBSEFRAICEXJSEKRXLONNASDAQNSENYSEOMXSEHKSSESTOSWXSZSETSXTWSEVSE
website
string
examplehttps://vonage.com

Brand website URL.

vertical
string
exampleTECHNOLOGY

Business/industry segment of this campaign. Use the /enum endpoint to get an updated list of verticals

Must be one of:REAL_ESTATEHEALTHCAREENERGYENTERTAINMENTRETAILAGRICULTUREINSURANCEEDUCATIONHOSPITALITYFINANCIALGAMBLINGCONSTRUCTIONNGOMANUFACTURINGGOVERNMENTTECHNOLOGYCOMMUNICATION
verification_email
string
Max100
exampleverification_email@vonage.com

Valid verification email address of brand. Required if entity_type=PUBLIC_PROFIT.

verification_email_completion_date
string(date-time)
example2019-08-24 14:15:22

Completion date when verification email address has been successfully verified.

reseller
boolean

Indicates if a brand is a reseller brand.

This can only be enabled if a valid reseller (status PENDING or APPROVED) is linked to the primary account of the brand.

Campaigns created on a reseller brand will automatically have their reseller_id field set with the primary account's reseller id.

brand_id
string
Max50
exampleBLQKOPK

TCR Brand ID.

campaign_count
integer
example5

Number of campaigns associated with the brand

carrier_suspensions
array
category
string

Summarize the reason of the suspension.

explanation
string

Detailed explanation of the cause of the suspension.

brand_relationship
string
exampleBASIC_ACCOUNT

Brand relationship level.

Must be one of:BASIC_ACCOUNTSMALL_ACCOUNTMEDIUM_ACCOUNTLARGE_ACCOUNTKEY_ACCOUNT
partner
boolean

Flag indicating the brand is related to a partner customer (brand & campaigns registered directly on TCR and shared with Vonage)

shared
boolean

True when the brand is shared with the current Account ID.

owner
boolean

True when the brand is owned by the requesting account.

status
string

Brand status.

reference_id
string

Unique identifier for preventing duplicate brand registration into TCR.

verified_date
string(date-time)

Date-time when brand mobile phone was verified.

created_date
string
example2019-08-24 14:15:22
last_updated
string
example2019-09-24 14:15:22
_links
object
self
object
href
string
examplehttps://api.nexmo.com/10dlc/brands/BLQKOPK
campaigns
object
href
string
examplehttps://api.nexmo.com/10dlc/brands/BLQKOPK/campaigns
_links
object
self
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK?page=2
next
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/?page=3
previous
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/?page=1
first
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/?page=1
last
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/?page=10

Example Response

{
   "page_size": 10,
   "page": 2,
   "total_pages": 100,
   "total_items": 100,
   "_embedded": {
      "brands": [
         {
            "account_id": "abcd1234",
            "primary_account_id": "abcd1234",
            "entity_type": "PUBLIC_PROFIT",
            "first_name": "John",
            "last_name": "Smith",
            "display_name": "Vonage",
            "company_name": "Vonage",
            "ein": "20-1111111",
            "ein_issuing_country": "US",
            "universal_ein": "20-1111111",
            "alt_business_id_type": "DUNS",
            "alt_business_id": "150483782",
            "phone": "15556660001",
            "mobile_phone": "123123222334",
            "street": "23 Main Street",
            "city": "Holmdel",
            "state": "NJ",
            "postal_code": "07733",
            "country": "US",
            "email": "devrel@vonage.com",
            "stock_symbol": "VG",
            "stock_exchange": "NASDAQ",
            "website": "https://vonage.com",
            "vertical": "TECHNOLOGY",
            "verification_email": "verification_email@vonage.com",
            "verification_email_completion_date": "2019-08-24 14:15:22",
            "reseller": true,
            "brand_id": "BLQKOPK",
            "campaign_count": 5,
            "carrier_suspensions": [
               [
                  {}
               ]
            ],
            "brand_relationship": "BASIC_ACCOUNT",
            "partner": true,
            "shared": true,
            "owner": true,
            "status": "string",
            "reference_id": "string",
            "verified_date": "2019-08-24T14:15:22Z",
            "created_date": "2019-08-24 14:15:22",
            "last_updated": "2019-09-24 14:15:22",
            "_links": {
               "self": {
                  "href": "https://api.nexmo.com/10dlc/brands/BLQKOPK"
               },
               "campaigns": {
                  "href": "https://api.nexmo.com/10dlc/brands/BLQKOPK/campaigns"
               }
            }
         }
      ]
   },
   "_links": {
      "self": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK?page=2"
      },
      "next": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/?page=3"
      },
      "previous": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/?page=1"
      },
      "first": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/?page=1"
      },
      "last": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/?page=10"
      }
   }
}

Create a new brand for your account

Create a new brand for your account. A brand is a business or individual identity behind the campaign. Most accounts will be created immediately, and you can move on to qualifying a new campaign for the brand. Some brands may require additional vetting. In such cases, please move on to the vetting API endpoints before attempting to create a campaign.

Please note the entity_type field, as that field value will help determine which fields are required.`

posthttps://api-eu.vonage.com/v1/10dlc/brands

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Request Body
Content Type
application/json

One Of
account_id
string
Required
exampleabcd1234

The Vonage Account ID

primary_account_id
string
exampleabcd1234

The Vonage Primary Account ID (the parent account of account_id).

entity_type
string
Required
examplePUBLIC_PROFIT

Entity type behind the brand. This is the form of business establishment. NB: The GOVERNMENT entity_type is ONLY applicable to US governmental agencies (FBI, CIA, Department of defence etc.) Other countries’ governmental agencies must use NON_PROFIT entity type. Please refer to the /enum endpoint for an update list of valid values.

Must be one of:PRIVATE_PROFITPUBLIC_PROFITNON_PROFITSOLE_PROPRIETORGOVERNMENT
first_name
string
Max100
exampleJohn

First name of business contact. NB: Required for SOLE_PROPRIETOR entity type

last_name
string
Max100
exampleSmith

last name of business contact. NB: Required for SOLE_PROPRIETOR entity type

display_name
string
Required
Max255
exampleVonage

Display or marketing name of the brand.

company_name
string
Required
Max255
exampleVonage

Legal company name.

ein
string
Required
Max21
example20-1111111

(Required for Non-profit) Government assigned corporate tax ID. EIN is 9-digits in U.S.A.

ein_issuing_country
string
exampleUS

ISO3166-Alpha2 country code.

universal_ein
string
Max50
example20-1111111

Universal EIN of Brand, Read-Only

alt_business_id_type
string
Max50
exampleDUNS

Required if alt_business_id is provided.

Must be one of:DUNSGIINLEI
alt_business_id
string
Max50
example150483782

Required if alt_business_id_type is provided.

phone
string
Required
example15556660001

Valid phone number in E.164 international format without the + prefix.

mobile_phone
string
example123123222334

Valid mobile phone number in E.164 international format without the + prefix. It is required field for SoleProprietor brand.

street
string
Required
Max100
example23 Main Street

Street number and name.

city
string
Required
Max100
exampleHolmdel

City name

state
string
Required
Max20
exampleNJ

State. Must be 2 letters code for U.S.A.

postal_code
string
Required
Max10
example07733

Postal codes. Use 5 digit zipcode for United States

country
string
Required
exampleUS

ISO3166-Alpha2 country code.

email
string
Required
Max100
exampledevrel@vonage.com

Valid email address of brand support contact.

stock_symbol
string
Max10
exampleVG

Stock Symbol - Required if entity_type=PUBLIC_PROFIT.

stock_exchange
string
Max10
exampleNASDAQ

Required if entity_type=PUBLIC_PROFIT.

Must be one of:NONEAMEXAMXASXB3BMEBSEFRAICEXJSEKRXLONNASDAQNSENYSEOMXSEHKSSESTOSWXSZSETSXTWSEVSE
website
string
examplehttps://vonage.com

Brand website URL.

vertical
string
Required
exampleTECHNOLOGY

Business/industry segment of this campaign. Use the /enum endpoint to get an updated list of verticals

Must be one of:REAL_ESTATEHEALTHCAREENERGYENTERTAINMENTRETAILAGRICULTUREINSURANCEEDUCATIONHOSPITALITYFINANCIALGAMBLINGCONSTRUCTIONNGOMANUFACTURINGGOVERNMENTTECHNOLOGYCOMMUNICATION
verification_email
string
Max100
exampleverification_email@vonage.com

Valid verification email address of brand. Required if entity_type=PUBLIC_PROFIT.

verification_email_completion_date
string(date-time)
example2019-08-24 14:15:22

Completion date when verification email address has been successfully verified.

reseller
boolean

Indicates if a brand is a reseller brand.

This can only be enabled if a valid reseller (status PENDING or APPROVED) is linked to the primary account of the brand.

Campaigns created on a reseller brand will automatically have their reseller_id field set with the primary account's reseller id.

Example Request»Fields required to create a brand with type other than PUBLIC_PROFIT or SOLE_PROPRIETOR.

{
   "account_id": "abcd1234",
   "primary_account_id": "abcd1234",
   "entity_type": "PUBLIC_PROFIT",
   "first_name": "John",
   "last_name": "Smith",
   "display_name": "Vonage",
   "company_name": "Vonage",
   "ein": "20-1111111",
   "ein_issuing_country": "US",
   "universal_ein": "20-1111111",
   "alt_business_id_type": "DUNS",
   "alt_business_id": "150483782",
   "phone": "15556660001",
   "mobile_phone": "123123222334",
   "street": "23 Main Street",
   "city": "Holmdel",
   "state": "NJ",
   "postal_code": "07733",
   "country": "US",
   "email": "devrel@vonage.com",
   "stock_symbol": "VG",
   "stock_exchange": "NASDAQ",
   "website": "https://vonage.com",
   "vertical": "TECHNOLOGY",
   "verification_email": "verification_email@vonage.com",
   "verification_email_completion_date": "2019-08-24 14:15:22",
   "reseller": true
}

Responses
Content Type
application/json

Return a single brand

account_id
string
exampleabcd1234

The Vonage Account ID

primary_account_id
string
exampleabcd1234

The Vonage Primary Account ID (the parent account of account_id).

entity_type
string
examplePUBLIC_PROFIT

Entity type behind the brand. This is the form of business establishment. NB: The GOVERNMENT entity_type is ONLY applicable to US governmental agencies (FBI, CIA, Department of defence etc.) Other countries’ governmental agencies must use NON_PROFIT entity type. Please refer to the /enum endpoint for an update list of valid values.

Must be one of:PRIVATE_PROFITPUBLIC_PROFITNON_PROFITSOLE_PROPRIETORGOVERNMENT
first_name
string
Max100
exampleJohn

First name of business contact. NB: Required for SOLE_PROPRIETOR entity type

last_name
string
Max100
exampleSmith

last name of business contact. NB: Required for SOLE_PROPRIETOR entity type

display_name
string
Max255
exampleVonage

Display or marketing name of the brand.

company_name
string
Max255
exampleVonage

Legal company name.

ein
string
Max21
example20-1111111

(Required for Non-profit) Government assigned corporate tax ID. EIN is 9-digits in U.S.A.

ein_issuing_country
string
exampleUS

ISO3166-Alpha2 country code.

universal_ein
string
Max50
example20-1111111

Universal EIN of Brand, Read-Only

alt_business_id_type
string
Max50
exampleDUNS

Required if alt_business_id is provided.

Must be one of:DUNSGIINLEI
alt_business_id
string
Max50
example150483782

Required if alt_business_id_type is provided.

phone
string
example15556660001

Valid phone number in E.164 international format without the + prefix.

mobile_phone
string
example123123222334

Valid mobile phone number in E.164 international format without the + prefix. It is required field for SoleProprietor brand.

street
string
Max100
example23 Main Street

Street number and name.

city
string
Max100
exampleHolmdel

City name

state
string
Max20
exampleNJ

State. Must be 2 letters code for U.S.A.

postal_code
string
Max10
example07733

Postal codes. Use 5 digit zipcode for United States

country
string
exampleUS

ISO3166-Alpha2 country code.

email
string
Max100
exampledevrel@vonage.com

Valid email address of brand support contact.

stock_symbol
string
Max10
exampleVG

Stock Symbol - Required if entity_type=PUBLIC_PROFIT.

stock_exchange
string
Max10
exampleNASDAQ

Required if entity_type=PUBLIC_PROFIT.

Must be one of:NONEAMEXAMXASXB3BMEBSEFRAICEXJSEKRXLONNASDAQNSENYSEOMXSEHKSSESTOSWXSZSETSXTWSEVSE
website
string
examplehttps://vonage.com

Brand website URL.

vertical
string
exampleTECHNOLOGY

Business/industry segment of this campaign. Use the /enum endpoint to get an updated list of verticals

Must be one of:REAL_ESTATEHEALTHCAREENERGYENTERTAINMENTRETAILAGRICULTUREINSURANCEEDUCATIONHOSPITALITYFINANCIALGAMBLINGCONSTRUCTIONNGOMANUFACTURINGGOVERNMENTTECHNOLOGYCOMMUNICATION
verification_email
string
Max100
exampleverification_email@vonage.com

Valid verification email address of brand. Required if entity_type=PUBLIC_PROFIT.

verification_email_completion_date
string(date-time)
example2019-08-24 14:15:22

Completion date when verification email address has been successfully verified.

reseller
boolean

Indicates if a brand is a reseller brand.

This can only be enabled if a valid reseller (status PENDING or APPROVED) is linked to the primary account of the brand.

Campaigns created on a reseller brand will automatically have their reseller_id field set with the primary account's reseller id.

brand_id
string
Max50
exampleBLQKOPK

TCR Brand ID.

campaign_count
integer
example5

Number of campaigns associated with the brand

carrier_suspensions
array
category
string

Summarize the reason of the suspension.

explanation
string

Detailed explanation of the cause of the suspension.

brand_relationship
string
exampleBASIC_ACCOUNT

Brand relationship level.

Must be one of:BASIC_ACCOUNTSMALL_ACCOUNTMEDIUM_ACCOUNTLARGE_ACCOUNTKEY_ACCOUNT
partner
boolean

Flag indicating the brand is related to a partner customer (brand & campaigns registered directly on TCR and shared with Vonage)

shared
boolean

True when the brand is shared with the current Account ID.

owner
boolean

True when the brand is owned by the requesting account.

status
string

Brand status.

reference_id
string

Unique identifier for preventing duplicate brand registration into TCR.

verified_date
string(date-time)

Date-time when brand mobile phone was verified.

created_date
string
example2019-08-24 14:15:22
last_updated
string
example2019-09-24 14:15:22
_links
object
self
object
href
string
examplehttps://api.nexmo.com/10dlc/brands/BLQKOPK
campaigns
object
href
string
examplehttps://api.nexmo.com/10dlc/brands/BLQKOPK/campaigns

Example Response

{
   "account_id": "abcd1234",
   "primary_account_id": "abcd1234",
   "entity_type": "PUBLIC_PROFIT",
   "first_name": "John",
   "last_name": "Smith",
   "display_name": "Vonage",
   "company_name": "Vonage",
   "ein": "20-1111111",
   "ein_issuing_country": "US",
   "universal_ein": "20-1111111",
   "alt_business_id_type": "DUNS",
   "alt_business_id": "150483782",
   "phone": "15556660001",
   "mobile_phone": "123123222334",
   "street": "23 Main Street",
   "city": "Holmdel",
   "state": "NJ",
   "postal_code": "07733",
   "country": "US",
   "email": "devrel@vonage.com",
   "stock_symbol": "VG",
   "stock_exchange": "NASDAQ",
   "website": "https://vonage.com",
   "vertical": "TECHNOLOGY",
   "verification_email": "verification_email@vonage.com",
   "verification_email_completion_date": "2019-08-24 14:15:22",
   "reseller": true,
   "brand_id": "BLQKOPK",
   "campaign_count": 5,
   "carrier_suspensions": [
      [
         {}
      ]
   ],
   "brand_relationship": "BASIC_ACCOUNT",
   "partner": true,
   "shared": true,
   "owner": true,
   "status": "string",
   "reference_id": "string",
   "verified_date": "2019-08-24T14:15:22Z",
   "created_date": "2019-08-24 14:15:22",
   "last_updated": "2019-09-24 14:15:22",
   "_links": {
      "self": {
         "href": "https://api.nexmo.com/10dlc/brands/BLQKOPK"
      },
      "campaigns": {
         "href": "https://api.nexmo.com/10dlc/brands/BLQKOPK/campaigns"
      }
   }
}

Get a brand by Brand ID.

Retrieve a specific brand with Brand ID.

gethttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

Responses
Content Type
application/json

Return a single brand

account_id
string
exampleabcd1234

The Vonage Account ID

primary_account_id
string
exampleabcd1234

The Vonage Primary Account ID (the parent account of account_id).

entity_type
string
examplePUBLIC_PROFIT

Entity type behind the brand. This is the form of business establishment. NB: The GOVERNMENT entity_type is ONLY applicable to US governmental agencies (FBI, CIA, Department of defence etc.) Other countries’ governmental agencies must use NON_PROFIT entity type. Please refer to the /enum endpoint for an update list of valid values.

Must be one of:PRIVATE_PROFITPUBLIC_PROFITNON_PROFITSOLE_PROPRIETORGOVERNMENT
first_name
string
Max100
exampleJohn

First name of business contact. NB: Required for SOLE_PROPRIETOR entity type

last_name
string
Max100
exampleSmith

last name of business contact. NB: Required for SOLE_PROPRIETOR entity type

display_name
string
Max255
exampleVonage

Display or marketing name of the brand.

company_name
string
Max255
exampleVonage

Legal company name.

ein
string
Max21
example20-1111111

(Required for Non-profit) Government assigned corporate tax ID. EIN is 9-digits in U.S.A.

ein_issuing_country
string
exampleUS

ISO3166-Alpha2 country code.

universal_ein
string
Max50
example20-1111111

Universal EIN of Brand, Read-Only

alt_business_id_type
string
Max50
exampleDUNS

Required if alt_business_id is provided.

Must be one of:DUNSGIINLEI
alt_business_id
string
Max50
example150483782

Required if alt_business_id_type is provided.

phone
string
example15556660001

Valid phone number in E.164 international format without the + prefix.

mobile_phone
string
example123123222334

Valid mobile phone number in E.164 international format without the + prefix. It is required field for SoleProprietor brand.

street
string
Max100
example23 Main Street

Street number and name.

city
string
Max100
exampleHolmdel

City name

state
string
Max20
exampleNJ

State. Must be 2 letters code for U.S.A.

postal_code
string
Max10
example07733

Postal codes. Use 5 digit zipcode for United States

country
string
exampleUS

ISO3166-Alpha2 country code.

email
string
Max100
exampledevrel@vonage.com

Valid email address of brand support contact.

stock_symbol
string
Max10
exampleVG

Stock Symbol - Required if entity_type=PUBLIC_PROFIT.

stock_exchange
string
Max10
exampleNASDAQ

Required if entity_type=PUBLIC_PROFIT.

Must be one of:NONEAMEXAMXASXB3BMEBSEFRAICEXJSEKRXLONNASDAQNSENYSEOMXSEHKSSESTOSWXSZSETSXTWSEVSE
website
string
examplehttps://vonage.com

Brand website URL.

vertical
string
exampleTECHNOLOGY

Business/industry segment of this campaign. Use the /enum endpoint to get an updated list of verticals

Must be one of:REAL_ESTATEHEALTHCAREENERGYENTERTAINMENTRETAILAGRICULTUREINSURANCEEDUCATIONHOSPITALITYFINANCIALGAMBLINGCONSTRUCTIONNGOMANUFACTURINGGOVERNMENTTECHNOLOGYCOMMUNICATION
verification_email
string
Max100
exampleverification_email@vonage.com

Valid verification email address of brand. Required if entity_type=PUBLIC_PROFIT.

verification_email_completion_date
string(date-time)
example2019-08-24 14:15:22

Completion date when verification email address has been successfully verified.

reseller
boolean

Indicates if a brand is a reseller brand.

This can only be enabled if a valid reseller (status PENDING or APPROVED) is linked to the primary account of the brand.

Campaigns created on a reseller brand will automatically have their reseller_id field set with the primary account's reseller id.

brand_id
string
Max50
exampleBLQKOPK

TCR Brand ID.

campaign_count
integer
example5

Number of campaigns associated with the brand

carrier_suspensions
array
category
string

Summarize the reason of the suspension.

explanation
string

Detailed explanation of the cause of the suspension.

brand_relationship
string
exampleBASIC_ACCOUNT

Brand relationship level.

Must be one of:BASIC_ACCOUNTSMALL_ACCOUNTMEDIUM_ACCOUNTLARGE_ACCOUNTKEY_ACCOUNT
partner
boolean

Flag indicating the brand is related to a partner customer (brand & campaigns registered directly on TCR and shared with Vonage)

shared
boolean

True when the brand is shared with the current Account ID.

owner
boolean

True when the brand is owned by the requesting account.

status
string

Brand status.

reference_id
string

Unique identifier for preventing duplicate brand registration into TCR.

verified_date
string(date-time)

Date-time when brand mobile phone was verified.

created_date
string
example2019-08-24 14:15:22
last_updated
string
example2019-09-24 14:15:22
_links
object
self
object
href
string
examplehttps://api.nexmo.com/10dlc/brands/BLQKOPK
campaigns
object
href
string
examplehttps://api.nexmo.com/10dlc/brands/BLQKOPK/campaigns

Example Response

{
   "account_id": "abcd1234",
   "primary_account_id": "abcd1234",
   "entity_type": "PUBLIC_PROFIT",
   "first_name": "John",
   "last_name": "Smith",
   "display_name": "Vonage",
   "company_name": "Vonage",
   "ein": "20-1111111",
   "ein_issuing_country": "US",
   "universal_ein": "20-1111111",
   "alt_business_id_type": "DUNS",
   "alt_business_id": "150483782",
   "phone": "15556660001",
   "mobile_phone": "123123222334",
   "street": "23 Main Street",
   "city": "Holmdel",
   "state": "NJ",
   "postal_code": "07733",
   "country": "US",
   "email": "devrel@vonage.com",
   "stock_symbol": "VG",
   "stock_exchange": "NASDAQ",
   "website": "https://vonage.com",
   "vertical": "TECHNOLOGY",
   "verification_email": "verification_email@vonage.com",
   "verification_email_completion_date": "2019-08-24 14:15:22",
   "reseller": true,
   "brand_id": "BLQKOPK",
   "campaign_count": 5,
   "carrier_suspensions": [
      [
         {}
      ]
   ],
   "brand_relationship": "BASIC_ACCOUNT",
   "partner": true,
   "shared": true,
   "owner": true,
   "status": "string",
   "reference_id": "string",
   "verified_date": "2019-08-24T14:15:22Z",
   "created_date": "2019-08-24 14:15:22",
   "last_updated": "2019-09-24 14:15:22",
   "_links": {
      "self": {
         "href": "https://api.nexmo.com/10dlc/brands/BLQKOPK"
      },
      "campaigns": {
         "href": "https://api.nexmo.com/10dlc/brands/BLQKOPK/campaigns"
      }
   }
}

Partially update a brand

This operation applies a partial update of a brand enabling the CSP to keep brand details updated in the registry. Please note that if vetting is successfully completed, the ein ein_issuing_country and entity_type fields will be locked and the associated values cannot be changed.

patchhttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

Request Body
Content Type
application/json

company_name
string
Max255
exampleVonage

Legal company name.

first_name
string
Max100
exampleJohn

First name of business contact. NB: Required for SOLE_PROPRIETOR entity type

last_name
string
Max100
exampleSmith

last name of business contact. NB: Required for SOLE_PROPRIETOR entity type

display_name
string
Max255
exampleVonage

Display or marketing name of the brand.

ein
string
Max21
example20-1111111

(Required for Non-profit) Government assigned corporate tax ID. EIN is 9-digits in U.S.A.

ein_issuing_country
string
exampleUS

ISO3166-Alpha2 country code.

entity_type
string
examplePUBLIC_PROFIT

Entity type behind the brand. This is the form of business establishment. NB: The GOVERNMENT entity_type is ONLY applicable to US governmental agencies (FBI, CIA, Department of defence etc.) Other countries’ governmental agencies must use NON_PROFIT entity type. Please refer to the /enum endpoint for an update list of valid values.

Must be one of:PRIVATE_PROFITPUBLIC_PROFITNON_PROFITSOLE_PROPRIETORGOVERNMENT
website
string
examplehttps://vonage.com

Brand website URL.

phone
string
example15556660001

Valid phone number in E.164 international format without the + prefix.

mobile_phone
string
example123123222334

Valid mobile phone number in E.164 international format without the + prefix. It is required field for SoleProprietor brand.

street
string
Max100
example23 Main Street

Street number and name.

city
string
Max100
exampleHolmdel

City name

state
string
Max20
exampleNJ

State. Must be 2 letters code for U.S.A.

postal_code
string
Max10
example07733

Postal codes. Use 5 digit zipcode for United States

country
string
exampleUS

ISO3166-Alpha2 country code.

email
string
Max100
exampledevrel@vonage.com

Valid email address of brand support contact.

stock_symbol
string
Max10
exampleVG

Stock Symbol - Required if entity_type=PUBLIC_PROFIT.

stock_exchange
string
Max10
exampleNASDAQ

Required if entity_type=PUBLIC_PROFIT.

Must be one of:NONEAMEXAMXASXB3BMEBSEFRAICEXJSEKRXLONNASDAQNSENYSEOMXSEHKSSESTOSWXSZSETSXTWSEVSE
vertical
string
exampleTECHNOLOGY

Business/industry segment of this campaign. Use the /enum endpoint to get an updated list of verticals

Must be one of:REAL_ESTATEHEALTHCAREENERGYENTERTAINMENTRETAILAGRICULTUREINSURANCEEDUCATIONHOSPITALITYFINANCIALGAMBLINGCONSTRUCTIONNGOMANUFACTURINGGOVERNMENTTECHNOLOGYCOMMUNICATION
reseller
boolean

Indicates if a brand is a reseller brand.

This can only be enabled if a valid reseller (status PENDING or APPROVED) is linked to the primary account of the brand.

Campaigns created on a reseller brand will automatically have their reseller_id field set with the primary account's reseller id.

Example Request

{
   "company_name": "Vonage",
   "first_name": "John",
   "last_name": "Smith",
   "display_name": "Vonage",
   "ein": "20-1111111",
   "ein_issuing_country": "US",
   "entity_type": "PUBLIC_PROFIT",
   "website": "https://vonage.com",
   "phone": "15556660001",
   "mobile_phone": "123123222334",
   "street": "23 Main Street",
   "city": "Holmdel",
   "state": "NJ",
   "postal_code": "07733",
   "country": "US",
   "email": "devrel@vonage.com",
   "stock_symbol": "VG",
   "stock_exchange": "NASDAQ",
   "vertical": "TECHNOLOGY",
   "reseller": true
}

Responses
Content Type
application/json

Return a single brand

account_id
string
exampleabcd1234

The Vonage Account ID

primary_account_id
string
exampleabcd1234

The Vonage Primary Account ID (the parent account of account_id).

entity_type
string
examplePUBLIC_PROFIT

Entity type behind the brand. This is the form of business establishment. NB: The GOVERNMENT entity_type is ONLY applicable to US governmental agencies (FBI, CIA, Department of defence etc.) Other countries’ governmental agencies must use NON_PROFIT entity type. Please refer to the /enum endpoint for an update list of valid values.

Must be one of:PRIVATE_PROFITPUBLIC_PROFITNON_PROFITSOLE_PROPRIETORGOVERNMENT
first_name
string
Max100
exampleJohn

First name of business contact. NB: Required for SOLE_PROPRIETOR entity type

last_name
string
Max100
exampleSmith

last name of business contact. NB: Required for SOLE_PROPRIETOR entity type

display_name
string
Max255
exampleVonage

Display or marketing name of the brand.

company_name
string
Max255
exampleVonage

Legal company name.

ein
string
Max21
example20-1111111

(Required for Non-profit) Government assigned corporate tax ID. EIN is 9-digits in U.S.A.

ein_issuing_country
string
exampleUS

ISO3166-Alpha2 country code.

universal_ein
string
Max50
example20-1111111

Universal EIN of Brand, Read-Only

alt_business_id_type
string
Max50
exampleDUNS

Required if alt_business_id is provided.

Must be one of:DUNSGIINLEI
alt_business_id
string
Max50
example150483782

Required if alt_business_id_type is provided.

phone
string
example15556660001

Valid phone number in E.164 international format without the + prefix.

mobile_phone
string
example123123222334

Valid mobile phone number in E.164 international format without the + prefix. It is required field for SoleProprietor brand.

street
string
Max100
example23 Main Street

Street number and name.

city
string
Max100
exampleHolmdel

City name

state
string
Max20
exampleNJ

State. Must be 2 letters code for U.S.A.

postal_code
string
Max10
example07733

Postal codes. Use 5 digit zipcode for United States

country
string
exampleUS

ISO3166-Alpha2 country code.

email
string
Max100
exampledevrel@vonage.com

Valid email address of brand support contact.

stock_symbol
string
Max10
exampleVG

Stock Symbol - Required if entity_type=PUBLIC_PROFIT.

stock_exchange
string
Max10
exampleNASDAQ

Required if entity_type=PUBLIC_PROFIT.

Must be one of:NONEAMEXAMXASXB3BMEBSEFRAICEXJSEKRXLONNASDAQNSENYSEOMXSEHKSSESTOSWXSZSETSXTWSEVSE
website
string
examplehttps://vonage.com

Brand website URL.

vertical
string
exampleTECHNOLOGY

Business/industry segment of this campaign. Use the /enum endpoint to get an updated list of verticals

Must be one of:REAL_ESTATEHEALTHCAREENERGYENTERTAINMENTRETAILAGRICULTUREINSURANCEEDUCATIONHOSPITALITYFINANCIALGAMBLINGCONSTRUCTIONNGOMANUFACTURINGGOVERNMENTTECHNOLOGYCOMMUNICATION
verification_email
string
Max100
exampleverification_email@vonage.com

Valid verification email address of brand. Required if entity_type=PUBLIC_PROFIT.

verification_email_completion_date
string(date-time)
example2019-08-24 14:15:22

Completion date when verification email address has been successfully verified.

reseller
boolean

Indicates if a brand is a reseller brand.

This can only be enabled if a valid reseller (status PENDING or APPROVED) is linked to the primary account of the brand.

Campaigns created on a reseller brand will automatically have their reseller_id field set with the primary account's reseller id.

brand_id
string
Max50
exampleBLQKOPK

TCR Brand ID.

campaign_count
integer
example5

Number of campaigns associated with the brand

carrier_suspensions
array
category
string

Summarize the reason of the suspension.

explanation
string

Detailed explanation of the cause of the suspension.

brand_relationship
string
exampleBASIC_ACCOUNT

Brand relationship level.

Must be one of:BASIC_ACCOUNTSMALL_ACCOUNTMEDIUM_ACCOUNTLARGE_ACCOUNTKEY_ACCOUNT
partner
boolean

Flag indicating the brand is related to a partner customer (brand & campaigns registered directly on TCR and shared with Vonage)

shared
boolean

True when the brand is shared with the current Account ID.

owner
boolean

True when the brand is owned by the requesting account.

status
string

Brand status.

reference_id
string

Unique identifier for preventing duplicate brand registration into TCR.

verified_date
string(date-time)

Date-time when brand mobile phone was verified.

created_date
string
example2019-08-24 14:15:22
last_updated
string
example2019-09-24 14:15:22
_links
object
self
object
href
string
examplehttps://api.nexmo.com/10dlc/brands/BLQKOPK
campaigns
object
href
string
examplehttps://api.nexmo.com/10dlc/brands/BLQKOPK/campaigns

Example Response

{
   "account_id": "abcd1234",
   "primary_account_id": "abcd1234",
   "entity_type": "PUBLIC_PROFIT",
   "first_name": "John",
   "last_name": "Smith",
   "display_name": "Vonage",
   "company_name": "Vonage",
   "ein": "20-1111111",
   "ein_issuing_country": "US",
   "universal_ein": "20-1111111",
   "alt_business_id_type": "DUNS",
   "alt_business_id": "150483782",
   "phone": "15556660001",
   "mobile_phone": "123123222334",
   "street": "23 Main Street",
   "city": "Holmdel",
   "state": "NJ",
   "postal_code": "07733",
   "country": "US",
   "email": "devrel@vonage.com",
   "stock_symbol": "VG",
   "stock_exchange": "NASDAQ",
   "website": "https://vonage.com",
   "vertical": "TECHNOLOGY",
   "verification_email": "verification_email@vonage.com",
   "verification_email_completion_date": "2019-08-24 14:15:22",
   "reseller": true,
   "brand_id": "BLQKOPK",
   "campaign_count": 5,
   "carrier_suspensions": [
      [
         {}
      ]
   ],
   "brand_relationship": "BASIC_ACCOUNT",
   "partner": true,
   "shared": true,
   "owner": true,
   "status": "string",
   "reference_id": "string",
   "verified_date": "2019-08-24T14:15:22Z",
   "created_date": "2019-08-24 14:15:22",
   "last_updated": "2019-09-24 14:15:22",
   "_links": {
      "self": {
         "href": "https://api.nexmo.com/10dlc/brands/BLQKOPK"
      },
      "campaigns": {
         "href": "https://api.nexmo.com/10dlc/brands/BLQKOPK/campaigns"
      }
   }
}

Remove a specific brand from your account

This operation deletes a brand.

A brand can be deleted if it does not have active campaigns. Once a brand is deleted, it will be in a DELETED state and it cannot be restored to an ACTIVE state. Deleted brands will remain in the system for a period of time and can be searched using the GET/brand endpoint with the query filter status = ACTIVE. While deleted brands are searchable, all other API endpoints involving a deleted brand will result in a 502 - Brand not found error.

deletehttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

Responses

No Content

Get feedback of a brand by Brand ID.

Retrieve feedback of a specific brand with Brand ID.

The endpoint will only respond correctly if the brand's identity status is already checked. If the brand's identity status is still PENDING, it will answer with a 422 error.

Also, if the brand's identity status is not UNVERIFIED, the response should be empty.

gethttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/feedback

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

Responses
Content Type
application/json

Return feedback for a brand

categories
array
name
string
description
string
fields
array

Example Response

{
   "categories": [
      {
         "name": "string",
         "description": "string",
         "fields": [
            "string"
         ]
      }
   ]
}

Check Use Case Qualifications for a Brand

Check to see if a brand is qualified to run a campaign against a given use case. A brand must check this endpoint before attempting to generate a new campaign.

If the use case is not qualified, the brand may request additional third party vetting to see if the additional use cases can be added to their account.

gethttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/usecases/:usecase

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

usecase
string
Required

Name of a use case

Must be one of:CUSTOMER_CAREPOLLING_VOTINGHIGHER_EDUCATIONPUBLIC_SERVICE_ANNOUNCEMENTMARKETINGSECURITY_ALERTDELIVERY_NOTIFICATIONACCOUNT_NOTIFICATION2FAFRAUD_ALERTTRIALCHARITYPOLITICALEMERGENCYSWEEPSTAKECONVERSATIONALMIXEDCARRIER_EXEMPTSOCIALLOW_VOLUME

Responses
Content Type
application/json

A valid qualified use case for a brand

usecase
string
examplePOLITICAL
quarterly_fee
integer(int32)
example30
annual_fee
integer(int32)
example30
mno_metadata
array
network_id
string
example10017

Network ID of the MNO.

mno
string
exampleAT&T

Name of the MNO.

status
string

MNO campaign operation status. Please refer to the campaign_op_status property of the /enum endpoint response for an updated list of valid values.

mno_support
boolean

If 'false', then the desired usecase cannot be supported by the MNO.

mno_review
boolean

If 'true', then the submitted campaign is subject to the MNO (manual) review process.

qualify
boolean

If 'false', then the brand does not qualify for the desired usecase on the MNO.

min_msg_samples
integer
example2

The minimum number of message samples required by MNO for submission of the desired usecase.

req_subscriber_opt_in
boolean

If 'true' then MNO requires the subscriber to opt-into the campaign before the message may be sent to the subscriber. The opt-in mechanism can be mobile or web opt-in.

req_subscriber_opt_out
boolean

If 'true' then MNO requires a campaign to support an opt-out mechanism through MO stop keywords such as 'STOP', 'QUIT'. Upon receive the STOP message from a subscriber, the campaign must stop sending messages to the subscriber immediately.

req_subscriber_help
boolean

If 'true' then MNO requires a campaign to support a 'help' mechanism through MO help key words such as 'HELP', 'INFO'.

no_embedded_link
boolean

If 'true' then MNO forbids call-to-action link/URL to be embedded in all messages sent to the subscriber.

no_embedded_phone
boolean

If 'true' then MNO forbids call-to-action phone number to be embedded in all messages sent to the subscriber.

att_msg_class
string
exampleQ

(Only for AT&T). Message class assigned to the campaign by MNO. Please refer to the AT&T 10DLC guide for a complete list of available message class and definition.

att_tpm
integer
example3000

(Only for AT&T). SMS Message TPM (throughput per minute) qualified by the brand for the desired usecase.

att_mms_tpm
integer
example3000

(Only for AT&T). MMS Message TPM (throughput per minute) qualified by the brand for the desired usecase.

att_number_based
boolean

(Only for AT&T). Whether is the MNO applying the TPM per number or per campaign.

tmo_brand_tier
string
exampleLOW

(Only for T-Mobile). Daily message volume is restricted based on brand tier or brand qualification. The daily volume restriction applies to brand across campaigns and CSPs. Please refer to the /enum endpoint for an updated list of valid values.

Must be one of:LOWLOWER_MIDUPPER_MIDTOPUNCAPPED
tmo_tpd
integer

(Only for TMobile). Message TPD (throughput per day) qualified by the brand for the desired usecase.

complaints
array
complaints
array
description
string
Max65535

Description of this MNO complaint.

dca
string
exampleSINCH

dca name

created_at
string(date-time)

Date-time when this record was created.

Example Response

{
   "usecase": "POLITICAL",
   "quarterly_fee": 30,
   "annual_fee": 30,
   "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,
         "mno_support": true,
         "mno_review": true,
         "no_embedded_link": true,
         "qualify": true,
         "tmo_brand_tier": null
      },
      {
         "network_id": "10035",
         "min_msg_samples": 2,
         "req_subscriber_opt_in": false,
         "req_subscriber_help": false,
         "req_subscriber_opt_out": false,
         "mno": "TMO",
         "mno_support": true,
         "mno_review": true,
         "no_embedded_link": true,
         "no_embedded_phone": true,
         "qualify": true,
         "tmo_brand_tier": "LOW",
         "att_tpm": null,
         "att_msg_class": null
      }
   ]
}

Brand verification

This section outlines the endpoints to verify your brand. Please read this guide for more information.

Brand verification

  • Basic verification
  • Authentication+ verification - details
  • Sole Proprietor OTP verification - details

Brand vetting

  • Standard vet
  • Enhanced vet
  • Political vet

Verification and vetting appeals

Triggers the emission of OTP or 2FA verification

Triggers an OTP verification for Sole proprietor brands, or 2FA email verification for Authentication+.

  • OTP message is sent to brand's registered mobile phone number (details)
  • 2FA email is sent to brand's verification email (details)
posthttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/start_verification

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

Request Body
Content Type
application/json

verify_sms
string
exampleYour verification code is @OTP_PIN@

Template OTP message to be sent to the brand's mobilePhone. Must contain either @OTP_PIN@ or @OTP_YES@ macro element. If @OTP_YES@ macro is only with SMS reply confirmation flow.

success_sms
string
exampleYour verification code has been confirmed successfully

SMS to be sent to the brand's mobile phone upon successful SMS reply OTP confirmation.

Example Request

{
   "verify_sms": "Your verification code is @OTP_PIN@",
   "success_sms": "Your verification code has been confirmed successfully"
}

Responses
Content Type
application/json

OK

brand_id
string
Max50
exampleBLQKOPK

TCR Brand ID.

reference_id
string
exampleOTP1234567

Reference ID for tracking the status of the OTP request.

Example Response

{
   "brand_id": "BLQKOPK",
   "reference_id": "OTP1234567"
}

Verify the OTP code sent to brand's registered mobile phone number.

Verify an OTP code sent to brand's registered mobile phone number.

posthttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/verify

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

Request Body
Content Type
application/json

otp_pin
string
Required
Min6
Max6

Code received by the brand's registered mobile phone number after starting the OTP verification process.

Example Request

{
   "otp_pin": "string"
}

Responses

No Content

Retrieves SMS OTP status by referenceId.

API endpoint provides two key pieces of information; OTP verify status and SMS delivery status of the OTP message.

gethttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/verification/:reference_id

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

reference_id
string
Required
exampleOTP1234567

SMS OTP reference ID is an alphanumeric identifier (with 'OTP' prefix).

Responses
Content Type
application/json

OK

brand_id
string
Max50
exampleBLQKOPK

TCR Brand ID.

reference_id
string
exampleOTP1234567

Reference ID for tracking the status of the OTP request.

mobile_phone
string
example123123222334

Valid mobile phone number in E.164 international format without the + prefix. It is required field for SoleProprietor brand.

request_date
string(date-time)

SMS OTP initial requested timestamp.

verity_date
string(date-time)

OTP verification complete timestamp.

delivery_status
string

The most recent SMS delivery status as provided by an SMS service provider, if supported by the SMS service provider. The delivery status information is not guaranteed to be timely or consistent with OTP verify status. This information should only be used to facilitate triaging SMS derivability issue.

Must be one of:DELIVERED_HANDSETDELIVERED_GATEWAYFAILED_ROUTINGFAILED_BLOCKEDFAILED_EXPIREDFAILED_UNKNOWNUNKNOWN_STATUSIN_TRANSIT
delivery_status_date
string(date-time)

Timestamp corresponding to the updated SMS OTP delivery status. This field is null if delivery_status is null.

delivery_status_details
string(date-time)
Max1024

OTP SMS delivery status details provided by the OTP SMS service provider, if supported by the SMS service provider.

Example Response

{
   "brand_id": "BLQKOPK",
   "reference_id": "OTP1234567",
   "mobile_phone": "123123222334",
   "request_date": "2019-08-24T14:15:22Z",
   "verity_date": "2019-08-24T14:15:22Z",
   "delivery_status": "DELIVERED_HANDSET",
   "delivery_status_date": "2019-08-24T14:15:22Z",
   "delivery_status_details": "2019-08-24T14:15:22Z"
}

Retrieve a list of vetting records for a brand

Retrieve a list of vetting records for a brand

gethttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/vetting/requests

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

Responses
Content Type
application/json

Returns a list of vetting requests

array
account_id
string
exampleabcd1234

The Vonage Account ID

evp_id
string

ID associated with a vetting request

vetting_id
string
vetting_token
string
vetting_score
integer
Max100

Vetting score ranging from 0-100.

vetting_class
string
vetting_status
string

Identifies a vetting request status. Please refer to the /enum endpoint for an updated list of valid values.

Must be one of:PENDINGUNSCOREACTIVEFAILEDEXPIRED
vetting_details
object

Collection of non-standard attributes (key-value pairs), applicable to some vetting records.

vetted_date
string(date-time)

Vetting effective date. This is the date when vetting was completed, or the starting effective date. If this date is missing, then the vetting was not complete or not valid.

created_date
string(date-time)
failed_reasons
array

The list of reasons for a FAILED external vetting.

additional_info
object

Additional brand information in json format. Required for POLITICAL type vets.

requestor_first_name
string
Required
exampleJohn

First name of vetting requester.

requestor_last_name
string
Required
exampleDoe

Last name of vetting requester.

locale
string
Required
exampleFederal

Locale.

Must be one of:FederalStateLocalTribal
fec_committee_type_code
string
Required
exampleC

Committee type codes.

Must be one of:CDEHINOPQSUVWXYZ
committee_id
string
Required
example00000

Free text field. The committee/campaign ID issued for Federal and any other locale - if not issued, enter "00000".

candidate_type
string
Required
examplePAC

Free text field. Required for campaigns. If committee is not candidate-specific, enter "PAC".

state_local_committee_type
string
Required
exampleFEDERAL

Free text field. Required for State, Local, and Tribal -- if Federal, enter "FEDERAL".

local_committee_state
string
Required
exampleAZ

If Federal Congress, enter the state(2 letter code) to be represented; if President, enter "US".

local_committee_municipality
string
Required
exampleUS

Free text field. If Federal Congress, enter district to be represented; if President, enter "US".

tribal_location
string
Required
exampleUS

Free text field. If non-tribal, enter "US".

filing_url
string
Required
examplehttps://example.com

Should be a valid URL format. Election authority website URL where the filing information can be found.

filing_record_url_instructions
string
exampleAdditional instructions

Free text field. Additional instructions to aid in locating the filing record.

filing_email
string
exampleJohn@email.com

Free text field. Exactly as filed with election authority. If not supplied, PIN cannot be sent via email.

election_date
string
Required
example2022-31-10

Date string in the format yyyy-dd-mm. Must be in the future.

pin_preference
string
Required
exampleRegular

Pin preference.

Must be one of:RegularExpressEmail
_links
object
self
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/vetting/requests/abcd1234
brand
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK

Example Response

[
   {
      "account_id": "abcd1234",
      "evp_id": "string",
      "vetting_id": "string",
      "vetting_token": "string",
      "vetting_score": 100,
      "vetting_class": "string",
      "vetting_status": "PENDING",
      "vetting_details": {},
      "vetted_date": "2019-08-24T14:15:22Z",
      "created_date": "2019-08-24T14:15:22Z",
      "failed_reasons": [
         "string"
      ],
      "additional_info": {
         "requestor_first_name": "John",
         "requestor_last_name": "Doe",
         "locale": "Federal",
         "fec_committee_type_code": "C",
         "committee_id": "00000",
         "candidate_type": "PAC",
         "state_local_committee_type": "FEDERAL",
         "local_committee_state": "AZ",
         "local_committee_municipality": "US",
         "tribal_location": "US",
         "filing_url": "https://example.com",
         "filing_record_url_instructions": "Additional instructions",
         "filing_email": "John@email.com",
         "election_date": "2022-31-10",
         "pin_preference": "Regular"
      },
      "_links": {
         "self": {
            "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/vetting/requests/abcd1234"
         },
         "brand": {
            "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK"
         }
      }
   }
]

Request vetting for a brand

This operation requests the specific vetting provider to perform vetting on a brand. This authorizes Vonage to allow the vetting partner access to the particular brand information stored in The Campaign Registry (TCR). This request can take anywhere from a few minutes to 48 hours.

posthttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/vetting/requests

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

Request Body
Content Type
application/json

evp_id
string
Required
exampleabcd123

This value must be the ID associated with one of the supported vetting providers.

Must be one of:AegisCVWMC
vetting_class
string
Required
exampleabcd123

Type of vetting to perform.

vetting_political_details
object

Additional political details in json format, required for POLITICAL type vetting. If non-POLITICAL type its neglected.

requestor_first_name
string
Required
exampleJohn

First name of vetting requester.

requestor_last_name
string
Required
exampleDoe

Last name of vetting requester.

locale
string
Required
exampleFederal

Locale.

Must be one of:FederalStateLocalTribal
fec_committee_type_code
string
Required
exampleC

Committee type codes.

Must be one of:CDEHINOPQSUVWXYZ
committee_id
string
Required
example00000

Free text field. The committee/campaign ID issued for Federal and any other locale - if not issued, enter "00000".

candidate_type
string
Required
examplePAC

Free text field. Required for campaigns. If committee is not candidate-specific, enter "PAC".

state_local_committee_type
string
Required
exampleFEDERAL

Free text field. Required for State, Local, and Tribal -- if Federal, enter "FEDERAL".

local_committee_state
string
Required
exampleAZ

If Federal Congress, enter the state(2 letter code) to be represented; if President, enter "US".

local_committee_municipality
string
Required
exampleUS

Free text field. If Federal Congress, enter district to be represented; if President, enter "US".

tribal_location
string
Required
exampleUS

Free text field. If non-tribal, enter "US".

filing_url
string
Required
examplehttps://example.com

Should be a valid URL format. Election authority website URL where the filing information can be found.

filing_record_url_instructions
string
exampleAdditional instructions

Free text field. Additional instructions to aid in locating the filing record.

filing_email
string
examplejohn@email.com

Free text field. Exactly as filed with election authority. If not supplied, PIN cannot be sent via email.

election_date
string
Required
example2022-10-31

Date string in the format yyyy-mm-dd. Must be in the future.

pin_preference
string
Required
exampleRegular

Pin preference.

Must be one of:RegularExpressEmail
appeals
array

Contains vetting appeals, if any has been submitted.

explanation
string

Explanation that was given when creating the appeal.

status
string

The status of the appeal. Please refer to the /enum endpoint for an updated list of valid values.

Must be one of:PENDINGCOMPLETE
categories
array

An array of categories that the appeal applies to. Please refer to the /enum endpoint for an updated list of valid values.

evidences
array

The list of evidence files that were sent with this appeal.

id
string

ID of the evidence. To be used in the appeal process.

file_name
string

The name of the uploaded file.

mime_type
string

The mime type of the uploaded file.

outcome
object

The outcome of the appeal. This is filled only when the appeal is completed.

vetting_status
string

Identifies a vetting request status. Please refer to the /enum endpoint for an updated list of valid values.

Must be one of:PENDINGUNSCOREACTIVEFAILEDEXPIRED
vetting_score
integer
Max100

Vetting score ranging from 0-100.

feedback
object

Feedback given by the provider to explain the vetting outcome.

reasons
array
created_date
string(date-time)

Date-time when this record was created.

last_updated
string(date-time)

Date-time when this record was last updated.

Example Request

{
   "evp_id": "abcd123",
   "vetting_class": "abcd123",
   "vetting_political_details": {
      "requestor_first_name": "John",
      "requestor_last_name": "Doe",
      "locale": "Federal",
      "fec_committee_type_code": "C",
      "committee_id": "00000",
      "candidate_type": "PAC",
      "state_local_committee_type": "FEDERAL",
      "local_committee_state": "AZ",
      "local_committee_municipality": "US",
      "tribal_location": "US",
      "filing_url": "https://example.com",
      "filing_record_url_instructions": "Additional instructions",
      "filing_email": "john@email.com",
      "election_date": "2022-10-31",
      "pin_preference": "Regular"
   },
   "appeals": [
      {
         "explanation": "Please find attached the evidence proving our tax ID.",
         "status": "COMPLETE",
         "categories": [
            "VERIFY_TAX_ID"
         ],
         "evidences": [
            {
               "id": "c94eea77-1494-4b8f-99dc-63a036126368",
               "file_name": "tax_registration.pdf",
               "mime_type": "application/pdf"
            }
         ],
         "outcome": {
            "vetting_status": "ACTIVE",
            "vetting_score": 100,
            "feedback": {
               "reasons": [
                  "Provided evidence match the tax id."
               ]
            }
         },
         "created_date": {},
         "last_updated": {}
      },
      {
         "explanation": "We think the low score is not warranted because ...",
         "status": "PENDING",
         "categories": [
            "LOW_SCORE"
         ],
         "evidences": [
            {
               "id": "b4513738-72c3-4720-bd73-47919ddde812",
               "file_name": "explanation_details.txt",
               "mime_type": "text/plain"
            }
         ],
         "created_date": {},
         "last_updated": {}
      }
   ]
}

Responses
Content Type
application/json

Information about a vetting request

account_id
string
exampleabcd1234

The Vonage Account ID

evp_id
string

ID associated with a vetting request

vetting_id
string
vetting_token
string
vetting_score
integer
Max100

Vetting score ranging from 0-100.

vetting_class
string
vetting_status
string

Identifies a vetting request status. Please refer to the /enum endpoint for an updated list of valid values.

Must be one of:PENDINGUNSCOREACTIVEFAILEDEXPIRED
vetting_details
object

Collection of non-standard attributes (key-value pairs), applicable to some vetting records.

vetted_date
string(date-time)

Vetting effective date. This is the date when vetting was completed, or the starting effective date. If this date is missing, then the vetting was not complete or not valid.

created_date
string(date-time)
failed_reasons
array

The list of reasons for a FAILED external vetting.

additional_info
object

Additional brand information in json format. Required for POLITICAL type vets.

requestor_first_name
string
Required
exampleJohn

First name of vetting requester.

requestor_last_name
string
Required
exampleDoe

Last name of vetting requester.

locale
string
Required
exampleFederal

Locale.

Must be one of:FederalStateLocalTribal
fec_committee_type_code
string
Required
exampleC

Committee type codes.

Must be one of:CDEHINOPQSUVWXYZ
committee_id
string
Required
example00000

Free text field. The committee/campaign ID issued for Federal and any other locale - if not issued, enter "00000".

candidate_type
string
Required
examplePAC

Free text field. Required for campaigns. If committee is not candidate-specific, enter "PAC".

state_local_committee_type
string
Required
exampleFEDERAL

Free text field. Required for State, Local, and Tribal -- if Federal, enter "FEDERAL".

local_committee_state
string
Required
exampleAZ

If Federal Congress, enter the state(2 letter code) to be represented; if President, enter "US".

local_committee_municipality
string
Required
exampleUS

Free text field. If Federal Congress, enter district to be represented; if President, enter "US".

tribal_location
string
Required
exampleUS

Free text field. If non-tribal, enter "US".

filing_url
string
Required
examplehttps://example.com

Should be a valid URL format. Election authority website URL where the filing information can be found.

filing_record_url_instructions
string
exampleAdditional instructions

Free text field. Additional instructions to aid in locating the filing record.

filing_email
string
exampleJohn@email.com

Free text field. Exactly as filed with election authority. If not supplied, PIN cannot be sent via email.

election_date
string
Required
example2022-31-10

Date string in the format yyyy-dd-mm. Must be in the future.

pin_preference
string
Required
exampleRegular

Pin preference.

Must be one of:RegularExpressEmail
_links
object
self
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/vetting/requests/abcd1234
brand
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK

Example Response

{
   "account_id": "abcd1234",
   "evp_id": "string",
   "vetting_id": "string",
   "vetting_token": "string",
   "vetting_score": 100,
   "vetting_class": "string",
   "vetting_status": "PENDING",
   "vetting_details": {},
   "vetted_date": "2019-08-24T14:15:22Z",
   "created_date": "2019-08-24T14:15:22Z",
   "failed_reasons": [
      "string"
   ],
   "additional_info": {
      "requestor_first_name": "John",
      "requestor_last_name": "Doe",
      "locale": "Federal",
      "fec_committee_type_code": "C",
      "committee_id": "00000",
      "candidate_type": "PAC",
      "state_local_committee_type": "FEDERAL",
      "local_committee_state": "AZ",
      "local_committee_municipality": "US",
      "tribal_location": "US",
      "filing_url": "https://example.com",
      "filing_record_url_instructions": "Additional instructions",
      "filing_email": "John@email.com",
      "election_date": "2022-31-10",
      "pin_preference": "Regular"
   },
   "_links": {
      "self": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/vetting/requests/abcd1234"
      },
      "brand": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK"
      }
   }
}

Import an existing vetting request to Vonage

Vetting requests can either be automated or manual. In the case that a vetting request has been manually performed or was requested outside of Vonage, you can request that the request be imported. The vetting request will be validated and, if successful, saved with the brand in TCR and the vetting record will be considered for future campaign qualification. This validation process is not immediate.

puthttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/vetting/requests

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

Request Body
Content Type
application/json

evp_id
string
Required
exampleabcd123

The identity of the vetting partner. This value must be the ID associated with one of the supported vetting providers.

Must be one of:AegisCVWMC
vetting_token
string
exampleabcd123

Token verifying the vetting ID (only applicable to Aegis vetting).

vetting_id
string
Required
exampleabcd123

Unique ID that identifies a vetting transaction performed by a vetting provider. This ID is provided by the vetting provider at time of vetting.

Example Request

{
   "evp_id": "abcd123",
   "vetting_token": "abcd123",
   "vetting_id": "abcd123"
}

Responses
Content Type
application/json

Information about a vetting request

account_id
string
exampleabcd1234

The Vonage Account ID

evp_id
string

ID associated with a vetting request

vetting_id
string
vetting_token
string
vetting_score
integer
Max100

Vetting score ranging from 0-100.

vetting_class
string
vetting_status
string

Identifies a vetting request status. Please refer to the /enum endpoint for an updated list of valid values.

Must be one of:PENDINGUNSCOREACTIVEFAILEDEXPIRED
vetting_details
object

Collection of non-standard attributes (key-value pairs), applicable to some vetting records.

vetted_date
string(date-time)

Vetting effective date. This is the date when vetting was completed, or the starting effective date. If this date is missing, then the vetting was not complete or not valid.

created_date
string(date-time)
failed_reasons
array

The list of reasons for a FAILED external vetting.

additional_info
object

Additional brand information in json format. Required for POLITICAL type vets.

requestor_first_name
string
Required
exampleJohn

First name of vetting requester.

requestor_last_name
string
Required
exampleDoe

Last name of vetting requester.

locale
string
Required
exampleFederal

Locale.

Must be one of:FederalStateLocalTribal
fec_committee_type_code
string
Required
exampleC

Committee type codes.

Must be one of:CDEHINOPQSUVWXYZ
committee_id
string
Required
example00000

Free text field. The committee/campaign ID issued for Federal and any other locale - if not issued, enter "00000".

candidate_type
string
Required
examplePAC

Free text field. Required for campaigns. If committee is not candidate-specific, enter "PAC".

state_local_committee_type
string
Required
exampleFEDERAL

Free text field. Required for State, Local, and Tribal -- if Federal, enter "FEDERAL".

local_committee_state
string
Required
exampleAZ

If Federal Congress, enter the state(2 letter code) to be represented; if President, enter "US".

local_committee_municipality
string
Required
exampleUS

Free text field. If Federal Congress, enter district to be represented; if President, enter "US".

tribal_location
string
Required
exampleUS

Free text field. If non-tribal, enter "US".

filing_url
string
Required
examplehttps://example.com

Should be a valid URL format. Election authority website URL where the filing information can be found.

filing_record_url_instructions
string
exampleAdditional instructions

Free text field. Additional instructions to aid in locating the filing record.

filing_email
string
exampleJohn@email.com

Free text field. Exactly as filed with election authority. If not supplied, PIN cannot be sent via email.

election_date
string
Required
example2022-31-10

Date string in the format yyyy-dd-mm. Must be in the future.

pin_preference
string
Required
exampleRegular

Pin preference.

Must be one of:RegularExpressEmail
_links
object
self
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/vetting/requests/abcd1234
brand
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK

Example Response

{
   "account_id": "abcd1234",
   "evp_id": "string",
   "vetting_id": "string",
   "vetting_token": "string",
   "vetting_score": 100,
   "vetting_class": "string",
   "vetting_status": "PENDING",
   "vetting_details": {},
   "vetted_date": "2019-08-24T14:15:22Z",
   "created_date": "2019-08-24T14:15:22Z",
   "failed_reasons": [
      "string"
   ],
   "additional_info": {
      "requestor_first_name": "John",
      "requestor_last_name": "Doe",
      "locale": "Federal",
      "fec_committee_type_code": "C",
      "committee_id": "00000",
      "candidate_type": "PAC",
      "state_local_committee_type": "FEDERAL",
      "local_committee_state": "AZ",
      "local_committee_municipality": "US",
      "tribal_location": "US",
      "filing_url": "https://example.com",
      "filing_record_url_instructions": "Additional instructions",
      "filing_email": "John@email.com",
      "election_date": "2022-31-10",
      "pin_preference": "Regular"
   },
   "_links": {
      "self": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/vetting/requests/abcd1234"
      },
      "brand": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK"
      }
   }
}

Request vetting appeal for a brand

This creates an appeal for the selected vetting.

Evidence files, previously uploaded with endpoint POST /v1/10dlc/brands/{brand_id}/appeal/evidence can be attached to the appeal.

Limitations:

  • A maximum of 10 evidence files can be submitted with the appeal
  • The total size of the evidence files cannot exceed 30MB
posthttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/vetting/requests/:vetting_id/appeal

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

vetting_id
string
Required

Vetting ID

Request Body
Content Type
application/json

categories
array
Required

An array of categories that the appeal applies to. Please refer to the /enum endpoint for an updated list of valid values.

evidence_ids
array
Required

An array referencing previously uploaded evidence files IDs.

explanation
string
Required
Max1024

Explanation of why the appeal should be granted.

Example Request

{
   "categories": [
      "string"
   ],
   "evidence_ids": [
      "string"
   ],
   "explanation": "string"
}

Responses

No Content

Request a brand revetting

This operation allows you to revet the brand; however, revetting is allowed once after the successful brand registration. Search for campaigns you registered by any combination of brand_id, reseller_id, status, usecase, and vertical. This operation supports pagination with a maximum of 500 records per fetch. Values for brand_id, reseller_id, status, usecase, and vertical must be exact matches if supplied.

posthttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/revet

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

Responses
Content Type
application/json

Return a single brand

account_id
string
exampleabcd1234

The Vonage Account ID

primary_account_id
string
exampleabcd1234

The Vonage Primary Account ID (the parent account of account_id).

entity_type
string
examplePUBLIC_PROFIT

Entity type behind the brand. This is the form of business establishment. NB: The GOVERNMENT entity_type is ONLY applicable to US governmental agencies (FBI, CIA, Department of defence etc.) Other countries’ governmental agencies must use NON_PROFIT entity type. Please refer to the /enum endpoint for an update list of valid values.

Must be one of:PRIVATE_PROFITPUBLIC_PROFITNON_PROFITSOLE_PROPRIETORGOVERNMENT
first_name
string
Max100
exampleJohn

First name of business contact. NB: Required for SOLE_PROPRIETOR entity type

last_name
string
Max100
exampleSmith

last name of business contact. NB: Required for SOLE_PROPRIETOR entity type

display_name
string
Max255
exampleVonage

Display or marketing name of the brand.

company_name
string
Max255
exampleVonage

Legal company name.

ein
string
Max21
example20-1111111

(Required for Non-profit) Government assigned corporate tax ID. EIN is 9-digits in U.S.A.

ein_issuing_country
string
exampleUS

ISO3166-Alpha2 country code.

universal_ein
string
Max50
example20-1111111

Universal EIN of Brand, Read-Only

alt_business_id_type
string
Max50
exampleDUNS

Required if alt_business_id is provided.

Must be one of:DUNSGIINLEI
alt_business_id
string
Max50
example150483782

Required if alt_business_id_type is provided.

phone
string
example15556660001

Valid phone number in E.164 international format without the + prefix.

mobile_phone
string
example123123222334

Valid mobile phone number in E.164 international format without the + prefix. It is required field for SoleProprietor brand.

street
string
Max100
example23 Main Street

Street number and name.

city
string
Max100
exampleHolmdel

City name

state
string
Max20
exampleNJ

State. Must be 2 letters code for U.S.A.

postal_code
string
Max10
example07733

Postal codes. Use 5 digit zipcode for United States

country
string
exampleUS

ISO3166-Alpha2 country code.

email
string
Max100
exampledevrel@vonage.com

Valid email address of brand support contact.

stock_symbol
string
Max10
exampleVG

Stock Symbol - Required if entity_type=PUBLIC_PROFIT.

stock_exchange
string
Max10
exampleNASDAQ

Required if entity_type=PUBLIC_PROFIT.

Must be one of:NONEAMEXAMXASXB3BMEBSEFRAICEXJSEKRXLONNASDAQNSENYSEOMXSEHKSSESTOSWXSZSETSXTWSEVSE
website
string
examplehttps://vonage.com

Brand website URL.

vertical
string
exampleTECHNOLOGY

Business/industry segment of this campaign. Use the /enum endpoint to get an updated list of verticals

Must be one of:REAL_ESTATEHEALTHCAREENERGYENTERTAINMENTRETAILAGRICULTUREINSURANCEEDUCATIONHOSPITALITYFINANCIALGAMBLINGCONSTRUCTIONNGOMANUFACTURINGGOVERNMENTTECHNOLOGYCOMMUNICATION
verification_email
string
Max100
exampleverification_email@vonage.com

Valid verification email address of brand. Required if entity_type=PUBLIC_PROFIT.

verification_email_completion_date
string(date-time)
example2019-08-24 14:15:22

Completion date when verification email address has been successfully verified.

reseller
boolean

Indicates if a brand is a reseller brand.

This can only be enabled if a valid reseller (status PENDING or APPROVED) is linked to the primary account of the brand.

Campaigns created on a reseller brand will automatically have their reseller_id field set with the primary account's reseller id.

brand_id
string
Max50
exampleBLQKOPK

TCR Brand ID.

campaign_count
integer
example5

Number of campaigns associated with the brand

carrier_suspensions
array
category
string

Summarize the reason of the suspension.

explanation
string

Detailed explanation of the cause of the suspension.

brand_relationship
string
exampleBASIC_ACCOUNT

Brand relationship level.

Must be one of:BASIC_ACCOUNTSMALL_ACCOUNTMEDIUM_ACCOUNTLARGE_ACCOUNTKEY_ACCOUNT
partner
boolean

Flag indicating the brand is related to a partner customer (brand & campaigns registered directly on TCR and shared with Vonage)

shared
boolean

True when the brand is shared with the current Account ID.

owner
boolean

True when the brand is owned by the requesting account.

status
string

Brand status.

reference_id
string

Unique identifier for preventing duplicate brand registration into TCR.

verified_date
string(date-time)

Date-time when brand mobile phone was verified.

created_date
string
example2019-08-24 14:15:22
last_updated
string
example2019-09-24 14:15:22
_links
object
self
object
href
string
examplehttps://api.nexmo.com/10dlc/brands/BLQKOPK
campaigns
object
href
string
examplehttps://api.nexmo.com/10dlc/brands/BLQKOPK/campaigns

Example Response

{
   "account_id": "abcd1234",
   "primary_account_id": "abcd1234",
   "entity_type": "PUBLIC_PROFIT",
   "first_name": "John",
   "last_name": "Smith",
   "display_name": "Vonage",
   "company_name": "Vonage",
   "ein": "20-1111111",
   "ein_issuing_country": "US",
   "universal_ein": "20-1111111",
   "alt_business_id_type": "DUNS",
   "alt_business_id": "150483782",
   "phone": "15556660001",
   "mobile_phone": "123123222334",
   "street": "23 Main Street",
   "city": "Holmdel",
   "state": "NJ",
   "postal_code": "07733",
   "country": "US",
   "email": "devrel@vonage.com",
   "stock_symbol": "VG",
   "stock_exchange": "NASDAQ",
   "website": "https://vonage.com",
   "vertical": "TECHNOLOGY",
   "verification_email": "verification_email@vonage.com",
   "verification_email_completion_date": "2019-08-24 14:15:22",
   "reseller": true,
   "brand_id": "BLQKOPK",
   "campaign_count": 5,
   "carrier_suspensions": [
      [
         {}
      ]
   ],
   "brand_relationship": "BASIC_ACCOUNT",
   "partner": true,
   "shared": true,
   "owner": true,
   "status": "string",
   "reference_id": "string",
   "verified_date": "2019-08-24T14:15:22Z",
   "created_date": "2019-08-24 14:15:22",
   "last_updated": "2019-09-24 14:15:22",
   "_links": {
      "self": {
         "href": "https://api.nexmo.com/10dlc/brands/BLQKOPK"
      },
      "campaigns": {
         "href": "https://api.nexmo.com/10dlc/brands/BLQKOPK/campaigns"
      }
   }
}

List vetting appeal evidence files

List files that can be used for vetting appeals.

gethttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/appeal/evidence

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Query Parameters

page
integer
Min1
example2

Page of results to jump to

page_size
integer
example10

Number of results per page

filter
array

Narrow down results based on matching conditions. Follow the comprehensive guide to learn how to craft filter queries.

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

Responses
Content Type
application/json

OK

next_page
string
Min1
Max512

page_token to access the next page.

previous_page
string
Min1
Max512

page_token to access the previous page.

last_page
string
Min1
Max512

page_token to access the last page.

first_page
string
Min1
Max512

page_token to access the first page.

_links
object
next
object

Link to the next page.

href
string
previous
object

Link to the previous page.

href
string
first
object

Link to the first page.

href
string
last
object

Link to the last page.

href
string
_embedded
object
evidences
array
id
string

ID of the evidence. To be used in the appeal process.

file_name
string

The name of the uploaded file.

mime_type
string

The mime type of the uploaded file.

Example Response

{
   "next_page": "string",
   "previous_page": "string",
   "last_page": "string",
   "first_page": "string",
   "_links": {
      "next": {
         "href": "string"
      },
      "previous": {
         "href": "string"
      },
      "first": {
         "href": "string"
      },
      "last": {
         "href": "string"
      }
   },
   "_embedded": {
      "evidences": [
         {
            "id": "OWUwZTA5MmUtOGNjYS00ZGI0LWFkNWUtZTg4MmUwNzhjMDUy",
            "file_name": "evidence.txt",
            "mime_type": "text/plain"
         }
      ]
   }
}

Upload evidence for a vetting appeal

This operation allows you to import evidence files to be used to appeal an existing vetting.

Multiple files can be uploaded at once, with following limitations:

  • The size of each file cannot exceed 10MB
  • The total size of the HTTP request cannot exceed 100MB
  • Supported file types are: jpg jpeg png bmp raw tiff pdf docx htm odt rtf txt xml

We expect the filename to be populated in the Content-Disposition header and the Content-Type to be set in each subpart.

posthttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/appeal/evidence

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Query Parameters

page
integer
Min1
example2

Page of results to jump to

page_size
integer
example10

Number of results per page

filter
array

Narrow down results based on matching conditions. Follow the comprehensive guide to learn how to craft filter queries.

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

Request Body
Content Type
multipart/form-data

file
string(binary)
Required

Example Request

POST /v1/10dlc/brands/:brand_id/appeal/evidence HTTP/1.1
Host: api-eu.vonage.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 11

file=string

Responses
Content Type
application/json

OK

id
string

ID of the evidence. To be used in the appeal process.

file_name
string

The name of the uploaded file.

mime_type
string

The mime type of the uploaded file.

Example Response

{
   "id": "string",
   "file_name": "string",
   "mime_type": "string"
}

Download appeal evidence file

This operation allows you to download an evidence file. The Content-Type header might vary and will reflect the Mime-Type of the file. The Content-Disposition header will hold the filename.

gethttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/appeal/evidence/:evidence_id

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

evidence_id
string
Required

The ID of the evidence to download

Responses
Content Type
application/octet-stream

OK

Example Response

Example preview is currently not supported for content type: application/octet-stream

Delete appeal evidence file

This operation allows you to delete an evidence file.

deletehttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/appeal/evidence/:evidence_id

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

evidence_id
string
Required

The ID of the evidence to download

Responses
Content Type
application/octet-stream

OK

Example Response

Example preview is currently not supported for content type: application/octet-stream

Campaigns

This section outlines the endpoints to register and manage your 10DLC campaigns.

Guide - Requirements

Important information:

  • Unverified brands cannot register campaigns.
  • Verified brands can only register:
    • SOLE_PROPRIETOR campaigns for Sole Proprietor brands
    • CHARITY campaigns for recognized non-profit brands
    • POLITICAL campaigns for recognized non-profit brands or brands with a successful political vet
    • LOW_VOLUME_MIXED campaigns
  • A successful standard or enhanced vet is required for most other use-cases
  • For some special use-cases, a pre-approval is required (reach out to your AM or open a support ticket)
  • Only registered 10DLC Resellers (PENDING or APPROVED) can register reseller campaigns
  • Only approved 10DLC Partners can use the campaign importation endpoint

Retrieve all of the campaigns associated with a brand

List campaigns

gethttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/campaigns

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

Query Parameters

page
integer
Min1
example2

Page of results to jump to

page_size
integer
example10

Number of results per page

filter
array

Narrow down results based on matching conditions. Follow the comprehensive guide to learn how to craft filter queries.

status
string
exampleACTIVE

You can choose one or multiple statuses i.e: ACTIVE or CANCELED. If no status is given, then no filter would be applied and any campaign would be returned.

Must be one of:PENDING_REVIEWUPDATES_REQUIREDCARRIERS_REVIEWACTIVEPENDING_CANCELLATIONSUSPENDEDTERMINATEDCANCELEDREJECTEDCNP_CANCELEDPORTED_OUT

Responses
Content Type
application/json

List of campaigns that are associated with a brand

page_size
integer
example10

Items per page

page
integer
Min1
example2

Page Offset

total_pages
integer
Min1
example100

Number of pages in the entire result set

total_items
integer
example100

Number of items in the entire result set

_embedded
object
campaigns
array
primary_account_id
string
exampleabcd1234

The Vonage Primary Account ID (the parent account of account_id).

account_id
string
exampleabcd1234

The Vonage Account ID

brand_id
string
Max50
exampleBLQKOPK

TCR Brand ID.

campaign_id
string
Max50
exampleVC987XYZ

Vonage Campaign ID.

tcr_campaign_id
string
Max50
exampleC123ABC

TCR Campaign ID.

reseller_id
string
Max8
exampleR123456

Alphanumeric TCR identifier of the reseller associated with this campaign.
R000000 is a special value meaning this is not a reseller campaign.

This is required when creating a campaign on behalf of another company or entity.

In POST and PATCH endpoints, this is ignored if the reseller field on the same call. It will also be ignored if the brand's reseller field is true.
If tcr_campaign_id and reseller_id are set (not an empty string) then this field cannot be changed anymore.

reseller
boolean

Indicates if a campaign is a reseller campaign.

This is required when creating a campaign on behalf of another company or entity.

This can only be enabled if a valid reseller (status PENDING or APPROVED) is linked to the primary account of the brand.

In POST and PATCH endpoints, this is ignored if the brand's reseller field is true.

label
string
Max50
exampleThis is a sample campaign

Friendly name associated with this campaign.

status
string
exampleACTIVE

Campaign Status.

  • PENDING_REVIEW: This is the initial status of a campaign. This implies that the campaign has been submitted for an internal review and cannot be used yet.
  • UPDATES_REQUIRED: The campaign has been reviewed but requires changes before it can be approved.
  • CARRIERS_REVIEW: The campaign has been approved by our internal process. It has been created in the registry and but pending approval from third parties i.e: mobile carrier.
  • ACTIVE: The campaign has been approved by every party and traffic can now be sent.
  • PENDING_CANCELLATION: The campaign is active but will not be renewed. It will be canceled at the next renewal date.
  • SUSPENDED: The campaign has been suspended, along with any traffic it's used to send. This can happen if suspicious traffic has been detected (e.g.: spam) or after an MNO complaint. This triggers an internal review process which can lead to the un-suspension or termination of the campaign.
  • TERMINATED: The campaign has been terminated. A campaign cannot be recovered after it's been terminated.
  • EXPIRED: The campaign has expired.
  • REJECTED: This implies the campaign was rejected by the compliance team as it is not compliant with 10DLC requirements. Further reasons can be found in the description of the rejection event received from TCR. You may update the campaign using TCR’s API or dashboard, and re-share the campaign with Vonage for a new review.
  • CNP_CANCELED: The campaign has been canceled during a CNP migration. You are required to restart a CNP migration.
  • PORTED_OUT: The campaign has been ported out from Vonage. You are required to start a CNP migration.
Must be one of:PENDING_REVIEWUPDATES_REQUIREDCARRIERS_REVIEWACTIVEPENDING_CANCELLATIONSUSPENDEDTERMINATEDCANCELEDREJECTEDCNP_CANCELEDPORTED_OUT
traffic_enabled
boolean

Indicates if traffic is enabled for this campaign.

Traffic first becomes enabled when the campaign's status becomes ACTIVE. It can be suspended later due to a number of reasons (campaign suspension, expiration, termination, ...).

NB This is only a requirement for traffic to be allowed but not is not the only requirement. Traffic can also be stopped due to brand suspensions, number not linked properly, ...

usecase
string
Max50
exampleACCOUNT_NOTIFICATION

Campaign usecase. Please refer to the /enum endpoint for an updated list of valid values.

Must be one of:CUSTOMER_CAREPOLLING_VOTINGHIGHER_EDUCATIONPUBLIC_SERVICE_ANNOUNCEMENTMARKETINGSECURITY_ALERTDELIVERY_NOTIFICATIONACCOUNT_NOTIFICATION2FAFRAUD_ALERTTRIALCHARITYPOLITICALEMERGENCYSWEEPSTAKECONVERSATIONALMIXEDCARRIER_EXEMPTSOCIALLOW_VOLUME
sub_usecases
array

Campaign sub-usecases. Please refer to the /enum endpoint for an updated list of valid values.

description
string
Min40
Max4096
exampleUser notifications

Summary description of this campaign

message_flow
string
Min40
Max4096
exampleBrand: My brand \ Consent mechanisms: \ - TEXT_TO_JOIN: Opt-in Keywords: START,JOIN. A text will be sent to the customer. He can reply yes to consent and opt in. \ - ONLINE_FORM: This is an online form \ Link: https://mybrand.com/optin \ Message & data rates may apply. - Message frequency varies \ Carriers are not liable for delayed or undelivered messages. \ Text HELP for help. Text STOP to opt-out. \ Terms & Conditions: https://mybrand.com/terms_and_conditions \ Privacy Policy: https://mybrand.com/privacy_policy

Message flow, also known as Call to Action, of the campaign. It will always be filled with data computed from message_flow_details.

This field should describe how a consumer opts-in to the campaign, therefore giving consent to the sender to receive their messages. The call-to-action must be explicitly clear and inform the consumer of the nature of the program.

  • Entering a telephone number through a website;
  • Clicking a button on a mobile webpage;
  • Sending a message from the Consumer’s mobile device that contains an advertising keyword;
  • Initiating the text message exchange in which the Message Sender replies to the Consumer only with responsive information;
  • Signing up at a point-of-sale (POS) or other Message Sender on-site location; or
  • Opting-in over the phone using interactive voice response (IVR) technology.

If multiple opt-in methods can be used for the same campaign, you must list them all.

Describes what the opt_in option was used for.

message_flow_details
object

Message flow details specifies the message_flow field as a structured object instead of a single text field.

When creating or updating a campaign:

  1. either message_flow or message_flow_details may be specified, but not both.
  2. if message_flow_details is specified, the object's fields will be used to fill a template. The resulting templated text will be used to fill the message_flow field of the campaign.

When reading a campaign message_flow_details will only be filled if it's been used to create or update the campaign.

For more information on Campaign message flows, please see this campaign requirements article.

brand_name
string
Required

A brand name associated with the campaign. This can be different from the name of the brand the campaign belongs to (e.g. for subsidiaries, ...).

NB: This is optional for sole proprietors.

consent_mechanisms
array
Required

Describe the different mechanisms a customer may use to consent to the campaign.

It is required to provide an attachment for all consent methods, except TEXT_TO_JOIN.

method
string
Required
Must be one of:ONLINE_FORMLIVE_OPERATORPOINT_OF_SALETEXT_TO_JOINOTHER
details
string
Required

Details on the consent mechanism.

attachment
string(uri)

An HTTP(S) link to the resource describing the mechanism.

pricing_disclosure
boolean
Required

This field needs to be true to consent to adding the pricing disclosure to the template.

The following will be added: Message and Data rates may apply

Must be one of:true
carrier_disclaimer
boolean

Whether to add the following disclaimer: Carriers are not liable for delayed or undelivered messages.

Must be one of:true
frequency
string
Required

The frequency of the messages sent by the campaign.

Must be one of:ONE_TIMERECURRING
privacy_policy
string(uri)
Required

Link to the campaign's privacy policy.

terms_and_conditions
string(uri)
Required

Link to the campaign's terms and conditions.

subscriber_opt_in
boolean
Defaulttrue

Does campaign require subscriber to opt-in before SMS is sent to subscriber?

opt_in_keywords
string
Max255
exampleSTART,SUBSCRIBE

Opt in keywords of the campaign, separated by comas.

opt_in_message
string
Min20
Max320
example<Brand Name>: You are now opted-in. For help, reply HELP. To opt-out, reply STOP

Opt in message sent to confirmation enrollment to a recurring message campaign. Also provide information on how to get HELP or undo enrollment. If consumers can text in a keyword,the response should include the Brand name.
NB: This field is mandatory if opt_in_keywords is set.

subscriber_opt_out
boolean
Defaulttrue

Does campaign support subscriber opt-out keyword(s)?

opt_out_keywords
string
Max255
DefaultSTOP
exampleSTOP,QUIT

Opt out keywords of the campaign, separated by comas. This field must not contain any spaces, and must contain the STOP keyword if set.

opt_out_message
string
Min20
Max320
example<Brand Name>: You are now opted-out and will receive no further messages.

Opt out message of the campaign. The response to the STOP keyword may include the Brand name but should include an acknowledgement of the opt-out request and confirmation that no further messages will be sent.
NB: Required for all recurring campaigns or for SMS opt-in.

subscriber_help
boolean
Defaulttrue

Does campaign responds to help keyword(s)?

help_keywords
string
Max255
DefaultHELP
exampleHELP,INFO

Help keywords of the campaign, separated by comas. This field must not contain any spaces, and must contain the HELP keyword if set.

help_message
string
Min20
Max320
example<Brand Name>: For help, email support@example.com. To opt-out, reply STOP

Help message of the campaign.

The response to HELP keyword may include the Brand name and additional support contact information.

sample_one
string
Min20
Max1024
exampleHi This is a reminder that you have a scheduled appointment with Dr. Doe tomorrow at 4:00PM.

Message sample. Some campaign tiers require 1 or more message samples.

sample_two
string
Min20
Max1024
exampleHello, Your order, number XXXXXXX, has been shipped.

Message sample. Some campaign tiers require 2 or more message samples.

sample_three
string
Min20
Max1024
exampleHere is you unique PIN number to access the application: 123456

Message sample. Some campaign tiers require 3 or more message samples.

sample_four
string
Min20
Max1024
exampleHello Mr Doe, Your payment of 9.99$ was authorized. You can find your invoice in your customer account.

Message sample. Some campaign tiers require 4 or more message samples.

sample_five
string
Min20
Max1024
exampleYour delivery is scheduled for tomorrow between 8am and 2pm. If you wish to change the delivery date please reply by typing 1 (tomorrow), 2 (Thursday) or 3 (deliver to post office) below.

Message sample. Some campaign tiers require 5.

age_gated
boolean
exampletrue

Subscribers will be required to provide their age to opt-in if set to true. NB: Sex, Hate, Alcohol, Firearms, and Tobacco related (S.H.A.F.T) messages are prohibited.

direct_lending
boolean
exampletrue

Set to true if messages are related to money lending or loan arrangements.

embedded_link
boolean

Set to true if the campaign message includes links. NB: Shortened URLs are forbidden.

embedded_phone
boolean

Does message generated by the campaign include phone number in SMS?

partner
boolean
exampletrue

Indicates the brand or campaign belong to a partner campaign.

auto_renewal
boolean

Campaign subscription auto-renewal option.

Defines the behaviour at the end of the billing cycle:

  • if true, the campaign will automatically renewed
  • if false, the campaign will expire and its status will become CANCELED
hipaa
boolean

Indicates if HIPAA is enabled for this campaign.

This is kept nullable to avoid breaking changes, but it is best to set it when creating the campaign. Otherwise, this will be set when attempting to link the first number of the campaign, whether the attempt is successful or not. After that, it will not be possible to update that field anymore.

tcr_status
string

Campaign TCR status.

Must be one of:UNKNOWNACTIVECANCELED
vertical
string
exampleTECHNOLOGY

Business/industry segment of this campaign. Please refer to the vertical property of the /enum endpoint for an updated list of valid values.

Must be one of:REAL_ESTATEHEALTHCAREENERGYENTERTAINMENTRETAILAGRICULTUREINSURANCEEDUCATIONHOSPITALITYFINANCIALGAMBLINGCONSTRUCTIONNGOMANUFACTURINGGOVERNMENTTECHNOLOGYCOMMUNICATION
number_pool
boolean
Defaulttrue

Set to true if campaign uses a pool of numbers.

registration_date
string(date-time)

Date-time when campaign was registered with TCR.

renewal_date
string(date)

Date when the campaign will be renewed and billed, if auto_renewal is true.

created_date
string(date-time)

Date when this record was created.

last_updated
string(date-time)

Date-time when this record was last updated.

billed_date
string(date-time)

Date-time when this campaign was billed.

opt_out_assist
boolean

Specifies whether opt out assist is enabled for this account.
On a campaign, indicates whether it's enabled on the primary account of the campaign's brand.

last_status_changes
array

Lists the last changes of the status field.

Note: this is only an extract. Not all changes are listed here.

status
string
exampleACTIVE

Campaign Status.

  • PENDING_REVIEW: This is the initial status of a campaign. This implies that the campaign has been submitted for an internal review and cannot be used yet.
  • UPDATES_REQUIRED: The campaign has been reviewed but requires changes before it can be approved.
  • CARRIERS_REVIEW: The campaign has been approved by our internal process. It has been created in the registry and but pending approval from third parties i.e: mobile carrier.
  • ACTIVE: The campaign has been approved by every party and traffic can now be sent.
  • PENDING_CANCELLATION: The campaign is active but will not be renewed. It will be canceled at the next renewal date.
  • SUSPENDED: The campaign has been suspended, along with any traffic it's used to send. This can happen if suspicious traffic has been detected (e.g.: spam) or after an MNO complaint. This triggers an internal review process which can lead to the un-suspension or termination of the campaign.
  • TERMINATED: The campaign has been terminated. A campaign cannot be recovered after it's been terminated.
  • EXPIRED: The campaign has expired.
  • REJECTED: This implies the campaign was rejected by the compliance team as it is not compliant with 10DLC requirements. Further reasons can be found in the description of the rejection event received from TCR. You may update the campaign using TCR’s API or dashboard, and re-share the campaign with Vonage for a new review.
  • CNP_CANCELED: The campaign has been canceled during a CNP migration. You are required to restart a CNP migration.
  • PORTED_OUT: The campaign has been ported out from Vonage. You are required to start a CNP migration.
Must be one of:PENDING_REVIEWUPDATES_REQUIREDCARRIERS_REVIEWACTIVEPENDING_CANCELLATIONSUSPENDEDTERMINATEDCANCELEDREJECTEDCNP_CANCELEDPORTED_OUT
explanation
string

Describes why the status changed how it did.

change_date
string(date-time)

Date-time when the status changed.

mno_metadata
array
network_id
string
example10017

Network ID of the MNO.

mno
string
exampleAT&T

Name of the MNO.

status
string

MNO campaign operation status. Please refer to the campaign_op_status property of the /enum endpoint response for an updated list of valid values.

mno_support
boolean

If 'false', then the desired usecase cannot be supported by the MNO.

mno_review
boolean

If 'true', then the submitted campaign is subject to the MNO (manual) review process.

qualify
boolean

If 'false', then the brand does not qualify for the desired usecase on the MNO.

min_msg_samples
integer
example2

The minimum number of message samples required by MNO for submission of the desired usecase.

req_subscriber_opt_in
boolean

If 'true' then MNO requires the subscriber to opt-into the campaign before the message may be sent to the subscriber. The opt-in mechanism can be mobile or web opt-in.

req_subscriber_opt_out
boolean

If 'true' then MNO requires a campaign to support an opt-out mechanism through MO stop keywords such as 'STOP', 'QUIT'. Upon receive the STOP message from a subscriber, the campaign must stop sending messages to the subscriber immediately.

req_subscriber_help
boolean

If 'true' then MNO requires a campaign to support a 'help' mechanism through MO help key words such as 'HELP', 'INFO'.

no_embedded_link
boolean

If 'true' then MNO forbids call-to-action link/URL to be embedded in all messages sent to the subscriber.

no_embedded_phone
boolean

If 'true' then MNO forbids call-to-action phone number to be embedded in all messages sent to the subscriber.

att_msg_class
string
exampleQ

(Only for AT&T). Message class assigned to the campaign by MNO. Please refer to the AT&T 10DLC guide for a complete list of available message class and definition.

att_tpm
integer
example3000

(Only for AT&T). SMS Message TPM (throughput per minute) qualified by the brand for the desired usecase.

att_mms_tpm
integer
example3000

(Only for AT&T). MMS Message TPM (throughput per minute) qualified by the brand for the desired usecase.

att_number_based
boolean

(Only for AT&T). Whether is the MNO applying the TPM per number or per campaign.

tmo_brand_tier
string
exampleLOW

(Only for T-Mobile). Daily message volume is restricted based on brand tier or brand qualification. The daily volume restriction applies to brand across campaigns and CSPs. Please refer to the /enum endpoint for an updated list of valid values.

Must be one of:LOWLOWER_MIDUPPER_MIDTOPUNCAPPED
tmo_tpd
integer

(Only for TMobile). Message TPD (throughput per day) qualified by the brand for the desired usecase.

complaints
array
complaints
array
description
string
Max65535

Description of this MNO complaint.

dca
string
exampleSINCH

dca name

created_at
string(date-time)

Date-time when this record was created.

carrier_brand_suspensions
array
category
string

Summarize the reason of the suspension.

explanation
string

Detailed explanation of the cause of the suspension.

_links
object
self
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879
brand
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK
numbers
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879/numbers
_links
object
brand
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK
self
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/?page=2
next
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/?page=1
previous
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/?page=1
first
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/?page=1
last
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/?page=10

Example Response

{
   "page_size": 10,
   "page": 2,
   "total_pages": 100,
   "total_items": 100,
   "_embedded": {
      "campaigns": [
         {
            "primary_account_id": "abcd1234",
            "account_id": "abcd1234",
            "brand_id": "BLQKOPK",
            "campaign_id": "VC987XYZ",
            "tcr_campaign_id": "C123ABC",
            "reseller_id": "R123456",
            "reseller": true,
            "label": "This is a sample campaign",
            "status": "ACTIVE",
            "traffic_enabled": true,
            "usecase": "ACCOUNT_NOTIFICATION",
            "sub_usecases": [
               "2FA",
               "SECURITY_ALERT"
            ],
            "description": "User notifications",
            "message_flow": "Brand: My brand \\\nConsent mechanisms: \\\n- TEXT_TO_JOIN: Opt-in Keywords: START,JOIN. A text will be sent to the customer. He can reply yes to consent and opt in. \\\n- ONLINE_FORM: This is an online form \\\n  Link: https://mybrand.com/optin \\\nMessage & data rates may apply. - Message frequency varies \\\nCarriers are not liable for delayed or undelivered messages. \\\nText HELP for help. Text STOP to opt-out. \\\nTerms & Conditions: https://mybrand.com/terms_and_conditions \\\nPrivacy Policy: https://mybrand.com/privacy_policy\n",
            "message_flow_details": {
               "brand_name": "My brand",
               "consent_mechanisms": [
                  {
                     "method": "TEXT_TO_JOIN",
                     "details": "A text will be sent to the customer. He can reply yes to consent and opt in."
                  },
                  {
                     "method": "ONLINE_FORM",
                     "details": "An online form allows the customer to subscribe.",
                     "attachment": "https://mybrand.com/optin"
                  }
               ],
               "pricing_disclosure": true,
               "frequency": "RECURRING",
               "privacy_policy": "https://mybrand.com/privacy_policy",
               "terms_and_conditions": "https://mybrand.com/terms_and_conditions"
            },
            "subscriber_opt_in": false,
            "opt_in_keywords": "START,SUBSCRIBE",
            "opt_in_message": "<Brand Name>: You are now opted-in. For help, reply HELP. To opt-out, reply STOP\n",
            "subscriber_opt_out": false,
            "opt_out_keywords": "STOP,QUIT",
            "opt_out_message": "<Brand Name>: You are now opted-out and will receive no further messages.\n",
            "subscriber_help": false,
            "help_keywords": "HELP,INFO",
            "help_message": "<Brand Name>: For help, email support@example.com. To opt-out, reply STOP\n",
            "sample_one": "Hi\nThis is a reminder that you have a scheduled appointment with Dr. Doe tomorrow at 4:00PM.\n",
            "sample_two": "Hello,\nYour order, number XXXXXXX, has been shipped.\n",
            "sample_three": "Here is you unique PIN number to access the application: 123456\n",
            "sample_four": "Hello Mr Doe,\nYour payment of 9.99$ was authorized. You can find your invoice in your customer account.\n",
            "sample_five": "Your delivery is scheduled for tomorrow between 8am and 2pm.\nIf you wish to change the delivery date please reply by typing 1 (tomorrow), 2 (Thursday) or 3 (deliver to post office) below.\n",
            "age_gated": true,
            "direct_lending": true,
            "embedded_link": false,
            "embedded_phone": false,
            "partner": true,
            "auto_renewal": true,
            "hipaa": true,
            "tcr_status": "UNKNOWN",
            "vertical": "TECHNOLOGY",
            "number_pool": false,
            "registration_date": "2019-08-24T14:15:22Z",
            "renewal_date": "2019-08-24",
            "created_date": "2019-08-24T14:15:22Z",
            "last_updated": "2019-08-24T14:15:22Z",
            "billed_date": "2019-08-24T14:15:22Z",
            "opt_out_assist": false,
            "last_status_changes": [
               {
                  "status": "APPROVED",
                  "reason": "Approved after internal review.",
                  "change_date": "2022-01-01 01:01:01"
               }
            ],
            "mno_metadata": [
               {
                  "network_id": "10017",
                  "mno": "AT&T",
                  "status": "string",
                  "mno_support": true,
                  "mno_review": true,
                  "qualify": true,
                  "min_msg_samples": 2,
                  "req_subscriber_opt_in": true,
                  "req_subscriber_opt_out": true,
                  "req_subscriber_help": true,
                  "no_embedded_link": true,
                  "no_embedded_phone": true,
                  "att_msg_class": "Q",
                  "att_tpm": 3000,
                  "att_mms_tpm": 3000,
                  "att_number_based": true,
                  "tmo_brand_tier": "LOW",
                  "tmo_tpd": 0,
                  "complaints": [
                     {
                        "complaints": [
                           {
                              "description": "string",
                              "dca": "SINCH",
                              "created_at": "2019-08-24T14:15:22Z"
                           }
                        ]
                     }
                  ]
               }
            ],
            "carrier_brand_suspensions": [
               [
                  {}
               ]
            ],
            "_links": {
               "self": {
                  "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879"
               },
               "brand": {
                  "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK"
               },
               "numbers": {
                  "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879/numbers"
               }
            }
         }
      ]
   },
   "_links": {
      "brand": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK"
      },
      "self": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/?page=2"
      },
      "next": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/?page=1"
      },
      "previous": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/?page=1"
      },
      "first": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/?page=1"
      },
      "last": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/?page=10"
      }
   }
}

Add a new campaign to a brand

Create Campaign

Message samples

The number of required message samples on the maximum of these 3 values:

  1. The number of min_msg_samples for the usecase, as returned by the /enum endpoint.
  2. The number of entries in the sub_usecases field.
  3. The maximum of min_msg_samples asked by MNOs on the brand qualification endpoint.

Notes:

  1. opt_in_message is mandatory if opt_in_keywords is set.
  2. Either message_flow or message_flow_details is required, but only one of them may be specified.
posthttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/campaigns

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

Request Body
Content Type
application/json

account_id
string
Required
exampleabcd1234

The Vonage Account ID

vertical
string
exampleTECHNOLOGY

Business/industry segment of this campaign. Please refer to the vertical property of the /enum endpoint for an updated list of valid values.

Must be one of:REAL_ESTATEHEALTHCAREENERGYENTERTAINMENTRETAILAGRICULTUREINSURANCEEDUCATIONHOSPITALITYFINANCIALGAMBLINGCONSTRUCTIONNGOMANUFACTURINGGOVERNMENTTECHNOLOGYCOMMUNICATION
usecase
string
Required
Max50
exampleACCOUNT_NOTIFICATION

Campaign usecase. Please refer to the /enum endpoint for an updated list of valid values.

Must be one of:CUSTOMER_CAREPOLLING_VOTINGHIGHER_EDUCATIONPUBLIC_SERVICE_ANNOUNCEMENTMARKETINGSECURITY_ALERTDELIVERY_NOTIFICATIONACCOUNT_NOTIFICATION2FAFRAUD_ALERTTRIALCHARITYPOLITICALEMERGENCYSWEEPSTAKECONVERSATIONALMIXEDCARRIER_EXEMPTSOCIALLOW_VOLUME
sub_usecases
array
reseller_id
string
Max8
exampleR123456

Alphanumeric TCR identifier of the reseller associated with this campaign.
R000000 is a special value meaning this is not a reseller campaign.

This is required when creating a campaign on behalf of another company or entity.

In POST and PATCH endpoints, this is ignored if the reseller field on the same call. It will also be ignored if the brand's reseller field is true.
If tcr_campaign_id and reseller_id are set (not an empty string) then this field cannot be changed anymore.

reseller
boolean

Indicates if a campaign is a reseller campaign.

This is required when creating a campaign on behalf of another company or entity.

This can only be enabled if a valid reseller (status PENDING or APPROVED) is linked to the primary account of the brand.

In POST and PATCH endpoints, this is ignored if the brand's reseller field is true.

description
string
Required
Min40
Max4096
exampleUser notifications

Summary description of this campaign

age_gated
boolean
exampletrue

Subscribers will be required to provide their age to opt-in if set to true. NB: Sex, Hate, Alcohol, Firearms, and Tobacco related (S.H.A.F.T) messages are prohibited.

direct_lending
boolean
exampletrue

Set to true if messages are related to money lending or loan arrangements.

sample_one
string
Min20
Max1024
exampleHi This is a reminder that you have a scheduled appointment with Dr. Doe tomorrow at 4:00PM.

Message sample. Some campaign tiers require 1 or more message samples.

sample_two
string
Min20
Max1024
exampleHello, Your order, number XXXXXXX, has been shipped.

Message sample. Some campaign tiers require 2 or more message samples.

sample_three
string
Min20
Max1024
exampleHere is you unique PIN number to access the application: 123456

Message sample. Some campaign tiers require 3 or more message samples.

sample_four
string
Min20
Max1024
exampleHello Mr Doe, Your payment of 9.99$ was authorized. You can find your invoice in your customer account.

Message sample. Some campaign tiers require 4 or more message samples.

sample_five
string
Min20
Max1024
exampleYour delivery is scheduled for tomorrow between 8am and 2pm. If you wish to change the delivery date please reply by typing 1 (tomorrow), 2 (Thursday) or 3 (deliver to post office) below.

Message sample. Some campaign tiers require 5.

message_flow
string
Min40
Max4096
exampleBrand: My brand \ Consent mechanisms: \ - TEXT_TO_JOIN: Opt-in Keywords: START,JOIN. A text will be sent to the customer. He can reply yes to consent and opt in. \ - ONLINE_FORM: This is an online form \ Link: https://mybrand.com/optin \ Message & data rates may apply. - Message frequency varies \ Carriers are not liable for delayed or undelivered messages. \ Text HELP for help. Text STOP to opt-out. \ Terms & Conditions: https://mybrand.com/terms_and_conditions \ Privacy Policy: https://mybrand.com/privacy_policy

Message flow, also known as Call to Action, of the campaign.

This field should describe how a consumer opts-in to the campaign, therefore giving consent to the sender to receive their messages. The call-to-action must be explicitly clear and inform the consumer of the nature of the program.

  • Entering a telephone number through a website;
  • Clicking a button on a mobile webpage;
  • Sending a message from the Consumer’s mobile device that contains an advertising keyword;
  • Initiating the text message exchange in which the Message Sender replies to the Consumer only with responsive information;
  • Signing up at a point-of-sale (POS) or other Message Sender on-site location; or
  • Opting-in over the phone using interactive voice response (IVR) technology.

If multiple opt-in methods can be used for the same campaign, you must list them all.

When creating or updating a campaign, either message_flow or message_flow_details may be specified, but not both. When reading a campaign, message_flow will always be filled with data computed from message_flow_details.

Describes what the opt_in option was used for. NBThis attribute will be deprecated on POST and PATCH endpoint. Please update your application to use the message_flow_details property instead.

message_flow_details
object

Message flow details specifies the message_flow field as a structured object instead of a single text field.

When creating or updating a campaign:

  1. either message_flow or message_flow_details may be specified, but not both.
  2. if message_flow_details is specified, the object's fields will be used to fill a template. The resulting templated text will be used to fill the message_flow field of the campaign.

When reading a campaign message_flow_details will only be filled if it's been used to create or update the campaign.

For more information on Campaign message flows, please see this campaign requirements article.

brand_name
string
Required

A brand name associated with the campaign. This can be different from the name of the brand the campaign belongs to (e.g. for subsidiaries, ...).

NB: This is optional for sole proprietors.

consent_mechanisms
array
Required

Describe the different mechanisms a customer may use to consent to the campaign.

It is required to provide an attachment for all consent methods, except TEXT_TO_JOIN.

method
string
Required
Must be one of:ONLINE_FORMLIVE_OPERATORPOINT_OF_SALETEXT_TO_JOINOTHER
details
string
Required

Details on the consent mechanism.

attachment
string(uri)

An HTTP(S) link to the resource describing the mechanism.

pricing_disclosure
boolean
Required

This field needs to be true to consent to adding the pricing disclosure to the template.

The following will be added: Message and Data rates may apply

Must be one of:true
carrier_disclaimer
boolean

Whether to add the following disclaimer: Carriers are not liable for delayed or undelivered messages.

Must be one of:true
frequency
string
Required

The frequency of the messages sent by the campaign.

Must be one of:ONE_TIMERECURRING
privacy_policy
string(uri)
Required

Link to the campaign's privacy policy.

terms_and_conditions
string(uri)
Required

Link to the campaign's terms and conditions.

help_message
string
Required
Min20
Max320
example<Brand Name>: For help, email support@example.com. To opt-out, reply STOP

Help message of the campaign.

The response to HELP keyword may include the Brand name and additional support contact information.

opt_in_message
string
Required
Min20
Max320
example<Brand Name>: You are now opted-in. For help, reply HELP. To opt-out, reply STOP

Opt in message sent to confirmation enrollment to a recurring message campaign. Also provide information on how to get HELP or undo enrollment. If consumers can text in a keyword,the response should include the Brand name.
NB: This field is mandatory if opt_in_keywords is set.

opt_out_message
string
Required
Min20
Max320
example<Brand Name>: You are now opted-out and will receive no further messages.

Opt out message of the campaign. The response to the STOP keyword may include the Brand name but should include an acknowledgement of the opt-out request and confirmation that no further messages will be sent.
NB: Required for all recurring campaigns or for SMS opt-in.

help_keywords
string
Max255
DefaultHELP
exampleHELP,INFO

Help keywords of the campaign, separated by comas. This field must not contain any spaces, and must contain the HELP keyword if set.

opt_in_keywords
string
Max255
exampleSTART,SUBSCRIBE

Opt in keywords of the campaign, separated by comas.

opt_out_keywords
string
Max255
DefaultSTOP
exampleSTOP,QUIT

Opt out keywords of the campaign, separated by comas. This field must not contain any spaces, and must contain the STOP keyword if set.

tc_agreed
boolean
Required
exampletrue

Set to true to accept 10DLC's terms and conditions. T&Cs are determined by The Campaign Registry (TCR). You may retrieve the latest version of those terms and conditions using the campaign T&C endpoint.

embedded_link
boolean

Set to true if the campaign message includes links. NB: Shortened URLs are forbidden.

embedded_phone
boolean

Does message generated by the campaign include phone number in SMS?

label
string
Max50
exampleThis is a sample campaign

Friendly name associated with this campaign.

hipaa
boolean

Indicates if HIPAA is enabled for this campaign.

This is kept nullable to avoid breaking changes, but it is best to set it when creating the campaign. Otherwise, this will be set when attempting to link the first number of the campaign, whether the attempt is successful or not. After that, it will not be possible to update that field anymore.

Example Request

{
   "account_id": "abcd1234",
   "vertical": "TECHNOLOGY",
   "usecase": "ACCOUNT_NOTIFICATION",
   "sub_usecases": [
      "ACCOUNT_NOTIFICATION"
   ],
   "reseller_id": "R123456",
   "reseller": true,
   "description": "User notifications",
   "age_gated": true,
   "direct_lending": true,
   "sample_one": "Hi\nThis is a reminder that you have a scheduled appointment with Dr. Doe tomorrow at 4:00PM.\n",
   "sample_two": "Hello,\nYour order, number XXXXXXX, has been shipped.\n",
   "sample_three": "Here is you unique PIN number to access the application: 123456\n",
   "sample_four": "Hello Mr Doe,\nYour payment of 9.99$ was authorized. You can find your invoice in your customer account.\n",
   "sample_five": "Your delivery is scheduled for tomorrow between 8am and 2pm.\nIf you wish to change the delivery date please reply by typing 1 (tomorrow), 2 (Thursday) or 3 (deliver to post office) below.\n",
   "message_flow": "Brand: My brand \\\nConsent mechanisms: \\\n- TEXT_TO_JOIN: Opt-in Keywords: START,JOIN. A text will be sent to the customer. He can reply yes to consent and opt in. \\\n- ONLINE_FORM: This is an online form \\\n  Link: https://mybrand.com/optin \\\nMessage & data rates may apply. - Message frequency varies \\\nCarriers are not liable for delayed or undelivered messages. \\\nText HELP for help. Text STOP to opt-out. \\\nTerms & Conditions: https://mybrand.com/terms_and_conditions \\\nPrivacy Policy: https://mybrand.com/privacy_policy\n",
   "message_flow_details": {
      "brand_name": "My brand",
      "consent_mechanisms": [
         {
            "method": "TEXT_TO_JOIN",
            "details": "A text will be sent to the customer. He can reply yes to consent and opt in."
         },
         {
            "method": "ONLINE_FORM",
            "details": "An online form allows the customer to subscribe.",
            "attachment": "https://mybrand.com/optin"
         }
      ],
      "pricing_disclosure": true,
      "frequency": "RECURRING",
      "privacy_policy": "https://mybrand.com/privacy_policy",
      "terms_and_conditions": "https://mybrand.com/terms_and_conditions"
   },
   "help_message": "<Brand Name>: For help, email support@example.com. To opt-out, reply STOP\n",
   "opt_in_message": "<Brand Name>: You are now opted-in. For help, reply HELP. To opt-out, reply STOP\n",
   "opt_out_message": "<Brand Name>: You are now opted-out and will receive no further messages.\n",
   "help_keywords": "HELP,INFO",
   "opt_in_keywords": "START,SUBSCRIBE",
   "opt_out_keywords": "STOP,QUIT",
   "tc_agreed": true,
   "embedded_link": false,
   "embedded_phone": false,
   "label": "This is a sample campaign",
   "hipaa": true
}

Responses
Content Type
application/json

Return a single campaign

primary_account_id
string
exampleabcd1234

The Vonage Primary Account ID (the parent account of account_id).

account_id
string
exampleabcd1234

The Vonage Account ID

brand_id
string
Max50
exampleBLQKOPK

TCR Brand ID.

campaign_id
string
Max50
exampleVC987XYZ

Vonage Campaign ID.

tcr_campaign_id
string
Max50
exampleC123ABC

TCR Campaign ID.

reseller_id
string
Max8
exampleR123456

Alphanumeric TCR identifier of the reseller associated with this campaign.
R000000 is a special value meaning this is not a reseller campaign.

This is required when creating a campaign on behalf of another company or entity.

In POST and PATCH endpoints, this is ignored if the reseller field on the same call. It will also be ignored if the brand's reseller field is true.
If tcr_campaign_id and reseller_id are set (not an empty string) then this field cannot be changed anymore.

reseller
boolean

Indicates if a campaign is a reseller campaign.

This is required when creating a campaign on behalf of another company or entity.

This can only be enabled if a valid reseller (status PENDING or APPROVED) is linked to the primary account of the brand.

In POST and PATCH endpoints, this is ignored if the brand's reseller field is true.

label
string
Max50
exampleThis is a sample campaign

Friendly name associated with this campaign.

status
string
exampleACTIVE

Campaign Status.

  • PENDING_REVIEW: This is the initial status of a campaign. This implies that the campaign has been submitted for an internal review and cannot be used yet.
  • UPDATES_REQUIRED: The campaign has been reviewed but requires changes before it can be approved.
  • CARRIERS_REVIEW: The campaign has been approved by our internal process. It has been created in the registry and but pending approval from third parties i.e: mobile carrier.
  • ACTIVE: The campaign has been approved by every party and traffic can now be sent.
  • PENDING_CANCELLATION: The campaign is active but will not be renewed. It will be canceled at the next renewal date.
  • SUSPENDED: The campaign has been suspended, along with any traffic it's used to send. This can happen if suspicious traffic has been detected (e.g.: spam) or after an MNO complaint. This triggers an internal review process which can lead to the un-suspension or termination of the campaign.
  • TERMINATED: The campaign has been terminated. A campaign cannot be recovered after it's been terminated.
  • EXPIRED: The campaign has expired.
  • REJECTED: This implies the campaign was rejected by the compliance team as it is not compliant with 10DLC requirements. Further reasons can be found in the description of the rejection event received from TCR. You may update the campaign using TCR’s API or dashboard, and re-share the campaign with Vonage for a new review.
  • CNP_CANCELED: The campaign has been canceled during a CNP migration. You are required to restart a CNP migration.
  • PORTED_OUT: The campaign has been ported out from Vonage. You are required to start a CNP migration.
Must be one of:PENDING_REVIEWUPDATES_REQUIREDCARRIERS_REVIEWACTIVEPENDING_CANCELLATIONSUSPENDEDTERMINATEDCANCELEDREJECTEDCNP_CANCELEDPORTED_OUT
traffic_enabled
boolean

Indicates if traffic is enabled for this campaign.

Traffic first becomes enabled when the campaign's status becomes ACTIVE. It can be suspended later due to a number of reasons (campaign suspension, expiration, termination, ...).

NB This is only a requirement for traffic to be allowed but not is not the only requirement. Traffic can also be stopped due to brand suspensions, number not linked properly, ...

usecase
string
Max50
exampleACCOUNT_NOTIFICATION

Campaign usecase. Please refer to the /enum endpoint for an updated list of valid values.

Must be one of:CUSTOMER_CAREPOLLING_VOTINGHIGHER_EDUCATIONPUBLIC_SERVICE_ANNOUNCEMENTMARKETINGSECURITY_ALERTDELIVERY_NOTIFICATIONACCOUNT_NOTIFICATION2FAFRAUD_ALERTTRIALCHARITYPOLITICALEMERGENCYSWEEPSTAKECONVERSATIONALMIXEDCARRIER_EXEMPTSOCIALLOW_VOLUME
sub_usecases
array

Campaign sub-usecases. Please refer to the /enum endpoint for an updated list of valid values.

description
string
Min40
Max4096
exampleUser notifications

Summary description of this campaign

message_flow
string
Min40
Max4096
exampleBrand: My brand \ Consent mechanisms: \ - TEXT_TO_JOIN: Opt-in Keywords: START,JOIN. A text will be sent to the customer. He can reply yes to consent and opt in. \ - ONLINE_FORM: This is an online form \ Link: https://mybrand.com/optin \ Message & data rates may apply. - Message frequency varies \ Carriers are not liable for delayed or undelivered messages. \ Text HELP for help. Text STOP to opt-out. \ Terms & Conditions: https://mybrand.com/terms_and_conditions \ Privacy Policy: https://mybrand.com/privacy_policy

Message flow, also known as Call to Action, of the campaign. It will always be filled with data computed from message_flow_details.

This field should describe how a consumer opts-in to the campaign, therefore giving consent to the sender to receive their messages. The call-to-action must be explicitly clear and inform the consumer of the nature of the program.

  • Entering a telephone number through a website;
  • Clicking a button on a mobile webpage;
  • Sending a message from the Consumer’s mobile device that contains an advertising keyword;
  • Initiating the text message exchange in which the Message Sender replies to the Consumer only with responsive information;
  • Signing up at a point-of-sale (POS) or other Message Sender on-site location; or
  • Opting-in over the phone using interactive voice response (IVR) technology.

If multiple opt-in methods can be used for the same campaign, you must list them all.

Describes what the opt_in option was used for.

message_flow_details
object

Message flow details specifies the message_flow field as a structured object instead of a single text field.

When creating or updating a campaign:

  1. either message_flow or message_flow_details may be specified, but not both.
  2. if message_flow_details is specified, the object's fields will be used to fill a template. The resulting templated text will be used to fill the message_flow field of the campaign.

When reading a campaign message_flow_details will only be filled if it's been used to create or update the campaign.

For more information on Campaign message flows, please see this campaign requirements article.

brand_name
string
Required

A brand name associated with the campaign. This can be different from the name of the brand the campaign belongs to (e.g. for subsidiaries, ...).

NB: This is optional for sole proprietors.

consent_mechanisms
array
Required

Describe the different mechanisms a customer may use to consent to the campaign.

It is required to provide an attachment for all consent methods, except TEXT_TO_JOIN.

method
string
Required
Must be one of:ONLINE_FORMLIVE_OPERATORPOINT_OF_SALETEXT_TO_JOINOTHER
details
string
Required

Details on the consent mechanism.

attachment
string(uri)

An HTTP(S) link to the resource describing the mechanism.

pricing_disclosure
boolean
Required

This field needs to be true to consent to adding the pricing disclosure to the template.

The following will be added: Message and Data rates may apply

Must be one of:true
carrier_disclaimer
boolean

Whether to add the following disclaimer: Carriers are not liable for delayed or undelivered messages.

Must be one of:true
frequency
string
Required

The frequency of the messages sent by the campaign.

Must be one of:ONE_TIMERECURRING
privacy_policy
string(uri)
Required

Link to the campaign's privacy policy.

terms_and_conditions
string(uri)
Required

Link to the campaign's terms and conditions.

subscriber_opt_in
boolean
Defaulttrue

Does campaign require subscriber to opt-in before SMS is sent to subscriber?

opt_in_keywords
string
Max255
exampleSTART,SUBSCRIBE

Opt in keywords of the campaign, separated by comas.

opt_in_message
string
Min20
Max320
example<Brand Name>: You are now opted-in. For help, reply HELP. To opt-out, reply STOP

Opt in message sent to confirmation enrollment to a recurring message campaign. Also provide information on how to get HELP or undo enrollment. If consumers can text in a keyword,the response should include the Brand name.
NB: This field is mandatory if opt_in_keywords is set.

subscriber_opt_out
boolean
Defaulttrue

Does campaign support subscriber opt-out keyword(s)?

opt_out_keywords
string
Max255
DefaultSTOP
exampleSTOP,QUIT

Opt out keywords of the campaign, separated by comas. This field must not contain any spaces, and must contain the STOP keyword if set.

opt_out_message
string
Min20
Max320
example<Brand Name>: You are now opted-out and will receive no further messages.

Opt out message of the campaign. The response to the STOP keyword may include the Brand name but should include an acknowledgement of the opt-out request and confirmation that no further messages will be sent.
NB: Required for all recurring campaigns or for SMS opt-in.

subscriber_help
boolean
Defaulttrue

Does campaign responds to help keyword(s)?

help_keywords
string
Max255
DefaultHELP
exampleHELP,INFO

Help keywords of the campaign, separated by comas. This field must not contain any spaces, and must contain the HELP keyword if set.

help_message
string
Min20
Max320
example<Brand Name>: For help, email support@example.com. To opt-out, reply STOP

Help message of the campaign.

The response to HELP keyword may include the Brand name and additional support contact information.

sample_one
string
Min20
Max1024
exampleHi This is a reminder that you have a scheduled appointment with Dr. Doe tomorrow at 4:00PM.

Message sample. Some campaign tiers require 1 or more message samples.

sample_two
string
Min20
Max1024
exampleHello, Your order, number XXXXXXX, has been shipped.

Message sample. Some campaign tiers require 2 or more message samples.

sample_three
string
Min20
Max1024
exampleHere is you unique PIN number to access the application: 123456

Message sample. Some campaign tiers require 3 or more message samples.

sample_four
string
Min20
Max1024
exampleHello Mr Doe, Your payment of 9.99$ was authorized. You can find your invoice in your customer account.

Message sample. Some campaign tiers require 4 or more message samples.

sample_five
string
Min20
Max1024
exampleYour delivery is scheduled for tomorrow between 8am and 2pm. If you wish to change the delivery date please reply by typing 1 (tomorrow), 2 (Thursday) or 3 (deliver to post office) below.

Message sample. Some campaign tiers require 5.

age_gated
boolean
exampletrue

Subscribers will be required to provide their age to opt-in if set to true. NB: Sex, Hate, Alcohol, Firearms, and Tobacco related (S.H.A.F.T) messages are prohibited.

direct_lending
boolean
exampletrue

Set to true if messages are related to money lending or loan arrangements.

embedded_link
boolean

Set to true if the campaign message includes links. NB: Shortened URLs are forbidden.

embedded_phone
boolean

Does message generated by the campaign include phone number in SMS?

partner
boolean
exampletrue

Indicates the brand or campaign belong to a partner campaign.

auto_renewal
boolean

Campaign subscription auto-renewal option.

Defines the behaviour at the end of the billing cycle:

  • if true, the campaign will automatically renewed
  • if false, the campaign will expire and its status will become CANCELED
hipaa
boolean

Indicates if HIPAA is enabled for this campaign.

This is kept nullable to avoid breaking changes, but it is best to set it when creating the campaign. Otherwise, this will be set when attempting to link the first number of the campaign, whether the attempt is successful or not. After that, it will not be possible to update that field anymore.

tcr_status
string

Campaign TCR status.

Must be one of:UNKNOWNACTIVECANCELED
vertical
string
exampleTECHNOLOGY

Business/industry segment of this campaign. Please refer to the vertical property of the /enum endpoint for an updated list of valid values.

Must be one of:REAL_ESTATEHEALTHCAREENERGYENTERTAINMENTRETAILAGRICULTUREINSURANCEEDUCATIONHOSPITALITYFINANCIALGAMBLINGCONSTRUCTIONNGOMANUFACTURINGGOVERNMENTTECHNOLOGYCOMMUNICATION
number_pool
boolean
Defaulttrue

Set to true if campaign uses a pool of numbers.

registration_date
string(date-time)

Date-time when campaign was registered with TCR.

renewal_date
string(date)

Date when the campaign will be renewed and billed, if auto_renewal is true.

created_date
string(date-time)

Date when this record was created.

last_updated
string(date-time)

Date-time when this record was last updated.

billed_date
string(date-time)

Date-time when this campaign was billed.

opt_out_assist
boolean

Specifies whether opt out assist is enabled for this account.
On a campaign, indicates whether it's enabled on the primary account of the campaign's brand.

last_status_changes
array

Lists the last changes of the status field.

Note: this is only an extract. Not all changes are listed here.

status
string
exampleACTIVE

Campaign Status.

  • PENDING_REVIEW: This is the initial status of a campaign. This implies that the campaign has been submitted for an internal review and cannot be used yet.
  • UPDATES_REQUIRED: The campaign has been reviewed but requires changes before it can be approved.
  • CARRIERS_REVIEW: The campaign has been approved by our internal process. It has been created in the registry and but pending approval from third parties i.e: mobile carrier.
  • ACTIVE: The campaign has been approved by every party and traffic can now be sent.
  • PENDING_CANCELLATION: The campaign is active but will not be renewed. It will be canceled at the next renewal date.
  • SUSPENDED: The campaign has been suspended, along with any traffic it's used to send. This can happen if suspicious traffic has been detected (e.g.: spam) or after an MNO complaint. This triggers an internal review process which can lead to the un-suspension or termination of the campaign.
  • TERMINATED: The campaign has been terminated. A campaign cannot be recovered after it's been terminated.
  • EXPIRED: The campaign has expired.
  • REJECTED: This implies the campaign was rejected by the compliance team as it is not compliant with 10DLC requirements. Further reasons can be found in the description of the rejection event received from TCR. You may update the campaign using TCR’s API or dashboard, and re-share the campaign with Vonage for a new review.
  • CNP_CANCELED: The campaign has been canceled during a CNP migration. You are required to restart a CNP migration.
  • PORTED_OUT: The campaign has been ported out from Vonage. You are required to start a CNP migration.
Must be one of:PENDING_REVIEWUPDATES_REQUIREDCARRIERS_REVIEWACTIVEPENDING_CANCELLATIONSUSPENDEDTERMINATEDCANCELEDREJECTEDCNP_CANCELEDPORTED_OUT
explanation
string

Describes why the status changed how it did.

change_date
string(date-time)

Date-time when the status changed.

mno_metadata
array
network_id
string
example10017

Network ID of the MNO.

mno
string
exampleAT&T

Name of the MNO.

status
string

MNO campaign operation status. Please refer to the campaign_op_status property of the /enum endpoint response for an updated list of valid values.

mno_support
boolean

If 'false', then the desired usecase cannot be supported by the MNO.

mno_review
boolean

If 'true', then the submitted campaign is subject to the MNO (manual) review process.

qualify
boolean

If 'false', then the brand does not qualify for the desired usecase on the MNO.

min_msg_samples
integer
example2

The minimum number of message samples required by MNO for submission of the desired usecase.

req_subscriber_opt_in
boolean

If 'true' then MNO requires the subscriber to opt-into the campaign before the message may be sent to the subscriber. The opt-in mechanism can be mobile or web opt-in.

req_subscriber_opt_out
boolean

If 'true' then MNO requires a campaign to support an opt-out mechanism through MO stop keywords such as 'STOP', 'QUIT'. Upon receive the STOP message from a subscriber, the campaign must stop sending messages to the subscriber immediately.

req_subscriber_help
boolean

If 'true' then MNO requires a campaign to support a 'help' mechanism through MO help key words such as 'HELP', 'INFO'.

no_embedded_link
boolean

If 'true' then MNO forbids call-to-action link/URL to be embedded in all messages sent to the subscriber.

no_embedded_phone
boolean

If 'true' then MNO forbids call-to-action phone number to be embedded in all messages sent to the subscriber.

att_msg_class
string
exampleQ

(Only for AT&T). Message class assigned to the campaign by MNO. Please refer to the AT&T 10DLC guide for a complete list of available message class and definition.

att_tpm
integer
example3000

(Only for AT&T). SMS Message TPM (throughput per minute) qualified by the brand for the desired usecase.

att_mms_tpm
integer
example3000

(Only for AT&T). MMS Message TPM (throughput per minute) qualified by the brand for the desired usecase.

att_number_based
boolean

(Only for AT&T). Whether is the MNO applying the TPM per number or per campaign.

tmo_brand_tier
string
exampleLOW

(Only for T-Mobile). Daily message volume is restricted based on brand tier or brand qualification. The daily volume restriction applies to brand across campaigns and CSPs. Please refer to the /enum endpoint for an updated list of valid values.

Must be one of:LOWLOWER_MIDUPPER_MIDTOPUNCAPPED
tmo_tpd
integer

(Only for TMobile). Message TPD (throughput per day) qualified by the brand for the desired usecase.

complaints
array
complaints
array
description
string
Max65535

Description of this MNO complaint.

dca
string
exampleSINCH

dca name

created_at
string(date-time)

Date-time when this record was created.

carrier_brand_suspensions
array
category
string

Summarize the reason of the suspension.

explanation
string

Detailed explanation of the cause of the suspension.

_links
object
self
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879
brand
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK
numbers
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879/numbers

Example Response

{
   "primary_account_id": "abcd1234",
   "account_id": "abcd1234",
   "brand_id": "BLQKOPK",
   "campaign_id": "VC987XYZ",
   "tcr_campaign_id": "C123ABC",
   "reseller_id": "R123456",
   "reseller": true,
   "label": "This is a sample campaign",
   "status": "ACTIVE",
   "traffic_enabled": true,
   "usecase": "ACCOUNT_NOTIFICATION",
   "sub_usecases": [
      "2FA",
      "SECURITY_ALERT"
   ],
   "description": "User notifications",
   "message_flow": "Brand: My brand \\\nConsent mechanisms: \\\n- TEXT_TO_JOIN: Opt-in Keywords: START,JOIN. A text will be sent to the customer. He can reply yes to consent and opt in. \\\n- ONLINE_FORM: This is an online form \\\n  Link: https://mybrand.com/optin \\\nMessage & data rates may apply. - Message frequency varies \\\nCarriers are not liable for delayed or undelivered messages. \\\nText HELP for help. Text STOP to opt-out. \\\nTerms & Conditions: https://mybrand.com/terms_and_conditions \\\nPrivacy Policy: https://mybrand.com/privacy_policy\n",
   "message_flow_details": {
      "brand_name": "My brand",
      "consent_mechanisms": [
         {
            "method": "TEXT_TO_JOIN",
            "details": "A text will be sent to the customer. He can reply yes to consent and opt in."
         },
         {
            "method": "ONLINE_FORM",
            "details": "An online form allows the customer to subscribe.",
            "attachment": "https://mybrand.com/optin"
         }
      ],
      "pricing_disclosure": true,
      "frequency": "RECURRING",
      "privacy_policy": "https://mybrand.com/privacy_policy",
      "terms_and_conditions": "https://mybrand.com/terms_and_conditions"
   },
   "subscriber_opt_in": false,
   "opt_in_keywords": "START,SUBSCRIBE",
   "opt_in_message": "<Brand Name>: You are now opted-in. For help, reply HELP. To opt-out, reply STOP\n",
   "subscriber_opt_out": false,
   "opt_out_keywords": "STOP,QUIT",
   "opt_out_message": "<Brand Name>: You are now opted-out and will receive no further messages.\n",
   "subscriber_help": false,
   "help_keywords": "HELP,INFO",
   "help_message": "<Brand Name>: For help, email support@example.com. To opt-out, reply STOP\n",
   "sample_one": "Hi\nThis is a reminder that you have a scheduled appointment with Dr. Doe tomorrow at 4:00PM.\n",
   "sample_two": "Hello,\nYour order, number XXXXXXX, has been shipped.\n",
   "sample_three": "Here is you unique PIN number to access the application: 123456\n",
   "sample_four": "Hello Mr Doe,\nYour payment of 9.99$ was authorized. You can find your invoice in your customer account.\n",
   "sample_five": "Your delivery is scheduled for tomorrow between 8am and 2pm.\nIf you wish to change the delivery date please reply by typing 1 (tomorrow), 2 (Thursday) or 3 (deliver to post office) below.\n",
   "age_gated": true,
   "direct_lending": true,
   "embedded_link": false,
   "embedded_phone": false,
   "partner": true,
   "auto_renewal": true,
   "hipaa": true,
   "tcr_status": "UNKNOWN",
   "vertical": "TECHNOLOGY",
   "number_pool": false,
   "registration_date": "2019-08-24T14:15:22Z",
   "renewal_date": "2019-08-24",
   "created_date": "2019-08-24T14:15:22Z",
   "last_updated": "2019-08-24T14:15:22Z",
   "billed_date": "2019-08-24T14:15:22Z",
   "opt_out_assist": false,
   "last_status_changes": [
      {
         "status": "APPROVED",
         "reason": "Approved after internal review.",
         "change_date": "2022-01-01 01:01:01"
      }
   ],
   "mno_metadata": [
      {
         "network_id": "10017",
         "mno": "AT&T",
         "status": "string",
         "mno_support": true,
         "mno_review": true,
         "qualify": true,
         "min_msg_samples": 2,
         "req_subscriber_opt_in": true,
         "req_subscriber_opt_out": true,
         "req_subscriber_help": true,
         "no_embedded_link": true,
         "no_embedded_phone": true,
         "att_msg_class": "Q",
         "att_tpm": 3000,
         "att_mms_tpm": 3000,
         "att_number_based": true,
         "tmo_brand_tier": "LOW",
         "tmo_tpd": 0,
         "complaints": [
            {
               "complaints": [
                  {
                     "description": "string",
                     "dca": "SINCH",
                     "created_at": "2019-08-24T14:15:22Z"
                  }
               ]
            }
         ]
      }
   ],
   "carrier_brand_suspensions": [
      [
         {}
      ]
   ],
   "_links": {
      "self": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879"
      },
      "brand": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK"
      },
      "numbers": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879/numbers"
      }
   }
}

Preview message flow

Creates a message flow text, based on the structured object given.

The result is the same text that would be computed from field message_flow_details to fill message_flow when creating a campaign.

Note: if the resulting message_flow length is not in the allowed range (40 to 4096), the endpoint will return a 422 error.

posthttps://api-eu.vonage.com/v1/10dlc/campaigns/message_flow

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Request Body
Content Type
application/json

brand_name
string
Required

A brand name associated with the campaign. This can be different from the name of the brand the campaign belongs to (e.g. for subsidiaries, ...).

NB: This is optional for sole proprietors.

consent_mechanisms
array
Required

Describe the different mechanisms a customer may use to consent to the campaign.

It is required to provide an attachment for all consent methods, except TEXT_TO_JOIN.

method
string
Required
Must be one of:ONLINE_FORMLIVE_OPERATORPOINT_OF_SALETEXT_TO_JOINOTHER
details
string
Required

Details on the consent mechanism.

attachment
string(uri)

An HTTP(S) link to the resource describing the mechanism.

pricing_disclosure
boolean
Required

This field needs to be true to consent to adding the pricing disclosure to the template.

The following will be added: Message and Data rates may apply

Must be one of:true
carrier_disclaimer
boolean

Whether to add the following disclaimer: Carriers are not liable for delayed or undelivered messages.

Must be one of:true
frequency
string
Required

The frequency of the messages sent by the campaign.

Must be one of:ONE_TIMERECURRING
privacy_policy
string(uri)
Required

Link to the campaign's privacy policy.

terms_and_conditions
string(uri)
Required

Link to the campaign's terms and conditions.

opt_in_keywords
string
Max255
exampleSTART,SUBSCRIBE

Opt in keywords of the campaign, separated by comas.

Example Request

{
   "brand_name": "string",
   "consent_mechanisms": [
      {
         "method": "ONLINE_FORM",
         "details": "string",
         "attachment": "http://example.com"
      }
   ],
   "pricing_disclosure": true,
   "carrier_disclaimer": true,
   "frequency": "ONE_TIME",
   "privacy_policy": "http://example.com",
   "terms_and_conditions": "http://example.com",
   "opt_in_keywords": "START,SUBSCRIBE"
}

Responses
Content Type
application/json

An object holding the computed message flow.

message_flow
string
Min40
Max4096
exampleBrand: My brand \ Consent mechanisms: \ - TEXT_TO_JOIN: Opt-in Keywords: START,JOIN. A text will be sent to the customer. He can reply yes to consent and opt in. \ - ONLINE_FORM: This is an online form \ Link: https://mybrand.com/optin \ Message & data rates may apply. - Message frequency varies \ Carriers are not liable for delayed or undelivered messages. \ Text HELP for help. Text STOP to opt-out. \ Terms & Conditions: https://mybrand.com/terms_and_conditions \ Privacy Policy: https://mybrand.com/privacy_policy

Message flow, also known as Call to Action, of the campaign. It will always be filled with data computed from message_flow_details.

This field should describe how a consumer opts-in to the campaign, therefore giving consent to the sender to receive their messages. The call-to-action must be explicitly clear and inform the consumer of the nature of the program.

  • Entering a telephone number through a website;
  • Clicking a button on a mobile webpage;
  • Sending a message from the Consumer’s mobile device that contains an advertising keyword;
  • Initiating the text message exchange in which the Message Sender replies to the Consumer only with responsive information;
  • Signing up at a point-of-sale (POS) or other Message Sender on-site location; or
  • Opting-in over the phone using interactive voice response (IVR) technology.

If multiple opt-in methods can be used for the same campaign, you must list them all.

Describes what the opt_in option was used for.

Example Response

{
   "message_flow": "Brand: My brand \\\nConsent mechanisms: \\\n- TEXT_TO_JOIN: Opt-in Keywords: START,JOIN. A text will be sent to the customer. He can reply yes to consent and opt in. \\\n- ONLINE_FORM: This is an online form \\\n  Link: https://mybrand.com/optin \\\nMessage & data rates may apply. - Message frequency varies \\\nCarriers are not liable for delayed or undelivered messages. \\\nText HELP for help. Text STOP to opt-out. \\\nTerms & Conditions: https://mybrand.com/terms_and_conditions \\\nPrivacy Policy: https://mybrand.com/privacy_policy\n"
}

Retrieve a specific campaign

Get a campaign

gethttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/campaigns/:campaign_id

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

campaign_id
string
Required
Max50
exampleVC987XYZ

ID associated with a specific campaign

Responses
Content Type
application/json

Return a single campaign

primary_account_id
string
exampleabcd1234

The Vonage Primary Account ID (the parent account of account_id).

account_id
string
exampleabcd1234

The Vonage Account ID

brand_id
string
Max50
exampleBLQKOPK

TCR Brand ID.

campaign_id
string
Max50
exampleVC987XYZ

Vonage Campaign ID.

tcr_campaign_id
string
Max50
exampleC123ABC

TCR Campaign ID.

reseller_id
string
Max8
exampleR123456

Alphanumeric TCR identifier of the reseller associated with this campaign.
R000000 is a special value meaning this is not a reseller campaign.

This is required when creating a campaign on behalf of another company or entity.

In POST and PATCH endpoints, this is ignored if the reseller field on the same call. It will also be ignored if the brand's reseller field is true.
If tcr_campaign_id and reseller_id are set (not an empty string) then this field cannot be changed anymore.

reseller
boolean

Indicates if a campaign is a reseller campaign.

This is required when creating a campaign on behalf of another company or entity.

This can only be enabled if a valid reseller (status PENDING or APPROVED) is linked to the primary account of the brand.

In POST and PATCH endpoints, this is ignored if the brand's reseller field is true.

label
string
Max50
exampleThis is a sample campaign

Friendly name associated with this campaign.

status
string
exampleACTIVE

Campaign Status.

  • PENDING_REVIEW: This is the initial status of a campaign. This implies that the campaign has been submitted for an internal review and cannot be used yet.
  • UPDATES_REQUIRED: The campaign has been reviewed but requires changes before it can be approved.
  • CARRIERS_REVIEW: The campaign has been approved by our internal process. It has been created in the registry and but pending approval from third parties i.e: mobile carrier.
  • ACTIVE: The campaign has been approved by every party and traffic can now be sent.
  • PENDING_CANCELLATION: The campaign is active but will not be renewed. It will be canceled at the next renewal date.
  • SUSPENDED: The campaign has been suspended, along with any traffic it's used to send. This can happen if suspicious traffic has been detected (e.g.: spam) or after an MNO complaint. This triggers an internal review process which can lead to the un-suspension or termination of the campaign.
  • TERMINATED: The campaign has been terminated. A campaign cannot be recovered after it's been terminated.
  • EXPIRED: The campaign has expired.
  • REJECTED: This implies the campaign was rejected by the compliance team as it is not compliant with 10DLC requirements. Further reasons can be found in the description of the rejection event received from TCR. You may update the campaign using TCR’s API or dashboard, and re-share the campaign with Vonage for a new review.
  • CNP_CANCELED: The campaign has been canceled during a CNP migration. You are required to restart a CNP migration.
  • PORTED_OUT: The campaign has been ported out from Vonage. You are required to start a CNP migration.
Must be one of:PENDING_REVIEWUPDATES_REQUIREDCARRIERS_REVIEWACTIVEPENDING_CANCELLATIONSUSPENDEDTERMINATEDCANCELEDREJECTEDCNP_CANCELEDPORTED_OUT
traffic_enabled
boolean

Indicates if traffic is enabled for this campaign.

Traffic first becomes enabled when the campaign's status becomes ACTIVE. It can be suspended later due to a number of reasons (campaign suspension, expiration, termination, ...).

NB This is only a requirement for traffic to be allowed but not is not the only requirement. Traffic can also be stopped due to brand suspensions, number not linked properly, ...

usecase
string
Max50
exampleACCOUNT_NOTIFICATION

Campaign usecase. Please refer to the /enum endpoint for an updated list of valid values.

Must be one of:CUSTOMER_CAREPOLLING_VOTINGHIGHER_EDUCATIONPUBLIC_SERVICE_ANNOUNCEMENTMARKETINGSECURITY_ALERTDELIVERY_NOTIFICATIONACCOUNT_NOTIFICATION2FAFRAUD_ALERTTRIALCHARITYPOLITICALEMERGENCYSWEEPSTAKECONVERSATIONALMIXEDCARRIER_EXEMPTSOCIALLOW_VOLUME
sub_usecases
array

Campaign sub-usecases. Please refer to the /enum endpoint for an updated list of valid values.

description
string
Min40
Max4096
exampleUser notifications

Summary description of this campaign

message_flow
string
Min40
Max4096
exampleBrand: My brand \ Consent mechanisms: \ - TEXT_TO_JOIN: Opt-in Keywords: START,JOIN. A text will be sent to the customer. He can reply yes to consent and opt in. \ - ONLINE_FORM: This is an online form \ Link: https://mybrand.com/optin \ Message & data rates may apply. - Message frequency varies \ Carriers are not liable for delayed or undelivered messages. \ Text HELP for help. Text STOP to opt-out. \ Terms & Conditions: https://mybrand.com/terms_and_conditions \ Privacy Policy: https://mybrand.com/privacy_policy

Message flow, also known as Call to Action, of the campaign. It will always be filled with data computed from message_flow_details.

This field should describe how a consumer opts-in to the campaign, therefore giving consent to the sender to receive their messages. The call-to-action must be explicitly clear and inform the consumer of the nature of the program.

  • Entering a telephone number through a website;
  • Clicking a button on a mobile webpage;
  • Sending a message from the Consumer’s mobile device that contains an advertising keyword;
  • Initiating the text message exchange in which the Message Sender replies to the Consumer only with responsive information;
  • Signing up at a point-of-sale (POS) or other Message Sender on-site location; or
  • Opting-in over the phone using interactive voice response (IVR) technology.

If multiple opt-in methods can be used for the same campaign, you must list them all.

Describes what the opt_in option was used for.

message_flow_details
object

Message flow details specifies the message_flow field as a structured object instead of a single text field.

When creating or updating a campaign:

  1. either message_flow or message_flow_details may be specified, but not both.
  2. if message_flow_details is specified, the object's fields will be used to fill a template. The resulting templated text will be used to fill the message_flow field of the campaign.

When reading a campaign message_flow_details will only be filled if it's been used to create or update the campaign.

For more information on Campaign message flows, please see this campaign requirements article.

brand_name
string
Required

A brand name associated with the campaign. This can be different from the name of the brand the campaign belongs to (e.g. for subsidiaries, ...).

NB: This is optional for sole proprietors.

consent_mechanisms
array
Required

Describe the different mechanisms a customer may use to consent to the campaign.

It is required to provide an attachment for all consent methods, except TEXT_TO_JOIN.

method
string
Required
Must be one of:ONLINE_FORMLIVE_OPERATORPOINT_OF_SALETEXT_TO_JOINOTHER
details
string
Required

Details on the consent mechanism.

attachment
string(uri)

An HTTP(S) link to the resource describing the mechanism.

pricing_disclosure
boolean
Required

This field needs to be true to consent to adding the pricing disclosure to the template.

The following will be added: Message and Data rates may apply

Must be one of:true
carrier_disclaimer
boolean

Whether to add the following disclaimer: Carriers are not liable for delayed or undelivered messages.

Must be one of:true
frequency
string
Required

The frequency of the messages sent by the campaign.

Must be one of:ONE_TIMERECURRING
privacy_policy
string(uri)
Required

Link to the campaign's privacy policy.

terms_and_conditions
string(uri)
Required

Link to the campaign's terms and conditions.

subscriber_opt_in
boolean
Defaulttrue

Does campaign require subscriber to opt-in before SMS is sent to subscriber?

opt_in_keywords
string
Max255
exampleSTART,SUBSCRIBE

Opt in keywords of the campaign, separated by comas.

opt_in_message
string
Min20
Max320
example<Brand Name>: You are now opted-in. For help, reply HELP. To opt-out, reply STOP

Opt in message sent to confirmation enrollment to a recurring message campaign. Also provide information on how to get HELP or undo enrollment. If consumers can text in a keyword,the response should include the Brand name.
NB: This field is mandatory if opt_in_keywords is set.

subscriber_opt_out
boolean
Defaulttrue

Does campaign support subscriber opt-out keyword(s)?

opt_out_keywords
string
Max255
DefaultSTOP
exampleSTOP,QUIT

Opt out keywords of the campaign, separated by comas. This field must not contain any spaces, and must contain the STOP keyword if set.

opt_out_message
string
Min20
Max320
example<Brand Name>: You are now opted-out and will receive no further messages.

Opt out message of the campaign. The response to the STOP keyword may include the Brand name but should include an acknowledgement of the opt-out request and confirmation that no further messages will be sent.
NB: Required for all recurring campaigns or for SMS opt-in.

subscriber_help
boolean
Defaulttrue

Does campaign responds to help keyword(s)?

help_keywords
string
Max255
DefaultHELP
exampleHELP,INFO

Help keywords of the campaign, separated by comas. This field must not contain any spaces, and must contain the HELP keyword if set.

help_message
string
Min20
Max320
example<Brand Name>: For help, email support@example.com. To opt-out, reply STOP

Help message of the campaign.

The response to HELP keyword may include the Brand name and additional support contact information.

sample_one
string
Min20
Max1024
exampleHi This is a reminder that you have a scheduled appointment with Dr. Doe tomorrow at 4:00PM.

Message sample. Some campaign tiers require 1 or more message samples.

sample_two
string
Min20
Max1024
exampleHello, Your order, number XXXXXXX, has been shipped.

Message sample. Some campaign tiers require 2 or more message samples.

sample_three
string
Min20
Max1024
exampleHere is you unique PIN number to access the application: 123456

Message sample. Some campaign tiers require 3 or more message samples.

sample_four
string
Min20
Max1024
exampleHello Mr Doe, Your payment of 9.99$ was authorized. You can find your invoice in your customer account.

Message sample. Some campaign tiers require 4 or more message samples.

sample_five
string
Min20
Max1024
exampleYour delivery is scheduled for tomorrow between 8am and 2pm. If you wish to change the delivery date please reply by typing 1 (tomorrow), 2 (Thursday) or 3 (deliver to post office) below.

Message sample. Some campaign tiers require 5.

age_gated
boolean
exampletrue

Subscribers will be required to provide their age to opt-in if set to true. NB: Sex, Hate, Alcohol, Firearms, and Tobacco related (S.H.A.F.T) messages are prohibited.

direct_lending
boolean
exampletrue

Set to true if messages are related to money lending or loan arrangements.

embedded_link
boolean

Set to true if the campaign message includes links. NB: Shortened URLs are forbidden.

embedded_phone
boolean

Does message generated by the campaign include phone number in SMS?

partner
boolean
exampletrue

Indicates the brand or campaign belong to a partner campaign.

auto_renewal
boolean

Campaign subscription auto-renewal option.

Defines the behaviour at the end of the billing cycle:

  • if true, the campaign will automatically renewed
  • if false, the campaign will expire and its status will become CANCELED
hipaa
boolean

Indicates if HIPAA is enabled for this campaign.

This is kept nullable to avoid breaking changes, but it is best to set it when creating the campaign. Otherwise, this will be set when attempting to link the first number of the campaign, whether the attempt is successful or not. After that, it will not be possible to update that field anymore.

tcr_status
string

Campaign TCR status.

Must be one of:UNKNOWNACTIVECANCELED
vertical
string
exampleTECHNOLOGY

Business/industry segment of this campaign. Please refer to the vertical property of the /enum endpoint for an updated list of valid values.

Must be one of:REAL_ESTATEHEALTHCAREENERGYENTERTAINMENTRETAILAGRICULTUREINSURANCEEDUCATIONHOSPITALITYFINANCIALGAMBLINGCONSTRUCTIONNGOMANUFACTURINGGOVERNMENTTECHNOLOGYCOMMUNICATION
number_pool
boolean
Defaulttrue

Set to true if campaign uses a pool of numbers.

registration_date
string(date-time)

Date-time when campaign was registered with TCR.

renewal_date
string(date)

Date when the campaign will be renewed and billed, if auto_renewal is true.

created_date
string(date-time)

Date when this record was created.

last_updated
string(date-time)

Date-time when this record was last updated.

billed_date
string(date-time)

Date-time when this campaign was billed.

opt_out_assist
boolean

Specifies whether opt out assist is enabled for this account.
On a campaign, indicates whether it's enabled on the primary account of the campaign's brand.

last_status_changes
array

Lists the last changes of the status field.

Note: this is only an extract. Not all changes are listed here.

status
string
exampleACTIVE

Campaign Status.

  • PENDING_REVIEW: This is the initial status of a campaign. This implies that the campaign has been submitted for an internal review and cannot be used yet.
  • UPDATES_REQUIRED: The campaign has been reviewed but requires changes before it can be approved.
  • CARRIERS_REVIEW: The campaign has been approved by our internal process. It has been created in the registry and but pending approval from third parties i.e: mobile carrier.
  • ACTIVE: The campaign has been approved by every party and traffic can now be sent.
  • PENDING_CANCELLATION: The campaign is active but will not be renewed. It will be canceled at the next renewal date.
  • SUSPENDED: The campaign has been suspended, along with any traffic it's used to send. This can happen if suspicious traffic has been detected (e.g.: spam) or after an MNO complaint. This triggers an internal review process which can lead to the un-suspension or termination of the campaign.
  • TERMINATED: The campaign has been terminated. A campaign cannot be recovered after it's been terminated.
  • EXPIRED: The campaign has expired.
  • REJECTED: This implies the campaign was rejected by the compliance team as it is not compliant with 10DLC requirements. Further reasons can be found in the description of the rejection event received from TCR. You may update the campaign using TCR’s API or dashboard, and re-share the campaign with Vonage for a new review.
  • CNP_CANCELED: The campaign has been canceled during a CNP migration. You are required to restart a CNP migration.
  • PORTED_OUT: The campaign has been ported out from Vonage. You are required to start a CNP migration.
Must be one of:PENDING_REVIEWUPDATES_REQUIREDCARRIERS_REVIEWACTIVEPENDING_CANCELLATIONSUSPENDEDTERMINATEDCANCELEDREJECTEDCNP_CANCELEDPORTED_OUT
explanation
string

Describes why the status changed how it did.

change_date
string(date-time)

Date-time when the status changed.

mno_metadata
array
network_id
string
example10017

Network ID of the MNO.

mno
string
exampleAT&T

Name of the MNO.

status
string

MNO campaign operation status. Please refer to the campaign_op_status property of the /enum endpoint response for an updated list of valid values.

mno_support
boolean

If 'false', then the desired usecase cannot be supported by the MNO.

mno_review
boolean

If 'true', then the submitted campaign is subject to the MNO (manual) review process.

qualify
boolean

If 'false', then the brand does not qualify for the desired usecase on the MNO.

min_msg_samples
integer
example2

The minimum number of message samples required by MNO for submission of the desired usecase.

req_subscriber_opt_in
boolean

If 'true' then MNO requires the subscriber to opt-into the campaign before the message may be sent to the subscriber. The opt-in mechanism can be mobile or web opt-in.

req_subscriber_opt_out
boolean

If 'true' then MNO requires a campaign to support an opt-out mechanism through MO stop keywords such as 'STOP', 'QUIT'. Upon receive the STOP message from a subscriber, the campaign must stop sending messages to the subscriber immediately.

req_subscriber_help
boolean

If 'true' then MNO requires a campaign to support a 'help' mechanism through MO help key words such as 'HELP', 'INFO'.

no_embedded_link
boolean

If 'true' then MNO forbids call-to-action link/URL to be embedded in all messages sent to the subscriber.

no_embedded_phone
boolean

If 'true' then MNO forbids call-to-action phone number to be embedded in all messages sent to the subscriber.

att_msg_class
string
exampleQ

(Only for AT&T). Message class assigned to the campaign by MNO. Please refer to the AT&T 10DLC guide for a complete list of available message class and definition.

att_tpm
integer
example3000

(Only for AT&T). SMS Message TPM (throughput per minute) qualified by the brand for the desired usecase.

att_mms_tpm
integer
example3000

(Only for AT&T). MMS Message TPM (throughput per minute) qualified by the brand for the desired usecase.

att_number_based
boolean

(Only for AT&T). Whether is the MNO applying the TPM per number or per campaign.

tmo_brand_tier
string
exampleLOW

(Only for T-Mobile). Daily message volume is restricted based on brand tier or brand qualification. The daily volume restriction applies to brand across campaigns and CSPs. Please refer to the /enum endpoint for an updated list of valid values.

Must be one of:LOWLOWER_MIDUPPER_MIDTOPUNCAPPED
tmo_tpd
integer

(Only for TMobile). Message TPD (throughput per day) qualified by the brand for the desired usecase.

complaints
array
complaints
array
description
string
Max65535

Description of this MNO complaint.

dca
string
exampleSINCH

dca name

created_at
string(date-time)

Date-time when this record was created.

carrier_brand_suspensions
array
category
string

Summarize the reason of the suspension.

explanation
string

Detailed explanation of the cause of the suspension.

_links
object
self
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879
brand
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK
numbers
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879/numbers

Example Response

{
   "primary_account_id": "abcd1234",
   "account_id": "abcd1234",
   "brand_id": "BLQKOPK",
   "campaign_id": "VC987XYZ",
   "tcr_campaign_id": "C123ABC",
   "reseller_id": "R123456",
   "reseller": true,
   "label": "This is a sample campaign",
   "status": "ACTIVE",
   "traffic_enabled": true,
   "usecase": "ACCOUNT_NOTIFICATION",
   "sub_usecases": [
      "2FA",
      "SECURITY_ALERT"
   ],
   "description": "User notifications",
   "message_flow": "Brand: My brand \\\nConsent mechanisms: \\\n- TEXT_TO_JOIN: Opt-in Keywords: START,JOIN. A text will be sent to the customer. He can reply yes to consent and opt in. \\\n- ONLINE_FORM: This is an online form \\\n  Link: https://mybrand.com/optin \\\nMessage & data rates may apply. - Message frequency varies \\\nCarriers are not liable for delayed or undelivered messages. \\\nText HELP for help. Text STOP to opt-out. \\\nTerms & Conditions: https://mybrand.com/terms_and_conditions \\\nPrivacy Policy: https://mybrand.com/privacy_policy\n",
   "message_flow_details": {
      "brand_name": "My brand",
      "consent_mechanisms": [
         {
            "method": "TEXT_TO_JOIN",
            "details": "A text will be sent to the customer. He can reply yes to consent and opt in."
         },
         {
            "method": "ONLINE_FORM",
            "details": "An online form allows the customer to subscribe.",
            "attachment": "https://mybrand.com/optin"
         }
      ],
      "pricing_disclosure": true,
      "frequency": "RECURRING",
      "privacy_policy": "https://mybrand.com/privacy_policy",
      "terms_and_conditions": "https://mybrand.com/terms_and_conditions"
   },
   "subscriber_opt_in": false,
   "opt_in_keywords": "START,SUBSCRIBE",
   "opt_in_message": "<Brand Name>: You are now opted-in. For help, reply HELP. To opt-out, reply STOP\n",
   "subscriber_opt_out": false,
   "opt_out_keywords": "STOP,QUIT",
   "opt_out_message": "<Brand Name>: You are now opted-out and will receive no further messages.\n",
   "subscriber_help": false,
   "help_keywords": "HELP,INFO",
   "help_message": "<Brand Name>: For help, email support@example.com. To opt-out, reply STOP\n",
   "sample_one": "Hi\nThis is a reminder that you have a scheduled appointment with Dr. Doe tomorrow at 4:00PM.\n",
   "sample_two": "Hello,\nYour order, number XXXXXXX, has been shipped.\n",
   "sample_three": "Here is you unique PIN number to access the application: 123456\n",
   "sample_four": "Hello Mr Doe,\nYour payment of 9.99$ was authorized. You can find your invoice in your customer account.\n",
   "sample_five": "Your delivery is scheduled for tomorrow between 8am and 2pm.\nIf you wish to change the delivery date please reply by typing 1 (tomorrow), 2 (Thursday) or 3 (deliver to post office) below.\n",
   "age_gated": true,
   "direct_lending": true,
   "embedded_link": false,
   "embedded_phone": false,
   "partner": true,
   "auto_renewal": true,
   "hipaa": true,
   "tcr_status": "UNKNOWN",
   "vertical": "TECHNOLOGY",
   "number_pool": false,
   "registration_date": "2019-08-24T14:15:22Z",
   "renewal_date": "2019-08-24",
   "created_date": "2019-08-24T14:15:22Z",
   "last_updated": "2019-08-24T14:15:22Z",
   "billed_date": "2019-08-24T14:15:22Z",
   "opt_out_assist": false,
   "last_status_changes": [
      {
         "status": "APPROVED",
         "reason": "Approved after internal review.",
         "change_date": "2022-01-01 01:01:01"
      }
   ],
   "mno_metadata": [
      {
         "network_id": "10017",
         "mno": "AT&T",
         "status": "string",
         "mno_support": true,
         "mno_review": true,
         "qualify": true,
         "min_msg_samples": 2,
         "req_subscriber_opt_in": true,
         "req_subscriber_opt_out": true,
         "req_subscriber_help": true,
         "no_embedded_link": true,
         "no_embedded_phone": true,
         "att_msg_class": "Q",
         "att_tpm": 3000,
         "att_mms_tpm": 3000,
         "att_number_based": true,
         "tmo_brand_tier": "LOW",
         "tmo_tpd": 0,
         "complaints": [
            {
               "complaints": [
                  {
                     "description": "string",
                     "dca": "SINCH",
                     "created_at": "2019-08-24T14:15:22Z"
                  }
               ]
            }
         ]
      }
   ],
   "carrier_brand_suspensions": [
      [
         {}
      ]
   ],
   "_links": {
      "self": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879"
      },
      "brand": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK"
      },
      "numbers": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879/numbers"
      }
   }
}

Partially update a specific campaign

Update campaign parameters

What can be updated depends on the campaign's state:

  • If the campaign's status is TERMINATED or CANCELED, the campaign may not be updated.
  • If the campaign's status is PENDING_REVIEW or UPDATES_REQUIRED, all fields may be updated.
  • For other statuses, the following fields may not be updated since they are read only after the initial approval of the campaign by Vonage compliance team:
    • vertical
    • usecase
    • sub_usecases
    • age_gated
    • direct_lending
    • embedded_link
    • embedded_phone
    • status
  • The hipaa field can only be updated if no number was ever linked to that campaign.

Forced values

  • status can only be set to “CANCELED”, to cancel a campaign, Otherwise, it must be left out, or set to null.

NB:

  1. opt_in_message is mandatory if opt_in_keywords is set.
  2. message_flow and message_flow_details are mutually exclusive.
  • if message_flow is passed, it will erase any stored message_flow_details.
  • if message_flow_details is passed, it will be stored and used to compute message_flow.
patchhttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/campaigns/:campaign_id

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

campaign_id
string
Required
Max50
exampleVC987XYZ

ID associated with a specific campaign

Request Body
Content Type
application/json

label
string
Max50
exampleThis is a sample campaign

Friendly name associated with this campaign.

description
string
Min40
Max4096
exampleUser notifications

Summary description of this campaign

reseller_id
string
Max8
exampleR123456

Alphanumeric TCR identifier of the reseller associated with this campaign.
R000000 is a special value meaning this is not a reseller campaign.

This is required when creating a campaign on behalf of another company or entity.

In POST and PATCH endpoints, this is ignored if the reseller field on the same call. It will also be ignored if the brand's reseller field is true.
If tcr_campaign_id and reseller_id are set (not an empty string) then this field cannot be changed anymore.

reseller
boolean

Indicates if a campaign is a reseller campaign.

This is required when creating a campaign on behalf of another company or entity.

This can only be enabled if a valid reseller (status PENDING or APPROVED) is linked to the primary account of the brand.

In POST and PATCH endpoints, this is ignored if the brand's reseller field is true.

sample_one
string
Min20
Max1024
exampleHi This is a reminder that you have a scheduled appointment with Dr. Doe tomorrow at 4:00PM.

Message sample. Some campaign tiers require 1 or more message samples.

sample_two
string
Min20
Max1024
exampleHello, Your order, number XXXXXXX, has been shipped.

Message sample. Some campaign tiers require 2 or more message samples.

sample_three
string
Min20
Max1024
exampleHere is you unique PIN number to access the application: 123456

Message sample. Some campaign tiers require 3 or more message samples.

sample_four
string
Min20
Max1024
exampleHello Mr Doe, Your payment of 9.99$ was authorized. You can find your invoice in your customer account.

Message sample. Some campaign tiers require 4 or more message samples.

sample_five
string
Min20
Max1024
exampleYour delivery is scheduled for tomorrow between 8am and 2pm. If you wish to change the delivery date please reply by typing 1 (tomorrow), 2 (Thursday) or 3 (deliver to post office) below.

Message sample. Some campaign tiers require 5.

message_flow
string
Min40
Max4096
exampleBrand: My brand \ Consent mechanisms: \ - TEXT_TO_JOIN: Opt-in Keywords: START,JOIN. A text will be sent to the customer. He can reply yes to consent and opt in. \ - ONLINE_FORM: This is an online form \ Link: https://mybrand.com/optin \ Message & data rates may apply. - Message frequency varies \ Carriers are not liable for delayed or undelivered messages. \ Text HELP for help. Text STOP to opt-out. \ Terms & Conditions: https://mybrand.com/terms_and_conditions \ Privacy Policy: https://mybrand.com/privacy_policy

Message flow, also known as Call to Action, of the campaign.

This field should describe how a consumer opts-in to the campaign, therefore giving consent to the sender to receive their messages. The call-to-action must be explicitly clear and inform the consumer of the nature of the program.

  • Entering a telephone number through a website;
  • Clicking a button on a mobile webpage;
  • Sending a message from the Consumer’s mobile device that contains an advertising keyword;
  • Initiating the text message exchange in which the Message Sender replies to the Consumer only with responsive information;
  • Signing up at a point-of-sale (POS) or other Message Sender on-site location; or
  • Opting-in over the phone using interactive voice response (IVR) technology.

If multiple opt-in methods can be used for the same campaign, you must list them all.

When creating or updating a campaign, either message_flow or message_flow_details may be specified, but not both. When reading a campaign, message_flow will always be filled with data computed from message_flow_details.

Describes what the opt_in option was used for. NBThis attribute will be deprecated on POST and PATCH endpoint. Please update your application to use the message_flow_details property instead.

message_flow_details
object

Message flow details specifies the message_flow field as a structured object instead of a single text field.

When creating or updating a campaign:

  1. either message_flow or message_flow_details may be specified, but not both.
  2. if message_flow_details is specified, the object's fields will be used to fill a template. The resulting templated text will be used to fill the message_flow field of the campaign.

When reading a campaign message_flow_details will only be filled if it's been used to create or update the campaign.

For more information on Campaign message flows, please see this campaign requirements article.

brand_name
string
Required

A brand name associated with the campaign. This can be different from the name of the brand the campaign belongs to (e.g. for subsidiaries, ...).

NB: This is optional for sole proprietors.

consent_mechanisms
array
Required

Describe the different mechanisms a customer may use to consent to the campaign.

It is required to provide an attachment for all consent methods, except TEXT_TO_JOIN.

method
string
Required
Must be one of:ONLINE_FORMLIVE_OPERATORPOINT_OF_SALETEXT_TO_JOINOTHER
details
string
Required

Details on the consent mechanism.

attachment
string(uri)

An HTTP(S) link to the resource describing the mechanism.

pricing_disclosure
boolean
Required

This field needs to be true to consent to adding the pricing disclosure to the template.

The following will be added: Message and Data rates may apply

Must be one of:true
carrier_disclaimer
boolean

Whether to add the following disclaimer: Carriers are not liable for delayed or undelivered messages.

Must be one of:true
frequency
string
Required

The frequency of the messages sent by the campaign.

Must be one of:ONE_TIMERECURRING
privacy_policy
string(uri)
Required

Link to the campaign's privacy policy.

terms_and_conditions
string(uri)
Required

Link to the campaign's terms and conditions.

help_message
string
Min20
Max320
example<Brand Name>: For help, email support@example.com. To opt-out, reply STOP

Help message of the campaign.

The response to HELP keyword may include the Brand name and additional support contact information.

opt_in_message
string
Min20
Max320
example<Brand Name>: You are now opted-in. For help, reply HELP. To opt-out, reply STOP

Opt in message sent to confirmation enrollment to a recurring message campaign. Also provide information on how to get HELP or undo enrollment. If consumers can text in a keyword,the response should include the Brand name.
NB: This field is mandatory if opt_in_keywords is set.

opt_out_message
string
Min20
Max320
example<Brand Name>: You are now opted-out and will receive no further messages.

Opt out message of the campaign. The response to the STOP keyword may include the Brand name but should include an acknowledgement of the opt-out request and confirmation that no further messages will be sent.
NB: Required for all recurring campaigns or for SMS opt-in.

help_keywords
string
Max255
DefaultHELP
exampleHELP,INFO

Help keywords of the campaign, separated by comas. This field must not contain any spaces, and must contain the HELP keyword if set.

opt_in_keywords
string
Max255
exampleSTART,SUBSCRIBE

Opt in keywords of the campaign, separated by comas.

opt_out_keywords
string
Max255
DefaultSTOP
exampleSTOP,QUIT

Opt out keywords of the campaign, separated by comas. This field must not contain any spaces, and must contain the STOP keyword if set.

auto_renewal
boolean

Campaign subscription auto-renewal option.

status
string

Campaign status. Only status CANCELED may be manually set.

Must be one of:CANCELED
vertical
string
exampleTECHNOLOGY

Business/industry segment of this campaign. Please refer to the vertical property of the /enum endpoint for an updated list of valid values.

Must be one of:REAL_ESTATEHEALTHCAREENERGYENTERTAINMENTRETAILAGRICULTUREINSURANCEEDUCATIONHOSPITALITYFINANCIALGAMBLINGCONSTRUCTIONNGOMANUFACTURINGGOVERNMENTTECHNOLOGYCOMMUNICATION
usecase
string
Max50
exampleACCOUNT_NOTIFICATION

Campaign usecase. Please refer to the /enum endpoint for an updated list of valid values.

Must be one of:CUSTOMER_CAREPOLLING_VOTINGHIGHER_EDUCATIONPUBLIC_SERVICE_ANNOUNCEMENTMARKETINGSECURITY_ALERTDELIVERY_NOTIFICATIONACCOUNT_NOTIFICATION2FAFRAUD_ALERTTRIALCHARITYPOLITICALEMERGENCYSWEEPSTAKECONVERSATIONALMIXEDCARRIER_EXEMPTSOCIALLOW_VOLUME
sub_usecases
array
age_gated
boolean
exampletrue

Subscribers will be required to provide their age to opt-in if set to true. NB: Sex, Hate, Alcohol, Firearms, and Tobacco related (S.H.A.F.T) messages are prohibited.

direct_lending
boolean
exampletrue

Set to true if messages are related to money lending or loan arrangements.

embedded_link
boolean

Set to true if the campaign message includes links. NB: Shortened URLs are forbidden.

embedded_phone
boolean

Does message generated by the campaign include phone number in SMS?

hipaa
boolean

Indicates if HIPAA is enabled for this campaign.

This is kept nullable to avoid breaking changes, but it is best to set it when creating the campaign. Otherwise, this will be set when attempting to link the first number of the campaign, whether the attempt is successful or not. After that, it will not be possible to update that field anymore.

Example Request

{
   "label": "This is a sample campaign",
   "description": "User notifications",
   "reseller_id": "R123456",
   "reseller": true,
   "sample_one": "Hi\nThis is a reminder that you have a scheduled appointment with Dr. Doe tomorrow at 4:00PM.\n",
   "sample_two": "Hello,\nYour order, number XXXXXXX, has been shipped.\n",
   "sample_three": "Here is you unique PIN number to access the application: 123456\n",
   "sample_four": "Hello Mr Doe,\nYour payment of 9.99$ was authorized. You can find your invoice in your customer account.\n",
   "sample_five": "Your delivery is scheduled for tomorrow between 8am and 2pm.\nIf you wish to change the delivery date please reply by typing 1 (tomorrow), 2 (Thursday) or 3 (deliver to post office) below.\n",
   "message_flow": "Brand: My brand \\\nConsent mechanisms: \\\n- TEXT_TO_JOIN: Opt-in Keywords: START,JOIN. A text will be sent to the customer. He can reply yes to consent and opt in. \\\n- ONLINE_FORM: This is an online form \\\n  Link: https://mybrand.com/optin \\\nMessage & data rates may apply. - Message frequency varies \\\nCarriers are not liable for delayed or undelivered messages. \\\nText HELP for help. Text STOP to opt-out. \\\nTerms & Conditions: https://mybrand.com/terms_and_conditions \\\nPrivacy Policy: https://mybrand.com/privacy_policy\n",
   "message_flow_details": {
      "brand_name": "My brand",
      "consent_mechanisms": [
         {
            "method": "TEXT_TO_JOIN",
            "details": "A text will be sent to the customer. He can reply yes to consent and opt in."
         },
         {
            "method": "ONLINE_FORM",
            "details": "An online form allows the customer to subscribe.",
            "attachment": "https://mybrand.com/optin"
         }
      ],
      "pricing_disclosure": true,
      "frequency": "RECURRING",
      "privacy_policy": "https://mybrand.com/privacy_policy",
      "terms_and_conditions": "https://mybrand.com/terms_and_conditions"
   },
   "help_message": "<Brand Name>: For help, email support@example.com. To opt-out, reply STOP\n",
   "opt_in_message": "<Brand Name>: You are now opted-in. For help, reply HELP. To opt-out, reply STOP\n",
   "opt_out_message": "<Brand Name>: You are now opted-out and will receive no further messages.\n",
   "help_keywords": "HELP,INFO",
   "opt_in_keywords": "START,SUBSCRIBE",
   "opt_out_keywords": "STOP,QUIT",
   "auto_renewal": true,
   "status": "CANCELED",
   "vertical": "TECHNOLOGY",
   "usecase": "ACCOUNT_NOTIFICATION",
   "sub_usecases": [
      "ACCOUNT_NOTIFICATION"
   ],
   "age_gated": true,
   "direct_lending": true,
   "embedded_link": false,
   "embedded_phone": false,
   "hipaa": true
}

Responses
Content Type
application/json

Return a single campaign

primary_account_id
string
exampleabcd1234

The Vonage Primary Account ID (the parent account of account_id).

account_id
string
exampleabcd1234

The Vonage Account ID

brand_id
string
Max50
exampleBLQKOPK

TCR Brand ID.

campaign_id
string
Max50
exampleVC987XYZ

Vonage Campaign ID.

tcr_campaign_id
string
Max50
exampleC123ABC

TCR Campaign ID.

reseller_id
string
Max8
exampleR123456

Alphanumeric TCR identifier of the reseller associated with this campaign.
R000000 is a special value meaning this is not a reseller campaign.

This is required when creating a campaign on behalf of another company or entity.

In POST and PATCH endpoints, this is ignored if the reseller field on the same call. It will also be ignored if the brand's reseller field is true.
If tcr_campaign_id and reseller_id are set (not an empty string) then this field cannot be changed anymore.

reseller
boolean

Indicates if a campaign is a reseller campaign.

This is required when creating a campaign on behalf of another company or entity.

This can only be enabled if a valid reseller (status PENDING or APPROVED) is linked to the primary account of the brand.

In POST and PATCH endpoints, this is ignored if the brand's reseller field is true.

label
string
Max50
exampleThis is a sample campaign

Friendly name associated with this campaign.

status
string
exampleACTIVE

Campaign Status.

  • PENDING_REVIEW: This is the initial status of a campaign. This implies that the campaign has been submitted for an internal review and cannot be used yet.
  • UPDATES_REQUIRED: The campaign has been reviewed but requires changes before it can be approved.
  • CARRIERS_REVIEW: The campaign has been approved by our internal process. It has been created in the registry and but pending approval from third parties i.e: mobile carrier.
  • ACTIVE: The campaign has been approved by every party and traffic can now be sent.
  • PENDING_CANCELLATION: The campaign is active but will not be renewed. It will be canceled at the next renewal date.
  • SUSPENDED: The campaign has been suspended, along with any traffic it's used to send. This can happen if suspicious traffic has been detected (e.g.: spam) or after an MNO complaint. This triggers an internal review process which can lead to the un-suspension or termination of the campaign.
  • TERMINATED: The campaign has been terminated. A campaign cannot be recovered after it's been terminated.
  • EXPIRED: The campaign has expired.
  • REJECTED: This implies the campaign was rejected by the compliance team as it is not compliant with 10DLC requirements. Further reasons can be found in the description of the rejection event received from TCR. You may update the campaign using TCR’s API or dashboard, and re-share the campaign with Vonage for a new review.
  • CNP_CANCELED: The campaign has been canceled during a CNP migration. You are required to restart a CNP migration.
  • PORTED_OUT: The campaign has been ported out from Vonage. You are required to start a CNP migration.
Must be one of:PENDING_REVIEWUPDATES_REQUIREDCARRIERS_REVIEWACTIVEPENDING_CANCELLATIONSUSPENDEDTERMINATEDCANCELEDREJECTEDCNP_CANCELEDPORTED_OUT
traffic_enabled
boolean

Indicates if traffic is enabled for this campaign.

Traffic first becomes enabled when the campaign's status becomes ACTIVE. It can be suspended later due to a number of reasons (campaign suspension, expiration, termination, ...).

NB This is only a requirement for traffic to be allowed but not is not the only requirement. Traffic can also be stopped due to brand suspensions, number not linked properly, ...

usecase
string
Max50
exampleACCOUNT_NOTIFICATION

Campaign usecase. Please refer to the /enum endpoint for an updated list of valid values.

Must be one of:CUSTOMER_CAREPOLLING_VOTINGHIGHER_EDUCATIONPUBLIC_SERVICE_ANNOUNCEMENTMARKETINGSECURITY_ALERTDELIVERY_NOTIFICATIONACCOUNT_NOTIFICATION2FAFRAUD_ALERTTRIALCHARITYPOLITICALEMERGENCYSWEEPSTAKECONVERSATIONALMIXEDCARRIER_EXEMPTSOCIALLOW_VOLUME
sub_usecases
array

Campaign sub-usecases. Please refer to the /enum endpoint for an updated list of valid values.

description
string
Min40
Max4096
exampleUser notifications

Summary description of this campaign

message_flow
string
Min40
Max4096
exampleBrand: My brand \ Consent mechanisms: \ - TEXT_TO_JOIN: Opt-in Keywords: START,JOIN. A text will be sent to the customer. He can reply yes to consent and opt in. \ - ONLINE_FORM: This is an online form \ Link: https://mybrand.com/optin \ Message & data rates may apply. - Message frequency varies \ Carriers are not liable for delayed or undelivered messages. \ Text HELP for help. Text STOP to opt-out. \ Terms & Conditions: https://mybrand.com/terms_and_conditions \ Privacy Policy: https://mybrand.com/privacy_policy

Message flow, also known as Call to Action, of the campaign. It will always be filled with data computed from message_flow_details.

This field should describe how a consumer opts-in to the campaign, therefore giving consent to the sender to receive their messages. The call-to-action must be explicitly clear and inform the consumer of the nature of the program.

  • Entering a telephone number through a website;
  • Clicking a button on a mobile webpage;
  • Sending a message from the Consumer’s mobile device that contains an advertising keyword;
  • Initiating the text message exchange in which the Message Sender replies to the Consumer only with responsive information;
  • Signing up at a point-of-sale (POS) or other Message Sender on-site location; or
  • Opting-in over the phone using interactive voice response (IVR) technology.

If multiple opt-in methods can be used for the same campaign, you must list them all.

Describes what the opt_in option was used for.

message_flow_details
object

Message flow details specifies the message_flow field as a structured object instead of a single text field.

When creating or updating a campaign:

  1. either message_flow or message_flow_details may be specified, but not both.
  2. if message_flow_details is specified, the object's fields will be used to fill a template. The resulting templated text will be used to fill the message_flow field of the campaign.

When reading a campaign message_flow_details will only be filled if it's been used to create or update the campaign.

For more information on Campaign message flows, please see this campaign requirements article.

brand_name
string
Required

A brand name associated with the campaign. This can be different from the name of the brand the campaign belongs to (e.g. for subsidiaries, ...).

NB: This is optional for sole proprietors.

consent_mechanisms
array
Required

Describe the different mechanisms a customer may use to consent to the campaign.

It is required to provide an attachment for all consent methods, except TEXT_TO_JOIN.

method
string
Required
Must be one of:ONLINE_FORMLIVE_OPERATORPOINT_OF_SALETEXT_TO_JOINOTHER
details
string
Required

Details on the consent mechanism.

attachment
string(uri)

An HTTP(S) link to the resource describing the mechanism.

pricing_disclosure
boolean
Required

This field needs to be true to consent to adding the pricing disclosure to the template.

The following will be added: Message and Data rates may apply

Must be one of:true
carrier_disclaimer
boolean

Whether to add the following disclaimer: Carriers are not liable for delayed or undelivered messages.

Must be one of:true
frequency
string
Required

The frequency of the messages sent by the campaign.

Must be one of:ONE_TIMERECURRING
privacy_policy
string(uri)
Required

Link to the campaign's privacy policy.

terms_and_conditions
string(uri)
Required

Link to the campaign's terms and conditions.

subscriber_opt_in
boolean
Defaulttrue

Does campaign require subscriber to opt-in before SMS is sent to subscriber?

opt_in_keywords
string
Max255
exampleSTART,SUBSCRIBE

Opt in keywords of the campaign, separated by comas.

opt_in_message
string
Min20
Max320
example<Brand Name>: You are now opted-in. For help, reply HELP. To opt-out, reply STOP

Opt in message sent to confirmation enrollment to a recurring message campaign. Also provide information on how to get HELP or undo enrollment. If consumers can text in a keyword,the response should include the Brand name.
NB: This field is mandatory if opt_in_keywords is set.

subscriber_opt_out
boolean
Defaulttrue

Does campaign support subscriber opt-out keyword(s)?

opt_out_keywords
string
Max255
DefaultSTOP
exampleSTOP,QUIT

Opt out keywords of the campaign, separated by comas. This field must not contain any spaces, and must contain the STOP keyword if set.

opt_out_message
string
Min20
Max320
example<Brand Name>: You are now opted-out and will receive no further messages.

Opt out message of the campaign. The response to the STOP keyword may include the Brand name but should include an acknowledgement of the opt-out request and confirmation that no further messages will be sent.
NB: Required for all recurring campaigns or for SMS opt-in.

subscriber_help
boolean
Defaulttrue

Does campaign responds to help keyword(s)?

help_keywords
string
Max255
DefaultHELP
exampleHELP,INFO

Help keywords of the campaign, separated by comas. This field must not contain any spaces, and must contain the HELP keyword if set.

help_message
string
Min20
Max320
example<Brand Name>: For help, email support@example.com. To opt-out, reply STOP

Help message of the campaign.

The response to HELP keyword may include the Brand name and additional support contact information.

sample_one
string
Min20
Max1024
exampleHi This is a reminder that you have a scheduled appointment with Dr. Doe tomorrow at 4:00PM.

Message sample. Some campaign tiers require 1 or more message samples.

sample_two
string
Min20
Max1024
exampleHello, Your order, number XXXXXXX, has been shipped.

Message sample. Some campaign tiers require 2 or more message samples.

sample_three
string
Min20
Max1024
exampleHere is you unique PIN number to access the application: 123456

Message sample. Some campaign tiers require 3 or more message samples.

sample_four
string
Min20
Max1024
exampleHello Mr Doe, Your payment of 9.99$ was authorized. You can find your invoice in your customer account.

Message sample. Some campaign tiers require 4 or more message samples.

sample_five
string
Min20
Max1024
exampleYour delivery is scheduled for tomorrow between 8am and 2pm. If you wish to change the delivery date please reply by typing 1 (tomorrow), 2 (Thursday) or 3 (deliver to post office) below.

Message sample. Some campaign tiers require 5.

age_gated
boolean
exampletrue

Subscribers will be required to provide their age to opt-in if set to true. NB: Sex, Hate, Alcohol, Firearms, and Tobacco related (S.H.A.F.T) messages are prohibited.

direct_lending
boolean
exampletrue

Set to true if messages are related to money lending or loan arrangements.

embedded_link
boolean

Set to true if the campaign message includes links. NB: Shortened URLs are forbidden.

embedded_phone
boolean

Does message generated by the campaign include phone number in SMS?

partner
boolean
exampletrue

Indicates the brand or campaign belong to a partner campaign.

auto_renewal
boolean

Campaign subscription auto-renewal option.

Defines the behaviour at the end of the billing cycle:

  • if true, the campaign will automatically renewed
  • if false, the campaign will expire and its status will become CANCELED
hipaa
boolean

Indicates if HIPAA is enabled for this campaign.

This is kept nullable to avoid breaking changes, but it is best to set it when creating the campaign. Otherwise, this will be set when attempting to link the first number of the campaign, whether the attempt is successful or not. After that, it will not be possible to update that field anymore.

tcr_status
string

Campaign TCR status.

Must be one of:UNKNOWNACTIVECANCELED
vertical
string
exampleTECHNOLOGY

Business/industry segment of this campaign. Please refer to the vertical property of the /enum endpoint for an updated list of valid values.

Must be one of:REAL_ESTATEHEALTHCAREENERGYENTERTAINMENTRETAILAGRICULTUREINSURANCEEDUCATIONHOSPITALITYFINANCIALGAMBLINGCONSTRUCTIONNGOMANUFACTURINGGOVERNMENTTECHNOLOGYCOMMUNICATION
number_pool
boolean
Defaulttrue

Set to true if campaign uses a pool of numbers.

registration_date
string(date-time)

Date-time when campaign was registered with TCR.

renewal_date
string(date)

Date when the campaign will be renewed and billed, if auto_renewal is true.

created_date
string(date-time)

Date when this record was created.

last_updated
string(date-time)

Date-time when this record was last updated.

billed_date
string(date-time)

Date-time when this campaign was billed.

opt_out_assist
boolean

Specifies whether opt out assist is enabled for this account.
On a campaign, indicates whether it's enabled on the primary account of the campaign's brand.

last_status_changes
array

Lists the last changes of the status field.

Note: this is only an extract. Not all changes are listed here.

status
string
exampleACTIVE

Campaign Status.

  • PENDING_REVIEW: This is the initial status of a campaign. This implies that the campaign has been submitted for an internal review and cannot be used yet.
  • UPDATES_REQUIRED: The campaign has been reviewed but requires changes before it can be approved.
  • CARRIERS_REVIEW: The campaign has been approved by our internal process. It has been created in the registry and but pending approval from third parties i.e: mobile carrier.
  • ACTIVE: The campaign has been approved by every party and traffic can now be sent.
  • PENDING_CANCELLATION: The campaign is active but will not be renewed. It will be canceled at the next renewal date.
  • SUSPENDED: The campaign has been suspended, along with any traffic it's used to send. This can happen if suspicious traffic has been detected (e.g.: spam) or after an MNO complaint. This triggers an internal review process which can lead to the un-suspension or termination of the campaign.
  • TERMINATED: The campaign has been terminated. A campaign cannot be recovered after it's been terminated.
  • EXPIRED: The campaign has expired.
  • REJECTED: This implies the campaign was rejected by the compliance team as it is not compliant with 10DLC requirements. Further reasons can be found in the description of the rejection event received from TCR. You may update the campaign using TCR’s API or dashboard, and re-share the campaign with Vonage for a new review.
  • CNP_CANCELED: The campaign has been canceled during a CNP migration. You are required to restart a CNP migration.
  • PORTED_OUT: The campaign has been ported out from Vonage. You are required to start a CNP migration.
Must be one of:PENDING_REVIEWUPDATES_REQUIREDCARRIERS_REVIEWACTIVEPENDING_CANCELLATIONSUSPENDEDTERMINATEDCANCELEDREJECTEDCNP_CANCELEDPORTED_OUT
explanation
string

Describes why the status changed how it did.

change_date
string(date-time)

Date-time when the status changed.

mno_metadata
array
network_id
string
example10017

Network ID of the MNO.

mno
string
exampleAT&T

Name of the MNO.

status
string

MNO campaign operation status. Please refer to the campaign_op_status property of the /enum endpoint response for an updated list of valid values.

mno_support
boolean

If 'false', then the desired usecase cannot be supported by the MNO.

mno_review
boolean

If 'true', then the submitted campaign is subject to the MNO (manual) review process.

qualify
boolean

If 'false', then the brand does not qualify for the desired usecase on the MNO.

min_msg_samples
integer
example2

The minimum number of message samples required by MNO for submission of the desired usecase.

req_subscriber_opt_in
boolean

If 'true' then MNO requires the subscriber to opt-into the campaign before the message may be sent to the subscriber. The opt-in mechanism can be mobile or web opt-in.

req_subscriber_opt_out
boolean

If 'true' then MNO requires a campaign to support an opt-out mechanism through MO stop keywords such as 'STOP', 'QUIT'. Upon receive the STOP message from a subscriber, the campaign must stop sending messages to the subscriber immediately.

req_subscriber_help
boolean

If 'true' then MNO requires a campaign to support a 'help' mechanism through MO help key words such as 'HELP', 'INFO'.

no_embedded_link
boolean

If 'true' then MNO forbids call-to-action link/URL to be embedded in all messages sent to the subscriber.

no_embedded_phone
boolean

If 'true' then MNO forbids call-to-action phone number to be embedded in all messages sent to the subscriber.

att_msg_class
string
exampleQ

(Only for AT&T). Message class assigned to the campaign by MNO. Please refer to the AT&T 10DLC guide for a complete list of available message class and definition.

att_tpm
integer
example3000

(Only for AT&T). SMS Message TPM (throughput per minute) qualified by the brand for the desired usecase.

att_mms_tpm
integer
example3000

(Only for AT&T). MMS Message TPM (throughput per minute) qualified by the brand for the desired usecase.

att_number_based
boolean

(Only for AT&T). Whether is the MNO applying the TPM per number or per campaign.

tmo_brand_tier
string
exampleLOW

(Only for T-Mobile). Daily message volume is restricted based on brand tier or brand qualification. The daily volume restriction applies to brand across campaigns and CSPs. Please refer to the /enum endpoint for an updated list of valid values.

Must be one of:LOWLOWER_MIDUPPER_MIDTOPUNCAPPED
tmo_tpd
integer

(Only for TMobile). Message TPD (throughput per day) qualified by the brand for the desired usecase.

complaints
array
complaints
array
description
string
Max65535

Description of this MNO complaint.

dca
string
exampleSINCH

dca name

created_at
string(date-time)

Date-time when this record was created.

carrier_brand_suspensions
array
category
string

Summarize the reason of the suspension.

explanation
string

Detailed explanation of the cause of the suspension.

_links
object
self
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879
brand
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK
numbers
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879/numbers

Example Response

{
   "primary_account_id": "abcd1234",
   "account_id": "abcd1234",
   "brand_id": "BLQKOPK",
   "campaign_id": "VC987XYZ",
   "tcr_campaign_id": "C123ABC",
   "reseller_id": "R123456",
   "reseller": true,
   "label": "This is a sample campaign",
   "status": "ACTIVE",
   "traffic_enabled": true,
   "usecase": "ACCOUNT_NOTIFICATION",
   "sub_usecases": [
      "2FA",
      "SECURITY_ALERT"
   ],
   "description": "User notifications",
   "message_flow": "Brand: My brand \\\nConsent mechanisms: \\\n- TEXT_TO_JOIN: Opt-in Keywords: START,JOIN. A text will be sent to the customer. He can reply yes to consent and opt in. \\\n- ONLINE_FORM: This is an online form \\\n  Link: https://mybrand.com/optin \\\nMessage & data rates may apply. - Message frequency varies \\\nCarriers are not liable for delayed or undelivered messages. \\\nText HELP for help. Text STOP to opt-out. \\\nTerms & Conditions: https://mybrand.com/terms_and_conditions \\\nPrivacy Policy: https://mybrand.com/privacy_policy\n",
   "message_flow_details": {
      "brand_name": "My brand",
      "consent_mechanisms": [
         {
            "method": "TEXT_TO_JOIN",
            "details": "A text will be sent to the customer. He can reply yes to consent and opt in."
         },
         {
            "method": "ONLINE_FORM",
            "details": "An online form allows the customer to subscribe.",
            "attachment": "https://mybrand.com/optin"
         }
      ],
      "pricing_disclosure": true,
      "frequency": "RECURRING",
      "privacy_policy": "https://mybrand.com/privacy_policy",
      "terms_and_conditions": "https://mybrand.com/terms_and_conditions"
   },
   "subscriber_opt_in": false,
   "opt_in_keywords": "START,SUBSCRIBE",
   "opt_in_message": "<Brand Name>: You are now opted-in. For help, reply HELP. To opt-out, reply STOP\n",
   "subscriber_opt_out": false,
   "opt_out_keywords": "STOP,QUIT",
   "opt_out_message": "<Brand Name>: You are now opted-out and will receive no further messages.\n",
   "subscriber_help": false,
   "help_keywords": "HELP,INFO",
   "help_message": "<Brand Name>: For help, email support@example.com. To opt-out, reply STOP\n",
   "sample_one": "Hi\nThis is a reminder that you have a scheduled appointment with Dr. Doe tomorrow at 4:00PM.\n",
   "sample_two": "Hello,\nYour order, number XXXXXXX, has been shipped.\n",
   "sample_three": "Here is you unique PIN number to access the application: 123456\n",
   "sample_four": "Hello Mr Doe,\nYour payment of 9.99$ was authorized. You can find your invoice in your customer account.\n",
   "sample_five": "Your delivery is scheduled for tomorrow between 8am and 2pm.\nIf you wish to change the delivery date please reply by typing 1 (tomorrow), 2 (Thursday) or 3 (deliver to post office) below.\n",
   "age_gated": true,
   "direct_lending": true,
   "embedded_link": false,
   "embedded_phone": false,
   "partner": true,
   "auto_renewal": true,
   "hipaa": true,
   "tcr_status": "UNKNOWN",
   "vertical": "TECHNOLOGY",
   "number_pool": false,
   "registration_date": "2019-08-24T14:15:22Z",
   "renewal_date": "2019-08-24",
   "created_date": "2019-08-24T14:15:22Z",
   "last_updated": "2019-08-24T14:15:22Z",
   "billed_date": "2019-08-24T14:15:22Z",
   "opt_out_assist": false,
   "last_status_changes": [
      {
         "status": "APPROVED",
         "reason": "Approved after internal review.",
         "change_date": "2022-01-01 01:01:01"
      }
   ],
   "mno_metadata": [
      {
         "network_id": "10017",
         "mno": "AT&T",
         "status": "string",
         "mno_support": true,
         "mno_review": true,
         "qualify": true,
         "min_msg_samples": 2,
         "req_subscriber_opt_in": true,
         "req_subscriber_opt_out": true,
         "req_subscriber_help": true,
         "no_embedded_link": true,
         "no_embedded_phone": true,
         "att_msg_class": "Q",
         "att_tpm": 3000,
         "att_mms_tpm": 3000,
         "att_number_based": true,
         "tmo_brand_tier": "LOW",
         "tmo_tpd": 0,
         "complaints": [
            {
               "complaints": [
                  {
                     "description": "string",
                     "dca": "SINCH",
                     "created_at": "2019-08-24T14:15:22Z"
                  }
               ]
            }
         ]
      }
   ],
   "carrier_brand_suspensions": [
      [
         {}
      ]
   ],
   "_links": {
      "self": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879"
      },
      "brand": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK"
      },
      "numbers": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879/numbers"
      }
   }
}

Stop a specific campaign on a brand

Deprecated

Cancels the campaign auto-renewal. The cancellation of renewal cannot be reverted.

The actual deletion will happen after campaign's expiration date.

NB: Will soon be deprecated. Use the Campaign PATCH with the auto_renewal property set to false to achieve a similar outcome.

deletehttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/campaigns/:campaign_id

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

campaign_id
string
Required
Max50
exampleVC987XYZ

ID associated with a specific campaign

Responses

No content

Re-submit active campaign against specific MNO CRE.

Re-submit active campaign against specific MNO CRE.

puthttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/campaigns/:campaign_id/resubmit

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

campaign_id
string
Required
Max50
exampleVC987XYZ

ID associated with a specific campaign

Request Body
Content Type
application/json

mno_ids
array
Required

Example Request

{
   "mno_ids": [
      "10017"
   ]
}

Responses
Content Type
application/json

Resubmitted campaign response

campaign_id
string
Max50
exampleVC987XYZ

Vonage Campaign ID.

brand_id
string
Max50
exampleBLQKOPK

TCR Brand ID.

mno_metadata
array
network_id
string
example10017

Network ID of the MNO.

mno
string
exampleAT&T

Name of the MNO.

status
string

MNO campaign operation status. Please refer to the campaign_op_status property of the /enum endpoint response for an updated list of valid values.

mno_support
boolean

If 'false', then the desired usecase cannot be supported by the MNO.

mno_review
boolean

If 'true', then the submitted campaign is subject to the MNO (manual) review process.

qualify
boolean

If 'false', then the brand does not qualify for the desired usecase on the MNO.

min_msg_samples
integer
example2

The minimum number of message samples required by MNO for submission of the desired usecase.

req_subscriber_opt_in
boolean

If 'true' then MNO requires the subscriber to opt-into the campaign before the message may be sent to the subscriber. The opt-in mechanism can be mobile or web opt-in.

req_subscriber_opt_out
boolean

If 'true' then MNO requires a campaign to support an opt-out mechanism through MO stop keywords such as 'STOP', 'QUIT'. Upon receive the STOP message from a subscriber, the campaign must stop sending messages to the subscriber immediately.

req_subscriber_help
boolean

If 'true' then MNO requires a campaign to support a 'help' mechanism through MO help key words such as 'HELP', 'INFO'.

no_embedded_link
boolean

If 'true' then MNO forbids call-to-action link/URL to be embedded in all messages sent to the subscriber.

no_embedded_phone
boolean

If 'true' then MNO forbids call-to-action phone number to be embedded in all messages sent to the subscriber.

att_msg_class
string
exampleQ

(Only for AT&T). Message class assigned to the campaign by MNO. Please refer to the AT&T 10DLC guide for a complete list of available message class and definition.

att_tpm
integer
example3000

(Only for AT&T). SMS Message TPM (throughput per minute) qualified by the brand for the desired usecase.

att_mms_tpm
integer
example3000

(Only for AT&T). MMS Message TPM (throughput per minute) qualified by the brand for the desired usecase.

att_number_based
boolean

(Only for AT&T). Whether is the MNO applying the TPM per number or per campaign.

tmo_brand_tier
string
exampleLOW

(Only for T-Mobile). Daily message volume is restricted based on brand tier or brand qualification. The daily volume restriction applies to brand across campaigns and CSPs. Please refer to the /enum endpoint for an updated list of valid values.

Must be one of:LOWLOWER_MIDUPPER_MIDTOPUNCAPPED
tmo_tpd
integer

(Only for TMobile). Message TPD (throughput per day) qualified by the brand for the desired usecase.

complaints
array
complaints
array
description
string
Max65535

Description of this MNO complaint.

dca
string
exampleSINCH

dca name

created_at
string(date-time)

Date-time when this record was created.

_links
object
self
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/vetting/requests/abcd1234
brand
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK

Example Response

{
   "campaign_id": "VC987XYZ",
   "brand_id": "BLQKOPK",
   "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,
         "mno_support": true,
         "mno_review": true,
         "no_embedded_link": true,
         "qualify": true,
         "tmo_brand_tier": null
      },
      {
         "network_id": "10035",
         "min_msg_samples": 2,
         "req_subscriber_opt_in": false,
         "req_subscriber_help": false,
         "req_subscriber_opt_out": false,
         "mno": "TMO",
         "mno_support": true,
         "mno_review": true,
         "no_embedded_link": true,
         "no_embedded_phone": true,
         "qualify": true,
         "tmo_brand_tier": "LOW",
         "att_tpm": null,
         "att_msg_class": null
      }
   ],
   "_links": {
      "self": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/vetting/requests/abcd1234"
      },
      "brand": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK"
      }
   }
}

The terms and conditions governing the creation of a campaign.

Get campaign terms and conditions

gethttps://api-eu.vonage.com/v1/10dlc/campaigns/terms_and_conditions

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Responses
Content Type
application/json

campaign terms and conditions

sub_terms
array

Example Response

{
   "sub_terms": [
      "I confirm that this campaign will not be used for Affiliate Marketing."
   ]
}

Import a partner campaign to Vonage

Import a partner campaign by sharing it with Vonage. Your account needs a special capability to be able to carry on with this operation.

posthttps://api-eu.vonage.com/v1/10dlc/partnercampaigns/import

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Request Body
Content Type
application/json

account_id
string
Required
exampleabcd1234

The Vonage Account ID

campaign_id
string
Required
Max50
exampleC123ABC

TCR Campaign ID.

label
string
Max50
exampleThis is a sample campaign

Friendly name associated with this campaign.

cnp_migration
boolean

Indicates if the campaign is part of the CNP migration. It must be set to true, if a CNP migration has been initiated.

Example Request

{
   "account_id": "abcd1234",
   "campaign_id": "C123ABC",
   "label": "This is a sample campaign",
   "cnp_migration": true
}

Responses
Content Type
application/json

Imported partner campaign summary

brand_id
string
Max50
exampleBLQKOPK

TCR Brand ID.

campaign_id
string
Max50
exampleVC987XYZ

Vonage Campaign ID.

sharing_status
string
Max50

Sharing Status. Please refer to the /enum endpoint for an update list of valid values.

Must be one of:PENDINGACCEPTEDDECLINED
downstream_cnp_id
string
Max50

CNP ID. Please refer to the /enum endpoint for an update list of valid values.

upstream_cnp_id
string
Max50

CNP ID. Please refer to the /enum endpoint for an update list of valid values.

Example Response

{
   "brand_id": "BLQKOPK",
   "campaign_id": "VC987XYZ",
   "sharing_status": "PENDING",
   "downstream_cnp_id": "string",
   "upstream_cnp_id": "string"
}

Get partner campaign sharing information

Get partner campaign sharing information

gethttps://api-eu.vonage.com/v1/10dlc/partnercampaigns/:campaign_id

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

campaign_id
string
Required
Max50
exampleVC987XYZ

ID associated with a specific campaign

Responses
Content Type
application/json

Partner campaign sharing status

campaign_id
string
Max50
exampleVC987XYZ

Vonage Campaign ID.

sharing_status
string
Max50

Sharing Status. Please refer to the /enum endpoint for an update list of valid values.

Must be one of:PENDINGACCEPTEDDECLINED
downstream_cnp_id
string
Max50

CNP ID. Please refer to the /enum endpoint for an update list of valid values.

upstream_cnp_id
string
Max50

CNP ID. Please refer to the /enum endpoint for an update list of valid values.

Example Response

{
   "campaign_id": "VC987XYZ",
   "sharing_status": "PENDING",
   "downstream_cnp_id": "string",
   "upstream_cnp_id": "string"
}

Get throughput applied to a campaign.

Get throughput applied to a campaign for the available MNOs.

gethttps://api-eu.vonage.com/v1/10dlc/throughputs

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Query Parameters

campaign_id
string
Max50
exampleVC987XYZ
page_size
integer
example10

Number of results per page

page_token
string
Min1
Max512

Token used to paginate.

Responses
Content Type
application/json

OK

next_page
string
Min1
Max512

page_token to access the next page.

previous_page
string
Min1
Max512

page_token to access the previous page.

last_page
string
Min1
Max512

page_token to access the last page.

first_page
string
Min1
Max512

page_token to access the first page.

_links
object
next
object

Link to the next page.

href
string
previous
object

Link to the previous page.

href
string
first
object

Link to the first page.

href
string
last
object

Link to the last page.

href
string
_embedded
object
throughputs
array
id
string(uuid)
Required
example91cd871e-ce9e-4f4d-a792-23277cbc287d

Throughput ID.

brand_id
string
Max50
exampleBLQKOPK

TCR Brand ID.

campaign_id
string
Max50
exampleVC987XYZ

Vonage Campaign ID.

carriers
array
Required

List of carriers to which the throughput applies.

value
Required
One Of
shared
integer
Required
example1000

Shared throughput value for both SMS and MMS.

period
string
Required

The period for which the throughput applies.

Must be one of:minuteday
scope
string
Required

The scope of the throughput.

Must be one of:campaignbrandnumber

Example Response

{
   "next_page": "string",
   "previous_page": "string",
   "last_page": "string",
   "first_page": "string",
   "_links": {
      "next": {
         "href": "string"
      },
      "previous": {
         "href": "string"
      },
      "first": {
         "href": "string"
      },
      "last": {
         "href": "string"
      }
   },
   "_embedded": {
      "throughputs": [
         {
            "id": "91cd871e-ce9e-4f4d-a792-23277cbc287d",
            "brand_id": "BLQKOPK",
            "campaign_id": "VC987XYZ",
            "carriers": [
               "AT&T",
               "ClearSky"
            ],
            "value": {
               "shared": 1000
            },
            "period": "minute",
            "scope": "campaign"
         }
      ]
   }
}

Numbers

APIs relating to working with Numbers in Campaigns

Retrieve Numbers associated with a campaign

Get numbers in campaign

gethttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/campaigns/:campaign_id/numbers

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

campaign_id
string
Required
Max50
exampleVC987XYZ

ID associated with a specific campaign

Query Parameters

filter
array

Narrow down results based on matching conditions. Follow the comprehensive guide to learn how to craft filter queries.

page
integer
Min1
example2

Page of results to jump to

page_size
integer
example10

Number of results per page

Responses
Content Type
application/json

List of numbers that are associated with a campaign

page_size
integer
example10

Items per page

page
integer
Min1
example2

Page Offset

total_pages
integer
Min1
example100

Number of pages in the entire result set

total_items
integer
example100

Number of items in the entire result set

_embedded
object
numbers
array
number
string
Min7
Max15
example14155550110

Telephone Number

country
string
exampleUS

The two character country code in ISO 3166-1 alpha-2 format

status
string
exampleLINKING

Current status of a number in a campaign. Only LINKED allows traffic.

Must be one of:LINKINGLINKEDREJECTEDUNLINKINGUNLINKED
compliance
array

List of compliance flags.

_links
object
self
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879/numbers/14155550110
campaign
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879/
brand
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK

Example Response

{
   "page_size": 10,
   "page": 2,
   "total_pages": 100,
   "total_items": 100,
   "_embedded": {
      "numbers": [
         {
            "number": "14155550110",
            "country": "US",
            "status": "LINKING",
            "compliance": [
               "HIPPA"
            ],
            "_links": {
               "self": {
                  "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879/numbers/14155550110"
               },
               "campaign": {
                  "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879/"
               },
               "brand": {
                  "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK"
               }
            }
         }
      ]
   }
}

Link number to a campaign

Links an existing Vonage number to a 10DLC campaign.

posthttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/campaigns/:campaign_id/numbers

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

campaign_id
string
Required
Max50
exampleVC987XYZ

ID associated with a specific campaign

Query Parameters

filter
array

Narrow down results based on matching conditions. Follow the comprehensive guide to learn how to craft filter queries.

Request Body
Content Type
application/json

country
string
Required
exampleUS

The two character country code in ISO 3166-1 alpha-2 format

number
string
Required
Min7
Max15
example14155550110

Telephone Number

Example Request

{
   "country": "US",
   "number": "14155550110"
}

Responses
Content Type
application/json

Accepted

number
string
Min7
Max15
example14155550110

Telephone Number

country
string
exampleUS

The two character country code in ISO 3166-1 alpha-2 format

status
string
exampleLINKING

Current status of a number in a campaign. Only LINKED allows traffic.

Must be one of:LINKINGLINKEDREJECTEDUNLINKINGUNLINKED
compliance
array

List of compliance flags.

_links
object
self
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879/numbers/14155550110
campaign
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879/
brand
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK

Example Response

{
   "number": "14155550110",
   "country": "US",
   "status": "LINKING",
   "compliance": [
      "HIPPA"
   ],
   "_links": {
      "self": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879/numbers/14155550110"
      },
      "campaign": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879/"
      },
      "brand": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK"
      }
   }
}

Retrieve information about a number in a campaign

Retrieve information about a number in a campaign

gethttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/campaigns/:campaign_id/numbers/:number

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

campaign_id
string
Required
Max50
exampleVC987XYZ

ID associated with a specific campaign

number
string
Required
Min7
Max15
example14155550110

Number to work with inside a campaign

Responses
Content Type
application/json

Information about a number

number
string
Min7
Max15
example14155550110

Telephone Number

country
string
exampleUS

The two character country code in ISO 3166-1 alpha-2 format

status
string
exampleLINKING

Current status of a number in a campaign. Only LINKED allows traffic.

Must be one of:LINKINGLINKEDREJECTEDUNLINKINGUNLINKED
compliance
array

List of compliance flags.

_links
object
self
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879/numbers/14155550110
campaign
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879/
brand
object
href
string
examplehttps://api.nexmo.com/v1/10dlc/brands/BLQKOPK

Example Response

{
   "number": "14155550110",
   "country": "US",
   "status": "LINKING",
   "compliance": [
      "HIPPA"
   ],
   "_links": {
      "self": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879/numbers/14155550110"
      },
      "campaign": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK/campaigns/C1DEB879/"
      },
      "brand": {
         "href": "https://api.nexmo.com/v1/10dlc/brands/BLQKOPK"
      }
   }
}

Unlink a number from a campaign

Unlink a number from a campaign

deletehttps://api-eu.vonage.com/v1/10dlc/brands/:brand_id/campaigns/:campaign_id/numbers/:number

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

brand_id
string
Required
Max50
exampleBLQKOPK

TCR Brand ID

campaign_id
string
Required
Max50
exampleVC987XYZ

ID associated with a specific campaign

number
string
Required
Min7
Max15
example14155550110

Number to work with inside a campaign

Responses

No Content

Resellers

APIs for managing resellers associated with your account.

Create a new reseller

Add resellers to your account.

posthttps://api-eu.vonage.com/v1/10dlc/resellers

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Request Body
Content Type
application/json

company_name
string
Required
Max100
exampleMicrosoft

Company name of the reseller.

phone
string
Required
example123123222334

Valid mobile phone number in E.164 international format without the + prefix. It is required field for SoleProprietor brand.

email
string
Required
Max100
examplejohn.doe@microsoft.com

Valid email address of reseller contact.

Example Request

{
   "company_name": "Microsoft",
   "phone": "123123222334",
   "email": "john.doe@microsoft.com"
}

Responses
Content Type
application/json

Created

id
string
example5782db87-a867-4ccd-a0b5-1b7203cc438c

Unique identifier assigned to the reseller.

tcr_reseller_id
string

Unique identifier assigned to the reseller by the registry. This field is only present if the reseller is APPROVED.

company_name
string
Required
Max100
exampleMicrosoft

Company name of the reseller.

phone
string
Required
example123123222334

Valid mobile phone number in E.164 international format without the + prefix. It is required field for SoleProprietor brand.

email
string
Required
Max100
examplejohn.doe@microsoft.com

Valid email address of reseller contact.

status
string
Required
exampleAPPROVED

Approval status of the reseller. Upon submitting a creation of a reseller, the status is set to PENDING. After review of your request, the status of the reseller will be set to either APPROVED or REJECTED. If the status is REJECTED, you should have the detailed reason of the rejection in the rejection_reason field.

Must be one of:PENDINGAPPROVEDREJECTED
rejection_reason
string
exampleYou are not allowed to register a reseller with this company name.

The reason why the reseller was rejected. This field is only populated when the status is REJECTED.

Example Response

{
   "id": "5782db87-a867-4ccd-a0b5-1b7203cc438c",
   "tcr_reseller_id": "string",
   "company_name": "Microsoft",
   "phone": "123123222334",
   "email": "john.doe@microsoft.com",
   "status": "APPROVED",
   "rejection_reason": "You are not allowed to register a reseller with this company name."
}

List the resellers

List the resellers associated with your Account.

gethttps://api-eu.vonage.com/v1/10dlc/resellers

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Query Parameters

page
integer
Min1
example2

Page of results to jump to

page_size
integer
example10

Number of results per page

Responses
Content Type
application/json

OK

next_page
string
Min1
Max512

page_token to access the next page.

previous_page
string
Min1
Max512

page_token to access the previous page.

last_page
string
Min1
Max512

page_token to access the last page.

first_page
string
Min1
Max512

page_token to access the first page.

_links
object
next
object

Link to the next page.

href
string
previous
object

Link to the previous page.

href
string
first
object

Link to the first page.

href
string
last
object

Link to the last page.

href
string
_embedded
object
resellers
array
id
string
example5782db87-a867-4ccd-a0b5-1b7203cc438c

Unique identifier assigned to the reseller.

tcr_reseller_id
string

Unique identifier assigned to the reseller by the registry. This field is only present if the reseller is APPROVED.

company_name
string
Required
Max100
exampleMicrosoft

Company name of the reseller.

phone
string
Required
example123123222334

Valid mobile phone number in E.164 international format without the + prefix. It is required field for SoleProprietor brand.

email
string
Required
Max100
examplejohn.doe@microsoft.com

Valid email address of reseller contact.

status
string
Required
exampleAPPROVED

Approval status of the reseller. Upon submitting a creation of a reseller, the status is set to PENDING. After review of your request, the status of the reseller will be set to either APPROVED or REJECTED. If the status is REJECTED, you should have the detailed reason of the rejection in the rejection_reason field.

Must be one of:PENDINGAPPROVEDREJECTED
rejection_reason
string
exampleYou are not allowed to register a reseller with this company name.

The reason why the reseller was rejected. This field is only populated when the status is REJECTED.

Example Response

{
   "next_page": "string",
   "previous_page": "string",
   "last_page": "string",
   "first_page": "string",
   "_links": {
      "next": {
         "href": "string"
      },
      "previous": {
         "href": "string"
      },
      "first": {
         "href": "string"
      },
      "last": {
         "href": "string"
      }
   },
   "_embedded": {
      "resellers": [
         {
            "id": "5782db87-a867-4ccd-a0b5-1b7203cc438c",
            "tcr_reseller_id": "string",
            "company_name": "Microsoft",
            "phone": "123123222334",
            "email": "john.doe@microsoft.com",
            "status": "APPROVED",
            "rejection_reason": "You are not allowed to register a reseller with this company name."
         }
      ]
   }
}

Get a reseller

Get a reseller

gethttps://api-eu.vonage.com/v1/10dlc/resellers/:reseller_id

Authentication

KeyDescriptionWhereExample
Authorization

Base64 encoded API key and secret joined by a colon.
Read more

Headers

Basic <base64>

Path Parameters

reseller_id
string
Required
example5782db87-a867-4ccd-a0b5-1b7203cc438c

Unique identifier assigned to the reseller.

Responses
Content Type
application/json

OK

id
string
example5782db87-a867-4ccd-a0b5-1b7203cc438c

Unique identifier assigned to the reseller.

tcr_reseller_id
string

Unique identifier assigned to the reseller by the registry. This field is only present if the reseller is APPROVED.

company_name
string
Required
Max100
exampleMicrosoft

Company name of the reseller.

phone
string
Required
example123123222334

Valid mobile phone number in E.164 international format without the + prefix. It is required field for SoleProprietor brand.

email
string
Required
Max100
examplejohn.doe@microsoft.com

Valid email address of reseller contact.

status
string
Required
exampleAPPROVED

Approval status of the reseller. Upon submitting a creation of a reseller, the status is set to PENDING. After review of your request, the status of the reseller will be set to either APPROVED or REJECTED. If the status is REJECTED, you should have the detailed reason of the rejection in the rejection_reason field.

Must be one of:PENDINGAPPROVEDREJECTED
rejection_reason
string
exampleYou are not allowed to register a reseller with this company name.

The reason why the reseller was rejected. This field is only populated when the status is REJECTED.

Example Response

{
   "id": "5782db87-a867-4ccd-a0b5-1b7203cc438c",
   "tcr_reseller_id": "string",
   "company_name": "Microsoft",
   "phone": "123123222334",
   "email": "john.doe@microsoft.com",
   "status": "APPROVED",
   "rejection_reason": "You are not allowed to register a reseller with this company name."
}

Errors

The following is a non-exhaustive list of error codes that may occur while using this API.

These codes are in addition to any of our generic error codes.

CodeInformation
brand-conflict

Description

A conflict when a brand is being created or edited and there is an issue with a 3rd party vendor.

Resolution

Ensure all required fields have values and there are no errors in those values. If the error persists, contact support.

brand-parameters

Description

There are errors in the brand data submitted.

Resolution

Ensure all required fields have values included and correct any errors to values in the specified fields.

invalid-usecase-data

Description

There are errors in the data submitted for use case qualification.

Resolution

Ensure all required fields have values included and correct any errors to values in the specified fields.

use-case-denied

Description

The use case requested has been denied for this brand.

Resolution

Ensure your use case does not require additional brand vetting or pre/post Mobile Network Operator approval.

vetting-conflict

Description

A conflict during the brand vetting request has occurred.

Resolution

If the error persists, contact support.

invalid-vetting-data

Description

There are errors in the vetting request data submitted.

Resolution

Ensure all required fields have values and correct any errors to values in the specified fields.

invalid-json

Description

Your request cannot be parsed.

Resolution

Ensure there are no invalid characters or values in your request.

brand-not-qualified

Description

A conflict when a campaign is being created under a brand that hasn't qualified for the specified use case.

Resolution

Verify the brand use case qualifies before submitting the campaign.

invalid-campaign-data

Description

There are errors in the campaign data submitted.

Resolution

Ensure all required fields have values and correct any errors to values in the specified fields.

numbers-already-linked

Description

The number you are attempting to link is already linked to another campaign.

Resolution

You must link a unique number to a campaign. Link a different number to this campaign.

invalid-number-data

Description

There are errors in the number data submitted.

Resolution

Ensure all required fields have values and correct any errors to values in the specified fields.