The Campaign Registry CSP API (7.8.0)

Download OpenAPI specification:Download

The Campaign Registry (TCR) Campaign Service Provider API. TCR is the central 10DLC registry governing A2P messaging in North America. VoiceTel aggregates TCR access across its customer base, exposing the registry through a single, Bearer-authenticated endpoint so each customer can register brands, build campaigns, and manage 10DLC lifecycle operations without provisioning a direct TCR account. Authenticate with your VoiceTel API key.

Attachment

Download a file attached to a campaign

Downloads any file that is attached to an existing campaign, including MMS sample media files and supporting documents. To download, first determine the file’s uuid value from the appropriate GET endpoint and pass it in the attachmentId parameter. For example, to download a specific MMS sample media file, first use the GET /campaign/{campaignId}/mms endpoint to list the campaign’s attached files and see their uuid attributes.

Authorizations:
bearerAuth
path Parameters
attachmentId
required
string

The unique ID of the attached file.

Responses

Delete a file attached to a campaign

Deletes any file that is attached to an existing campaign, including MMS sample media files and supporting documents. To delete a file, first find its uuid value from the appropriate GET endpoint and pass it in the attachmentId parameter. For example, to delete a specific MMS sample media file, first use the GET /campaign/{campaignId}/mms endpoint to list the campaign’s attached files and see their uuid attributes.

Authorizations:
bearerAuth
path Parameters
attachmentId
required
string

The unique ID of the attached file.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Brand

Search for registered brands in the TCR system

Retrieve a list of brands you have registered in TCR along with their properties. Supports any combination of parameters. If supplying state, country, or entityType parameters, only exact matches will be returned. If no parameters are specified, this operation will list all brands that you have registered. This operation supports pagination with a maximum of 500 records per fetch.

Authorizations:
bearerAuth
query Parameters
referenceId
string

Reference ID associated with the brand.

displayName
string

DDBA or trade name of the brand. Partial match supported.

entityType
string
Enum: "PRIVATE_PROFIT" "PUBLIC_PROFIT" "NON_PROFIT" "GOVERNMENT" "SOLE_PROPRIETOR"

Brand entity type. Example: PRIVATE_PROFIT.

identityStatus
string
Enum: "SELF_DECLARED" "UNVERIFIED" "VERIFIED" "VETTED_VERIFIED"

Brand identity status. Example: UNVERIFIED

status
string
Default: "ACTIVE"
Enum: "ACTIVE" "DELETED"

Brand status in TCR. Example: DELETED

state
string

State or province. For US brands, must conform to the 2-letter ISO 3166-1 alpha-2 standard.

country
string

ISO 2-letter abbreviation of country.

ein
string

Government-assigned corporate tax ID. In the US, the EIN is a 9-digit number.

universalEin
string

Universal EIN of the Brand.

resellerId
string

Unique reseller ID associated with the brand.

tag
Array of strings unique

Tag associated with the brand.

mock
boolean

Filters between real brands (FALSE) and test brands (TRUE). Leave blank to retrieve both.

authenticationPlusCompliant
boolean

Filters brands that have passed 2FA verification. Leave blank to retrieve both.

page
integer <int32> >= 1
Default: 1

Page to retrieve.

recordsPerPage
integer <int32> [ 1 .. 500 ]
Default: 10

Number of records per page. Max size: 500.

Responses

Response samples

Content type
application/json
{
  • "entityType": "PRIVATE_PROFIT",
  • "cspId": "string",
  • "brandId": "string",
  • "status": "ACTIVE",
  • "firstName": "John",
  • "lastName": "Doe",
  • "displayName": "ABC Mobile",
  • "companyName": "ABC Inc.",
  • "ein": "111111111",
  • "einIssuingCountry": "US",
  • "phone": "+12024567890",
  • "street": "123 6th Ave",
  • "city": "New York",
  • "state": "NY",
  • "postalCode": "10001",
  • "country": "US",
  • "email": "string",
  • "stockSymbol": "ABC",
  • "stockExchange": "NASDAQ",
  • "ipAddress": "string",
  • "brandRelationship": "BASIC_ACCOUNT",
  • "vertical": "string",
  • "altBusinessId": "string",
  • "altBusinessIdType": "NONE",
  • "universalEin": "string",
  • "referenceId": "string",
  • "optionalAttributes": {
    },
  • "mock": true,
  • "identityStatus": "SELF_DECLARED",
  • "createDate": "2019-08-24T14:15:22Z",
  • "mobilePhone": "+12024567890",
  • "mobilePhoneVerifiedDate": "2019-08-24T14:15:22Z",
  • "businessContactTitle": "string",
  • "businessContactFirstName": "string",
  • "businessContactLastName": "string",
  • "businessContactEmail": "string",
  • "businessContactEmailVerifiedDate": "2019-08-24T14:15:22Z"
}

Retrieves brand feedback details

Retrieves brand feedback details using the unique identifier assigned to the brand. This endpoint can be invoked following new brand registration, an appeal, or following a revet. CSPs should only retrieve feedback details after the brand scoring process is complete (i.e., after receiving the BRAND_IDENTITY_STATUS_UPDATE webhook notification event). The following items may be returned in the Category ID property:

  • TAX_ID: Tax ID does not match with the company name or business type.
  • STOCK_SYMBOL: Not a public company, or the stock ticker and/or exchange does not match with the legal company name.
  • GOVERNMENT_ENTITY: Not recognized as a government entity. Must be a U.S. government entity.
  • NONPROFIT: IRS tax exempt subsection status not found.
  • WEB_DOMAIN: Not valid or recognized email domain.
Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

Responses

Response samples

Content type
application/json
{
  • "brandId": "string",
  • "category": [
    ]
}

Register a new brand

Registers a new brand under a CSP account. Required fields vary depending on the type of entity being registered. See the table below for details. Additional notes:

  • For foreign government entities: The entityType property should be specified as PRIVATE_PROFIT. Only US-based organizations can use the GOVERNMENT entity type.
  • For Public Profit brands: PUBLIC_PROFIT brands are required to enter a businessContactEmail which is subject to validation. Common email distribution addresses (such as sales@company.com) are not allowed, nor are personal or free email addresses. Following registration, the brand will undergo Authentication+ validation which requires the business contact to complete a 2FA process before being eligible for campaign registration.
  • For Sole Proprietor brands: New SOLE_PROPRIETOR brand registration must comply with TCR’s stricter SP 2.0 field validations on the following fields: street, city, state, postalCode, country, email, phone, mobilePhone, firstName, lastName and displayName fields. SP 2.0 policy mandates that all sole proprietor brands must pass an SMS one-time-password (OTP) verification before being eligible for campaign registration.
  • Mock EIN testing: To test brand registration with mock EINs in a CSP non-production environment such as Staging, please refer to the CSP Non-Production Integration Testing document.
Property Name Description Entity Requirements
displayName Brand/Marketing/DBA name of the business. Max length: 255
  • SOLE_PROPRIETOR: Required
  • PRIVATE PROFIT: Required
  • PUBLIC_PROFIT: Required
  • NON_PROFIT: Required
  • GOVERNMENT: Required
companyName The legal name of the business. Max length: 255
  • SOLE_PROPRIETOR: N/A
  • PRIVATE PROFIT: Required
  • PUBLIC_PROFIT: Required
  • NON_PROFIT: Required
  • GOVERNMENT: Required
ein Tax ID of the business. Max length: 21
  • SOLE_PROPRIETOR: N/A
  • PRIVATE PROFIT: Required
  • PUBLIC_PROFIT: Required
  • NON_PROFIT: Required
  • GOVERNMENT: Required
einIssuingCountry Two-letter ISO-2 country code of Tax ID issuing country. Examples: US, CA. Defaults to US. Length: 2
  • SOLE_PROPRIETOR: N/A
  • PRIVATE PROFIT: Optional
  • PUBLIC_PROFIT: Optional
  • NON_PROFIT: Optional
  • GOVERNMENT: Optional
altBusinessId Alternative Business Identifier. A valid identifier that corresponds to the altBusinessIdType. Max length: 50
  • SOLE_PROPRIETOR: Optional
  • PRIVATE PROFIT: Optional
  • PUBLIC_PROFIT: Optional
  • NON_PROFIT: Optional
  • GOVERNMENT: Optional
altBusinessIdType Alternative Business Identifier Type. Examples: DUNS, LEI, GIIN. Enumerated values
  • SOLE_PROPRIETOR: Optional
  • PRIVATE PROFIT: Optional
  • PUBLIC_PROFIT: Optional
  • NON_PROFIT: Optional
  • GOVERNMENT: Optional
firstName First name of business contact. Max length: 100
  • SOLE_PROPRIETOR: Required
  • PRIVATE PROFIT: N/A
  • PUBLIC_PROFIT: N/A
  • NON_PROFIT: N/A
  • GOVERNMENT: N/A
lastName Last name of business contact. Max length: 100
  • SOLE_PROPRIETOR: Required
  • PRIVATE PROFIT: N/A
  • PUBLIC_PROFIT: N/A
  • NON_PROFIT: N/A
  • GOVERNMENT: N/A
phone Support contact telephone number in E.164 format. Example: +12023339999. Max length: 20
  • SOLE_PROPRIETOR: Required
  • PRIVATE PROFIT: Required
  • PUBLIC_PROFIT: Required
  • NON_PROFIT: Required
  • GOVERNMENT: Required
mobilePhone Valid wireless telephone in E.164 format. Example: +12023339999. Max length: 20
  • SOLE_PROPRIETOR: Required for OTP
  • PRIVATE PROFIT: N/A
  • PUBLIC_PROFIT: N/A
  • NON_PROFIT: N/A
  • GOVERNMENT: N/A
street House number and street name. Example: 1000 Sunset Hill Road. Max length: 255
  • SOLE_PROPRIETOR: Required
  • PRIVATE PROFIT: Required
  • PUBLIC_PROFIT: Required
  • NON_PROFIT: Required
  • GOVERNMENT: Required
city City Name. Max length: 100
  • SOLE_PROPRIETOR: Required
  • PRIVATE PROFIT: Required
  • PUBLIC_PROFIT: Required
  • NON_PROFIT: Required
  • GOVERNMENT: Required
state State or province. For addresses in the United States, please use the two-character state code. Example: CA for California. Max length 20
  • SOLE_PROPRIETOR: Required
  • PRIVATE PROFIT: Required
  • PUBLIC_PROFIT: Required
  • NON_PROFIT: Required
  • GOVERNMENT: Required
postalCode Zipcode or postal code. Example: 21012 Max length: 10
  • SOLE_PROPRIETOR: Required
  • PRIVATE PROFIT: Required
  • PUBLIC_PROFIT: Required
  • NON_PROFIT: Required
  • GOVERNMENT: Required
country Two-letter ISO-2 country code. Examples: US, CA. Length: 2
  • SOLE_PROPRIETOR: Required
  • PRIVATE PROFIT: Required
  • PUBLIC_PROFIT: Required
  • NON_PROFIT: Required
  • GOVERNMENT: Required
email Email address of support contact. Max length: 100
  • SOLE_PROPRIETOR: Required
  • PRIVATE PROFIT: Required
  • PUBLIC_PROFIT: Required
  • NON_PROFIT: Required
  • GOVERNMENT: Required
stockSymbol Stock symbol of the PUBLIC_PROFIT brand. Max length: 10
  • SOLE_PROPRIETOR: N/A
  • PRIVATE PROFIT: N/A
  • PUBLIC_PROFIT: Required
  • NON_PROFIT: N/A
  • GOVERNMENT: N/A
stockExchange The stock exchange where the PUBLIC_PROFIT brand is registered. Enumerated values
  • SOLE_PROPRIETOR: N/A
  • PRIVATE PROFIT: N/A
  • PUBLIC_PROFIT: Required
  • NON_PROFIT: N/A
  • GOVERNMENT: N/A
website The website/online URL address of the brand. Max length: 255
  • SOLE_PROPRIETOR: Optional
  • PRIVATE PROFIT: Optional
  • PUBLIC_PROFIT: Required
  • NON_PROFIT: Optional
  • GOVERNMENT: Optional
brandRelationship The brand relationship level to the CSP. Enumerated values
  • SOLE_PROPRIETOR: N/A
  • PRIVATE PROFIT: Required
  • PUBLIC_PROFIT: Required
  • NON_PROFIT: Required
  • GOVERNMENT: Required
vertical The industry segment where the brand operates. Enumerated values
  • SOLE_PROPRIETOR: Optional
  • PRIVATE PROFIT: Required
  • PUBLIC_PROFIT: Required
  • NON_PROFIT: Required
  • GOVERNMENT: Required
referenceId A customer-unique identifier managed by the CSP that prevents duplicate brand registration in TCR. Case-insensitive, empty strings are ignored. Max length: 50
  • SOLE_PROPRIETOR: Required
  • PRIVATE PROFIT: Optional
  • PUBLIC_PROFIT: Optional
  • NON_PROFIT: Optional
  • GOVERNMENT: Optional
tag Tags that can be set on the brand. Please refer to the Searchable Keyword Tag heading.
  • SOLE_PROPRIETOR: Optional
  • PRIVATE PROFIT: Optional
  • PUBLIC_PROFIT: Optional
  • NON_PROFIT: Optional
  • GOVERNMENT: Optional
mock A boolean value that signifies a brand as a mock brand. Mock brands do not incur a billable charge on campaign registrations. Defaults to FALSE.
  • SOLE_PROPRIETOR: Optional
  • PRIVATE PROFIT: Optional
  • PUBLIC_PROFIT: Optional
  • NON_PROFIT: Optional
  • GOVERNMENT: Optional
businessContactEmail Email of the business contact for the brand. Max length: 255
  • SOLE_PROPRIETOR: N/A
  • PRIVATE PROFIT: Optional
  • PUBLIC_PROFIT: Required
  • NON_PROFIT: Optional
  • GOVERNMENT: Optional
Authorizations:
bearerAuth
Request Body schema: application/json
required

Refer to the schema for details on fields listed in the example.

entityType
required
string <= 20 characters

Entity type behind the brand. This is the form of business establishment.

firstName
string <= 100 characters

First or given name. Applicable to SOLE_PROPRIETOR entity type.

lastName
string <= 100 characters

Last or Surname. Applicable to SOLE_PROPRIETOR entity type.

displayName
required
string [ 1 .. 255 ] characters

Display or marketing name of the brand.

companyName
string <= 255 characters

(Required for Non-profit/private/public) Legal company name.

ein
string <= 21 characters

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

einIssuingCountry
string <= 2 characters

ISO2 2 characters country code. Example: US - United States

phone
required
string [ 1 .. 20 ] characters

Valid phone number in e.164 international format.

street
string <= 255 characters

Street number and name.

city
string <= 100 characters

City name

state
string <= 20 characters

State. Must be 2 letters code for United States.

postalCode
string <= 10 characters

Postal codes. Use 5 digit zipcode for United States

country
required
string [ 1 .. 2 ] characters

ISO2 2 characters country code. Example: US - United States

email
required
string [ 1 .. 100 ] characters

Valid email address of brand support contact.

stockSymbol
string <= 10 characters

(Required for public company) stock symbol.

stockExchange
string

(Required for public company) stock exchange.

ipAddress
string <= 50 characters

IP address of the browser requesting to create brand identity.

website
string <= 255 characters

Brand website URL and online presence.

brandRelationship
required
string

Brand relationship to the CSP

vertical
string <= 50 characters

(Required for all entity types except sole proprietor) vertical or industry segment of the brand.

altBusinessId
string <= 50 characters

Alternate business identifier

altBusinessIdType
string

Alternate business identifier type. e.g. DUNS, LEI, GIIN.

referenceId
string <= 50 characters

Caller supplied brand reference ID. If supplied, the value must be unique across all submitted brands. Can be used to prevent duplicate brand registrations.

mock
boolean

If true, marks the brand as a test brand that does not incur a billable charge on brand subsequent campaign registration.

tag
Array of strings or null or null unique

Tags to be set on the Brand.

mobilePhone
string <= 20 characters

