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.
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.
| attachmentId required | string The unique ID of the attached file. |
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.
| attachmentId required | string The unique ID of the attached file. |
[- {
- "code": 501,
- "description": "Invalid parameter",
- "fields": [
- "campaignId"
]
}
]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.
| 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. |
{- "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": {
- "property1": { },
- "property2": { }
}, - "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 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:
| brandId required | string The unique ID that identifies the brand. |
{- "brandId": "string",
- "category": [
- {
- "id": "string",
- "displayName": "string",
- "description": "string",
- "fields": [
- "string"
], - "errors": [
- {
- "code": "string",
- "message": "string"
}
]
}
]
}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:
entityType property should be specified as
PRIVATE_PROFIT. Only US-based organizations can use the GOVERNMENT entity type.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.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.| Property Name | Description | Entity Requirements |
|---|---|---|
| displayName | Brand/Marketing/DBA name of the business. Max length: 255 |
|
| companyName | The legal name of the business. Max length: 255 |
|
| ein | Tax ID of the business. Max length: 21 |
|
| einIssuingCountry | Two-letter ISO-2 country code of Tax ID issuing country. Examples: US, CA. Defaults to US. Length: 2 |
|
| altBusinessId | Alternative Business Identifier. A valid identifier that corresponds to the altBusinessIdType. Max length: 50 |
|
| altBusinessIdType | Alternative Business Identifier Type. Examples: DUNS, LEI, GIIN. Enumerated values |
|
| firstName | First name of business contact. Max length: 100 |
|
| lastName | Last name of business contact. Max length: 100 |
|
| phone | Support contact telephone number in E.164 format. Example: +12023339999. Max length: 20 |
|
| mobilePhone | Valid wireless telephone in E.164 format. Example: +12023339999. Max length: 20 |
|
| street | House number and street name. Example: 1000 Sunset Hill Road. Max length: 255 |
|
| city | City Name. Max length: 100 |
|
| state | State or province. For addresses in the United States, please use the two-character state code. Example: CA for California. Max length 20 |
|
| postalCode | Zipcode or postal code. Example: 21012 Max length: 10 |
|
| country | Two-letter ISO-2 country code. Examples: US, CA. Length: 2 |
|
| Email address of support contact. Max length: 100 |
|
|
| stockSymbol | Stock symbol of the PUBLIC_PROFIT brand. Max length: 10 |
|
| stockExchange | The stock exchange where the PUBLIC_PROFIT brand is registered. Enumerated values |
|
| website | The website/online URL address of the brand. Max length: 255 |
|
| brandRelationship | The brand relationship level to the CSP. Enumerated values |
|
| vertical | The industry segment where the brand operates. Enumerated values |
|
| 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 |
|
| tag | Tags that can be set on the brand. Please refer to the Searchable Keyword Tag heading. |
|
| 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. |
|
| businessContactEmail | Email of the business contact for the brand. Max length: 255 |
|
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. |
{- "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"
}{- "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": {
- "property1": { },
- "property2": { }
}, - "mock": true,
- "identityStatus": "SELF_DECLARED",
- "createDate": "2019-08-24T14:15:22Z",
- "evpVettingScore": 0,
- "evpVettingFeedback": [
- "string"
], - "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"
}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:
| referenceId required | string A unique reference ID that begins with OTP. |
{- "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"
}Get an existing brand record from TCR by specifying the brand’s unique identifier.
| brandId required | string The unique ID that identifies the brand. |
{- "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": {
- "property1": { },
- "property2": { }
}, - "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"
}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:
| 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 |
| brandId required | string The unique ID that identifies the brand. |
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. |
{- "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"
}{- "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": {
- "property1": { },
- "property2": { }
}, - "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"
}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.
| brandId required | string The unique ID that identifies the brand. |
[- {
- "code": 501,
- "description": "Invalid parameter",
- "fields": [
- "campaignId"
]
}
]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.
| brandId required | string The unique ID that identifies the brand. |
| vettingClass | string The vetting class for resending 2FA Email. Example: RCS, AUTHPLUS |
[- {
- "code": 501,
- "description": "Invalid parameter",
- "fields": [
- "campaignId"
]
}
]Returns a list of all identity status appeals associated with a brand ID. Results can be limited by appeal status.
| brandId required | string The unique ID that identifies the brand. |
| appealStatus | Array of strings Items Enum: "PENDING" "COMPLETE" Example: PENDING. The status associated with the appeal. |
[- {
- "brandId": "string",
- "appealStatus": "PENDING",
- "categoryList": [
- "string"
], - "attachmentUuidList": [
- "string"
], - "explanation": "string",
- "appealStatusUpdateDate": "2019-08-24T14:15:22Z",
- "createDate": "2019-08-24T14:15:22Z",
- "appealOutcome": {
- "vetStatus": "string",
- "optionalAttributes": {
- "property1": { },
- "property2": { }
}, - "feedback": {
- "category": [
- {
- "id": "string",
- "displayName": "string",
- "description": "string",
- "fields": [
- "string"
], - "errors": [
- {
- "code": "string",
- "message": "string"
}
]
}
]
}
}
}
]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.
| brandId required | string The unique ID that identifies the brand. |
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. |
{- "appealCategories": [
- "string"
], - "attachmentUuids": [
- "string"
], - "explanation": "string"
}[- {
- "code": 501,
- "description": "Invalid parameter",
- "fields": [
- "campaignId"
]
}
]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.
| brandId required | string The unique ID that identifies the brand. |
[- {
- "uuid": "string",
- "fileName": "string",
- "mimeType": "string"
}
]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.
| brandId required | string The unique ID that identifies the brand. |
| file required | string <binary> |
{- "uuid": "string",
- "fileName": "string",
- "mimeType": "string"
}Retrieves all external vetting records associated with a brand ID. Records can be queried by an external vetting partner ID, vetting class, or status.
| brandId required | string The unique ID that identifies the brand. |
| 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. |
[- {
- "evpId": "string",
- "vettingId": "string",
- "vettingToken": "string",
- "vettingScore": 100,
- "vettingClass": "string",
- "vettingStatus": "PENDING",
- "reasons": [
- "string"
], - "vettingDetails": {
- "property1": { },
- "property2": { }
}, - "vettedDate": "2019-08-24T14:15:22Z",
- "createDate": "2019-08-24T14:15:22Z",
- "validUntil": "2019-08-24T14:15:22Z",
- "expirationDate": "2019-08-24T14:15:22Z"
}
]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:
transactionId.Note: Import is not supported for the AUTHPLUS vetting class.
An optionalvettingToken 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:
|
| Campaign Verify | CV | Authorization Token | N/A | Only supports the POLITICAL vetting class.
Validation Rules:
|
| WMC Global | WMC | Transaction ID | N/A | Only supports the STANDARD vetting class.
Validation Rules:
|
| brandId required | string The unique ID that identifies the brand. |
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. |
{- "evpId": "CV",
- "vettingId": "cv|1.0|cvmock|10dlc|###|###",
- "vettingToken": "string"
}{- "evpId": "string",
- "vettingId": "string",
- "vettingToken": "string",
- "vettingScore": 100,
- "vettingClass": "string",
- "vettingStatus": "PENDING",
- "reasons": [
- "string"
], - "vettingDetails": {
- "property1": { },
- "property2": { }
}, - "vettedDate": "2019-08-24T14:15:22Z",
- "createDate": "2019-08-24T14:15:22Z",
- "validUntil": "2019-08-24T14:15:22Z",
- "expirationDate": "2019-08-24T14:15:22Z"
}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.
| brandId required | string The unique ID that identifies the brand. |
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. |
{- "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\"}"
}{- "evpId": "string",
- "vettingId": "string",
- "vettingToken": "string",
- "vettingScore": 100,
- "vettingClass": "string",
- "vettingStatus": "PENDING",
- "reasons": [
- "string"
], - "vettingDetails": {
- "property1": { },
- "property2": { }
}, - "vettedDate": "2019-08-24T14:15:22Z",
- "createDate": "2019-08-24T14:15:22Z",
- "validUntil": "2019-08-24T14:15:22Z",
- "expirationDate": "2019-08-24T14:15:22Z"
}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.
| brandId required | string The unique ID that identifies the brand. |
| 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. |
[- {
- "brandId": "string",
- "appealStatus": "PENDING",
- "categoryList": [
- "string"
], - "attachmentUuidList": [
- "string"
], - "explanation": "string",
- "appealStatusUpdateDate": "2019-08-24T14:15:22Z",
- "createDate": "2019-08-24T14:15:22Z",
- "evpId": "string",
- "vettingId": "string",
- "vettingClass": "string",
- "appealOutcome": {
- "vetStatus": "string",
- "vetScore": 0,
- "optionalAttributes": {
- "property1": { },
- "property2": { }
}, - "feedback": {
- "reasons": [
- "string"
]
}
}
}
]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.
| brandId required | string The unique ID that identifies the brand. |
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 |
{- "appealCategories": [
- "string"
], - "attachmentUuids": [
- "string"
], - "explanation": "string",
- "evpId": "string",
- "vettingId": "string"
}[- {
- "code": 501,
- "description": "Invalid parameter",
- "fields": [
- "campaignId"
]
}
]Retrieves the enhanced vetting reports that are associated with a brand ID.
| brandId required | string The unique ID that identifies the brand. |
[- {
- "uuid": "string",
- "fileName": "string",
- "mimeType": "string"
}
]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.
| brandId required | string The unique ID that identifies the brand. |
{- "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": {
- "property1": { },
- "property2": { }
}, - "mock": true,
- "identityStatus": "SELF_DECLARED",
- "createDate": "2019-08-24T14:15:22Z",
- "evpVettingScore": 0,
- "evpVettingFeedback": [
- "string"
], - "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"
}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
| brandId required | string The unique ID that identifies the brand. |
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 |
{- "otpPin": "123456"
}[- {
- "code": 501,
- "description": "Invalid parameter",
- "fields": [
- "campaignId"
]
}
]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.
| brandId required | string The unique ID that identifies the brand. |
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. |
{- "pinSms": "Your verification code is @OTP_PIN@",
- "successSms": "Your verification code has been confirmed successfully"
}{- "brandId": "BS2K889",
- "referenceId": "OTPK6RSGTV"
}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).
| brandId required | string The unique ID that identifies the brand. |
| type | string Enum: "LOGO" "BANNER" |
| name | string Display name of the brand asset. |
[- {
- "name": "string",
- "type": "LOGO",
- "attachmentUuid": "string",
- "reasons": "string",
- "verificationDate": "2019-08-24T14:15:22Z",
- "validUntil": "2019-08-24T14:15:22Z",
- "expirationDate": "2019-08-24T14:15:22Z"
}
]Uploads a new brand asset to a specified brand. The following business rules apply:
| brandId required | string The unique ID that identifies the brand. |
| 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. |
[- {
- "code": 501,
- "description": "Invalid parameter",
- "fields": [
- "campaignId"
]
}
]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.
| brandId required | string The unique ID that identifies the brand. |
| name required | string The display name of the brand asset. |
[- {
- "code": 501,
- "description": "Invalid parameter",
- "fields": [
- "campaignId"
]
}
]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.
| brandId required | string The unique ID that identifies the brand. |
| name required | string Display name of the brand asset. |
| appealStatus | Array of strings Items Enum: "PENDING" "COMPLETE" Optional appeal status filter |
[- {
- "brandId": "string",
- "appealStatus": "PENDING",
- "categoryList": [
- "string"
], - "attachmentUuidList": [
- "string"
], - "explanation": "string",
- "appealStatusUpdateDate": "2019-08-24T14:15:22Z",
- "createDate": "2019-08-24T14:15:22Z",
- "assetName": "string",
- "appealOutcome": {
- "vetStatus": "string",
- "feedback": [
- {
- "reasons": [
- "string"
]
}
]
}
}
]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.
| brandId required | string The unique ID that identifies the brand. |
| name required | string The name of the asset to appeal. |
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. |
{- "appealCategories": [
- "string"
], - "attachmentUuids": [
- "string"
], - "explanation": "string"
}[- {
- "code": 501,
- "description": "Invalid parameter",
- "fields": [
- "campaignId"
]
}
]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:
| brandId required | string The unique ID that identifies the brand. |
| name required | string The display name of the brand asset. |
[- {
- "code": 501,
- "description": "Invalid parameter",
- "fields": [
- "campaignId"
]
}
]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.
| 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. |
{- "records": [
- {
- "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": [
- "string"
], - "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"
}
], - "page": 0,
- "totalRecords": 0
}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.
| 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 |
{- "records": [
- {
- "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": [
- "string"
], - "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"
}
], - "page": 0,
- "totalRecords": 0
}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.
| 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 |
{- "records": [
- {
- "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": [
- "string"
], - "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"
}
], - "page": 0,
- "totalRecords": 0
}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.
| campaignId required | string The unique ID that identifies the campaign. |
{- "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": [
- "string"
], - "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
}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 |
| campaignId required | string The unique ID that identifies the campaign. |
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 |
{- "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
}{- "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": [
- "string"
], - "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 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.
| campaignId required | string The unique ID that identifies the campaign. |
[- {
- "code": 501,
- "description": "Invalid parameter",
- "fields": [
- "campaignId"
]
}
]Returns an array of MNOs excluded from a campaign when the primary or secondary DCAs accepted it.
| campaignId required | string The unique ID that identifies the campaign. |
[- 10017,
- 10035
]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.
| campaignId required | string The unique ID that identifies the campaign. |
[- {
- "uuid": "string",
- "fileName": "string",
- "mimeType": "string"
}
]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.
| campaignId required | string The unique ID that identifies the campaign. |
| file required | string <binary> |
{- "uuid": "string",
- "fileName": "string",
- "mimeType": "string"
}Retrieves a list of MNO IDs where a DCA has been elected for the campaign.
| campaignId required | string The unique ID that identifies the campaign. |
| cnpMigration | boolean Default: false Indicates whether the campaign is in the process of CNP migration. |
[- 10038,
- 10035
]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.
| campaignId required | string The unique ID that identifies the campaign. |
{- "10017": {
- "minMsgSamples": 1,
- "msgClass": "A",
- "reqSubscriberOptout": false,
- "mnoReview": false,
- "noEmbeddedPhone": true,
- "mno": "AT&T",
- "tpm": 1800,
- "mmsTpm": 900,
- "reqSubscriberHelp": true,
- "reqSubscriberOptin": true,
- "mnoSupport": true,
- "noEmbeddedLink": true,
- "qualify": true
}, - "10035": {
- "minMsgSamples": 1,
- "reqSubscriberHelp": true,
- "reqSubscriberOptout": false,
- "reqSubscriberOptin": true,
- "mnoReview": false,
- "mnoSupport": true,
- "brandTier": "TOP",
- "noEmbeddedLink": true,
- "noEmbeddedPhone": true,
- "qualify": true,
- "mno": "T-Mobile"
}
}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:
| campaignId required | string The unique ID that identifies the campaign. |
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 |
{- "nudgeIntent": "string",
- "description": "string"
}{- "message": "Nudge successful"
}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:
| campaignId required | string The unique ID that identifies the campaign. |
{- "10017": "REGISTERED",
- "10035": "REVIEW"
}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.
| campaignId required | string The unique ID that identifies the campaign. |
{- "msg_class": "E",
- "status": "7",
- "brand_id": "B6YHPELO"
}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.
| campaignId required | string The unique ID that identifies the campaign. |
| 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. |
{- "records": [
- {
- "nnid": "string",
- "provisionedDate": "2019-08-24T14:15:22Z",
- "current": true,
- "campaignUid": "string"
}
], - "page": 0,
- "totalRecords": 0
}This endpoint is typically used for two purposes:
| 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. |
| 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. |
| campaignId required | string The unique ID that identifies the campaign. |
Contains one or more MNO IDs against which to resubmit the campaign.
| mnoIds | Array of integers <int64> unique [ items <int64 > ] |
{- "mnoIds": [ ]
}{- "campaignId": "C123456",
- "mnoMetadata": {
- "property1": {
- "mno": "string",
- "mnoSupport": true,
- "mnoReview": true,
- "qualify": true,
- "minMsgSamples": 0,
- "reqSubscriberOptin": true,
- "reqSubscriberOptout": true,
- "reqSubscriberHelp": true,
- "noEmbeddedLink": true,
- "noEmbeddedPhone": true,
- "msgClass": "string",
- "tpm": 0,
- "mmsTpm": 0,
- "tpmScope": "string",
- "brandTier": "string",
- "brandDailyCap": 0
}, - "property2": {
- "mno": "string",
- "mnoSupport": true,
- "mnoReview": true,
- "qualify": true,
- "minMsgSamples": 0,
- "reqSubscriberOptin": true,
- "reqSubscriberOptout": true,
- "reqSubscriberHelp": true,
- "noEmbeddedLink": true,
- "noEmbeddedPhone": true,
- "msgClass": "string",
- "tpm": 0,
- "mmsTpm": 0,
- "tpmScope": "string",
- "brandTier": "string",
- "brandDailyCap": 0
}
}
}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.
| campaignId required | string The unique ID that identifies the campaign. |
| cnpMigration | boolean Default: false Specifies whether the campaign is undergoing CNP migration. |
{- "sharedWithMe": {
- "downstreamCnpId": "string",
- "upstreamCnpId": "string",
- "sharingStatus": "PENDING",
- "rejectionCategory": [
- "string"
], - "explanation": "string",
- "sharedDate": "2019-08-24T14:15:22Z",
- "statusDate": "2019-08-24T14:15:22Z",
- "cnpMigration": true
}, - "sharedByMe": {
- "downstreamCnpId": "string",
- "upstreamCnpId": "string",
- "sharingStatus": "PENDING",
- "rejectionCategory": [
- "string"
], - "explanation": "string",
- "sharedDate": "2019-08-24T14:15:22Z",
- "statusDate": "2019-08-24T14:15:22Z",
- "cnpMigration": true
}
}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.
| campaignId required | string The unique ID that identifies the campaign. |
[- {
- "uuid": "string",
- "fileName": "string",
- "mimeType": "string"
}
]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.
| campaignId required | string The unique ID that identifies the campaign. |
| file required | string <binary> Path to the file to upload. |
{- "uuid": "string",
- "fileName": "string",
- "mimeType": "string"
}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. |
| 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. |
Campaign request to be submitted
{- "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": [
- 10035
], - "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,
}{- "campaignId": "C123456",
- "mnoMetadata": {
- "property1": {
- "mno": "string",
- "mnoSupport": true,
- "mnoReview": true,
- "qualify": true,
- "minMsgSamples": 0,
- "reqSubscriberOptin": true,
- "reqSubscriberOptout": true,
- "reqSubscriberHelp": true,
- "noEmbeddedLink": true,
- "noEmbeddedPhone": true,
- "msgClass": "string",
- "tpm": 0,
- "mmsTpm": 0,
- "tpmScope": "string",
- "brandTier": "string",
- "brandDailyCap": 0
}, - "property2": {
- "mno": "string",
- "mnoSupport": true,
- "mnoReview": true,
- "qualify": true,
- "minMsgSamples": 0,
- "reqSubscriberOptin": true,
- "reqSubscriberOptout": true,
- "reqSubscriberHelp": true,
- "noEmbeddedLink": true,
- "noEmbeddedPhone": true,
- "msgClass": "string",
- "tpm": 0,
- "mmsTpm": 0,
- "tpmScope": "string",
- "brandTier": "string",
- "brandDailyCap": 0
}
}
}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. |
| 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. |
| brandId required | string The unique ID that identifies the brand. |
[- {
- "usecase": "string",
- "monthlyFee": 0,
- "quarterlyFee": 0,
- "annualFee": 0,
- "minSubUsecases": 0,
- "maxSubUsecases": 0,
- "greyoutFields": [
- "string"
], - "mnoMetadata": {
- "property1": {
- "mno": "string",
- "mnoSupport": true,
- "mnoReview": true,
- "qualify": true,
- "minMsgSamples": 0,
- "reqSubscriberOptin": true,
- "reqSubscriberOptout": true,
- "reqSubscriberHelp": true,
- "noEmbeddedLink": true,
- "noEmbeddedPhone": true,
- "msgClass": "string",
- "tpm": 0,
- "mmsTpm": 0,
- "tpmScope": "string",
- "brandTier": "string",
- "brandDailyCap": 0
}, - "property2": {
- "mno": "string",
- "mnoSupport": true,
- "mnoReview": true,
- "qualify": true,
- "minMsgSamples": 0,
- "reqSubscriberOptin": true,
- "reqSubscriberOptout": true,
- "reqSubscriberHelp": true,
- "noEmbeddedLink": true,
- "noEmbeddedPhone": true,
- "msgClass": "string",
- "tpm": 0,
- "mmsTpm": 0,
- "tpmScope": "string",
- "brandTier": "string",
- "brandDailyCap": 0
}
}
}
]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. |
| 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. |
| brandId required | string The unique ID that identifies the brand. |
| usecase required | string The campaign use case name (e.g., 2FA). |
{- "usecase": "string",
- "monthlyFee": 0,
- "quarterlyFee": 0,
- "annualFee": 0,
- "minSubUsecases": 0,
- "maxSubUsecases": 0,
- "greyoutFields": [
- "string"
], - "mnoMetadata": {
- "property1": {
- "mno": "string",
- "mnoSupport": true,
- "mnoReview": true,
- "qualify": true,
- "minMsgSamples": 0,
- "reqSubscriberOptin": true,
- "reqSubscriberOptout": true,
- "reqSubscriberHelp": true,
- "noEmbeddedLink": true,
- "noEmbeddedPhone": true,
- "msgClass": "string",
- "tpm": 0,
- "mmsTpm": 0,
- "tpmScope": "string",
- "brandTier": "string",
- "brandDailyCap": 0
}, - "property2": {
- "mno": "string",
- "mnoSupport": true,
- "mnoReview": true,
- "qualify": true,
- "minMsgSamples": 0,
- "reqSubscriberOptin": true,
- "reqSubscriberOptout": true,
- "reqSubscriberHelp": true,
- "noEmbeddedLink": true,
- "noEmbeddedPhone": true,
- "msgClass": "string",
- "tpm": 0,
- "mmsTpm": 0,
- "tpmScope": "string",
- "brandTier": "string",
- "brandDailyCap": 0
}
}
}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.
{- "subTerms": [
- "string"
]
}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.
| campaignId required | string The unique ID that identifies the campaign. |
{- "campaignId": "string",
- "status": "ACTIVE",
- "cancellationReason": "string",
- "expirationDate": "2019-08-24T14:15:22Z",
- "createDate": "2019-08-24T14:15:22Z"
}Cancels a CNP migration for a given campaign. Only the party who initiated the CNP migration is allowed to cancel it.
| campaignId required | string The unique ID that identifies the campaign. |
| explanation | string [ 0 .. 2048 ] characters A description of why the CNP migration was canceled. |
[- {
- "code": 501,
- "description": "Invalid parameter",
- "fields": [
- "campaignId"
]
}
]Begins the migration of a campaign to a new upstream connectivity partner. Only the initiator of a CNP migration is allowed to cancel it.
| campaignId required | string The unique ID that identifies the campaign. |
| upstreamCnpId required | string Unique identifier of an upstream connectivity partner. |
[- {
- "code": 501,
- "description": "Invalid parameter",
- "fields": [
- "campaignId"
]
}
]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.
[- "NONE"
]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.
| 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 |
{- "records": [
- {
- "symbol": "FLWS",
- "exchange": "NASDAQ",
- "iso2": "US",
- "isin": "US68243Q1067",
- "displayName": "1-800 FLOWERS.COM, Inc."
}
], - "page": 1,
- "totalRecords": 1
}Returns a list of all appeal categories available for brand assets.
[- {
- "id": "VERIFY_ASSET_SPEC",
- "displayName": "Verify Asset Specification",
- "description": "Use this reason if the asset is being appealed for failure to meet file specifications, including format and size."
}
]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.
[- {
- "id": "VERIFY_TAX_ID",
- "displayName": "Verify tax ID",
- "description": "Select this category if the record is UNVERIFIED due to an inability to match the tax ID."
}
]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"
]Returns a list of all possible relationship types a brand may have with a CSP. Specified during brand registration. These types include:
[- "BASIC_ACCOUNT"
]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"
]Returns a list of all possible status types for a campaign. These include:
[- "ACTIVE"
]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.
| 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. |
[- [
- {
- "id": "DCA123",
- "displayName": "DCA123",
- "escalateEmail": null,
- "dpaSigned": false,
- "soleProprietorEnabled": false,
- "dca2AutoAccept": false
}
]
]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"
]Returns a list of all appeal categories for external vets (i.e., standard, enhanced, and political).
| evpId | string The external vetting partner ID. |
[- {
- "id": "VERIFY_TAX_ID",
- "displayName": "Verify tax ID",
- "description": "Select this category if the record is FAILED due to an inability to match the tax ID."
}
]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.
[- {
- "evpId": "AEGIS",
- "displayName": "Aegis Mobile",
- "tcrBillable": true,
- "vettingClasses": [
- "STANDARD",
- "POLITICAL",
- "ENHANCED"
], - "vettingInstruction": "{\r\n \"importVet\" : {\r\n \"supported\" : true,\r\n \"parameters\" : {\r\n \"vettingId\" : {\r\n \"label\" : \"Vetting ID\",\r\n \"show\" : true\r\n },\r\n \"vettingToken\" : {\r\n \"label\" : \"Vetting Token\",\r\n \"show\" : false\r\n }\r\n },\r\n \"info\" : \"Vetting partner Aegis\"\r\n },\r\n \"newVet\" : {\r\n \"supported\" : true,\r\n \"price\" : {\r\n \"STANDARD\" : 40\r\n },\r\n \"waitTime\" : \"30 seconds\",\r\n \"info\" : \"Vetting partner Aegis\"\r\n }\r\n}"
}
]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.
[- {
- "networkId": 10000,
- "displayName": "string",
- "osrBitmaskIndex": 1
}
]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"
]Returns a list of all valid MNO campaign operation statuses.
[- "REGISTERED"
]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:
[- {
- "id": "governmentEntity",
- "dataType": "BOOLEAN",
- "description": "Confirmation that the brand is a closely affiliated, generally by government ownership or control, with federal, state or local governments."
}
]Returns a list of all rejection categories for use when rejecting a campaign in the CSP and DCA APIs.
Possible categories include:[- "BRAND_INCONSISTENCIES"
]Returns a list of all brand suspension rule categories that explain why a brand was suspended. Possible categories include:
[- "CAMPAIGN_TO_TRAFFIC_MISMATCH"
]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.
| validSubUsecase | boolean Filters the results to either include or exclude use cases that allow sub-use cases. Leave empty to return all use cases. |
{- "2FA": {
- "classification": "STANDARD",
- "description": "Two-Factor authentication, one-time use password, password reset",
- "displayName": "2FA",
- "maxSubUsecases": 0,
- "minSubUsecases": 0,
- "validSubUsecase": true
}, - "ACCOUNT_NOTIFICATION": {
- "classification": "STANDARD",
- "description": "All reminders, alerts, and notifications. (Examples include: flight delayed, hotel booked, appointment reminders.)",
- "displayName": "Account Notification",
- "maxSubUsecases": 0,
- "minSubUsecases": 0,
- "validSubUsecase": true
}
}Returns a list of all possible verticals, or business segments, that can be assigned to a brand during registration.
{- "PROFESSIONAL": {
- "industryId": "professional-services",
- "displayName": "Professional Services",
- "description": "Professional services."
}, - "REAL_ESTATE": {
- "industryId": "real-estate",
- "displayName": "Real Estate",
- "description": "Buying and Selling of residential and commercial properties."
}
}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.
[- {
- "id": "POLITICAL",
- "enabled": true,
- "displayName": "Political",
- "description": "Required for federal level political campaign.",
- "validityMonths": 1200
}
]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.
[- [
- {
- "code": "TFGE01",
- "message": "The submitted company is not a US entity. Only US entities qualify for the Government Entity Type."
}
]
]Returns a list of all possible vetting status types for a brand that has been submitted for external vetting. Possible types include:
[- "PENDING"
]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.
{- "202": "User not authenticated",
- "205": "Unauthorized operation"
}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.
| campaignId required | string The unique ID that identifies the campaign. |
| mnoId required | integer <int64> The unique ID of the MNO to be removed. |
Explanation for removing MNO from excludedMnoIdList
| explanation | string |
{- "explanation": "string"
}[- {
- "code": 501,
- "description": "Invalid parameter",
- "fields": [
- "campaignId"
]
}
]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:
federal, state, local, and tribal.
| brandId required | string The unique ID that identifies the brand. |
| 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 |
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.
| 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. |
{- "records": [
- {
- "campaignId": "C123ABC",
- "status": "EXPIRED",
- "createDate": "2022-05-23T12:30:30.000Z",
- "brandId": "B123ABC",
- "usecase": "MARKETING",
- "subUsecases": [ ],
- "description": "Sell the moon",
- "subscriberOptin": true,
- "subscriberOptout": true,
- "subscriberHelp": true,
- "directLending": false,
- "numberPool": false,
- "embeddedLink": false,
- "embeddedPhone": false,
- "termsAndConditions": true,
- "ageGated": false,
- "sample1": "Would you like to buy the moon?",
- "sample2": null,
- "sample3": null,
- "sample4": null,
- "sample5": null,
- "messageFlow": null,
- "helpMessage": null,
- "optinKeywords": null,
- "optoutKeywords": "",
- "helpKeywords": "",
- "optinMessage": null,
- "optoutMessage": null,
- "privacyPolicyLink": null,
- "termsAndConditionsLink": null,
- "embeddedLinkSample": null
}
], - "page": 1,
- "totalRecords": 1
}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.
| 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. |
{- "records": [
- {
- "campaignId": "string",
- "status": "ACTIVE",
- "createDate": "2019-08-24T14:15:22Z",
- "brandId": "string",
- "usecase": "string",
- "subUsecases": [
- "string"
], - "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"
}
], - "page": 0,
- "totalRecords": 0
}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.
| 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. |
{- "records": [
- {
- "campaignId": "C123ABC",
- "status": "EXPIRED",
- "createDate": "2022-07-25T15:56:23.000Z",
- "brandId": "B123ABC",
- "usecase": "2FA",
- "subUsecases": [ ],
- "description": "Sample description.",
- "subscriberOptin": true,
- "subscriberOptout": true,
- "subscriberHelp": true,
- "directLending": true,
- "numberPool": true,
- "embeddedLink": true,
- "embeddedPhone": true,
- "termsAndConditions": true,
- "ageGated": true,
- "sample1": "Message sample 1.",
- "sample2": null,
- "sample3": null,
- "sample4": null,
- "sample5": null,
- "messageFlow": null,
- "helpMessage": null,
- "optinKeywords": null,
- "optoutKeywords": null,
- "helpKeywords": null,
- "optinMessage": null,
- "optoutMessage": null,
- "privacyPolicyLink": null,
- "termsAndConditionsLink": null,
- "embeddedLinkSample": null
}
], - "page": 1,
- "totalRecords": 1
}Get details on a campaign shared with the CSP by a downstream partner.
| campaignId required | string The unique ID that identifies the campaign. |
| cnpMigration | boolean Default: false Indicates whether the campaign is in the process of CNP migration. |
{- "campaignId": "string",
- "status": "ACTIVE",
- "createDate": "2019-08-24T14:15:22Z",
- "brandId": "string",
- "usecase": "string",
- "subUsecases": [
- "string"
], - "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"
}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.
| campaignId required | string The unique ID that identifies the campaign. |
{- "10017": {
- "minMsgSamples": 1,
- "msgClass": "A",
- "reqSubscriberOptout": false,
- "mnoReview": false,
- "noEmbeddedPhone": true,
- "mno": "AT&T",
- "tpm": 1800,
- "mmsTpm": 900,
- "reqSubscriberHelp": true,
- "reqSubscriberOptin": true,
- "mnoSupport": true,
- "noEmbeddedLink": true,
- "qualify": true
}, - "10035": {
- "minMsgSamples": 1,
- "reqSubscriberHelp": true,
- "reqSubscriberOptout": false,
- "reqSubscriberOptin": true,
- "mnoReview": false,
- "mnoSupport": true,
- "brandTier": "TOP",
- "noEmbeddedLink": true,
- "noEmbeddedPhone": true,
- "qualify": true,
- "mno": "T-Mobile"
}
}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.
| campaignId required | string The unique ID that identifies the campaign. |
{- "10017": "REGISTERED",
- "10035": "REVIEW"
}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.
| campaignId required | string The unique ID that identifies the campaign. |
| cnpMigration | boolean Default: false Indicates whether the campaign is in the process of CNP migration. |
{- "sharedWithMe": {
- "downstreamCnpId": "string",
- "upstreamCnpId": "string",
- "sharingStatus": "PENDING",
- "rejectionCategory": [
- "string"
], - "explanation": "string",
- "sharedDate": "2019-08-24T14:15:22Z",
- "statusDate": "2019-08-24T14:15:22Z",
- "cnpMigration": true
}, - "sharedByMe": {
- "downstreamCnpId": "string",
- "upstreamCnpId": "string",
- "sharingStatus": "PENDING",
- "rejectionCategory": [
- "string"
], - "explanation": "string",
- "sharedDate": "2019-08-24T14:15:22Z",
- "statusDate": "2019-08-24T14:15:22Z",
- "cnpMigration": true
}
}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.
{- "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": {
- "property1": { },
- "property2": { }
}, - "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"
}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.
| 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. |
{- "records": [
- {
- "resellerId": "string",
- "cspId": "string",
- "companyName": "Microsoft",
- "phone": "+18348365467",
- "email": "john.doe@microsoft.com"
}
], - "page": 0,
- "totalRecords": 0
}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.
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. |
{- "companyName": "Microsoft",
- "phone": "+18348365467",
- "email": "john.doe@microsoft.com"
}{- "resellerId": "string",
- "cspId": "string",
- "companyName": "Microsoft",
- "phone": "+18348365467",
- "email": "john.doe@microsoft.com"
}Retrieve a reseller record by a unique ID.
| resellerId required | string The unique ID that identifies the reseller. |
{- "resellerId": "string",
- "cspId": "string",
- "companyName": "Microsoft",
- "phone": "+18348365467",
- "email": "john.doe@microsoft.com"
}Update the properties in a specified reseller record.
| resellerId required | string Alphanumeric identifier (prefixed with letter 'R') returned from reseller creation operation. |
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. |
{- "companyName": "Microsoft",
- "phone": "+18348365467",
- "email": "john.doe@microsoft.com"
}{- "resellerId": "R123ABC",
- "cspId": "S123ABC",
- "companyName": "Acme",
- "phone": "+15555555555",
- "email": "john.doe@acme.com"
}Deletes a reseller record by a specified ID. Resellers cannot be deleted if they are associated with one or more campaigns.
| resellerId required | string The unique ID that identifies the reseller. |
[- {
- "code": 501,
- "description": "Invalid parameter",
- "fields": [
- "campaignId"
]
}
]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.
| name | string The tag name. |
| recordId | string The record ID. For brands, this is the |
| 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 |
{- "records": [
- {
- "name": "agriculture",
- "recordType": "BRAND",
- "recordId": "B123ABC"
}, - {
- "name": "companya",
- "recordType": "BRAND",
- "recordId": "B123ABC"
}, - {
- "name": "test",
- "recordType": "CAMPAIGN",
- "recordId": "C123ABC"
}, - {
- "name": "campaigna",
- "recordType": "CAMPAIGN",
- "recordId": "C123ABC"
}, - {
- "name": "campaignb",
- "recordType": "CAMPAIGN",
- "recordId": "C123ABC"
}
], - "page": 1,
- "totalRecords": 5
}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.
Tagging object
{- "name": "sampletag",
- "recordType": "BRAND",
- "recordId": "B123ABC"
}{- "name": "sampletag",
- "recordType": "BRAND",
- "recordId": "B123ABC"
}Deletes an existing tag that has been assigned to a brand or campaign. Note: Make sure all path parameters are properly URL encoded.
| 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 |
[- {
- "code": 501,
- "description": "Invalid parameter",
- "fields": [
- "campaignId"
]
}
]Retrieves available settings from the profile of the current account. These include:
{- "cspId": "string",
- "escalateEmail": "string",
- "email": "string",
- "techEmail": "string",
- "financeEmail": "string",
- "platformFreeTrialEnabled": true,
- "soleProprietorEnabled": true,
- "ucaasEnabled": true,
- "publicSafetyEnabled": true,
- "dpaSigned": true
}Updates settings on the profile of the current account. These include:
Csp properties to be updated
{- "escalateEmail": "support@campaignregistry.com",
- "email": "support@campaignregistry.com",
- "techEmail": "support@campaignregistry.com",
- "financeEmail": "support@campaignregistry.com"
}{- "migrationSupported": true,
- "migrationAutoComplete": true
}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": true,
- "migrationAutoComplete": true
}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:
CNP migration settings to be updated.
| migrationSupported | boolean |
| migrationAutoComplete | boolean |
{- "migrationSupported": true,
- "migrationAutoComplete": true
}{- "migrationSupported": true,
- "migrationAutoComplete": true
}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.
[- "VETTING"
]Returns a list of all possible event types, including a short description and the category associated with the event.
[- {
- "eventType": "CAMPAIGN_NUDGE",
- "description": "Nudge a party in the connectivity chain",
- "eventCategory": "CAMPAIGN"
}
]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.
Refer to the schema for details on the webhookSubscription object.
| eventCategory required | string <= 20 characters Enum: "BRAND" "CSP" "CAMPAIGN" "INCIDENCE" "VETTING" Use |
| webhookEndpoint required | string [ 1 .. 255 ] characters Webhook endpoint to which the events subscribed will be notified |
{- "eventCategory": "BRAND",
- "webhookEndpoint": "string"
}{- "eventCategory": "BRAND",
- "webhookEndpoint": "string"
}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.
| eventType required | string Enter the specific webhook eventType to send to the endpoint (e.g., CAMPAIGN_SHARE_ADD). |
{- "status": 200,
- "request": "{\"campaignId\":\"C123ABC\",\"eventType\":\"CAMPAIGN_SHARE_ADD\"}",
- "response": "OK"
}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.
| eventCategory required | string Enum: "API_ACCOUNT" "BRAND" "CSP" "CAMPAIGN" "INCIDENCE" "DCA" "CONNECTION" "TRAFFIC" "ROUTING" "VETTING" "RESELLER" "ISSUE" "SUSPENSION_RULE" "VENDOR" "OTHER" |
[- {
- "code": 501,
- "description": "Invalid parameter",
- "fields": [
- "campaignId"
]
}
]