Valid mobile phone number in e.164 international format.

businessContactEmail
string <= 255 characters

The email of the business contact for a public profit brand.

Responses

Request samples

Content type
application/json
{
  • "entityType": "PRIVATE_PROFIT",
  • "firstName": "John",
  • "lastName": "Doe",
  • "displayName": "ABC Mobile",
  • "companyName": "ABC Inc.",
  • "ein": "111111111",
  • "einIssuingCountry": "US",
  • "phone": "+12024567890",
  • "street": "123 6th Ave",
  • "city": "New York",
  • "state": "NY",
  • "postalCode": "10001",
  • "country": "US",
  • "email": "johndoe@abc.com",
  • "stockSymbol": "ABC",
  • "stockExchange": "NASDAQ",
  • "ipAddress": "string",
  • "brandRelationship": "BASIC_ACCOUNT",
  • "vertical": "RETAIL",
  • "altBusinessId": "string",
  • "altBusinessIdType": "string",
  • "referenceId": "string",
  • "mock": false,
  • "tag": [ ],
  • "mobilePhone": "+12024567890",
  • "businessContactEmail": "johndoe@abc.com"
}

Response samples

Content type
application/json
{
  • "entityType": "PRIVATE_PROFIT",
  • "cspId": "string",
  • "brandId": "string",
  • "status": "ACTIVE",
  • "firstName": "John",
  • "lastName": "Doe",
  • "displayName": "ABC Mobile",
  • "companyName": "ABC Inc.",
  • "ein": "111111111",
  • "einIssuingCountry": "US",
  • "phone": "+12024567890",
  • "street": "123 6th Ave",
  • "city": "New York",
  • "state": "NY",
  • "postalCode": "10001",
  • "country": "US",
  • "email": "string",
  • "stockSymbol": "ABC",
  • "stockExchange": "NASDAQ",
  • "ipAddress": "string",
  • "brandRelationship": "BASIC_ACCOUNT",
  • "vertical": "string",
  • "altBusinessId": "string",
  • "altBusinessIdType": "NONE",
  • "universalEin": "string",
  • "referenceId": "string",
  • "optionalAttributes": {
    },
  • "mock": true,
  • "identityStatus": "SELF_DECLARED",
  • "createDate": "2019-08-24T14:15:22Z",
  • "evpVettingScore": 0,
  • "evpVettingFeedback": [
    ],
  • "mobilePhone": "+12024567890",
  • "mobilePhoneVerifiedDate": "2019-08-24T14:15:22Z",
  • "businessContactTitle": "string",
  • "businessContactFirstName": "string",
  • "businessContactLastName": "string",
  • "businessContactEmail": "string",
  • "businessContactEmailVerifiedDate": "2019-08-24T14:15:22Z",
  • "cspName": "string",
  • "politicalVettingId": "string"
}

Get the SMS OTP status

Retrieves a brand’s SMS one-time password (OTP) status by a CSP-managed referenceId value. This endpoint confirms that the OTP verification was successful and, potentially, its delivery status. If the verifyDate property is present in the response, then the OTP verification was successfully completed. Note: The deliveryStatus property is only provided if supported by the underlying SMS service provider and is not guaranteed to arrive in a timely manner or match the OTP verify status. The deliveryStatus property should only be used to facilitate SMS delivery troubleshooting. Possible values for the deliveryStatus property include:

  • Null: The SMS service provider hasn't provided any SMS delivery status for the given transaction.
  • IN_TRANSIT: SMS message delivery is in progress.
  • DELIVERED_GATEWAY: The SMS message was delivered to a carrier gateway. This may be a final status depending on the destination network.
  • DELIVERED_HANDSET: The SMS message was delivered to the mobile device. This is a final status. No further updates will be provided.
  • FAILED_ROUTING: The SMS message can’t be routed based on the provided phone number. This is a final error status. No further updates will be provided.
  • FAILED_BLOCKED: The SMS message was blocked by a service provider or mobile network. This is a final error status. No further updates will be provided.
  • FAILED_EXPIRED: The SMS message expired during delivery. This is a final error status. No further updates will be provided.
  • FAILED_UNKNOWN: An unknown failure occurred. This is a final error status. No further updates will be provided.
  • UNKNOWN_STATUS: The status was not recognized by TCR. Refer to the deliveryStatusDetails property for more information.
Authorizations:
bearerAuth
path Parameters
referenceId
required
string

A unique reference ID that begins with OTP.

Responses

Response samples

Content type
application/json
{
  • "brandId": "B123456",
  • "referenceId": "OTP1234567",
  • "mobilePhone": "+11234567890",
  • "requestDate": "2019-08-24T14:15:22Z",
  • "verifyDate": "2019-08-24T14:15:22Z",
  • "deliveryStatus": "DELIVERED_HANDSET",
  • "deliveryStatusDate": "2019-08-24T14:15:22Z",
  • "deliveryStatusDetails": "string"
}

Retrieve an existing brand record

Get an existing brand record from TCR by specifying the brand’s unique identifier.

Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

Responses

Response samples

Content type
application/json
{
  • "entityType": "PRIVATE_PROFIT",
  • "cspId": "string",
  • "brandId": "string",
  • "status": "ACTIVE",
  • "firstName": "John",
  • "lastName": "Doe",
  • "displayName": "ABC Mobile",
  • "companyName": "ABC Inc.",
  • "ein": "111111111",
  • "einIssuingCountry": "US",
  • "phone": "+12024567890",
  • "street": "123 6th Ave",
  • "city": "New York",
  • "state": "NY",
  • "postalCode": "10001",
  • "country": "US",
  • "email": "string",
  • "stockSymbol": "ABC",
  • "stockExchange": "NASDAQ",
  • "ipAddress": "string",
  • "brandRelationship": "BASIC_ACCOUNT",
  • "vertical": "string",
  • "altBusinessId": "string",
  • "altBusinessIdType": "NONE",
  • "universalEin": "string",
  • "referenceId": "string",
  • "optionalAttributes": {
    },
  • "mock": true,
  • "identityStatus": "SELF_DECLARED",
  • "createDate": "2019-08-24T14:15:22Z",
  • "mobilePhone": "+12024567890",
  • "mobilePhoneVerifiedDate": "2019-08-24T14:15:22Z",
  • "businessContactTitle": "string",
  • "businessContactFirstName": "string",
  • "businessContactLastName": "string",
  • "businessContactEmail": "string",
  • "businessContactEmailVerifiedDate": "2019-08-24T14:15:22Z"
}

Update an existing brand’s properties

Allows a CSP to update an existing brand’s properties in the TCR system. Modifying some properties will change a brand’s identity status to UNVERIFIED and require resubmission using the PUT /brand/{brandId}/revet endpoint. Refer to the table below for additional information. Additional notes:

  • For Public Profit brands: Updating the businessContactEmail will revoke a brand’s Auth+ compliance. The brand must request a new Auth+ vet to regain compliance. During this process, the business contact must reply to a 2FA email.
  • Updating a brand’s mobilePhone field will change a brand’s identity status to UNVERIFIED.
Properties Description Resubmission required
companyName, ein, einIssuingCountry, entityType An update is allowed if the brand has no external vets and no active campaigns. Modifying these fields will change the brand identity status to UNVERIFIED. Yes
firstName, lastName, displayName, website, street, city, state, postalCode, country, email, referenceId, phone, vertical, stockSymbol, stockExchange, altBusinessId, altBusinessIdType Updating these fields do not require resubmission. Optional
brandRelationship Can only be updated once every 3 months. Optional
businessContactEmail Updating this field will revoke a Public Profit brand’s Auth+ compliance. No
Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

Request Body schema: application/json
required

Refer to the schema for details on fields listed in the example.

entityType
required
string <= 20 characters

Entity type behind the brand. This is the form of business establishment.

firstName
string <= 100 characters

First or given name. Applicable to SOLE_PROPRIETOR entity type.

lastName
string <= 100 characters

Last or Surname. Applicable to SOLE_PROPRIETOR entity type.

displayName
required
string <= 255 characters

Display or marketing name of the brand.

companyName
string <= 255 characters

(Required for Non-profit/private/public) Legal company name.

ein
string <= 21 characters

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

einIssuingCountry
string <= 2 characters

ISO2 2 characters country code. Example: US - United States

phone
string <= 20 characters

Valid phone number in e.164 international format.

street
string <= 255 characters

Street number and name.

city
string <= 100 characters

City name

state
string <= 20 characters

State. Must be 2 letters code for United States.

postalCode
string <= 10 characters

Postal codes. Use 5 digit zipcode for United States

country
required
string <= 2 characters

ISO2 2 characters country code. Example: US - United States

email
required
string <= 100 characters

Valid email address of brand support contact.

referenceId
string <= 50 characters

Caller supplied brand reference ID. If supplied, the value must be unique across all submitted brands. Can be used to prevent duplicate brand registrations.

stockSymbol
string <= 10 characters

(Required for public company) stock symbol.

stockExchange
string

(Required for public company) stock exchange.

ipAddress
string <= 50 characters

IP address of the browser requesting to create brand identity.

website
string <= 255 characters

Brand website URL and online presence.

brandRelationship
required
string

Brand relationship to the CSP

vertical
string <= 50 characters

(Required for all entity types except sole proprietor) vertical or industry segment of the brand.

altBusinessId
string <= 50 characters

Alternate business identifier

altBusinessIdType
string

Alternate business identifier type. e.g. DUNS, LEI, GIIN.

mobilePhone
string <= 20 characters

Valid mobile phone number in e.164 international format.

businessContactEmail
string <= 255 characters

The email of the business contact for a public profit brand.

Responses

Request samples

Content type
application/json
{
  • "entityType": "PRIVATE_PROFIT",
  • "firstName": "John",
  • "lastName": "Doe",
  • "displayName": "ABC Mobile",
  • "companyName": "ABC Inc.",
  • "ein": "111111111",
  • "einIssuingCountry": "US",
  • "phone": "+12024567890",
  • "street": "123 6th Ave",
  • "city": "New York",
  • "state": "NY",
  • "postalCode": "10001",
  • "country": "US",
  • "email": "string",
  • "referenceId": "string",
  • "stockSymbol": "ABC",
  • "stockExchange": "NASDAQ",
  • "ipAddress": "string",
  • "brandRelationship": "BASIC_ACCOUNT",
  • "vertical": "string",
  • "altBusinessId": "string",
  • "altBusinessIdType": "string",
  • "mobilePhone": "+12024567890",
  • "businessContactEmail": "johndoe@abc.com"
}

Response samples

Content type
application/json
{
  • "entityType": "PRIVATE_PROFIT",
  • "cspId": "string",
  • "brandId": "string",
  • "status": "ACTIVE",
  • "firstName": "John",
  • "lastName": "Doe",
  • "displayName": "ABC Mobile",
  • "companyName": "ABC Inc.",
  • "ein": "111111111",
  • "einIssuingCountry": "US",
  • "phone": "+12024567890",
  • "street": "123 6th Ave",
  • "city": "New York",
  • "state": "NY",
  • "postalCode": "10001",
  • "country": "US",
  • "email": "string",
  • "stockSymbol": "ABC",
  • "stockExchange": "NASDAQ",
  • "ipAddress": "string",
  • "brandRelationship": "BASIC_ACCOUNT",
  • "vertical": "string",
  • "altBusinessId": "string",
  • "altBusinessIdType": "NONE",
  • "universalEin": "string",
  • "referenceId": "string",
  • "optionalAttributes": {
    },
  • "mock": true,
  • "identityStatus": "SELF_DECLARED",
  • "createDate": "2019-08-24T14:15:22Z",
  • "mobilePhone": "+12024567890",
  • "mobilePhoneVerifiedDate": "2019-08-24T14:15:22Z",
  • "businessContactTitle": "string",
  • "businessContactFirstName": "string",
  • "businessContactLastName": "string",
  • "businessContactEmail": "string",
  • "businessContactEmailVerifiedDate": "2019-08-24T14:15:22Z"
}

Delete a brand record

Changes a brand to a DELETED status. A brand record can only be deleted if it does not have any active campaigns associated with it. Once a brand is deleted, it cannot be restored to an ACTIVE status. Deleted brands will remain in TCR for a TBD period of time and can be searched using the GET /brand endpoint with a query filter of 'status' = DELETED. The GET /brand/{brandId} endpoint will also return deleted brands.

Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Resend a 2FA email for a non-SOLE_PROPRIETOR brand

Resends a 2FA email for a brand that has not completed Authentication+ or RCS verification. Used if a brand business contact has lost their original 2FA email or if the email has expired. Can only be triggered if the brand initiated the 2FA verification process within the last 30 days. If multiple 2FA emails are sent to the same email address, TCR will rate limit the sending to one every two hours. Refer to the Authentication+ documentation for more information.

Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

query Parameters
vettingClass
string

The vetting class for resending 2FA Email. Example: RCS, AUTHPLUS

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List identity status appeals associated with a brand.

Returns a list of all identity status appeals associated with a brand ID. Results can be limited by appeal status.

Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

query Parameters
appealStatus
Array of strings
Items Enum: "PENDING" "COMPLETE"

Example: PENDING. The status associated with the appeal.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Appeal a brand’s identity status

Allows a CSP to appeal the results of a brand’s identity status. This is used if the basic identity check was unsuccessful or did not properly return a necessary brand optionalAttribute that grants access to additional use cases. Attachments should be added to include documentation that justifies the appeal. For detailed information, please refer to Brand Vetting Appeals.

Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

Request Body schema: application/json
required

Refer to the schema for details on fields associated with the appeal.

appealCategories
required
Array of strings

Categories to appeal against.

attachmentUuids
Array of strings

Attachment UUIDs of evidence uploaded for brand.

explanation
string <= 1024 characters

Appeal details.

Responses

Request samples

Content type
application/json
{
  • "appealCategories": [
    ],
  • "attachmentUuids": [
    ],
  • "explanation": "string"
}

Response samples

Content type
application/json
[
  • {
    }
]

Gets a list of appeal evidence files for a brand

Retrieves a list of all appeal evidence files attached to a specified brand. These evidence files could have been used as part of an external vet appeal, identity status appeal, etc. See the Attachment group for API information on downloading and deleting attachments on a brand record.

Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Add evidence files to a brand appeal

Adds appeal evidence files to a specified brand. These evidence files can be used as part of an external vet appeal, identity status appeal, etc. See the Attachment group for API information on downloading and deleting attachments on a brand record.

Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

Request Body schema: multipart/form-data
file
required
string <binary>

Responses

Response samples

Content type
application/json
{
  • "uuid": "string",
  • "fileName": "string",
  • "mimeType": "string"
}

Gets a list of external vetting records for a brand

Retrieves all external vetting records associated with a brand ID. Records can be queried by an external vetting partner ID, vetting class, or status.

Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

query Parameters
evpId
string

The unique ID that identifies an external vetting partner.

vettingClass
string

The type of vetting record. Example: ENHANCED.

vettingStatus
required
Array of strings
Items Enum: "PENDING" "UNSCORE" "ACTIVE" "FAILED" "EXPIRED"

The status of the vetting record. Example: PENDING.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Import an external vetting record

This endpoint is used to import an external vetting record from a TCR-approved vetting partner. If the vetting partner confirms the validity of the record, it will be saved with the brand and used for future campaign qualification. The request body must contain the following properties:

  • evpId: The vetting partner ID.
  • vettingId: The unique value of the vetting transactionId.

Note: Import is not supported for the AUTHPLUS vetting class.

An optional vettingToken field may be required by the vetting partner. Refer to the table below for full details.
Vetting Provider EvpId Vetting ID Property Vetting Token Notes
Aegis Mobile AEGIS ID Required. Referred to as the Verification Certificate. Supports STANDARD, POLITICAL, and ENHANCED vetting classes. Validation Rules: During import, the following properties must match between the Aegis report and the TCR brand:
  • Legal Name
  • Entity Type
Campaign Verify CV Authorization Token N/A Only supports the POLITICAL vetting class. Validation Rules:
  • The brand must be a US-based NON_PROFIT entity type without a 501(c) tax exempt status.
  • Must be a unique token per brand and CSP.
WMC Global WMC Transaction ID N/A Only supports the STANDARD vetting class. Validation Rules:
  • The brand must be a US-based PRIVATE_PROFIT or PUBLIC_PROFIT entity type.
Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

Request Body schema: application/json
required

Contains the external vetting record to be imported for a brand.

evpId
required
string [ 1 .. 10 ] characters

External vetting provider ID recognized by TCR. Use API endpoint /enum/extVettingProvider to view list of supported vetting providers.

vettingId
string <= 255 characters

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

vettingToken
string or null <= 65535 characters

Required by some providers for vetting record confirmation.

Responses

Request samples

Content type
application/json
{
  • "evpId": "CV",
  • "vettingId": "cv|1.0|cvmock|10dlc|###|###",
  • "vettingToken": "string"
}

Response samples

Content type
application/json
{
  • "evpId": "string",
  • "vettingId": "string",
  • "vettingToken": "string",
  • "vettingScore": 100,
  • "vettingClass": "string",
  • "vettingStatus": "PENDING",
  • "reasons": [
    ],
  • "vettingDetails": {
    },
  • "vettedDate": "2019-08-24T14:15:22Z",
  • "createDate": "2019-08-24T14:15:22Z",
  • "validUntil": "2019-08-24T14:15:22Z",
  • "expirationDate": "2019-08-24T14:15:22Z"
}

Request a new external vet for a brand

Places an order for an external vet via a TCR-approved vetting provider. For detailed instructions, see the External Vetting Requests Using the CSP API document. To generate a mock vetting token for use in a CSP non-production testing environment, see the POST /brand/{brandId}/externalVetting/mockCvToken endpoint. For more information, see the Non-Production Integration Testing document.

Note: For RCS vets, you must wait 30 days from vet completion before requesting a new one.

Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

Request Body schema: application/json
required

Provides information to the external vetting provider as part of the external vetting request.

evpId
required
string [ 1 .. 10 ] characters

External vetting provider ID for the brand.

vettingClass
string

Identifies the vetting classification.

additionalRequestPayload
string

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

Responses

Request samples

Content type
application/json
{
  • "evpId": "string",
  • "vettingClass": "string",
  • "additionalRequestPayload": "{\"requestorFirstName\":\"John\",\"requestorLastName\":\"Doe\",\"locale\":\"Federal\",\"fecCommitteeTypeCode\":\"Y\",\"committeeId\":\"00000\",\"candidateType\":\"City Mayor\",\"stateLocalCommitteeType\":\"State\",\"localCommitteeState\":\"NC\",\"localCommitteeMunicipality\":\"Some Locality\",\"tribalLocation\":\"US\",\"filingUrl\":\"https://sample.com\",\"filingRecordUrlInstructions\":\"Sample Instructions\",\"filingEmail\":\"contact@example.com\",\"electionDate\":\"2022-12-26\",\"pinPreference\":\"Express\"}"
}

Response samples

Content type
application/json
{
  • "evpId": "string",
  • "vettingId": "string",
  • "vettingToken": "string",
  • "vettingScore": 100,
  • "vettingClass": "string",
  • "vettingStatus": "PENDING",
  • "reasons": [
    ],
  • "vettingDetails": {
    },
  • "vettedDate": "2019-08-24T14:15:22Z",
  • "createDate": "2019-08-24T14:15:22Z",
  • "validUntil": "2019-08-24T14:15:22Z",
  • "expirationDate": "2019-08-24T14:15:22Z"
}

List external vetting appeals associated with a brand.

Returns a list of all external vetting appeals associated with a brand ID. You can limit the results by vetting partner, vetting id, and status. If no appeals exist for a brand, then no results will be returned.

Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

query Parameters
evpId
string

The unique ID of the external vetting partner.

vettingId
string

The ID associated with a previously submitted vet.

appealStatus
Array of strings
Items Enum: "PENDING" "COMPLETE"

The status of the appeal submitted for the brand.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Appeal an external vet (e.g., standard, RCS and authplus)

Allows a CSP to appeal a previously submitted external vet. This is used if the external vet did not return a brand optionalAttribute that grants access to additional use cases. It can also be used to appeal an external vet if the brand feels the outcome was incorrect, which can lead to lower throughput terms with network carriers. Attachments should be added to include documentation that justifies the appeal. For detailed information, please refer to Brand Vetting Appeals.

Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

Request Body schema: application/json
required

Refer to the schema for details on fields associated with the appeal.

appealCategories
required
Array of strings

Categories to appeal against.

attachmentUuids
Array of strings

Attachment UUIDs of evidence uploaded for brand.

explanation
string <= 1024 characters

Appeal details.

evpId
required
string non-empty
vettingId
required
string non-empty

Responses

Request samples

Content type
application/json
{
  • "appealCategories": [
    ],
  • "attachmentUuids": [
    ],
  • "explanation": "string",
  • "evpId": "string",
  • "vettingId": "string"
}

Response samples

Content type
application/json
[
  • {
    }
]

Gets a list of enhanced vetting reports for a brand

Retrieves the enhanced vetting reports that are associated with a brand ID.

Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Submit a revet for a brand

Revetting a brand is necessary if a CSP changes brand information following initial registration. The revet verifies the brand’s identity through a external vetting provider. If successful, the brand’s identity status is changed to VERIFIED (or VETTED_VERIFIED in some instances). Revets should only be used to validate changes to brand information following a successful registration (or to correct information if, for example, an incorrect EIN was entered). If a brand wants to verify attributes that don’t appear after registration (such as a missing tax exempt status or government entity flag), they should submit a brand appeal and submit additional documentation to support their claim.

Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

Responses

Response samples

Content type
application/json
{
  • "entityType": "PRIVATE_PROFIT",
  • "cspId": "string",
  • "brandId": "string",
  • "status": "ACTIVE",
  • "firstName": "John",
  • "lastName": "Doe",
  • "displayName": "ABC Mobile",
  • "companyName": "ABC Inc.",
  • "ein": "111111111",
  • "einIssuingCountry": "US",
  • "phone": "+12024567890",
  • "street": "123 6th Ave",
  • "city": "New York",
  • "state": "NY",
  • "postalCode": "10001",
  • "country": "US",
  • "email": "string",
  • "stockSymbol": "ABC",
  • "stockExchange": "NASDAQ",
  • "ipAddress": "string",
  • "brandRelationship": "BASIC_ACCOUNT",
  • "vertical": "string",
  • "altBusinessId": "string",
  • "altBusinessIdType": "NONE",
  • "universalEin": "string",
  • "referenceId": "string",
  • "optionalAttributes": {
    },
  • "mock": true,
  • "identityStatus": "SELF_DECLARED",
  • "createDate": "2019-08-24T14:15:22Z",
  • "evpVettingScore": 0,
  • "evpVettingFeedback": [
    ],
  • "mobilePhone": "+12024567890",
  • "mobilePhoneVerifiedDate": "2019-08-24T14:15:22Z",
  • "businessContactTitle": "string",
  • "businessContactFirstName": "string",
  • "businessContactLastName": "string",
  • "businessContactEmail": "string",
  • "businessContactEmailVerifiedDate": "2019-08-24T14:15:22Z",
  • "cspName": "string",
  • "politicalVettingId": "string"
}

Verify an OTP PIN (Sole Proprietor only)

Only used for SOLE_PROPRIETOR entity types. Verifies a one-time password (OTP) sent to the brand’s mobilePhone property. Upon successful OTP verification, the brand is allowed to register campaigns. Additional Information

  • Sole Proprietor OTP PINs expire after 24 hours.
  • Resending an OTP can only be done by the CSP. API users can use the PUT /brand/smsOTP endpoint.
  • Upon completion of OTP verification:
    • A CSP will receive a BRAND_OTP_VERIFIED webhook event.
    • The brand’s identity status will change to VERIFIED.
Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

Request Body schema: application/json
required

Contains the OTP PIN sent to the mobile phone number specified in the brand’s mobilePhone parameter.

otpPin
string

OTP pin received on brand representative's mobile phone to be verified

Responses

Request samples

Content type
application/json
{
  • "otpPin": "123456"
}

Response samples

Content type
application/json
[
  • {
    }
]

Trigger an OTP message (Sole Proprietor only)

Only used for SOLE_PROPRIETOR entity types. Triggers the generation of a one-time password (OTP) sent to the mobilePhone number specified in a brand’s profile. Only valid for US and Canadian phone numbers that support SMS text messaging. OTP messages are sent from an A2P 10DLC phone number managed by TCR. OTP verification is required as part of the brand registration process for SOLE_PROPRIETOR entity types. Campaigns cannot be created until OTP verification is complete. CSPs can customize the pinSms and successSms messages to fit their business needs, including the ability to trigger a second SMS message to the OTP recipient upon successful OTP verification. Testing Without a US/Canadian Wireless Number Developers can register a brand via the CSP API with the attribute mock set to true. When this attribute is enabled, all SMS OTP messages will be redirected via a webhook with an event type of BRAND_MOCK_OTP. The OTP PIN will be visible in the webhook payload under the property name otpPin. For more information on how to subscribe to webhooks generated by TCR, please see the Webhook section of the CSP API.

Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

Request Body schema: application/json
required

OTP messages sent to the brand’s mobilePhone number.

pinSms
required
string

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.

successSms
string

SMS to be sent to the brand's mobilePhone upon successful SMS reply OTP confirmation. This field is optional.

Responses

Request samples

Content type
application/json
{
  • "pinSms": "Your verification code is @OTP_PIN@",
  • "successSms": "Your verification code has been confirmed successfully"
}

Response samples

Content type
application/json
{
  • "brandId": "BS2K889",
  • "referenceId": "OTPK6RSGTV"
}

Brand Asset

Retrieve a list of brand assets from a brand

Returns a list of brand assets associated with a specified brand. Optional filters can narrow results by the type or name. Response includes the attachmentUuid as well as verification information such as feedback reasons and expiration date (if applicable).

Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

query Parameters
type
string
Enum: "LOGO" "BANNER"
name
string

Display name of the brand asset.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Upload a new brand asset

Uploads a new brand asset to a specified brand. The following business rules apply:

  • Request body must contain a type of LOGO or BANNER.
  • The associated brand cannot be a SOLE_PROPRIETOR.
  • Only alphanumeric names are accepted. Spaces, dashes, and underscore characters are also allowed within the name, but leading and trailing spaces are not.
  • Assets must have a unique name within the brand.
  • Assets must be in the appropriate format (JEPG, JPG or PNG), dimensions (1440 x 448px for banners and 224 x 224px for logos), and within the allowed size (200 KB for banners and 50 KB for logos).
  • Up to 50 banners and 50 logos are allowed (for a total of 100 assets) per brand.

Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

Request Body schema: multipart/form-data
name
required
string

The display name of the brand asset.

type
required
string
url
string

URL of where the file is hosted.

file
string <binary>

Path to the file to upload.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Remove an existing brand asset

Permanently deletes an existing brand asset record from a specified brand. Brand assets cannot be deleted if their verification status is PENDING, VERIFIED, or if they are associated with an active RCS campaign.

Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

name
required
string

The display name of the brand asset.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List verification appeals associated with a brand asset

Returns a list of all verification appeals associated with a brand ID and brand asset name. Results can be limited by submitting an optional appeal status.

Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

name
required
string

Display name of the brand asset.

query Parameters
appealStatus
Array of strings
Items Enum: "PENDING" "COMPLETE"

Optional appeal status filter

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Appeal a brand asset verification

Allows the CSP to appeal brand assets that are in an UNVERIFIED status and have been registered within the last 45 days. One or more appealCategories must also be submitted.

Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

name
required
string

The name of the asset to appeal.

Request Body schema: application/json
required

Refer to the schema for details on fields associated with the appeal.

appealCategories
required
Array of strings

Categories to appeal against.

attachmentUuids
Array of strings

Attachment UUIDs of evidence uploaded for brand.

explanation
string <= 1024 characters

Appeal details.

Responses

Request samples

Content type
application/json
{
  • "appealCategories": [
    ],
  • "attachmentUuids": [
    ],
  • "explanation": "string"
}

Response samples

Content type
application/json
[
  • {
    }
]

Verify an existing brand asset

Submits a brand asset associated with a brand for verification by an external vetting provider. A brand asset must be successfully verified before it can be associated with an RCS campaign. Additional business rules include:

  • The associated brand must have a VERIFIED or VETTED_VERIFIED identity status in order to submit brand assets for verification.
Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

name
required
string

The display name of the brand asset.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Campaign

Deprecated. Search campaigns you have registered Deprecated

This endpoint will be removed in a future release. Use GET /campaign/search as a replacement. If only searching for mock campaigns, use GET /campaign/mock as a replacement.

Search for campaigns the CSP has registered by any combination of the available parameters. This operation supports pagination with a maximum of 500 records per fetch. Any field supplied must be an exact match. If no parameters are supplied, a full list of campaigns the CSP has registered will be returned. In the response, if the resellerId property of a campaign is set to R000000, this indicates No Reseller.

Authorizations:
bearerAuth
query Parameters
referenceId
string

Reference ID. An identifier managed by the CSP.

brandId
string

The unique ID that identifies the brand.

status
string
Enum: "ACTIVE" "EXPIRED"

Status of the campaign.

usecase
string

Use case of the campaign. Must be an exact match if supplied.

vertical
string

Business segment of the campaign. Must be an exact match if supplied.

resellerId
string

Unique ID of the reseller entered for the campaign. Must be an exact match if supplied.

autoRenewal
boolean

Whether auto-renew is enabled for the campaign.

upstreamCnpId
string

Unique ID of the upstream CNP to whom the campaign has been shared.

tag
Array of strings unique

One or more tags that have been applied to the campaign.

mock
boolean

Whether returned campaigns are attached to a mock brand. Leaving this parameter as null will return both real and test campaigns.

page
integer <int32> >= 1
Default: 1

The requested page of the result.

recordsPerPage
integer <int32> [ 1 .. 500 ]
Default: 10

The number of records to return per page in the result.

Responses

Response samples

Content type
application/json
{
  • "records": [
    ],
  • "page": 0,
  • "totalRecords": 0
}

Search mock campaigns you have registered

Search for mock campaigns the CSP has registered by any combination of the available parameters. This operation supports paginated results up to a maximum of 10,000 records and a maximum of 50 records per fetch. Any field supplied must be an exact match. If no parameters are supplied, a full list of mock campaigns the CSP has registered will be returned. In the response, if the resellerId property of a campaign is set to R000000, this indicates No Reseller.

Authorizations:
bearerAuth
query Parameters
referenceId
string

Reference ID. An identifier managed by the CSP.

brandId
string

The unique ID that identifies the brand.

status
string
Enum: "ACTIVE" "EXPIRED"

Status of the campaign.

usecase
string

Use case of the campaign. Must be an exact match if supplied.

vertical
string

Business segment of the campaign. Must be an exact match if supplied.

resellerId
string

Unique ID of the reseller entered for the campaign. Must be an exact match if supplied.

autoRenewal
boolean

Whether auto-renew is enabled for the campaign.

tag
Array of strings unique

One or more tags that have been applied to the campaign.

page
integer <int32> >= 1
Default: 1

The requested page of the result.

recordsPerPage
integer <int32> [ 1 .. 50 ]
Default: 10

The number of records to return per page in the result.

Max: 50

Responses

Response samples

Content type
application/json
{
  • "records": [
    ],
  • "page": 0,
  • "totalRecords": 0
}

Search campaigns you have registered

This endpoint does not return mock campaigns. If looking for mock campaigns, use GET /campaign/mock.

Search for campaigns the CSP has registered by any combination of the available parameters. This operation supports paginated results up to a maximum of 10,000 records and a maximum of 50 records per fetch. Any field supplied must be an exact match. If no parameters are supplied, a full list of campaigns the CSP has registered will be returned. In the response, if the resellerId property of a campaign is set to R000000, this indicates No Reseller.

Authorizations:
bearerAuth
query Parameters
referenceId
string

Reference ID. An identifier managed by the CSP.

brandId
string

The unique ID that identifies the brand.

status
string
Enum: "ACTIVE" "EXPIRED"

Status of the campaign.

usecase
string

Use case of the campaign. Must be an exact match if supplied.

vertical
string

Business segment of the campaign. Must be an exact match if supplied.

resellerId
string

Unique ID of the reseller entered for the campaign. Must be an exact match if supplied.

autoRenewal
boolean

Whether auto-renew is enabled for the campaign.

upstreamCnpId
string

Unique ID of the upstream CNP to whom the campaign has been shared.

tag
Array of strings unique

One or more tags that have been applied to the campaign.

page
integer <int32> >= 1
Default: 1

The requested page of the result.

recordsPerPage
integer <int32> [ 1 .. 50 ]
Default: 10

The number of records to return per page in the result.

Max: 50

Responses

Response samples

Content type
application/json
{
  • "records": [
    ],
  • "page": 0,
  • "totalRecords": 0
}

Retrieve an existing campaign record

Get an existing campaign record from TCR by specifying the campaign’s unique identifier. In the response, if the resellerId property of a campaign is set to R000000, this indicates No Reseller.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

Responses

Response samples

Content type
application/json
{
  • "campaignId": "string",
  • "cspId": "string",
  • "resellerId": "string",
  • "status": "ACTIVE",
  • "createDate": "2019-08-24T14:15:22Z",
  • "autoRenewal": true,
  • "billedDate": "2019-08-24T14:15:22Z",
  • "brandId": "string",
  • "vertical": "string",
  • "usecase": "string",
  • "subUsecases": [
    ],
  • "channelId": "string",
  • "description": "stringstringstringstringstringstringstri",
  • "embeddedLink": false,
  • "embeddedPhone": false,
  • "termsAndConditions": true,
  • "numberPool": false,
  • "ageGated": true,
  • "directLending": true,
  • "subscriberOptin": false,
  • "subscriberOptout": false,
  • "subscriberHelp": false,
  • "sample1": "stringstringstringst",
  • "sample2": "stringstringstringst",
  • "sample3": "stringstringstringst",
  • "sample4": "stringstringstringst",
  • "sample5": "stringstringstringst",
  • "messageFlow": "stringstringstringstringstringstringstri",
  • "helpMessage": "stringstringstringst",
  • "referenceId": "string",
  • "mock": true,
  • "nextRenewalOrExpirationDate": "2000-01-01",
  • "expirationDate": "2019-08-24T14:15:22Z",
  • "optinKeywords": "START,YES",
  • "optoutKeywords": "STOP",
  • "helpKeywords": "HELP",
  • "optinMessage": "stringstringstringst",
  • "optoutMessage": "stringstringstringst",
  • "privacyPolicyLink": "string",
  • "termsAndConditionsLink": "string",
  • "embeddedLinkSample": "string",
  • "monthlyFee": 10
}

Update a campaign’s properties

Modifies properties associated with a specific campaign ID. Not all fields can be updated. Refer to the table below for more information.

Property Description Updated
brandId The unique ID assigned to the brand. No
usecase The campaign’s intended use (e.g., 2FA, Customer Care, Marketing). No
subUsecases Some use cases allow CSPs to specify an additional sub-use case. Sub-use cases help MNOs determine the purpose of a campaign. No
resellerId The unique ID assigned to a reseller. Used to indicate if an additional party sits between the brand and the CSP. If a resellerId is entered, it can only be changed to R000000 to indicate No Reseller. Once
description A detailed description of the campaign’s purpose. Yes
embeddedLink Specifies whether the campaign is using an embedded link of any kind. Note that public URL shorteners (e.g., bitly, tinyurl) are not accepted. Yes
embeddedPhone Specifies whether the campaign is using an embedded phone number other than the HELP information contact number. Yes
termsAndConditions Indicates that the registering CSP agrees to TCR’s terms and conditions. No
numberPool Indicates whether the campaign is using more than 50 phone numbers in a campaign. Some network providers require this information, as it necessitates a different provisioning process. Yes
ageGated Specifies whether the campaign contains age-gated content. Yes
directLending Specifies whether the campaign will be used by a brand that provides direct lending. Yes
subscriberOptIn Indicates whether the campaign requires subscriber opt-in before sending messages. No
subscriberOptOut Indicates whether the campaign has an opt-out system for subscribers (e.g., keywords such as STOP or QUIT). No
subscriberHelp Indicates whether the campaign has a help system for subscribers (e.g., keywords such as HELP or INFO). No
sample[1-5] Sample messages that are representative of messages sent as part of the campaign. Yes
messageFlow Describes how a subscriber would opt-in to the campaign. Yes
helpMessage Sample help message that would be sent to the subscriber. Yes
mnoIds The unique identifiers of specific MNOs that the campaign wants to use. See the PUT /campaign/{campaignId}/resubmit endpoint to resubmit a campaign to a specific MNO. No
referenceId A unique reference identifier for the campaign that’s managed by the CSP’s internal systems. Sole Proprietor campaigns require the use of a referenceId. No
autoRenewal Indicates whether the campaign will automatically renew each billing period. Yes
tag List of tags associated with the campaign. Can be used as an organizational system that helps when searching for the campaign. No
optinKeywords A list of keywords a subscriber uses to opt-in to the campaign. Yes
optoutKeywords A list of keywords a subscriber uses to opt-out of the campaign. Yes
helpKeywords A list of keywords a subscriber can use to get help or more information from the campaign. Yes
optinMessage Sample of a message sent to the subscriber when they opt-in. Yes
optoutMessage Sample of a message sent to the subscriber when they opt-out. Yes
privacyPolicyLink A link to the campaign’s privacy policy page. Yes
termsAndConditionsLink A link to the campaign’s terms and conditions page. Yes
embeddedLinkSample If using an embedded link, a sample of the link that will be used in the campaign. Note that public URL shorteners (e.g., bitly, tinyurl) are not accepted. Yes
Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

Request Body schema: application/json
required

Campaign properties to be updated.

resellerId
string <= 8 characters

Alphanumeric identifier of the reseller that you want to associate with this campaign.

description
string [ 40 .. 4096 ] characters

Summary description of this campaign.

sample1
string [ 20 .. 1024 ] characters

Message sample. All campaign use cases require at least 1 message sample.

sample2
string [ 20 .. 1024 ] characters

Message sample. Some campaign use cases require 2 or more message samples.

sample3
string [ 20 .. 1024 ] characters

Message sample. Some campaign use cases require 3 or more message samples.

sample4
string [ 20 .. 1024 ] characters

Message sample. Some campaign use cases require 4 or more message samples.

sample5
string [ 20 .. 1024 ] characters

Message sample. Some campaign use cases require 5 message samples.

messageFlow
string [ 40 .. 4096 ] characters

Message flow description.

helpMessage
string [ 20 .. 1024 ] characters

Help message of the campaign. MinLength length = 20 when subscriberHelp = true.

autoRenewal
boolean
Default: true

Campaign subscription auto-renewal status. If true, then campaign will automatically renewal at the end of billing cycle.

optinKeywords
string <= 255 characters
Default: ""

Subscriber opt-in keywords. Multiple keywords are comma separated without space.

optoutKeywords
string <= 255 characters
Default: "STOP"

Subscriber opt-out keywords. Multiple keywords are comma separated without space.

helpKeywords
string <= 255 characters
Default: "HELP"

Subscriber help keywords. Multiple keywords are comma separated without space.

optinMessage
string [ 20 .. 1024 ] characters

Subscriber opt-in message. When subscriberOptin = true, must be empty or length >= 20.

optoutMessage
string [ 20 .. 1024 ] characters

Subscriber opt-out message. MinLength length = 20 when subscriberOptout = true.

privacyPolicyLink
string <= 2048 characters

Link to the campaign's privacy policy.

termsAndConditionsLink
string <= 2048 characters

Link to the campaign's terms and conditions.

embeddedLinkSample
string <= 255 characters

Sample of an embedded link that will be sent to subscribers.

numberPool
boolean

Does campaign utilize pool of phone numbers?

embeddedLink
boolean

Does message generated by the campaign include URL link in SMS?

embeddedPhone
boolean

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

ageGated
boolean

Age gated message content in campaign.

directLending
boolean

Direct lending or loan arrangement

Responses

Request samples

Content type
application/json
{
  • "resellerId": "string",
  • "description": "stringstringstringstringstringstringstri",
  • "sample1": "stringstringstringst",
  • "sample2": "stringstringstringst",
  • "sample3": "stringstringstringst",
  • "sample4": "stringstringstringst",
  • "sample5": "stringstringstringst",
  • "messageFlow": "stringstringstringstringstringstringstri",
  • "helpMessage": "stringstringstringst",
  • "autoRenewal": true,
  • "optinKeywords": "START,YES",
  • "optoutKeywords": "STOP",
  • "helpKeywords": "HELP",
  • "optinMessage": "stringstringstringst",
  • "optoutMessage": "stringstringstringst",
  • "privacyPolicyLink": "string",
  • "termsAndConditionsLink": "string",
  • "embeddedLinkSample": "string",
  • "numberPool": true,
  • "embeddedLink": true,
  • "embeddedPhone": true,
  • "ageGated": true,
  • "directLending": true
}

Response samples

Content type
application/json
{
  • "campaignId": "string",
  • "cspId": "string",
  • "resellerId": "string",
  • "status": "ACTIVE",
  • "createDate": "2019-08-24T14:15:22Z",
  • "autoRenewal": true,
  • "billedDate": "2019-08-24T14:15:22Z",
  • "brandId": "string",
  • "vertical": "string",
  • "usecase": "string",
  • "subUsecases": [
    ],
  • "channelId": "string",
  • "description": "stringstringstringstringstringstringstri",
  • "embeddedLink": false,
  • "embeddedPhone": false,
  • "termsAndConditions": true,
  • "numberPool": false,
  • "ageGated": true,
  • "directLending": true,
  • "subscriberOptin": false,
  • "subscriberOptout": false,
  • "subscriberHelp": false,
  • "sample1": "stringstringstringst",
  • "sample2": "stringstringstringst",
  • "sample3": "stringstringstringst",
  • "sample4": "stringstringstringst",
  • "sample5": "stringstringstringst",
  • "messageFlow": "stringstringstringstringstringstringstri",
  • "helpMessage": "stringstringstringst",
  • "referenceId": "string",
  • "mock": true,
  • "nextRenewalOrExpirationDate": "2000-01-01",
  • "expirationDate": "2019-08-24T14:15:22Z",
  • "optinKeywords": "START,YES",
  • "optoutKeywords": "STOP",
  • "helpKeywords": "HELP",
  • "optinMessage": "stringstringstringst",
  • "optoutMessage": "stringstringstringst",
  • "privacyPolicyLink": "string",
  • "termsAndConditionsLink": "string",
  • "embeddedLinkSample": "string"
}

Deactivates a campaign

Deactivates a campaign by setting its status to EXPIRED and removing it from the number provisioning provider (nnSR). Deactivated campaigns cannot be restored. If a CSP wants to reactivate a campaign, they must create a new one with the same information. This endpoint is idempotent.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Retrieve a list of MNOs excluded from a campaign

Returns an array of MNOs excluded from a campaign when the primary or secondary DCAs accepted it.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

Responses

Response samples

Content type
application/json
[
  • 10017,
  • 10035
]

Get a list of MMS sample media files on a campaign

Retrieves a list of all MMS sample media files for a specified campaign. Refer to the endpoints under the Attachment heading for information on downloading and deleting MMS sample media files.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Add an MMS sample media file to a campaign

Used to add MMS sample media files to a campaign. Only one file per API call is allowed with a max file size of 10 MB. Supported file types include: .bmp, .dib, .gif, .jpeg, .jpg, .m2a, .m4a, .m4b, .m4p, .m4r, .m4v, .mp1, .mp2, .mp3, .mp4, .mpa, .oga, .ogg, .ogm, .ogv, .ogx, .png, .spx, .txt, .wav, .webm. Refer to the endpoints under the Attachment heading for information on downloading and deleting MMS sample media files.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

Request Body schema: multipart/form-data
file
required
string <binary>

Responses

Response samples

Content type
application/json
{
  • "uuid": "string",
  • "fileName": "string",
  • "mimeType": "string"
}

List MNO IDs where a DCA has been elected

Retrieves a list of MNO IDs where a DCA has been elected for the campaign.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

query Parameters
cnpMigration
boolean
Default: false

Indicates whether the campaign is in the process of CNP migration.

Responses

Response samples

Content type
application/json
[
  • 10038,
  • 10035
]

Get a campaign’s metadata from all submitted MNOs

Retrieves a specified campaign’s metadata from all MNOs where it has been submitted. Returns a set of key-value pairs for each MNO ID in the response body.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

Responses

Response samples

Content type
application/json
{
  • "10017": {
    },
  • "10035": {
    }
}

Send a notice to a CNP in the connectivity chain to take action

Sends a notification to a CNP in the connectivity chain to take action on the campaign. Useful if a campaign has been sitting idle in a review state for an extended period of time. The nudgeIntent in the request body indicates what action is awaiting review. Available options include:

  • APPEAL_REJECTION: The campaign is in a rejected status awaiting an appeal in the upstream connectivity chain. For example, given the following connectivity chain: CSP1 → CNP1 → DCA1, where DCA1 rejects the campaign. The campaign will sit in the CNP1 queue in a rejected status. CSP1 would update the campaign and then send a nudge notification to CNP1 to review the appeal and reshare it with DCA1.
  • REVIEW: The campaign is in a review status awaiting a party in the upstream connectivity chain to take action. For example, given the following connectivity chain: CSP1 → CNP1 → CNP2, where CNP2 has not reviewed a pending campaign for an extended period of time. CSP1 can send a nudge notification to CNP2 to review the campaign.
The response includes a message on whether the nudge was successful.
Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

Request Body schema: application/json
required

Contains the nudgeIntent attribute and a short description to send with the notification.

nudgeIntent
required
string

Nudge intention. Use API endpoint /enum/nudgeIntent to view list of supported nudge intent.

description
string <= 1024 characters

Description of the nudge intention

Responses

Request samples

Content type
application/json
{
  • "nudgeIntent": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "message": "Nudge successful"
}

Get a campaign’s status on all submitted MNOs

Returns a set of key-value pairs in the response body with an MNO ID and the campaign’s operational status on the network. Note: MNOs are encouraged, but not required, to report a campaign’s operational status to TCR. Valid responses include:

  • REGISTERED: The campaign was approved and is registered with the MNO.
  • REVIEW: The campaign is currently under review by the MNO.
  • REJECTED: The campaign was rejected by the MNO.
  • SUSPENDED: The campaign is suspended on the MNO’s network.
Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

Responses

Response samples

Content type
application/json
{
  • "10017": "REGISTERED",
  • "10035": "REVIEW"
}

Gets campaign attributes sent to nnSR

Retrieves the current attributes that are set for the specified campaign on the netnumber Services Registry (nnSR) platform. nnSR provides phone number provisioning for campaigns outside of the TCR system.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

Responses

Response samples

Content type
application/json
{
  • "msg_class": "E",
  • "status": "7",
  • "brand_id": "B6YHPELO"
}

Get phone numbers provisioned to a campaign

Returns a list of phone numbers assigned to a specific campaign. Phone numbers are provisioned outside of the TCR system and reported by the netnumber Services Registry (nnSR). This endpoint supports paginated results.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

query Parameters
current
boolean

Filters results on whether to return currently associated phone numbers (true) or previously associated phone numbers (false).

page
integer <int32>
Default: 1

The requested page of the result.

recordsPerPage
integer <int32> [ 1 .. 500 ]
Default: 10

The number of records to return per page in the result.

Responses

Response samples

Content type
application/json
{
  • "records": [
    ],
  • "page": 0,
  • "totalRecords": 0
}

Resubmit a campaign to specified MNO IDs

This endpoint is typically used for two purposes:

  1. A campaign is missing an MNO campaign operation record for one or more networks, so the CSP wants to backfill those missing records.
  2. The Carrier Rules Engine (CRE) for specific carriers were updated, which can grant brands better terms for their campaigns. In this instance, the CSP wants to update existing campaigns to reflect newly assigned message classes. Note: Running this endpoint could potentially downgrade campaign business terms.
The response will contain a campaign ID and MNO metadata associated with it.
Property Data Type Description
campaignId string The unique ID that identifies the campaign. This identifier is necessary to update nnSR phone number provisioning.
mnoMetadata array Key-value pairs of metadata associated with the MNO.
Possible MNO Metadata
Property MNO Specific Data Type Description
mno ALL MNOs string Name of the MNO.
mnoSupport All MNOs boolean If false, the specified use case is not supported by the MNO.
mnoReview All MNOs boolean If true, the submitted campaign is subject to a manual MNO review process. Some MNOs provide campaign review statuses via TCR APIs.
qualify All MNOs boolean If false, the brand does not qualify for the desired use case on the MNO. The CSP should consider getting the brand vetted by one of TCR’s approved external vetting providers.
minMsgSamples All MNOs integer The minimum number of message samples required by the MNO for the desired use case.
reqSubscriberOptin All MNOs boolean If true, the MNO requires the subscriber to opt-into the campaign before the message can be sent. The opt-in mechanism can be a mobile or web opt-in.
reqSubscriberOptout All MNOs boolean If true, the MNO requires a campaign to support an opt-out mechanism through stop keywords such as STOP or QUIT. Upon receiving a STOP message from a subscriber, the campaign must immediately stop sending messages to the subscriber.
reqSubscriberHelp All MNOs boolean If true, the MNO requires the campaign to support an assistance mechanism through help key words such as HELP or INFO.
noEmbeddedLink All MNOs boolean If true, the MNO does not allow a call-to-action link/URL to be embedded in messages sent to the subscriber.
noEmbeddedPhone All MNOs boolean If true, the MNO forbids call-to-action phone numbers to be embedded in messages sent to the subscriber.
msgClass AT&T string Message class assigned to the campaign by AT&T. Please refer to the AT&T 10DLC guide for a complete list of available message classes and definitions.
tpm AT&T integer SMS message TPM (throughput per minute) assigned to the brand for the desired use case.
mmsTpm AT&T integer MMS message TPM (throughput per minute) assigned to the brand for the desired use case.
tpmScope AT&T string TPM restriction scope. Possible values include: CAMPAIGN or PHONE_NUMBER. If the scope is PHONE_NUMBER, then the TPM rate-limiting is imposed separately for each phone number provisioned to the campaign. A CAMPAIGN level scope indicates rate-limiting imposed for the entire campaign.
brandTier T-Mobile string Daily message volume assigned to the campaign based on brand tier or brand qualification. The daily volume restriction applies to brands across all campaigns and CSPs. Please contact your message service provider for updated T-Mobile terms. Possible values: LOW, LOWER_MID, UPPER_MID, TOP
brandDailyCap T-Mobile integer The number of messages allowed per day on the T-Mobile network. If the brandTier attribute is UNCAPPED, then this will be NULL.
Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

Request Body schema: application/json
required

Contains one or more MNO IDs against which to resubmit the campaign.

mnoIds
Array of integers <int64> unique [ items <int64 > ]

Responses

Request samples

Content type
application/json
{
  • "mnoIds": [ ]
}

Response samples

Content type
application/json
{
  • "campaignId": "C123456",
  • "mnoMetadata": {
    }
}

Get a campaign’s shared status

Retrieves the shared status of a campaign where the CSP is the immediate connectivity partner. Response will include information on whether the campaign was shared to the CSP or shared upstream by the CSP.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

query Parameters
cnpMigration
boolean
Default: false

Specifies whether the campaign is undergoing CNP migration.

Responses

Response samples

Content type
application/json
{
  • "sharedWithMe": {
    },
  • "sharedByMe": {
    }
}

Share a campaign to an upstream connectivity partner

This endpoint is used to share a campaign to an upstream CNP. The upstream CNP, identified with the upstreamCnpId parameter is given a role-based read-only view of campaign properties to facilitate MNO onboarding. The upstream CNP may share the campaign with additional CNPs until a DCA is identified at the end of the chain. Once the campaign is shared by the downstream CNP, the invitation cannot be rescinded or changed until the upstream CNP declines the sharing request.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

upstreamCnpId
required
string

The unique ID that identifies the upstream connectivity partner.

Responses

Response samples

Content type
application/json
{
  • "downstreamCnpId": "string",
  • "upstreamCnpId": "string",
  • "sharingStatus": "PENDING",
  • "rejectionCategory": [
    ],
  • "explanation": "string",
  • "sharedDate": "2019-08-24T14:15:22Z",
  • "statusDate": "2019-08-24T14:15:22Z",
  • "cnpMigration": true
}

Get a list of supporting documents from a campaign

Retrieves a list of supporting documents attached to a campaign. These can include opt-ins, call-to-actions, terms and conditions documents, or privacy policies. Refer to the endpoints under the Attachment heading for information on downloading and deleting existing supporting documents.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Add a supporting document to a campaign

Adds an optional supporting document to a campaign. Supporting documents can include an opt-in, call-to-action, terms and conditions document, or privacy policy. Supported file types include: .jpg, .jpeg, .png, .bmp, .tiff, .raw, .pdf, .rtf, .xml, .odt, .docx, .htm, .txt. Refer to the endpoints under the Attachment heading for information on downloading and deleting existing supporting documents.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

Request Body schema: multipart/form-data
file
required
string <binary>

Path to the file to upload.

Responses

Response samples

Content type
application/json
{
  • "uuid": "string",
  • "fileName": "string",
  • "mimeType": "string"
}

Campaign Builder

Create a new campaign for a brand

Creates a new campaign in TCR. If the submitted campaign request meets the requirements for at least one MNO, then the campaign is created in TCR and the registration fee will be charged to the CSP account. The request body should contain metadata about the campaign. Refer to the following table for more information.

Property Description Validation Required
brandId The unique ID assigned to the brand. Valid brand identifier Yes
usecase The campaign’s intended use (e.g., 2FA, Customer Care, Marketing). Valid use case names Yes
subUsecases Some use cases allow CSPs to specify an additional sub-use case. Sub-use cases help MNOs determine the purpose of a campaign. Valid sub-use case names Required for specific use cases.
resellerId The unique ID assigned to a reseller. Used to indicate if an additional party sits between the brand and the CSP. If set to a valid reseller, can only be changed to R000000 to indicate No Reseller. Once code R000000 is entered, it cannot be changed. Valid reseller identifier Max length: 8 Yes
description A detailed description of the campaign’s purpose. Minimum length: 40 characters Max length: 4096 characters Yes
embeddedLink Specifies whether the campaign is using an embedded link of any kind. Note that public URL shorteners (e.g., bitly, tinyurl) are not accepted. Default value: false Optional, although may affect MNO eligibility. Some MNOs may not approve embedded links in messages.
embeddedPhone Specifies whether the campaign is using an embedded phone number other than the HELP information contact number. Default value: false Optional, although may affect MNO eligibility. Some MNOs may not approve embedded phone numbers in messages.
termsAndConditions Indicates that the registering CSP agrees to TCR’s terms and conditions. Default value: true No
numberPool Indicates whether the campaign is using more than 50 phone numbers in a campaign. Some network providers require this information, as it necessitates a different provisioning process. Default value: false No
ageGated Specifies whether the campaign contains age-gated content. Default value: false No
directLending Specifies whether the campaign will be used by a brand that provides direct lending. Default value: false No
subscriberOptIn Indicates whether the campaign requires subscriber opt-in before sending messages. Default value: false Optional, although may affect MNO eligibility.
subscriberOptOut Indicates whether the campaign has an opt-out system for subscribers (e.g., keywords such as STOP or QUIT). Default value: false Optional, although may affect MNO eligibility.
subscriberHelp Indicates whether the campaign has a help system for subscribers (e.g., keywords such as HELP or INFO). Default value: false Optional, although may affect MNO eligibility.
sample[1-5] Sample messages that are representative of messages sent as part of the campaign. Minimum length: 20 characters: Max length: 1024 characters Optional, although the number of samples may affect MNO eligibility.
messageFlow Describes how a subscriber would opt-in to the campaign. Minimum length: 40 characters: Max length: 4096 characters Yes
helpMessage Sample help message that would be sent to the subscriber. Minimum length: 20 characters: Max length: 1024 characters Required if subscriberHelp is set to true. May affect MNO eligibility.
mnoIds The unique identifiers of specific MNOs that the campaign wants to use. See the PUT /campaign/{campaignId}/resubmit endpoint to resubmit a campaign to a specific MNO. Valid MNO network IDs No
referenceId A unique reference identifier for the campaign. Max length: 50 characters No
autoRenewal Indicates whether the campaign will automatically renew each billing period. Default value: true No
tag List of tags associated with the campaign. Can be used as an organizational system that helps when searching for the campaign. Max length: 255 characters No
optinKeywords A list of keywords a subscriber uses to opt-in to the campaign. Max length: 255 characters No
optoutKeywords A list of keywords a subscriber uses to opt-out of the campaign. Default value: STOP Max length: 255 characters Required if subscriberOptOut is set to true. May affect MNO eligibility.
helpKeywords A list of keywords a subscriber can use to get help or more information from the campaign. Default value: HELP Max length: 255 characters Required if subscriberHelp is set to true. May affect MNO eligibility.
optinMessage Sample of a message sent to the subscriber when they opt-in. Minimum length: 20 characters: Max length: 1024 characters Required if subscriberOptIn is set to true. May affect MNO eligibility.
optoutMessage Sample of a message sent to the subscriber when they opt-out. Minimum length: 20 characters: Max length: 1024 characters Required if subscriberOptOut is set to true. May affect MNO eligibility.
privacyPolicyLink A link to the campaign’s privacy policy page. Max length: 2048 characters No
termsAndConditionsLink A link to the campaign’s terms and conditions page. Max length: 2048 characters No
embeddedLinkSample If using an embedded link, a sample of the link that will be used in the campaign. Note that public URL shorteners (e.g., bitly, tinyurl) are not accepted. Max length: 255 characters No

Newly created campaigns are assigned a unique campaign_id which will appear in the response. Also, any MNO metadata pertaining to the submitted campaign will be returned. Refer to the table below for information contained in the response. Standard use case campaigns are approved upon submission while some special use case campaigns require manual approval by MNOs. CSPs can query a campaign’s MNO operational status via the GET /campaign/{campaignId}/operationStatus endpoint. Campaigns created for mock brands are not functional campaigns. They cannot be shared to upstream connectivity partners and are not registered in the netnumber Services Registry (nnSR). All mock brands are automatically deleted 30 days after registration. The deletion will cascade across all campaigns created from the mock brands. The response will contain the following properties:

Property Data Type Description
campaignId string The unique ID that identifies the campaign. This ID is used for nnSR phone number provisioning.
mnoMetadata array Map of MNO metadata where the key is the network ID of the MNO and the value is the associated metadata.
The MNO metadata property will contain the following attributes:
Property MNO Specific Data Type Description
mno All MNOs string Name of the MNO.
mnoSupport All MNOs boolean If false, the specified use case is not supported by the MNO.
mnoReview All MNOs boolean If true, the submitted campaign is subject to a manual MNO review process. Some MNOs provide campaign review statuses via TCR APIs.
qualify All MNOs boolean If false, the brand does not qualify for the desired use case on the MNO. The CSP should consider getting the brand vetted by one of TCR’s approved external vetting providers.
minMsgSamples All MNOs integer The minimum number of message samples required by the MNO for the desired use case.
reqSubscriberOptin All MNOs boolean If true, the MNO requires the subscriber to opt-into the campaign before the message can be sent. The opt-in mechanism can be a mobile or web opt-in.
reqSubscriberOptout All MNOs boolean If true, the MNO requires a campaign to support an opt-out mechanism through stop keywords such as STOP or QUIT. Upon receiving a STOP message from a subscriber, the campaign must immediately stop sending messages to the subscriber.
reqSubscriberHelp All MNOs boolean If true, the MNO requires the campaign to support an assistance mechanism through help key words such as HELP or INFO.
noEmbeddedLink All MNOs boolean If true, the MNO does not allow a call-to-action link/URL to be embedded in messages sent to the subscriber.
noEmbeddedPhone All MNOs boolean If true, the MNO forbids call-to-action phone numbers to be embedded in messages sent to the subscriber.
msgClass AT&T string Message class assigned to the campaign by AT&T. Please refer to the AT&T 10DLC guide for a complete list of available message classes and definitions.
tpm AT&T integer SMS message TPM (throughput per minute) assigned to the brand for the desired use case.
mmsTpm AT&T integer MMS message TPM (throughput per minute) assigned to the brand for the desired use case.
tpmScope AT&T string TPM restriction scope. Possible values include: CAMPAIGN or PHONE_NUMBER. If the scope is PHONE_NUMBER, then the TPM rate-limiting is imposed separately for each phone number provisioned to the campaign. A CAMPAIGN level scope indicates rate-limiting imposed for the entire campaign.
brandTier T-Mobile string Daily message volume assigned to the campaign based on brand tier or brand qualification. The daily volume restriction applies to brands across all campaigns and CSPs. Please contact your message service provider for updated T-Mobile terms. Possible values: LOW, LOWER_MID, UPPER_MID, TOP
brandDailyCap T-Mobile integer The number of messages allowed per day on the T-Mobile network. If the brandTier attribute is UNCAPPED, then this will be NULL.
Authorizations:
bearerAuth
Request Body schema: application/json
required

Campaign request to be submitted

string

Responses

Request samples

Content type
application/json
{
  • "brandId": "B123ABC",
  • "usecase": "2FA",
  • "subUsecases": [ ],
  • "resellerId": "R000000",
  • "description": "This campaign serves as a 2FA messenger so customers can further protect their accounts at sign in.",
  • "embeddedLink": false,
  • "embeddedPhone": false,
  • "termsAndConditions": true,
  • "numberPool": false,
  • "ageGated": false,
  • "directLending": false,
  • "subscriberOptin": true,
  • "subscriberOptout": true,
  • "subscriberHelp": true,
  • "sample1": "Your 2FA code is XXXXXX. If you did not initiate this authentication please see the security section on our website.",
  • "sample2": null,
  • "sample3": null,
  • "sample4": null,
  • "sample5": null,
  • "messageFlow": "Users opt in via a web form at https://www.mysite.com during the registration. Users must explicitly check a checkbox to opt in (default unchecked).",
  • "helpMessage": "You have accessed help for mysite. If you would like to stop receiving 2FA messages reply with STOP.",
  • "mnoIds": [
    ],
  • "referenceId": "twofactor",
  • "autoRenewal": true,
  • "tag": [ ],
  • "optinKeywords": "START,YES",
  • "optoutKeywords": "STOP",
  • "helpKeywords": "HELP",
  • "optinMessage": "Welcome to our company's 2FA messaging service. This service exists to help keep your account secure.",
  • "optoutMessage": "You have opted out of 2FA messages. You can always turn it back on using our portal.",
  • "privacyPolicyLink": null,
  • "termsAndConditionsLink": null,
}

Response samples

Content type
application/json
{
  • "campaignId": "C123456",
  • "mnoMetadata": {
    }
}

Check a brand’s qualification for all use cases

Determines if a brand is qualified to run a campaign for all use case types across participating MNOs. If the brand qualifies to run a campaign on one or more MNOs, the response will return any campaign restrictions (e.g., no embedded link s), process requirements (e.g., manual review by the MNO), pricing details (e.g., a surcharge), and any MNO-specific attributes (e.g., message class, which is unique to AT&T). If the brand is not qualified to run a particular use case on an MNO, the CSP should consider having the brand externally vetted in order to receive access. For example, if access to the political use case is necessary, the CSP can consider requesting a political vet on the brand. The response will contain the following properties:

Property Data Type Description
usecase string The name of the use case.
monthlyFee decimal The registration fee for the campaign, charged monthly. The campaign will auto-renew unless the renewal is canceled or the campaign is deactivated.
quarterlyFee decimal The registration fee for the campaign, charged once every three months. The campaign will auto-renew unless the renewal is canceled or the campaign is deactivated.
annualFee decimal The registration fee for the campaign, charged annually. The campaign will auto-renew unless the renewal is canceled or the campaign is deactivated.
minSubUsecase integer The minimum number of sub-use cases required when registering a campaign under the specified use case.
maxSubUsecase integer The maximum number of sub-use cases allowed when registering a campaign under the desired use case. If the value is 0, then no sub-use case is required.
mnoMetadata array Map of MNO metadata where key is the “networkId” of the MNO and value is the MNO’s metadata.
The MNO metadata property will contain the following attributes:
Property MNO Specific Data Type Description
mno All MNOs string Name of the MNO.
mnoSupport All MNOs boolean If false, the specified use case is not supported by the MNO.
mnoReview All MNOs boolean If true, the submitted campaign is subject to a manual MNO review process. Some MNOs provide campaign review statuses via TCR APIs.
qualify All MNOs boolean If false, the brand does not qualify for the desired use case on the MNO. The CSP should consider getting the brand vetted by one of TCR’s approved external vetting providers.
minMsgSamples All MNOs integer The minimum number of message samples required by the MNO for the desired use case.
reqSubscriberOptin All MNOs boolean If true, the MNO requires the subscriber to opt-into the campaign before the message can be sent. The opt-in mechanism can be a mobile or web opt-in.
reqSubscriberOptout All MNOs boolean If true, the MNO requires a campaign to support an opt-out mechanism through stop keywords such as STOP or QUIT. Upon receiving a STOP message from a subscriber, the campaign must immediately stop sending messages to the subscriber.
reqSubscriberHelp All MNOs boolean If true, the MNO requires the campaign to support an assistance mechanism through help key words such as HELP or INFO.
noEmbeddedLink All MNOs boolean If true, the MNO does not allow a call-to-action link/URL to be embedded in messages sent to the subscriber.
noEmbeddedPhone All MNOs boolean If true, the MNO forbids call-to-action phone numbers to be embedded in messages sent to the subscriber.
msgClass AT&T string Message class assigned to the campaign by AT&T. Please refer to the AT&T 10DLC guide for a complete list of available message classes and definitions.
tpm AT&T integer SMS message TPM (throughput per minute) assigned to the brand for the desired use case.
mmsTpm AT&T integer MMS message TPM (throughput per minute) assigned to the brand for the desired use case.
tpmScope AT&T string TPM restriction scope. Possible values include: CAMPAIGN or PHONE_NUMBER. If the scope is PHONE_NUMBER, then the TPM rate-limiting is imposed separately for each phone number provisioned to the campaign. A CAMPAIGN level scope indicates rate-limiting imposed for the entire campaign.
brandTier T-Mobile string Daily message volume assigned to the campaign based on brand tier or brand qualification. The daily volume restriction applies to brands across all campaigns and CSPs. Please contact your message service provider for updated T-Mobile terms. Possible values: LOW, LOWER_MID, UPPER_MID, TOP
brandDailyCap T-Mobile integer The number of messages allowed per day on the T-Mobile network. If the brandTier attribute is UNCAPPED, then this will be NULL.
Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Check a brand’s qualification for a specific use case

Determines if a brand is qualified to run a campaign for a specified use case across participating MNOs. If the brand qualifies to run a campaign on one or more MNOs, the response will return any campaign restrictions (e.g., no embedded links), process requirements (e.g., manual review by the MNO), pricing details (e.g., a surcharge), and any MNO-specific attributes (e.g., message class, which is unique to AT&T). If the brand is not qualified to run the use case on an MNO, the CSP should consider having the brand externally vetted in order to receive access. For example, if access to the political use case is necessary, the CSP can consider requesting a political vet on the brand. The response will contain the following properties:

Property Data Type Description
usecase string The name of the use case.
monthlyFee decimal The registration fee for the campaign, charged monthly. The campaign will auto-renew unless the renewal is canceled or the campaign is deactivated.
quarterlyFee decimal The registration fee for the campaign, charged once every three months. The campaign will auto-renew unless the renewal is canceled or the campaign is deactivated.
annualFee decimal The registration fee for the campaign, charged annually. The campaign will auto-renew unless the renewal is canceled or the campaign is deactivated.
minSubUsecase integer The minimum number of sub-use cases required when registering a campaign under the specified use case.
maxSubUsecase integer The maximum number of sub-use cases allowed when registering a campaign under the desired use case. If the value is 0, then no sub-use case is required.
mnoMetadata array Map of MNO metadata where key is the “networkId” of the MNO and value is the MNO’s metadata.
The MNO metadata property will contain the following attributes:
Property MNO Specific Data Type Description
mno All MNOs string Name of the MNO.
mnoSupport All MNOs boolean If false, the specified use case is not supported by the MNO.
mnoReview All MNOs boolean If true, the submitted campaign is subject to a manual MNO review process. Some MNOs provide campaign review statuses via TCR APIs.
qualify All MNOs boolean If false, the brand does not qualify for the desired use case on the MNO. The CSP should consider getting the brand vetted by one of TCR’s approved external vetting providers.
minMsgSamples All MNOs integer The minimum number of message samples required by the MNO for the desired use case.
reqSubscriberOptin All MNOs boolean If true, the MNO requires the subscriber to opt-into the campaign before the message can be sent. The opt-in mechanism can be a mobile or web opt-in.
reqSubscriberOptout All MNOs boolean If true, the MNO requires a campaign to support an opt-out mechanism through stop keywords such as STOP or QUIT. Upon receiving a STOP message from a subscriber, the campaign must immediately stop sending messages to the subscriber.
reqSubscriberHelp All MNOs boolean If true, the MNO requires the campaign to support an assistance mechanism through help key words such as HELP or INFO.
noEmbeddedLink All MNOs boolean If true, the MNO does not allow a call-to-action link/URL to be embedded in messages sent to the subscriber.
noEmbeddedPhone All MNOs boolean If true, the MNO forbids call-to-action phone numbers to be embedded in messages sent to the subscriber.
msgClass AT&T string Message class assigned to the campaign by AT&T. Please refer to the AT&T 10DLC guide for a complete list of available message classes and definitions.
tpm AT&T integer SMS message TPM (throughput per minute) assigned to the brand for the desired use case.
mmsTpm AT&T integer MMS message TPM (throughput per minute) assigned to the brand for the desired use case.
tpmScope AT&T string TPM restriction scope. Possible values include: CAMPAIGN or PHONE_NUMBER. If the scope is PHONE_NUMBER, then the TPM rate-limiting is imposed separately for each phone number provisioned to the campaign. A CAMPAIGN level scope indicates rate-limiting imposed for the entire campaign.
brandTier T-Mobile string Daily message volume assigned to the campaign based on brand tier or brand qualification. The daily volume restriction applies to brands across all campaigns and CSPs. Please contact your message service provider for updated T-Mobile terms. Possible values: LOW, LOWER_MID, UPPER_MID, TOP
brandDailyCap T-Mobile integer The number of messages allowed per day on the T-Mobile network. If the brandTier attribute is UNCAPPED, then this will be NULL.
Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

usecase
required
string

The campaign use case name (e.g., 2FA).

Responses

Response samples

Content type
application/json
{
  • "usecase": "string",
  • "monthlyFee": 0,
  • "quarterlyFee": 0,
  • "annualFee": 0,
  • "minSubUsecases": 0,
  • "maxSubUsecases": 0,
  • "greyoutFields": [
    ],
  • "mnoMetadata": {
    }
}

Get the campaign builder’s Terms and Conditions

Retrieve the Terms and Conditions text of the campaign builder. CSPs can use this endpoint to retrieve the latest version of TCR’s Terms and Conditions document to share with customers.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "subTerms": [
    ]
}

CNP Migration

Get information about a campaign’s CNP migration

Get the most recent information about a campaign’s migration to a new connectivity partner. The response will include information about the migration’s status, whether there was a cancellation, and the campaign migration’s creation and expiration date.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

Responses

Response samples

Content type
application/json
{
  • "campaignId": "string",
  • "status": "ACTIVE",
  • "cancellationReason": "string",
  • "expirationDate": "2019-08-24T14:15:22Z",
  • "createDate": "2019-08-24T14:15:22Z"
}

Cancel a CNP migration

Cancels a CNP migration for a given campaign. Only the party who initiated the CNP migration is allowed to cancel it.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

query Parameters
explanation
string [ 0 .. 2048 ] characters

A description of why the CNP migration was canceled.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Initiate a CNP migration on a campaign

Begins the migration of a campaign to a new upstream connectivity partner. Only the initiator of a CNP migration is allowed to cancel it.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

upstreamCnpId
required
string

Unique identifier of an upstream connectivity partner.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Enum Type

List all alternative business ID types

Returns a list of all alternative business identifier types available for brand registration such as DUNS, GIIN, or LEI. Alternative business identifiers help to further verify a brand’s identity.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • "NONE"
]

List all public companies that can be used as a brand in TCR

Returns a list of companies that can be used for PUBLIC_PROFIT entities during brand registration. If a company isn’t listed, please submit a support ticket for review to support@campaignregistry.com.

Submitting this request without any parameters will return a list of all public companies in the TCR system.

Authorizations:
bearerAuth
query Parameters
displayName
string [ 0 .. 100 ] characters

The display name of the company.

symbol
string

The public company's symbol on the exchange

exchange
string
Enum: "NONE" "NASDAQ" "NYSE" "AMEX" "AMX" "ASX" "B3" "BME" "BSE" "FRA" "ICEX" "JPX" "JSE" "KRX" "LON" "NSE" "OMX" "SEHK" "SGX" "SSE" "STO" "SWX" "SZSE" "TSX" "TWSE" "VSE" "XPAR" "XAMS" "XMIL" "XCSE" "XBRU" "XMAD" "XOSL" "XWAR" "XETR" "XSTU" "XBER" "XMUN" "XHAM" "XHAN" "XDUS" "XEUR" "OTHER"

Example: NASDAQ, NYSE.

country
string

Example: US. The country code of the desired country.

page
integer <int32>
Default: 1
recordsPerPage
integer <int32>
Default: 10

Responses

Response samples

Content type
application/json
{
  • "records": [
    ],
  • "page": 1,
  • "totalRecords": 1
}

List all brand asset appeal categories

Returns a list of all appeal categories available for brand assets.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List all brand appeal categories

Returns a list of all possible brand appeal categories. Specified as part of the brand appeal process, which is performed if the brand gets an UNVERIFIED identity status or is missing an optional attribute associated with their entity type. For example, a brand could perform a brand appeal if it registered as a GOVERNMENT entity but is missing the Government Entity flag in their brand details. A brand appeal resubmits the brand for identity verification and should include additional documentation that validates their claimed entity status.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List all brand identity statuses

Returns a list of all possible identity statuses for a brand. The identity status of a brand indicates whether its information has been verified by TCR or an external vetting partner. Options include:

  • SELF_DECLARED: Indicates that the brand’s identity is self-reported and not verified by TCR or any external vetting partner. This status is typically reserved for sole proprietorships.
  • UNVERIFIED: Indicates that the brand’s identity information has not been verified. This could be the result of incorrect or incomplete information submitted during brand registration or if the brand changed its information after initial registration. Brands with an UNVERIFIED identity status cannot create new campaigns and must undergo the verification process again, either by resubmitting their information or requesting a standard, enhanced, or political vet from an external partner.
  • VERIFIED: Indicates that the brand’s identity information has been verified.
  • VETTED_VERIFIED: Indicates that the brand’s identity has been successfully verified by a external vetting provider. A brand can acquire this status by either applying for a standard or enhanced vet or by importing a external vetting token. Having a VETTED_VERIFIED status may grant a brand access to additional campaign use cases and/or better terms on some MNO networks.
Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • "SELF_DECLARED"
]

List all brand relationship types

Returns a list of all possible relationship types a brand may have with a CSP. Specified during brand registration. These types include:

  • BASIC_ACCOUNT: Organization with no previous business history with the CSP.
  • SMALL_ACCOUNT: Organization with some business history with the CSP.
  • MEDIUM_ACCOUNT: Organization with a solid business history with the CSP and who is in good standing.
  • LARGE_ACCOUNT: Organization with a dedicated account manager with the CSP and who is highly trusted.
  • KEY_ACCOUNT: Organization with a dedicated account team with the CSP and who is of strategic value.
Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • "BASIC_ACCOUNT"
]

List all brand statuses

Returns a list of all possible statuses for a brand in the TCR system. A brand’s status is separate from its identity status or ability to register campaigns. Following registration, a brand is classified as ACTIVE, even if its identity status has not been verified. Options include:

  • ACTIVE: The brand has completed registration and is considered active in the TCR system.
  • DELETED: The brand was removed from the TCR system.
Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • "ACTIVE"
]

List all campaign status types

Returns a list of all possible status types for a campaign. These include:

  • ACTIVE: The campaign has been created and may be running.
  • EXPIRED: The campaign has run its course and is expired.
Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • "ACTIVE"
]

List connectivity partners

Returns a list of all possible upstream connectivity partners for a campaign.

Authorizations:
bearerAuth
query Parameters
soleProprietorEnabled
boolean
cnpMigrationSupported
boolean

Responses

Response samples

Content type
application/json
{
  • "S123ABC": "ABC"
}

List all countries

Returns a list of all countries defined in the TCR system and their corresponding country codes.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "PR": "Puerto Rico",
  • "PT": "Portugal"
}

List all DCAs in the TCR system

Returns a list of all Direct Connect Aggregators (DCAs) that participate in the TCR ecosystem. Query parameters can filter this list to only show DCAs whose profiles contain specific attributes.

Authorizations:
bearerAuth
query Parameters
soleProprietorEnabled
boolean

Indicates whether the Sole Proprietor feature is enabled on the DCA account profile.

cnpMigrationSupported
boolean

Indicates whether the CNP Migration feature is enabled on the DCA account profile.

Responses

Response samples

Content type
application/json
[
  • [
    ]
]

List all entity types

Returns a list of all possible business entity types for brands in the TCR system. Specified during brand registration. Specific entity types grant access to different use cases. For example, NON-PROFIT entities are granted access to the Political use case. Possible types include:

  • PRIVATE_PROFIT: A private, for-profit company.
  • PUBLIC_PROFIT: A publicly traded, for-profit company.
  • NON_PROFIT: A non-profit organization.
  • GOVERNMENT: A US-based organization that is closely aligned with a local, state, or government entity.
  • SOLE_PROPRIETOR: An unincorporated business with one owner.
Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • "PRIVATE_PROFIT"
]

List all external vetting appeal categories

Returns a list of all appeal categories for external vets (i.e., standard, enhanced, and political).

Authorizations:
bearerAuth
query Parameters
evpId
string

The external vetting partner ID.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List all external vetting partners

Returns a list of all external vetting partners that participate in the TCR ecosystem. Results include the vetting partner’s name and the types of brand vetting it provides. In some scenarios, submitting a brand for external vetting will provide access to more use cases or possibly better throughput terms with some MNOs.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List all MNOs in the TCR system

Returns a list of all Mobile Network Operators (MNOs) that participate in the TCR ecosystem. Their network ID, display name, and bit mask index (used for integration with the netnumber Services Registry) are returned.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get campaign nudge intent types

Returns a list of all nudge intent types in the TCR system. When performing a nudge on a campaign to an upstream CNP, an intent must be submitted along with the action. Nudge intents include:

  • APPEAL_REJECTION: This informs the upstream CNP that you are appealing a rejection of a campaign.
  • REVIEW: This requests the upstream CNP to review a campaign that has not yet been accepted.
Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • "APPEAL_REJECTION"
]

List all possible MNO campaign operation statuses

Returns a list of all valid MNO campaign operation statuses.

  • REVIEW: Campaign is in the process of being reviewed by the MNO.
  • REJECTED: Campaign has been rejected by the MNO. Feedback is provided when the campaign has been rejected.
  • REGISTERED: The campaign has been reviewed and is currently active on the MNO’s network.
  • SUSPENDED: The campaign has been suspended by the MNO due to a submitted complaint or violation of MNO policies. Feedback is provided when a campaign has been suspended.
Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • "REGISTERED"
]

List all possible optionalAttributes values for a brand

Returns a complete list of values that can appear in a brand’s optionalAttributes property. The optionalAttributes property is automatically populated by TCR based on the verification of a brand’s tax status, government affiliation, or other condition. For example, the attribute taxExemptStatus only appears on verified non-profit brands. The governmentEntity attribute is only assigned to brands who have been verified as a US-based organization that is closely affiliated with federal, state, or local governments.

Each attribute name is identified by an id, data type, and description. The following data types are supported:

  • INTEGER
  • DECIMAL
  • STRING (Max length 512 characters)
  • BOOLEAN
Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List all campaign sharing rejection categories

Returns a list of all rejection categories for use when rejecting a campaign in the CSP and DCA APIs.

Possible categories include:
  • BRAND_INCONSISTENCIES: Brands must provide accurate details, according to those required fields for that Brand type. Brand and campaign details must be consistent.
  • CALL_TO_ACTION: The CTA must ensure consumers understand how to opt-in and consent to receive messages, and it must clearly display program name, message frequency, potential charges, STOP keyword, and links to terms and privacy policies.
  • CAMPAIGN_DESCRIPTION_OR_ATTRIBUTES: Campaign descriptions and attributes must align with the declared use case. Clear and concise description of the intended purpose of the campaign for the end user.
  • DISALLOWED_CONTENT: Content related to gambling, drugs, hate speech, illegal activities, or high-risk services is strictly prohibited in campaigns.
  • MANDATORY_MESSAGE_TERMINOLOGY: Mandatory message terminology includes opt-in confirmation, opt-out confirmation, help response, and required disclosures.
  • PRIVACY_POLICY: A clear privacy policy must be provided to the consumer, explaining how personal data is collected and used. No external sharing for marketing purposes is allowed. The privacy policy should match the brand information.
  • SAMPLE_MESSAGE: Sample messages must align with the declared use case and must not include disallowed content or public URL shorteners.
  • TERMS_AND_CONDITIONS: Clear terms and conditions must be included outlining message frequency, message campaign description, fees, opt-in/out instructions, customer care contact info and a reference to the privacy policy. T&C's must also be consistent with the brand information.
  • OTHER: For use when a campaign is rejected for reasons that do not fit within the other rejection categories.
Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • "BRAND_INCONSISTENCIES"
]

List all stock exchanges defined in TCR

Returns a list of all stock exchanges defined in the TCR system.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • "NONE"
]

List all MNO brand suspension rule categories

Returns a list of all brand suspension rule categories that explain why a brand was suspended. Possible categories include:

  • AFFILIATE_MARKETING: Messages appear to share opt-ins to affiliate companies.
  • CAMPAIGN_TO_TRAFFIC_MISMATCH: In-market traffic does not match with the registered campaign.
  • CONTROLLED_SUBSTANCE: Messages appear to pertain to controlled substances.
  • EXCESSIVE_COMPLAINTS: Unacceptable volumes of consumer complaints.
  • FRAUDULENT_MESSAGES: Messages appear related to counterfeit/fraudulent goods or activities.
  • ILLEGAL_SWEEPSTAKES: Messages appear related to sweepstakes that do not follow required laws.
  • ILLICIT_CONTENT: Messages appear related to illegal activity.
  • LACK_OF_AGE_GATE: No age gate mechanism in place for messaging campaigns that require it.
  • PHISHING_MESSAGES: Messages appear designed to gain access to information through deceptive means.
  • PROMOTIONAL_GAMBLING: Messages appear related to the act of gambling or promoting gambling.
  • SPAM: Any kind of unwanted or unsolicited messaging.
  • OTHER: A free-form text field that will include feedback that doesn’t fall into one of the other categories.
Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • "CAMPAIGN_TO_TRAFFIC_MISMATCH"
]

List all use case types

Returns a list of all possible use case types in the TCR system. Use cases are grouped into two classifications: STANDARD and SPECIAL. Standard use cases are typically available to a brand following a successful identity status verification. Special use cases may require additional brand vetting through a standard, enhanced, or political vet and/or MNO review.

A brand may not qualify for all standard use cases. CSPs may require additional vetting before a brand is allowed to access all standard use cases.

Some use cases require an additional declaration of a sub-use case. If the listed use case's minSubUsecase attribute is greater than 0, then an additional sub-use case declaration is required during campaign submission. The number of sub-use cases submitted with a campaign must fall between the minSubUsecase and maxSubUsecase values.

Query parameters can filter this list to only show use cases with a valid sub-use case.

Authorizations:
bearerAuth
query Parameters
validSubUsecase
boolean

Filters the results to either include or exclude use cases that allow sub-use cases. Leave empty to return all use cases.

Responses

Response samples

Content type
application/json
{
  • "2FA": {
    },
  • "ACCOUNT_NOTIFICATION": {
    }
}

List all US states and territories

Returns a list of all US states and territories defined in the TCR ecosystem. Some territories, such as American Samoa, are specified as states.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "DE": "Delaware",
  • "HI": "Hawaii"
}

List all vertical types defined in the TCR system

Returns a list of all possible verticals, or business segments, that can be assigned to a brand during registration.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "PROFESSIONAL": {
    },
  • "REAL_ESTATE": {
    }
}

List all vetting classes

When requesting an external brand vet, CSPs must specify a vetting class such as POLITICAL or ENHANCED. This class determines the scope and purpose of the vetting, which can unlock better carrier terms or access to additional use cases.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List all vetting feedback codes

Returns a list of all possible vetting feedback codes that can result from a failed identity vet. The codes contain a message attribute that provides a short description on the cause of the failed vet.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • [
    ]
]

List all vetting status types

Returns a list of all possible vetting status types for a brand that has been submitted for external vetting. Possible types include:

  • PENDING: A temporary status that indicates the vetting request has not yet been reviewed by the vetting partner.
  • UNSCORE: A temporary status that indicates the vetting request is currently under review by the vetting provider.
  • ACTIVE: Indicates that the vetting request has been successfully processed.
  • FAILED: Indicates that the vetting provider could not process the vetting request. This could be due to incorrect information submitted about the brand which leads to the vetting provider unable to verify it.
  • EXPIRED: Indicates that the vet performed by the vetting provider has expired. This could be due to an expired vetting date or if a brand’s information is changed after the vet is complete. If this happens, the brand will need to reapply for external vetting. Expired vets can prevent a brand from accessing particular use cases or special throughput terms with some MNOs. While political campaigns are deactivated following an expired political vet, other existing active campaigns are not affected by expired standard or enhanced vets.
Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • "PENDING"
]

Error Code

List all error codes

Returns a list of all error codes that are defined in the TCR system. Error codes contain a short description to help with troubleshooting.

Returns a map data structure in key-value pairs in an error code ==> description format.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "202": "User not authenticated",
  • "205": "Unauthorized operation"
}

MNO Operation

Delete an excluded MNO from a campaign

Removes an MNO that was previously excluded from the campaign by primary or secondary DCAs. This allows the CAMPAIGN_DCA_COMPLETE event to be sent when all other associated DCAs accept the campaign.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

mnoId
required
integer <int64>

The unique ID of the MNO to be removed.

Request Body schema: application/json
required

Explanation for removing MNO from excludedMnoIdList

explanation
string

Responses

Request samples

Content type
application/json
{
  • "explanation": "string"
}

Response samples

Content type
application/json
[
  • {
    }
]

Mock CV Token

Generate a mock Campaign Verify token for testing environments

This endpoint allows CSPs to generate mock Campaign Verify (CV) tokens for use in TCR’s QA and Staging environments. These tokens cannot be used in the live Production environment. The following properties are supported in the request body:

  • locale: Valid entries include federal, state, local, and tribal.
  • validUntil: Expiration date associated with the token in the format YYYY-MM-DD.
Authorizations:
bearerAuth
path Parameters
brandId
required
string

The unique ID that identifies the brand.

Request Body schema: application/x-www-form-urlencoded
locale
string
Enum: "federal" "state" "local" "tribal"
validUntil
string20\d\d\-[0-1]{1}[0-9]{1}\-[0-3]{1}[0-9]{1}

Token valid until in yyyy-MM-dd format

Responses

Partner Campaign

Deprecated. Search campaigns that have been shared by the CSP to upstream partners Deprecated

This endpoint will be removed in a future release. Use GET /partnerCampaign/sharedByMe/search as a replacement.

Allows the CSP to search all campaigns that have been shared by them to upstream partners. The upstreamCnpId filter can limit campaigns by a particular upstream partner. This endpoint supports paginated results.

Authorizations:
bearerAuth
query Parameters
upstreamCnpId
string

Unique identifier of the upstream partner to whom the CSP has shared a campaign.

brandId
string

The unique ID that identifies the brand.

status
string
Enum: "ACTIVE" "EXPIRED"

Filters by the campaign status.

sharingStatus
Array of strings unique
Items Enum: "PENDING" "ACCEPTED" "DECLINED"

Filter by the campaign’s sharing status with the CSP.

startDate
string20\d\d-[0-1]{1}[0-9]{1}-[0-3]{1}[0-9]{1}

The date the campaign was shared with the CSP in YYYY-MM-DD format.

endDate
string20\d\d-[0-1]{1}[0-9]{1}-[0-3]{1}[0-9]{1}

The date the campaign was shared with the CSP in YYYY-MM-DD format.

cnpMigration
boolean
Default: false

Indicates whether the campaign is in the process of CNP migration.

page
integer <int32> >= 1
Default: 1

The requested page of the result.

recordsPerPage
integer <int32> [ 1 .. 500 ]
Default: 10

The number of records to return per page in the result.

Responses

Response samples

Content type
application/json
{
  • "records": [
    ],
  • "page": 1,
  • "totalRecords": 1
}

Search campaigns that have been shared by the CSP to upstream partners

Allows the CSP to search all campaigns that have been shared by them to upstream partners. The upstreamCnpId filter can limit campaigns by a particular upstream partner. This endpoint supports paginated results up to a maximum of 10,000 records.

Authorizations:
bearerAuth
query Parameters
upstreamCnpId
string

Unique identifier of the upstream partner to whom the CSP has shared a campaign.

brandId
string

The unique ID that identifies the brand.

status
string
Enum: "ACTIVE" "EXPIRED"

Filters by the campaign status.

sharingStatus
Array of strings unique
Items Enum: "PENDING" "ACCEPTED" "DECLINED"

Filter by the campaign’s sharing status with the CSP.

startDate
string20\d\d-[0-1]{1}[0-9]{1}-[0-3]{1}[0-9]{1}

The date the campaign was shared with the CSP in YYYY-MM-DD format.

endDate
string20\d\d-[0-1]{1}[0-9]{1}-[0-3]{1}[0-9]{1}

The date the campaign was shared with the CSP in YYYY-MM-DD format.

cnpMigration
boolean
Default: false

Indicates whether the campaign is in the process of CNP migration.

page
integer <int32> >= 1
Default: 1

The requested page of the result.

recordsPerPage
integer <int32> [ 1 .. 50 ]
Default: 10

The number of records to return per page in the result. Max size is 50.

Responses

Response samples

Content type
application/json
{
  • "records": [
    ],
  • "page": 0,
  • "totalRecords": 0
}

Deprecated. Search campaigns that have been shared with the CSP by downstream partners Deprecated

This endpoint will be removed in a future release. Use GET /partnerCampaign/sharedWithMe/search as a replacement

.

Allows the CSP to search all campaigns that have been shared with them by downstream partners. The downstreamCnpId filter can limit campaigns by a particular downstream partner. This endpoint supports paginated results.

Authorizations:
bearerAuth
query Parameters
downstreamCnpId
string

Unique identifier of the downstream partner who has shared a campaign with the CSP.

brandId
string

The unique ID that identifies the brand.

status
string
Enum: "ACTIVE" "EXPIRED"

Filters by the campaign status.

sharingStatus
Array of strings unique
Items Enum: "PENDING" "ACCEPTED" "DECLINED"

Filter by the campaign’s sharing status with the CSP.

startDate
string20\d\d-[0-1]{1}[0-9]{1}-[0-3]{1}[0-9]{1}

The starting date a campaign was shared with the CSP in YYYY-MM-DD format.

endDate
string20\d\d-[0-1]{1}[0-9]{1}-[0-3]{1}[0-9]{1}

The ending date a campaign was shared with the CSP in YYYY-MM-DD format.

cnpMigration
boolean
Default: false

Indicates whether the campaign is in the process of CNP migration.

page
integer <int32> >= 1
Default: 1

The requested page of the result.

recordsPerPage
integer <int32> [ 1 .. 500 ]
Default: 10

The number of records to return per page in the result.

Responses

Response samples

Content type
application/json
{
  • "records": [
    ],
  • "page": 1,
  • "totalRecords": 1
}

Search campaigns that have been shared with the CSP by downstream partners

Allows the CSP to search all campaigns that have been shared with them by downstream partners. The downstreamCnpId filter can limit campaigns by a particular downstream partner. This endpoint supports paginated results up to a maximum of 10,000 records.

Authorizations:
bearerAuth
query Parameters
downstreamCnpId
string

Unique identifier of the downstream partner who has shared a campaign with the CSP.

brandId
string

The unique ID that identifies the brand.

status
string
Enum: "ACTIVE" "EXPIRED"

Filters by the campaign status.

sharingStatus
Array of strings unique
Items Enum: "PENDING" "ACCEPTED" "DECLINED"

Filter by the campaign’s sharing status with the CSP.

sharingStartDate
string20\d\d-[0-1]{1}[0-9]{1}-[0-3]{1}[0-9]{1}

The starting date a campaign was shared with the CSP in YYYY-MM-DD format.

sharingEndDate
string20\d\d-[0-1]{1}[0-9]{1}-[0-3]{1}[0-9]{1}

The ending date a campaign was shared with the CSP in YYYY-MM-DD format.

cnpMigration
boolean
Default: false

Indicates whether the campaign is in the process of CNP migration.

page
integer <int32> >= 1
Default: 1

The requested page of the result.

recordsPerPage
integer <int32> [ 1 .. 50 ]
Default: 10

The number of records to return per page in the result. Max size is 50.

Responses

Response samples

Content type
application/json
{
  • "records": [
    ],
  • "page": 0,
  • "totalRecords": 0
}

Get the shared partner campaign’s details

Get details on a campaign shared with the CSP by a downstream partner.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

query Parameters
cnpMigration
boolean
Default: false

Indicates whether the campaign is in the process of CNP migration.

Responses

Response samples

Content type
application/json
{
  • "campaignId": "string",
  • "status": "ACTIVE",
  • "createDate": "2019-08-24T14:15:22Z",
  • "brandId": "string",
  • "usecase": "string",
  • "subUsecases": [
    ],
  • "description": "stringstringstringstringstringstringstri",
  • "subscriberOptin": true,
  • "subscriberOptout": true,
  • "subscriberHelp": true,
  • "directLending": true,
  • "numberPool": true,
  • "embeddedLink": true,
  • "embeddedPhone": true,
  • "termsAndConditions": true,
  • "ageGated": true,
  • "sample1": "stringstringstringst",
  • "sample2": "stringstringstringst",
  • "sample3": "stringstringstringst",
  • "sample4": "stringstringstringst",
  • "sample5": "stringstringstringst",
  • "messageFlow": "stringstringstringstringstringstringstri",
  • "helpMessage": "stringstringstringst",
  • "optinKeywords": "START,YES",
  • "optoutKeywords": "STOP",
  • "helpKeywords": "HELP",
  • "optinMessage": "stringstringstringst",
  • "optoutMessage": "stringstringstringst",
  • "privacyPolicyLink": "string",
  • "termsAndConditionsLink": "string",
  • "embeddedLinkSample": "string"
}

Get MNO metadata from a shared campaign

Returns an array with metadata on each MNO where the campaign has been submitted. The response contains information on the network terms and requirements for the campaign.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

Responses

Response samples

Content type
application/json
{
  • "10017": {
    },
  • "10035": {
    }
}

Get a shared campaign’s operational status from each MNO

Returns an array containing the status of the shared campaign for each MNO where the campaign has been submitted. MNOs are identified by their network ID. Possible values include: REGISTERED, REVIEW, REJECTED, and SUSPENDED. Note: MNOs are encouraged, but not required, to report a campaign’s operational status to TCR.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

Responses

Response samples

Content type
application/json
{
  • "10017": "REGISTERED",
  • "10035": "REVIEW"
}

Get the sharing status of a campaign shared to a CNP

Retrieves the shared identity and status of a partner campaign from both downstream and upstream CNPs in the connectivity chain. A successful response will show downstream partners in the sharedWithMe attribute and upstream partners in the sharedByMe attribute.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

query Parameters
cnpMigration
boolean
Default: false

Indicates whether the campaign is in the process of CNP migration.

Responses

Response samples

Content type
application/json
{
  • "sharedWithMe": {
    },
  • "sharedByMe": {
    }
}

Decline a campaign sharing request from a partner

Allows a CNP to decline a campaign sharing request sent from a partner downstream in the connectivity chain. Declining a sharing request will permanently remove it, although the CNP is able to reshare it again.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

query Parameters
explanation
required
string [ 0 .. 2048 ] characters

Explanation for declining campaign. Maximum length 2048 chars.

rejectionCategory
required
Array of strings unique

Rejection categories for declining campaign.

Responses

Response samples

Content type
application/json
{
  • "downstreamCnpId": "string",
  • "upstreamCnpId": "string",
  • "sharingStatus": "PENDING",
  • "rejectionCategory": [
    ],
  • "explanation": "string",
  • "sharedDate": "2019-08-24T14:15:22Z",
  • "statusDate": "2019-08-24T14:15:22Z",
  • "cnpMigration": true
}

Share a campaign to an upstream connectivity partner

Lets a CSP share a campaign with an upstream connectivity partner identified in the upstreamCnpId parameter. The upstream partner will be given a read only view of the campaign’s properties to facilitate MNO onboarding. If the upstream connectivity partner is a CSP, they will be obliged to share the campaign with their own upstream connectivity partner until the campaign reaches a DCA.

Note: Once a campaign is shared to an upstream connectivity partner, the request cannot be rescinded or modified unless the upstream CNP declines the sharing request.

Authorizations:
bearerAuth
path Parameters
campaignId
required
string

The unique ID that identifies the campaign.

upstreamCnpId
required
string

Unique identifier of the upstream partner to whom the CSP is sharing the campaign.

Responses

Response samples

Content type
application/json
{
  • "downstreamCnpId": "string",
  • "upstreamCnpId": "string",
  • "sharingStatus": "PENDING",
  • "rejectionCategory": [
    ],
  • "explanation": "string",
  • "sharedDate": "2019-08-24T14:15:22Z",
  • "statusDate": "2019-08-24T14:15:22Z",
  • "cnpMigration": true
}

Platform

Return the version of the API

Returns the currently running version of the API.

Authorizations:
bearerAuth

Responses

Platform Free Trial

Retrieve the PFT brand associated with the account

Gets the brand ID to be used exclusively for registering Platform Free Trial (PFT) use case campaigns (identified by TRIAL in the campaign’s usecase property). PFT access can only be granted on an account by TCR support, who also creates the PFT brand for the CSP. Note: If this endpoint returns error code 502, then it means the PFT brand has not been provisioned.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "entityType": "PRIVATE_PROFIT",
  • "cspId": "string",
  • "brandId": "string",
  • "status": "ACTIVE",
  • "firstName": "John",
  • "lastName": "Doe",
  • "displayName": "ABC Mobile",
  • "companyName": "ABC Inc.",
  • "ein": "111111111",
  • "einIssuingCountry": "US",
  • "phone": "+12024567890",
  • "street": "123 6th Ave",
  • "city": "New York",
  • "state": "NY",
  • "postalCode": "10001",
  • "country": "US",
  • "email": "string",
  • "stockSymbol": "ABC",
  • "stockExchange": "NASDAQ",
  • "ipAddress": "string",
  • "brandRelationship": "BASIC_ACCOUNT",
  • "vertical": "string",
  • "altBusinessId": "string",
  • "altBusinessIdType": "NONE",
  • "universalEin": "string",
  • "referenceId": "string",
  • "optionalAttributes": {
    },
  • "mock": true,
  • "identityStatus": "SELF_DECLARED",
  • "createDate": "2019-08-24T14:15:22Z",
  • "mobilePhone": "+12024567890",
  • "mobilePhoneVerifiedDate": "2019-08-24T14:15:22Z",
  • "businessContactTitle": "string",
  • "businessContactFirstName": "string",
  • "businessContactLastName": "string",
  • "businessContactEmail": "string",
  • "businessContactEmailVerifiedDate": "2019-08-24T14:15:22Z"
}

Reseller

Search for a reseller

Search for an existing reseller by an optional companyName parameter. Partial spelling is supported. Not including a companyName parameter will return a list of all resellers the CSP has created.

Authorizations:
bearerAuth
query Parameters
companyName
string

Business name or DBA of the reseller. Partial spelling is supported.

page
integer <int32> >= 1
Default: 1

The page of the results to return.

recordsPerPage
integer <int32> [ 1 .. 500 ]
Default: 10

Number of records to return per page.

Responses

Response samples

Content type
application/json
{
  • "records": [
    ],
  • "page": 0,
  • "totalRecords": 0
}

Create a new reseller

Creates a new reseller account that can optionally be used when registering campaigns. A reseller is a businesses (typically another messaging platform) that sits between the brand and the CSP.
The request body must include the companyName, phone, and email properties.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Reseller to be created

companyName
required
string [ 1 .. 100 ] characters

Display or company name of the reseller.

phone
required
string [ 1 .. 20 ] characters

Valid phone number in e.164 international format.

email
required
string [ 1 .. 100 ] characters

Valid email address of reseller contact.

Responses

Request samples

Content type
application/json
{
  • "companyName": "Microsoft",
  • "phone": "+18348365467",
  • "email": "john.doe@microsoft.com"
}

Response samples

Content type
application/json
{
  • "resellerId": "string",
  • "cspId": "string",
  • "companyName": "Microsoft",
  • "phone": "+18348365467",
  • "email": "john.doe@microsoft.com"
}

Get details on a specific reseller

Retrieve a reseller record by a unique ID.

Authorizations:
bearerAuth
path Parameters
resellerId
required
string

The unique ID that identifies the reseller.

Responses

Response samples

Content type
application/json
{
  • "resellerId": "string",
  • "cspId": "string",
  • "companyName": "Microsoft",
  • "phone": "+18348365467",
  • "email": "john.doe@microsoft.com"
}

Update reseller details

Update the properties in a specified reseller record.

Authorizations:
bearerAuth
path Parameters
resellerId
required
string

Alphanumeric identifier (prefixed with letter 'R') returned from reseller creation operation.

Request Body schema: application/json
required

The unique ID that identifies the reseller.

companyName
required
string <= 100 characters

Display or company name of the reseller.

phone
required
string <= 20 characters

Valid phone number in e.164 international format.

email
required
string <= 100 characters

Valid email address of reseller contact.

Responses

Request samples

Content type
application/json
{
  • "companyName": "Microsoft",
  • "phone": "+18348365467",
  • "email": "john.doe@microsoft.com"
}

Response samples

Content type
application/json
{
  • "resellerId": "R123ABC",
  • "cspId": "S123ABC",
  • "companyName": "Acme",
  • "phone": "+15555555555",
  • "email": "john.doe@acme.com"
}

Delete a reseller

Deletes a reseller record by a specified ID. Resellers cannot be deleted if they are associated with one or more campaigns.

Authorizations:
bearerAuth
path Parameters
resellerId
required
string

The unique ID that identifies the reseller.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Searchable Keyword Tag

Retrieve a list of tags associated with the account

Gets a list of tags created under the current CSP account. Returns a paginated list of tags that match the supplied filter criteria. Not specifying any parameters will return all tags.

Authorizations:
bearerAuth
query Parameters
name
string

The tag name.

recordId
string

The record ID. For brands, this is the brandId. For campaigns, it is the campaignId.

recordType
string
Enum: "BRAND" "CAMPAIGN"

The record type associated with the tag.

page
integer <int32> >= 1
Default: 1

The requested page of the result.

recordsPerPage
integer <int32> [ 1 .. 500 ]
Default: 10

The number of records to return per page in the result. Max size is 500

Responses

Response samples

Content type
application/json
{
  • "records": [
    ],
  • "page": 1,
  • "totalRecords": 5
}

Assign a tag to a brand or campaign

Lets a CSP assign a tag to a given brand or campaign for organization purposes. A maximum of 10 tags are allowed on a brand registered by the CSP. Tag names can be between 1 and 50 characters. While tag names supports UTF-8, punctuation ( ^!"#$%&'()*+,-./:;<=>?@[]^_`{|}~ ) and space characters are not allowed. All tags are stored as lowercase.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Tagging object

string

Responses

Request samples

Content type
application/json
{
  • "name": "sampletag",
  • "recordType": "BRAND",
  • "recordId": "B123ABC"
}

Response samples

Content type
application/json
{
  • "name": "sampletag",
  • "recordType": "BRAND",
  • "recordId": "B123ABC"
}

Delete a tag assigned to a brand or campaign

Deletes an existing tag that has been assigned to a brand or campaign. Note: Make sure all path parameters are properly URL encoded.

Authorizations:
bearerAuth
path Parameters
name
required
string

The tag name.

recordType
required
string
Enum: "BRAND" "CAMPAIGN"

The record type associated with the tag.

recordId
required
string

The record ID. For brands, this is the brandId. For campaigns, it is the campaignId.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Settings

Gets settings from the profile of the current account

Retrieves available settings from the profile of the current account. These include:

  • cspId: The unique ID that identifies the CSP or CNP in the TCR system.
  • escalateEmail: Email used for contract, business communications, and direct emails from TCR Support.
  • email: Email used for receiving system events.
  • techEmail: Not currently in use.
  • financeEmail: Email used for invoicing and finance communications.
  • platformFreeTrialEnabled: Indicates whether the Platform Free Trial feature has been enabled on the account.
  • soleProprietorEnabled: Indicates that the account can create Sole Proprietor brands. CNPs and DCAs must also have this setting enabled in order to receive shared Sole Proprietor campaigns.
  • ucaasEnabled: Indicates whether the UCaaS feature has been enabled on the account. This provides access to the UCaaS use cases.
  • publicSafetyEnabled: Indicates whether the Public Safety feature is enabled. This is a restricted use case only available to select accounts.
  • dpaSigned: Indicates whether a DPA agreement has been signed with the CSP.
Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "cspId": "string",
  • "escalateEmail": "string",
  • "email": "string",
  • "techEmail": "string",
  • "financeEmail": "string",
  • "platformFreeTrialEnabled": true,
  • "soleProprietorEnabled": true,
  • "ucaasEnabled": true,
  • "publicSafetyEnabled": true,
  • "dpaSigned": true
}

Update the settings on the current account

Updates settings on the profile of the current account. These include:

  • escalateEmail: Email used for contract and business communications and direct emails from TCR Support.
  • email: Email used for system event notifications
  • techEmail: Not currently in use.
  • financeEmail: Email used for invoicing and finance communications.
Note: Some settings shown in the profile can only be updated by TCR support.
Authorizations:
bearerAuth
Request Body schema: application/json
required

Csp properties to be updated

string

Responses

Request samples

Content type
application/json
{
  • "escalateEmail": "support@campaignregistry.com",
  • "email": "support@campaignregistry.com",
  • "techEmail": "support@campaignregistry.com",
  • "financeEmail": "support@campaignregistry.com"
}

Response samples

Content type
application/json
{
  • "migrationSupported": true,
  • "migrationAutoComplete": true
}

Get the current account’s CNP migration settings

CNP migration allows CSPs and CNPs to switch connectivity partners for a large number of campaigns with minimal service disruption. This endpoint returns information on the current account’s CNP migration settings. The following properties are currently available:

  • migrationSupported: Indicates whether the current account has the CNP migration feature enabled. This property must be set to true in order to initiate or accept/decline CNP migrations on campaigns.
  • migrationAutoComplete: Enables automatic acceptance of campaign sharing requests by this CSP or CNP if they are part of both the existing and provisional connectivity chains.
For more information, read the CNP Migration Tool documentation.
Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "migrationSupported": true,
  • "migrationAutoComplete": true
}

Updates the current account’s CNP migration settings

CNP migration allows CSPs and CNPs to switch connectivity partners for a large number of campaigns with minimal service disruption. This endpoint updates the current account’s CNP migration settings. The following properties are currently available:

  • migrationSupported: This property must be set to true in order to initiate CNP migrations on campaigns.
  • migrationAutoComplete: Enables automatic acceptance of campaign sharing requests by this CSP or CNP if they are part of both the existing and provisional connectivity chains.
For more information, read the CNP Migration Tool documentation.
Authorizations:
bearerAuth
Request Body schema: application/json
required

CNP migration settings to be updated.

migrationSupported
boolean
migrationAutoComplete
boolean

Responses

Request samples

Content type
application/json
{
  • "migrationSupported": true,
  • "migrationAutoComplete": true
}

Response samples

Content type
application/json
{
  • "migrationSupported": true,
  • "migrationAutoComplete": true
}

Webhook

Gets a list of all event categories

All TCR notification events are associated with a category (e.g., CAMPAIGN). By subscribing to a webhook event category on an endpoint, you will automatically receive all notifications that are associated with that category.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • "VETTING"
]

Get a list of all event types

Returns a list of all possible event types, including a short description and the category associated with the event.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List all webhook subscriptions

Returns a list of all registered webhook subscriptions.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[]

Subscribe to event notifications

Subscribe to an API webhook to receive event notifications sent to the DCA. You must specify an event category in the request body along with the endpoint that will receive the events. All events associated with that category will be delivered to the endpoint. Only one category is allowed per request.
Note: Make sure your network policy allows HTTP POST methods to be received from TCR.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Refer to the schema for details on the webhookSubscription object.

eventCategory
required
string <= 20 characters
Enum: "BRAND" "CSP" "CAMPAIGN" "INCIDENCE" "VETTING"

Use /webhook/eventCategory to retrieve events available

webhookEndpoint
required
string [ 1 .. 255 ] characters

Webhook endpoint to which the events subscribed will be notified

Responses

Request samples

Content type
application/json
{
  • "eventCategory": "BRAND",
  • "webhookEndpoint": "string"
}

Response samples

Content type
application/json
{
  • "eventCategory": "BRAND",
  • "webhookEndpoint": "string"
}

Send a mock webhook to your endpoint

Sends a mock webhook event to a specified subscriber endpoint. Before using this endpoint, you must first subscribe to events from an event category using the PUT /webhook/subscription operation.
Note: Make sure your network policy allows HTTP POST methods to be received from TCR.

Authorizations:
bearerAuth
path Parameters
eventType
required
string

Enter the specific webhook eventType to send to the endpoint (e.g., CAMPAIGN_SHARE_ADD).

Responses

Response samples

Content type
application/json
{}

Unsubscribe from event notifications

Removes a previous subscription to event notifications. You must specify an event category as a parameter. All events associated with that category will no longer be sent to the subscription endpoint. Only one event category can be unsubscribed per request.

Authorizations:
bearerAuth
path Parameters
eventCategory
required
string
Enum: "API_ACCOUNT" "BRAND" "CSP" "CAMPAIGN" "INCIDENCE" "DCA" "CONNECTION" "TRAFFIC" "ROUTING" "VETTING" "RESELLER" "ISSUE" "SUSPENSION_RULE" "VENDOR" "OTHER"

Responses

Response samples

Content type
application/json
[
  • {
    }
]