{
  1. Introduction
    1. Authentication
    2. Getting your Account ID
  2. Channels
    1. Request a channel
    2. Get your channel requests
    3. Get a channel request by id
    4. Get your channels
    5. Get a channel by id
    6. Get available channel types
    7. Get a channel type by id
    8. Get available categories for a channel type
  3. WhatsApp
    1. Get your business account
    2. Get supported WhatsApp languages
    3. Get your active WhatsApp languages
    4. Activate a WhatsApp language
    5. Profiles
      1. Get your profiles
      2. Get a profile by id
      3. Update a profile's phone number
      4. Start a profile's otp validation
      5. Finish a profile's otp validation
    6. Templates
      1. Get supported template categories
      2. Create a template
      3. Get your templates
      4. Get a template by id
      5. Update a template
      6. Request validation of a template
      7. Create a template replacement field
      8. Update a template replacement field
      9. Delete a template replacement field
  4. Keyword claims
    1. Claim a keyword
    2. Get your claimed keywords
    3. Get a keyword claim by id
    4. Cancel a keyword claim
    5. Verify a claim
  5. Dedicated phone numbers
    1. Request a phone number
    2. Get your phone number requests
    3. Cancel phone number ownership
    4. Get available phone numbers
    5. Get an available phone number by id
    6. Get available phone number types
  6. API Model definitions
    1. Channels
      1. ApiChannelRequestBase
      2. ApiChannelRequest
      3. ApiChannels
      4. ApiChannelsAvailable
      5. ApiChannel
      6. ApiChannelTypeBaseResponse
      7. ApiChannelTypeResponse
      8. ApiChannelCategory
    2. WhatsApp
      1. ApiWhatsAppBusinessAccount
      2. ApiWhatsAppSupportedLanguage
      3. ApiWhatsAppProfile
      4. ApiWhatsAppProfileBase
      5. ApiWhatsAppTemplateBaseResponse
      6. ApiWhatsAppTemplate
      7. ApiWhatsAppTemplateSettings
      8. ApiWhatsAppTemplateReplacementField
      9. ApiWhatsAppTemplateLanguage
      10. ApiWhatsAppTemplateUpdateRequest
      11. ApiWhatsAppTemplateCategory
    3. Keyword claims
      1. ApiKeywordClaimRequest
      2. ApiKeywordClaimResponse
    4. Dedicated phone numbers
      1. ApiNumberRequestResponse
      2. ApiPhoneNumberResponse
      3. ApiNumberTypeResponse

Introduction

This API allows you to enhance your usage of the various communication channels CM.com offers.
Via various calls you can request phone numbers and claim SMS-key words. But you can also request the status of your WhatsApp templates.

When you want to request a dedicated short code, please contact our support teams.

Authentication

Authentication and authorization is done via a product token. You can obtain your product token from the messaging gateway app (https://gateway.cmtelecom.com).
If you cannot access that app you might have received the token via your account manager or you can contact support to obtain one. For all calls described in this API, the product token should be provided by including it in the X-CM-PRODUCTTOKEN header.

Getting your Account ID

In all methods you need to provide the accountId. This is a guid that identifies your account.
This identifier can be found on the url of CM.com's platform applications, after the language indicator. Below you can find an example.

Url AccountID
https://www.cm.com/en-gb/app/dashboard/00000000-0000-0000-0000-000000000000 00000000-0000-0000-0000-000000000000



Channels

Channels description.

Request a channel

Request a channel.

POST https://api.cmtelecom.com/channels/v1/accounts/{accountId}/channels/requests

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Query channelTypeId
optional
The channel type identifier. string (uuid)

Responses

HTTP Code Description Schema
201 Created ApiChannelRequestBase

Example HTTP request

Request path

POST https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/channels/requests

Response body (201)

{
  "id": "00000000-0000-0000-0000-000000000000",
  "channelTypeId": "00000000-0000-0000-0000-000000000000",
  "isPending": false,
  "isActive": true,
  "createdOnUtc": "2019-07-29T09:30:01.709Z"
}

Get your channel requests

Get your channel requests.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/channels/requests

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Query channelTypeId
optional
The channel type identifier. string (uuid)
Query skip
optional
The amount of results to skip. (pagination) integer
Query take
optional
The amount of results to take. (pagination) integer

Responses

HTTP Code Description Schema
200 OK array[ApiChannelRequestBase]

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/channels/requests

Response body (200)

[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "channelTypeId": "00000000-0000-0000-0000-000000000000",
    "isPending": false,
    "isActive": true,
    "createdOnUtc": "2019-07-29T09:30:01.705Z"
  }
]

Get a channel request by id

Get a channel request by id.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/channels/requests/{channelRequestId}

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelRequestId
required
The channel request identifier. string (uuid)

Responses

HTTP Code Description Schema
200 OK ApiChannelRequest

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/channels/requests/00000000-0000-0000-0000-000000000000

Response body (200)

{
  "id": "00000000-0000-0000-0000-000000000000",
  "channelTypeId": "00000000-0000-0000-0000-000000000000",
  "isPending": false,
  "isActive": true,
  "cancelledOnUtc": "2019-07-29T09:30:01.714Z",
  "fulfilledOnUtc": "2019-07-29T09:30:01.714Z",
  "createdOnUtc": "2019-07-29T09:30:01.714Z"
}

Get your channels

Get your channels.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/channels

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Query channelTypeId
optional
The channel type identifier. string (uuid)

Responses

HTTP Code Description Schema
200 OK ApiChannels

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/channels

Response body (200)

{
  "available": {
    "sms": {
      "keywords": [
        {
          "id": "00000000-0000-0000-0000-000000000000",
          "channelID": "0000000000|KEYWORD",
          "channelUrl": "https://www.cm.com/app/channels/00000000-0000-0000-0000-000000000000/sms/00000000-0000-0000-0000-000000000000/keywords/0000000000|KEYWORD",
          "isPending": false,
          "createdOnUtc": "2019-07-24T13:43:58.3329114"
        }
      ],
      "numbers": [
        {
          "id": "00000000-0000-0000-0000-000000000000",
          "channelID": "00000000-0000-0000-0000-000000000000",
          "channelUrl": "https://www.cm.com/app/channels/00000000-0000-0000-0000-000000000000/sms/00000000-0000-0000-0000-000000000000/numbers/00000000-0000-0000-0000-000000000000",
          "isPending": true,
          "createdOnUtc": "2019-07-24T13:18:01.1650535"
        }
      ]
    },
    "whatsApp": {
      "templates": [
        {
          "id": "00000000-0000-0000-0000-000000000000",
          "channelID": "00000000-0000-0000-0000-000000000000",
          "channelUrl": "https://www.cm.com/app/channels/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/templates/00000000-0000-0000-0000-000000000000",
          "isPending": true,
          "createdOnUtc": "2019-06-27T14:03:59.5380232"
        }
      ],
      "profiles": [
        {
          "id": "00000000-0000-0000-0000-000000000000",
          "channelID": "00000000-0000-0000-0000-000000000000",
          "channelUrl": "https://www.cm.com/app/channels/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/profiles/00000000-0000-0000-0000-000000000000",
          "isPending": false,
          "createdOnUtc": "2019-05-21T15:23:49.2085959"
        }
      ]
    }
  },
  "comingSoon": [
    "RCS",
    "Viber"
  ]
}

Get a channel by id

Get a channel by id.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/channels/{channelId}

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelId
required
The channel identifier. string (uuid)

Responses

HTTP Code Description Schema
200 OK ApiChannel

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/channels/00000000-0000-0000-0000-000000000000

Response body (200)

{
  "id": "00000000-0000-0000-0000-000000000000",
  "channelID": "string",
  "channelUrl": "string",
  "isPending": true,
  "createdOnUtc": "2019-07-29T09:30:01.701Z"
}

Get available channel types

Get available channel types.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/channels/types

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Query skip
optional
The amount of results to skip. (pagination) integer
Query take
optional
The amount of results to take. (pagination) integer

Responses

HTTP Code Description Schema
200 OK array[ApiChannelTypeBaseResponse]

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/channels/types

Response body (200)

[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "currency": "EUR",
    "description": "WhatsApp",
    "startupCost": 0,
    "monthlyCost": 0,
    "channelRequestProcessingDays": 7
  }
]

Get a channel type by id

Get a channel type by id.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/channels/types/{channelTypeId}

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelTypeId
required
The channel type identifier. string (uuid)

Responses

HTTP Code Description Schema
200 OK ApiChannelTypeResponse

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/channels/00000000-0000-0000-0000-000000000000

Response body (200)

{
  "id": "00000000-0000-0000-0000-000000000000",
  "currency": "EUR",
  "description": "WhatsApp",
  "startupCost": 0,
  "monthlyCost": 0,
  "channelRequestProcessingDays": 7,
  "noticePeriodDays": 30,
  "categories": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "templates"
    },
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "profiles"
    },
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "businessAccount"
    }
  ]
}

Get available categories for a channel type

Get available categories for a channel type.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/channels/types/{channelTypeId}/categories

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelTypeId
required
The channel type identifier. string (uuid)

Responses

HTTP Code Description Schema
200 OK array[ApiChannelCategory]

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/channels/types/00000000-0000-0000-0000-000000000000/categories

Response body (200)

[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "name": "CATEGORY NAME"
  }
]



WhatsApp

WhatsApp description.

Get your business account

Get your business account.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/whatsapp/{channelRequestId}/businessaccount

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelRequestId
required
Your WhatsApp channel request identifier. string (uuid)

Responses

HTTP Code Description Schema
200 OK ApiWhatsAppBusinessAccount

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/businessaccount

Response body (200)

{
  "id": "00000000-0000-0000-0000-000000000000",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "channelRequestId": "00000000-0000-0000-0000-000000000000",
  "isPending": true,
  "cancelledOnUtc": "2019-07-29T09:30:01.877Z",
  "fulfilledOnUtc": "2019-07-29T09:30:01.877Z",
  "createdOnUtc": "2019-07-29T09:30:01.877Z"
}

Get supported WhatsApp languages

Get supported WhatsApp languages.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/whatsapp/supportedlanguages

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)

Responses

HTTP Code Description Schema
200 OK array[ApiWhatsAppSupportedLanguage]

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/whatsapp/supportedlanguages

Response body (200)

[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "code": "string",
    "name": "string"
  }
]

Get your active WhatsApp languages

Get your active WhatsApp languages.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/whatsapp/{channelRequestId}/languages

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelRequestId
required
Your WhatsApp channel request identifier. string (uuid)

Responses

HTTP Code Description Schema
200 OK array[ApiWhatsAppSupportedLanguage]

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/languages

Response body (200)

[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "code": "string",
    "name": "string"
  }
]

Activate a WhatsApp language

Activate a WhatsApp language.

POST https://api.cmtelecom.com/channels/v1/accounts/{accountId}/whatsapp/{channelRequestId}/languages

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelRequestId
required
Your WhatsApp channel request identifier. string (uuid)
Path languageId
required
The language identifier. string (uuid)

Responses

HTTP Code Description Schema
201 Created array[ApiWhatsAppSupportedLanguage]

Example HTTP request

Request path

POST https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/channels/requests

Response body (201)

[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "code": "string",
    "name": "string"
  }
]

Profiles

Get your profiles

Get your profiles.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/whatsapp/{channelRequestId}/profiles

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelRequestId
required
Your WhatsApp channel request identifier. string (uuid)
Query q
optional
The text to filter results on. string
Query skip
optional
The amount of results to skip. (pagination) integer
Query take
optional
The amount of results to take. (pagination) integer

Responses

HTTP Code Description Schema
200 OK array[ApiWhatsAppProfileBase]

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/profiles

Response body (200)

[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "accountId": "00000000-0000-0000-0000-000000000000",
    "phoneNumber": "0000000000",
    "name": "NAME",
    "image": "data:image/ ...",
    "isActive": false,
    "isOtpProcessed": false,
    "isOtpSent": false,
    "isPending": true,
    "createdOnUtc": "2019-07-31T07:12:06.004Z",
    "rejectedOnUtc": "2019-07-31T07:12:06.004Z",
    "cancelledOnUtc": "2019-07-31T07:12:06.004Z"
  }
]

Get a profile by id

Get a profile by id.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/whatsapp/{channelRequestId}/profiles/{profileId}

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelRequestId
required
Your WhatsApp channel request identifier. string (uuid)
Path profileId
required
The profile identifier. string (uuid)

Responses

HTTP Code Description Schema
200 OK ApiWhatsAppProfile

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/profiles/00000000-0000-0000-0000-000000000000

Response body (200)

{
  "id": "00000000-0000-0000-0000-000000000000",
  "channelId": "00000000-0000-0000-0000-000000000000",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "phoneNumber": "0000000000",
  "rejectionReason": "REJECTION REASON",
  "name": "NAME",
  "image": "data:image/ ...",
  "isActive": false,
  "isOtpProcessed": false,
  "isOtpSent": false,
  "isPending": true,
  "fulfilledOnUtc": "2019-07-31T06:20:52.280Z",
  "createdOnUtc": "2019-07-31T06:20:52.280Z",
  "rejectedOnUtc": "2019-07-31T06:20:52.280Z",
  "cancelledOnUtc": "2019-07-31T06:20:52.280Z"
}

Update a profile's phone number

Update a profile's phone number.

PUT https://api.cmtelecom.com/channels/v1/accounts/{accountId}/whatsapp/{channelRequestId}/profiles/{profileId}/phonenumber

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelRequestId
required
Your WhatsApp channel request identifier. string (uuid)
Path profileId
required
The profile identifier. string (uuid)
Query phoneNumber
required
The new phone number. string

Responses

HTTP Code Description Schema
202 Accepted ApiWhatsAppProfile

Example HTTP request

Request path

PUT https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/profiles/00000000-0000-0000-0000-000000000000/phonenumber?phoneNumber=0000000000

Response body (202)

{
  "id": "00000000-0000-0000-0000-000000000000",
  "channelId": "00000000-0000-0000-0000-000000000000",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "phoneNumber": "0000000000",
  "rejectionReason": "REJECTION REASON",
  "name": "NAME",
  "image": "data:image/ ...",
  "isActive": false,
  "isOtpProcessed": false,
  "isOtpSent": false,
  "isPending": true,
  "fulfilledOnUtc": "2019-07-31T06:20:52.280Z",
  "createdOnUtc": "2019-07-31T06:20:52.280Z",
  "rejectedOnUtc": "2019-07-31T06:20:52.280Z",
  "cancelledOnUtc": "2019-07-31T06:20:52.280Z"
}

Start a profile's otp validation

Start a profile's otp validation.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/whatsapp/{channelRequestId}/profiles/{profileId}/phonenumber/otp

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelRequestId
required
Your WhatsApp channel request identifier. string (uuid)
Path profileId
required
The profile identifier. string (uuid)
Query otpMethod
required
The one-time-password method. "voice", "sms"

Responses

HTTP Code Description Schema
202 Accepted

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/profiles/00000000-0000-0000-0000-000000000000/phonenumber/otp

Response body (202)

Finish a profile's otp validation

Finish a profile's otp validation.

POST https://api.cmtelecom.com/channels/v1/accounts/{accountId}/whatsapp/{channelRequestId}/profiles/{profileId}/phonenumber/otp

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelRequestId
required
Your WhatsApp channel request identifier. string (uuid)
Path profileId
required
The profile identifier. string (uuid)
Query phoneNumber
required
The profile's phone number. string
Query otp
required
The received one-time-password. string

Responses

HTTP Code Description Schema
200 Ok ApiWhatsAppProfile

Example HTTP request

Request path

POST https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/profiles/00000000-0000-0000-0000-000000000000/phonenumber/otp?phoneNumber=00000000000&otp=000000

Response body (201)

{
  "id": "00000000-0000-0000-0000-000000000000",
  "channelId": "00000000-0000-0000-0000-000000000000",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "phoneNumber": "0000000000",
  "rejectionReason": "REJECTION REASON",
  "name": "NAME",
  "image": "data:image/ ...",
  "isActive": true,
  "isOtpProcessed": true,
  "isOtpSent": true,
  "isPending": false,
  "fulfilledOnUtc": "2019-07-31T06:20:52.280Z",
  "createdOnUtc": "2019-07-31T06:20:52.280Z",
  "rejectedOnUtc": "2019-07-31T06:20:52.280Z",
  "cancelledOnUtc": "2019-07-31T06:20:52.280Z"
}

Templates

When you want to make use of Templates in your own application, you obviously want to know which templates you have available for your account, what the content is of those templates, and which parameters you can fill in to personalize/actualize the message.
This part of the Channels API provides this information, and more.

Templates are used when an organization wants to send a message to a user first. Templates must be setup and approved before they can be used. You can request new templates via CM.com (see implementation manual). A user must have opted in. As you know a user must first consent to receive messages in WhatsApp by opting in. The opt-in must be an active opt-in. See also Facebook's opt-in guide and our API documentation.

WhatsApp Templates can be used by the entire business account. When one account has more than one Business Profile, the registered templates can be used for All profiles.

Get supported template categories

Get supported template categories.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/whatsapp/{channelRequestId}/templates/categories

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelRequestId
required
Your WhatsApp channel request identifier. string (uuid)

Responses

HTTP Code Description Schema
200 OK array[ApiWhatsAppTemplateCategory]

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/templates/categories

Response body (200)

[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "name": "CATEGORY NAME"
  }
]

Create a template

POST https://api.cmtelecom.com/channels/v1/accounts/{accountId}/whatsapp/{channelRequestId}/templates

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelRequestId
required
Your WhatsApp channel request identifier. string (uuid)
Query templateCategoryId
required
The template category identifier. string (uuid)
Body templateRequest
required
The template request object. ApiWhatsAppTemplateBaseRequest

Responses

HTTP Code Description Schema
201 Created ApiWhatsAppTemplate

Example HTTP request

Request path

POST https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/templates?templateCategoryId=00000000-0000-0000-0000-000000000000

Request body

{
  "name": "TEMPLATE NAME"
}

Response body (201)

{
  "id": "00000000-0000-0000-0000-000000000000",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "templateCategoryId": "00000000-0000-0000-0000-000000000000",
  "facebookName": "facebook_name",
  "facebookNamespaceId": "0a0a0a0a0a0a0a0a",
  "name": "TEMPLATE NAME",
  "category": "TEMPLATE CATEGORY",
  "settings": {
    "replacementFields": [
      {
        "id": "00000000-0000-0000-0000-000000000000",
        "index": 0,
        "name": "FIELD NAME",
        "type": "FIELD TYPE"
      }
    ]
  },
  "languages": {
    "LANGUAGE NAME": {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "LANGUAGE NAME",
      "content": "LANGUAGE CONTENT",
      "rejectionReason": "REJECTION REASON",
      "isActive": false,
      "isIncomplete": true,
      "isValidationRequested": false,
      "isPending": false,
      "updatedOnUtc": "2019-07-31T07:12:06.050Z",
      "fulfilledOnUtc": "2019-07-31T07:12:06.050Z",
      "createdOnUtc": "2019-07-31T07:12:06.050Z",
      "rejectedOnUtc": "2019-07-31T07:12:06.050Z"
    }
  },
  "rejectionReason": "REJECTION REASON",
  "isActive": false,
  "isIncomplete": true,
  "isValidationRequested": false,
  "isPending": true,
  "updatedOnUtc": "2019-07-31T07:12:06.050Z",
  "fulfilledOnUtc": "2019-07-31T07:12:06.050Z",
  "createdOnUtc": "2019-07-31T07:12:06.050Z",
  "rejectedOnUtc": "2019-07-31T07:12:06.050Z",
  "cancelledOnUtc": "2019-07-31T07:12:06.050Z"
}

Get your templates

Via this request you can see the status of all your templates under your business account.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/whatsapp/{channelRequestId}/templates

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelRequestId
required
Your WhatsApp channel request identifier. string (uuid)
Query q
optional
The text to filter results on. string
Query skip
optional
The amount of results to skip. (pagination) integer
Query take
optional
The amount of results to take. (pagination) integer

Responses

HTTP Code Description Schema
200 OK array[ApiWhatsAppTemplateBaseResponse]

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/templates

Response body (200)

[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "accountId": "00000000-0000-0000-0000-000000000000",
    "templateCategoryId": "00000000-0000-0000-0000-000000000000",
    "facebookName": "facebook_name",
    "facebookNamespaceId": "0a0a0a0a0a0a0a0a",
    "name": "TEMPLATE NAME",
    "category": "TEMPLATE CATEGORY",
    "languages": {
      "LANGUAGE NAME": {
        "id": "00000000-0000-0000-0000-000000000000",
        "name": "LANGUAGE NAME",
        "content": "LANGUAGE CONTENT",
        "rejectionReason": "REJECTION REASON",
        "isActive": false,
        "isIncomplete": true,
        "isValidationRequested": false,
        "isPending": false,
        "updatedOnUtc": "2019-07-31T07:12:06.050Z",
        "fulfilledOnUtc": "2019-07-31T07:12:06.050Z",
        "createdOnUtc": "2019-07-31T07:12:06.050Z",
        "rejectedOnUtc": "2019-07-31T07:12:06.050Z"
      }
    },
    "isActive": false,
    "isIncomplete": true,
    "isValidationRequested": false,
    "isPending": true,
    "createdOnUtc": "2019-07-31T07:12:06.050Z",
    "rejectedOnUtc": "2019-07-31T07:12:06.050Z",
    "cancelledOnUtc": "2019-07-31T07:12:06.050Z"
  }
]

Get a template by id

Get a template by id.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/whatsapp/{channelRequestId}/templates/{templateId}

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelRequestId
required
Your WhatsApp channel request identifier. string (uuid)
Path templateId
required
The template identifier. string (uuid)

Responses

HTTP Code Description Schema
200 OK ApiWhatsAppTemplate

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/templates/00000000-0000-0000-0000-000000000000

Response body (200)

{
  "id": "00000000-0000-0000-0000-000000000000",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "templateCategoryId": "00000000-0000-0000-0000-000000000000",
  "facebookName": "facebook_name",
  "facebookNamespaceId": "0a0a0a0a0a0a0a0a",
  "name": "TEMPLATE NAME",
  "category": "TEMPLATE CATEGORY",
  "settings": {
    "replacementFields": [
      {
        "id": "00000000-0000-0000-0000-000000000000",
        "index": 0,
        "name": "FIELD NAME",
        "type": "FIELD TYPE"
      }
    ]
  },
  "languages": {
    "LANGUAGE NAME": {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "LANGUAGE NAME",
      "content": "LANGUAGE CONTENT",
      "rejectionReason": "REJECTION REASON",
      "isActive": false,
      "isIncomplete": true,
      "isValidationRequested": false,
      "isPending": false,
      "updatedOnUtc": "2019-07-31T07:12:06.050Z",
      "fulfilledOnUtc": "2019-07-31T07:12:06.050Z",
      "createdOnUtc": "2019-07-31T07:12:06.050Z",
      "rejectedOnUtc": "2019-07-31T07:12:06.050Z"
    }
  },
  "rejectionReason": "REJECTION REASON",
  "isActive": false,
  "isIncomplete": true,
  "isValidationRequested": false,
  "isPending": true,
  "updatedOnUtc": "2019-07-31T07:12:06.050Z",
  "fulfilledOnUtc": "2019-07-31T07:12:06.050Z",
  "createdOnUtc": "2019-07-31T07:12:06.050Z",
  "rejectedOnUtc": "2019-07-31T07:12:06.050Z",
  "cancelledOnUtc": "2019-07-31T07:12:06.050Z"
}

Update a template

Update a template.

PUT https://api.cmtelecom.com/channels/v1/accounts/{accountId}/whatsapp/{channelRequestId}/templates/{templateId}

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelRequestId
required
Your WhatsApp channel request identifier. string (uuid)
Path templateId
required
The template identifier. string (uuid)
Body templateUpdate
required
The template update. ApiWhatsAppTemplateUpdateRequest

Responses

HTTP Code Description Schema
200 OK ApiWhatsAppTemplate

Example HTTP request

Request path

PUT https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/templates/00000000-0000-0000-0000-000000000000

Request body

{
  "templateCategoryId": "00000000-0000-0000-0000-000000000000",
  "name": "TEMPLATE NAME",
  "languages": {
    "LANGUAGE NAME": {
      "content": "LANGUAGE CONTENT"
    }
  }
}

Response body (200)

{
  "id": "00000000-0000-0000-0000-000000000000",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "templateCategoryId": "00000000-0000-0000-0000-000000000000",
  "facebookName": "facebook_name",
  "facebookNamespaceId": "0a0a0a0a0a0a0a0a",
  "name": "TEMPLATE NAME",
  "category": "TEMPLATE CATEGORY",
  "settings": {
    "replacementFields": [
      {
        "id": "00000000-0000-0000-0000-000000000000",
        "index": 0,
        "name": "FIELD NAME",
        "type": "FIELD TYPE"
      }
    ]
  },
  "languages": {
    "LANGUAGE NAME": {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "LANGUAGE NAME",
      "content": "LANGUAGE CONTENT",
      "rejectionReason": "REJECTION REASON",
      "isActive": false,
      "isIncomplete": true,
      "isValidationRequested": false,
      "isPending": false,
      "updatedOnUtc": "2019-07-31T07:12:06.050Z",
      "fulfilledOnUtc": "2019-07-31T07:12:06.050Z",
      "createdOnUtc": "2019-07-31T07:12:06.050Z",
      "rejectedOnUtc": "2019-07-31T07:12:06.050Z"
    }
  },
  "rejectionReason": "REJECTION REASON",
  "isActive": false,
  "isIncomplete": true,
  "isValidationRequested": false,
  "isPending": true,
  "updatedOnUtc": "2019-07-31T07:12:06.050Z",
  "fulfilledOnUtc": "2019-07-31T07:12:06.050Z",
  "createdOnUtc": "2019-07-31T07:12:06.050Z",
  "rejectedOnUtc": "2019-07-31T07:12:06.050Z",
  "cancelledOnUtc": "2019-07-31T07:12:06.050Z"
}

Request validation of a template

Request validation of a template.

POST https://api.cmtelecom.com/channels/v1/accounts/{accountId}/whatsapp/{channelRequestId}/templates/{templateId}/validate

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelRequestId
required
Your WhatsApp channel request identifier. string (uuid)
Path templateId
required
The template identifier. string (uuid)

Responses

HTTP Code Description Schema
202 Accepted ApiWhatsAppTemplate

Example HTTP request

Request path

POST https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/templates/00000000-0000-0000-0000-000000000000/validate

Response body (202)

{
  "id": "00000000-0000-0000-0000-000000000000",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "templateCategoryId": "00000000-0000-0000-0000-000000000000",
  "facebookName": "facebook_name",
  "facebookNamespaceId": "0a0a0a0a0a0a0a0a",
  "name": "TEMPLATE NAME",
  "category": "TEMPLATE CATEGORY",
  "settings": {
    "replacementFields": [
      {
        "id": "00000000-0000-0000-0000-000000000000",
        "index": 0,
        "name": "FIELD NAME",
        "type": "FIELD TYPE"
      }
    ]
  },
  "languages": {
    "LANGUAGE NAME": {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "LANGUAGE NAME",
      "content": "LANGUAGE CONTENT",
      "rejectionReason": "REJECTION REASON",
      "isActive": false,
      "isIncomplete": false,
      "isValidationRequested": false,
      "isPending": false,
      "updatedOnUtc": "2019-07-31T07:12:06.050Z",
      "fulfilledOnUtc": "2019-07-31T07:12:06.050Z",
      "createdOnUtc": "2019-07-31T07:12:06.050Z",
      "rejectedOnUtc": "2019-07-31T07:12:06.050Z"
    }
  },
  "rejectionReason": "REJECTION REASON",
  "isActive": false,
  "isIncomplete": false,
  "isValidationRequested": true,
  "isPending": false,
  "updatedOnUtc": "2019-07-31T07:12:06.050Z",
  "fulfilledOnUtc": "2019-07-31T07:12:06.050Z",
  "createdOnUtc": "2019-07-31T07:12:06.050Z",
  "rejectedOnUtc": "2019-07-31T07:12:06.050Z",
  "cancelledOnUtc": "2019-07-31T07:12:06.050Z"
}

Create a template replacement field

Fields to personalize, localize and actualize messages.

POST https://api.cmtelecom.com/channels/v1/accounts/{accountId}/whatsapp/{channelRequestId}/templates/{templateId}/fields

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelRequestId
required
Your WhatsApp channel request identifier. string (uuid)
Path templateId
required
The template identifier. string (uuid)
Query name
required
The field name. string
Query type
required
The field type. "text", "currency", "datetime"

Responses

HTTP Code Description Schema
201 Created ApiWhatsAppTemplate

Example HTTP request

Request path

POST https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/templates/00000000-0000-0000-0000-000000000000/fields?name=FIELDNAME&type=text

Response body (202)

{
  "id": "00000000-0000-0000-0000-000000000000",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "templateCategoryId": "00000000-0000-0000-0000-000000000000",
  "facebookName": "facebook_name",
  "facebookNamespaceId": "0a0a0a0a0a0a0a0a",
  "name": "TEMPLATE NAME",
  "category": "TEMPLATE CATEGORY",
  "settings": {
    "replacementFields": [
      {
        "id": "00000000-0000-0000-0000-000000000000",
        "index": 0,
        "name": "FIELDNAME",
        "type": "text"
      }
    ]
  },
  "languages": {
    "LANGUAGE NAME": {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "LANGUAGE NAME",
      "content": "LANGUAGE CONTENT",
      "rejectionReason": "REJECTION REASON",
      "isActive": false,
      "isIncomplete": false,
      "isValidationRequested": false,
      "isPending": false,
      "updatedOnUtc": "2019-07-31T07:12:06.050Z",
      "fulfilledOnUtc": "2019-07-31T07:12:06.050Z",
      "createdOnUtc": "2019-07-31T07:12:06.050Z",
      "rejectedOnUtc": "2019-07-31T07:12:06.050Z"
    }
  },
  "rejectionReason": "REJECTION REASON",
  "isActive": false,
  "isIncomplete": false,
  "isValidationRequested": true,
  "isPending": false,
  "updatedOnUtc": "2019-07-31T07:12:06.050Z",
  "fulfilledOnUtc": "2019-07-31T07:12:06.050Z",
  "createdOnUtc": "2019-07-31T07:12:06.050Z",
  "rejectedOnUtc": "2019-07-31T07:12:06.050Z",
  "cancelledOnUtc": "2019-07-31T07:12:06.050Z"
}

Update a template replacement field

Fields to personalize, localize and actualize messages.

PUT https://api.cmtelecom.com/channels/v1/accounts/{accountId}/whatsapp/{channelRequestId}/templates/{templateId}/fields/{fieldId}

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelRequestId
required
Your WhatsApp channel request identifier. string (uuid)
Path templateId
required
The template identifier. string (uuid)
Path fieldId
required
The field identifier. string (uuid)
Query name
required
The new field name. string
Query type
required
The new field type. "text", "currency", "datetime"

Responses

HTTP Code Description Schema
200 OK ApiWhatsAppTemplate

Example HTTP request

Request path

PUT https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/templates/00000000-0000-0000-0000-000000000000/fields/00000000-0000-0000-0000-000000000000?name=FIELDNAME2&type=currency

Request body

{
  "templateCategoryId": "00000000-0000-0000-0000-000000000000",
  "name": "TEMPLATE NAME",
  "languages": {
    "LANGUAGE NAME": {
      "content": "LANGUAGE CONTENT"
    }
  }
}

Response body (200)

{
  "id": "00000000-0000-0000-0000-000000000000",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "templateCategoryId": "00000000-0000-0000-0000-000000000000",
  "facebookName": "facebook_name",
  "facebookNamespaceId": "0a0a0a0a0a0a0a0a",
  "name": "TEMPLATE NAME",
  "category": "TEMPLATE CATEGORY",
  "settings": {
    "replacementFields": [
      {
        "id": "00000000-0000-0000-0000-000000000000",
        "index": 0,
        "name": "FIELDNAME2",
        "type": "currency"
      }
    ]
  },
  "languages": {
    "LANGUAGE NAME": {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "LANGUAGE NAME",
      "content": "LANGUAGE CONTENT",
      "rejectionReason": "REJECTION REASON",
      "isActive": false,
      "isIncomplete": false,
      "isValidationRequested": false,
      "isPending": false,
      "updatedOnUtc": "2019-07-31T07:12:06.050Z",
      "fulfilledOnUtc": "2019-07-31T07:12:06.050Z",
      "createdOnUtc": "2019-07-31T07:12:06.050Z",
      "rejectedOnUtc": "2019-07-31T07:12:06.050Z"
    }
  },
  "rejectionReason": "REJECTION REASON",
  "isActive": false,
  "isIncomplete": false,
  "isValidationRequested": true,
  "isPending": false,
  "updatedOnUtc": "2019-07-31T07:12:06.050Z",
  "fulfilledOnUtc": "2019-07-31T07:12:06.050Z",
  "createdOnUtc": "2019-07-31T07:12:06.050Z",
  "rejectedOnUtc": "2019-07-31T07:12:06.050Z",
  "cancelledOnUtc": "2019-07-31T07:12:06.050Z"
}

Delete a template replacement field

Fields to personalize, localize and actualize messages.

DELETE https://api.cmtelecom.com/channels/v1/accounts/{accountId}/whatsapp/{channelRequestId}/templates/{templateId}/fields/{fieldId}

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path channelRequestId
required
Your WhatsApp channel request identifier. string (uuid)
Path templateId
required
The template identifier. string (uuid)
Path fieldId
required
The field identifier. string (uuid)

Responses

HTTP Code Description Schema
200 OK ApiWhatsAppTemplate

Example HTTP request

Request path

DELETE https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/templates/00000000-0000-0000-0000-000000000000/fields/00000000-0000-0000-0000-000000000000

Response body (200)

{
  "id": "00000000-0000-0000-0000-000000000000",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "templateCategoryId": "00000000-0000-0000-0000-000000000000",
  "facebookName": "facebook_name",
  "facebookNamespaceId": "0a0a0a0a0a0a0a0a",
  "name": "TEMPLATE NAME",
  "category": "TEMPLATE CATEGORY",
  "settings": {
    "replacementFields": []
  },
  "languages": {
    "LANGUAGE NAME": {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "LANGUAGE NAME",
      "content": "LANGUAGE CONTENT",
      "rejectionReason": "REJECTION REASON",
      "isActive": false,
      "isIncomplete": false,
      "isValidationRequested": false,
      "isPending": false,
      "updatedOnUtc": "2019-07-31T07:12:06.050Z",
      "fulfilledOnUtc": "2019-07-31T07:12:06.050Z",
      "createdOnUtc": "2019-07-31T07:12:06.050Z",
      "rejectedOnUtc": "2019-07-31T07:12:06.050Z"
    }
  },
  "rejectionReason": "REJECTION REASON",
  "isActive": false,
  "isIncomplete": false,
  "isValidationRequested": true,
  "isPending": false,
  "updatedOnUtc": "2019-07-31T07:12:06.050Z",
  "fulfilledOnUtc": "2019-07-31T07:12:06.050Z",
  "createdOnUtc": "2019-07-31T07:12:06.050Z",
  "rejectedOnUtc": "2019-07-31T07:12:06.050Z",
  "cancelledOnUtc": "2019-07-31T07:12:06.050Z"
}



Keyword claims

Claim a keyword on a shared or dedicated (owned) number.

Claim a keyword

Claim a keyword. (Or simulate the outcome)

POST https://api.cmtelecom.com/channels/v1/accounts/{accountId}/keywords

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Query simulate
optional
If set to true no actual operations will be performed, but validation will occur. boolean
Body claim
required
The claim. ApiKeywordClaimRequest

Responses

HTTP Code Description Schema
201 Created ApiKeywordClaimResponse

Example HTTP request

Request path

POST https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/keywords&simulate=true

Request body

{
  "phoneNumberId": "0000000000",
  "keyword": "KEYWORD"
}

Response body (201)

{
  "id": "00000000-0000-0000-0000-000000000000",
  "channelId": "00000000-0000-0000-0000-000000000000",
  "phoneNumber": "0000000000",
  "country": "NL",
  "keyword": "KEYWORD",
  "currency": "EUR",
  "startupCost": 0,
  "monthlyCost": 0,
  "noticePeriodDays": 0,
  "claimedOnUtc": "2019-03-18T09:56:31.723Z"
}

Get your claimed keywords

This call is used to get all claimed keywords you have registered with CM.com and their status.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/keywords

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Query phoneNumber
optional
The phone numbers to filter the results on. array[string]
Query keyword
optional
The keywords to filter the results on. array[string]
Query country
optional
The country to filter the results on. string
Query skip
optional
The amount of results to skip. (pagination) integer
Query take
optional
The amount of results to take. (pagination) integer

Responses

HTTP Code Description Schema
200 OK array[ApiKeywordClaimResponse]

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/keywords

Response body (200)

[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "channelId": "00000000-0000-0000-0000-000000000000",
    "phoneNumber": "0000000000",
    "country": "NL",
    "keyword": "KEYWORD",
    "currency": "EUR",
    "startupCost": 0,
    "monthlyCost": 0,
    "noticePeriodDays": 0,
    "claimedOnUtc": "2019-03-18T09:56:31.723Z"
  }
]

Get a keyword claim by id

When you require to know the status of a keyword claim, you can request that too.
You can do this by implementing this call.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/keywords/{keywordClaimId}

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path keywordClaimId
required
The claim identifier. string (uuid)

Responses

HTTP Code Description Schema
200 OK ApiKeywordClaimResponse

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/keywords/00000000-0000-0000-0000-000000000000

Response body (200)

{
  "id": "00000000-0000-0000-0000-000000000000",
  "channelId": "00000000-0000-0000-0000-000000000000",
  "phoneNumber": "0000000000",
  "country": "NL",
  "keyword": "KEYWORD",
  "currency": "EUR",
  "startupCost": 0,
  "monthlyCost": 0,
  "noticePeriodDays": 0,
  "claimedOnUtc": "2019-03-18T09:56:31.723Z"
}

Cancel a keyword claim

If you make use of a keyword you no longer need, you can cancel the claim.
Your invoicing will be stopped coming invoicing month, which means you only need to pay for the current month.
Right after you cancel your keyword subscription this can no longer be used by you, we block it right away and do not await the end of your monthly subscription.

DELETE https://api.cmtelecom.com/channels/v1/accounts/{accountId}/keywords/{keywordClaimId}

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path keywordClaimId
required
The claim identifier. string (uuid)

Responses

HTTP Code Description Schema
204 NoContent

Example HTTP request

Request path

DELETE https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/keywords/00000000-0000-0000-0000-000000000000

Verify a claim

Verifies a claim by id and returns an array of strings describing found issues.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/keywords/{keywordClaimId}/verify

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path keywordClaimId
required
The claim identifier. string (uuid)

Responses

HTTP Code Description Schema
200 OK array[string]

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/keywords/00000000-0000-0000-0000-000000000000/verify

Response body (200)

[
  "string"
]



Dedicated phone numbers

Rent a dedicated phone number.

Request a phone number

Request to rent a dedicated phone number. (Or simulate the outcome)

POST https://api.cmtelecom.com/channels/v1/accounts/{accountId}/phonenumbers/requests

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Query numberTypeId
required
The number type identifier. string (uuid)
Query simulate
optional
If set to true no actual operations will be performed, but validation will occur. boolean

Responses

HTTP Code Description Schema
201 Created ApiNumberRequestResponse

Example HTTP request

Request path

POST https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/phonenumbers/requests?numberTypeId=00000000-0000-0000-0000-000000000000&simulate=true

Response body (201)

{
  "id": "00000000-0000-0000-0000-000000000000",
  "channelId": "00000000-0000-0000-0000-000000000000",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "phoneNumberId": "0000000000",
  "numberType": 
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "purpose": [
      "SMS"
    ],
    "country": "NL",
    "category": "MOBILE",
    "description": "A Dutch mobile number",
    "currency": "EUR",
    "startupCost": 0,
    "monthlyCost": 0,
    "noticePeriodDays": 0,
    "keywordStartupCost": 0,
    "keywordMonthlyCost": 0,
    "keywordNoticePeriodDays": 0,
    "numberRequestProcessingDays": 0
  },
  "isPending": true,
  "isActive": false,
  "cancelledOnUtc": "2019-07-29T09:30:01.785Z",
  "fulfilledOnUtc": "2019-03-18T09:56:31.764Z",
  "createdOnUtc": "2019-01-31T10:39:16.241Z"
}

Get your phone number requests

This call is used to get all your phone number requests registered with CM.com and their status.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/phonenumbers/requests

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Query country
optional
The country to filter the results on. string
Query isPending
optional
If set, filters the result on pending state. boolean
Query skip
optional
The amount of results to skip. (pagination) integer
Query take
optional
The amount of results to take. (pagination) integer

Responses

HTTP Code Description Schema
200 OK array[ApiNumberRequestResponse]

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/phonenumbers/requests?country=NL&isPending=true&skip=0&take=1

Response body (200)

[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "channelId": "00000000-0000-0000-0000-000000000000",
    "accountId": "00000000-0000-0000-0000-000000000000",
    "phoneNumberId": "0000000000",
    "numberType": 
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "purpose": [
        "SMS"
      ],
      "country": "NL",
      "category": "MOBILE",
      "description": "A Dutch mobile number",
      "currency": "EUR",
      "startupCost": 0,
      "monthlyCost": 0,
      "noticePeriodDays": 0,
      "keywordStartupCost": 0,
      "keywordMonthlyCost": 0,
      "keywordNoticePeriodDays": 0,
      "numberRequestProcessingDays": 0
    },
    "isPending": true,
    "isActive": false,
    "cancelledOnUtc": "2019-07-29T09:30:01.785Z",
    "fulfilledOnUtc": "2019-03-18T09:56:31.764Z",
    "createdOnUtc": "2019-01-31T10:39:16.241Z"
  }
]

Cancel a phone number subscription

If you rent a phone numbers you no longer need, you can cancel the subscription.
Your invoicing will be stopped coming invoicing month, which means you only need to pay for the current month.
Right after you cancel your phone number subscription this can no longer be used by you, we block it right away and do not await the end of your monthly subscription.

DELETE https://api.cmtelecom.com/channels/v1/accounts/{accountId}/phonenumbers/{phoneNumberId}

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path phoneNumberId
required
The phone number identifier. string (uuid)

Responses

HTTP Code Description Schema
204 NoContent

Example HTTP request

Request path

DELETE https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/phonenumbers/0000000000

Get available phone numbers

This call is used to get all available phone numbers registered with CM.com.
Only shared (for claiming a keyword on) and owned phone numbers are returned.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/phonenumbers

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Query query
optional
The query to search for and filter the results on. string
Query country
optional
The country to filter the results on. string
Query isOwned
optional
If set, result is filtered on whether a phone number is/is not owned by you. boolean
Query isShortcode
optional
If set, result is filtered on whether a phone number is/is not a shortcode. boolean
Query isShared
optional
If set, result is filtered on whether a phone number is/is not a shared number. boolean
Query skip
optional
The amount of results to skip. (pagination) integer
Query take
optional
The amount of results to take. (pagination) integer

Responses

HTTP Code Description Schema
200 OK array[ApiPhoneNumberResponse]

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/phonenumbers?query=0000&country=NL&isOwned=true&isShortcode=false&isShared=false&skip=0&take=1

Response body (200)

[
  {
    "id": "0000000000",
    "accountId": "00000000-0000-0000-0000-000000000000",
    "numberType": 
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "purpose": [
        "SMS"
      ],
      "country": "NL",
      "category": "MOBILE",
      "description": "A Dutch mobile number",
      "currency": "EUR",
      "startupCost": 0,
      "monthlyCost": 0,
      "noticePeriodDays": 0,
      "keywordStartupCost": 0,
      "keywordMonthlyCost": 0,
      "keywordNoticePeriodDays": 0,
      "numberRequestProcessingDays": 0
    },
    "number": "0000000000",
    "isShared": false,
    "ownedSinceUtc": "2019-02-05T12:34:08.614Z"
  }
]

Get an available phone number by id

When you require to know the status of a phone number, you can request that too.
You can do this by implementing this call.
Only shared (for claiming a keyword on) and owned phone numbers are returned.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/phonenumbers/{phoneNumberId}

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Path phoneNumberId
required
The phone number identifier. string (uuid)

Responses

HTTP Code Description Schema
200 OK ApiPhoneNumberResponse

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000//phonenumbers/0000000000

Response body (200)

{
  "id": "0000000000",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "numberType": 
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "purpose": [
      "SMS"
    ],
    "country": "NL",
    "category": "MOBILE",
    "description": "A Dutch mobile number",
    "currency": "EUR",
    "startupCost": 0,
    "monthlyCost": 0,
    "noticePeriodDays": 0,
    "keywordStartupCost": 0,
    "keywordMonthlyCost": 0,
    "keywordNoticePeriodDays": 0,
    "numberRequestProcessingDays": 0
  },
  "number": "0000000000",
  "isShared": false,
  "ownedSinceUtc": "2019-02-05T12:34:08.614Z"
}

Get available phone number types

This call is used to get all available number types registered with CM.com.
Number types are linked to phone numbers and are mandatory in requesting a dedicated phone number.

GET https://api.cmtelecom.com/channels/v1/accounts/{accountId}/phonenumbers/numbertypes

Parameters

Type Name Description Schema
Path accountId
required
Your account identifier. string (uuid)
Query country
optional
The country to filter the results on. string
Query type
optional
The type to filter the results on. string
Query purpose
optional
The purpose to filter the results on. string
Query skip
optional
The amount of results to skip. (pagination) integer
Query take
optional
The amount of results to take. (pagination) integer

Responses

HTTP Code Description Schema
200 OK array[ApiNumberTypeResponse]

Example HTTP request

Request path

GET https://api.cmtelecom.com/channels/v1/accounts/00000000-0000-0000-0000-000000000000/phonenumbers?country=NL&isOwned=true&isShortcode=false&isShared=false&skip=0&take=1

Response body (200)

[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "purpose": [
      "SMS"
    ],
    "country": "NL",
    "category": "MOBILE",
    "description": "A Dutch mobile number",
    "currency": "EUR",
    "startupCost": 0,
    "monthlyCost": 0,
    "noticePeriodDays": 0,
    "keywordStartupCost": 0,
    "keywordMonthlyCost": 0,
    "keywordNoticePeriodDays": 0,
    "numberRequestProcessingDays": 0
  }
]



Model Definitions

Definitions of Numbers API specific request and response data models.
This includes names, types, descriptions and a JSON representation.


Channels

Models used at channels related endpoints.


ApiChannelRequestBase

Model
Name Schema Description
id string (uuid) The channel request identifier.
channelTypeId string (uuid) The channel type identifier.
isPending boolean Indicates whether this request is pending. A request is pending when the underlying onboarding process is not yet finalized.
isActive boolean Indicates whether this request is active. A request is active when the underlying onboarding process is finalized.
createdOnUtc timestamp (UTC) The moment (UTC) the request was created.
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "channelTypeId": "00000000-0000-0000-0000-000000000000",
  "isPending": false,
  "isActive": true,
  "createdOnUtc": "2019-07-29T09:30:01.709Z"
}


ApiChannelRequest

Model
Name Schema Description
id string (uuid) The channel request identifier.
channelTypeId string (uuid) The channel type identifier.
isPending boolean Indicates whether this request is pending. A request is pending when the underlying onboarding process is not yet finalized.
isActive boolean Indicates whether this request is active. A request is active when the underlying onboarding process is finalized.
cancelledOnUtc timestamp (UTC) The moment (UTC) the request was cancelled.
fulfilledOnUtc timestamp (UTC) The moment (UTC) the request was fulfilled.
createdOnUtc timestamp (UTC) The moment (UTC) the request was created.
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "channelTypeId": "00000000-0000-0000-0000-000000000000",
  "isPending": false,
  "isActive": true,
  "cancelledOnUtc": "2019-07-29T09:30:01.714Z",
  "fulfilledOnUtc": "2019-07-29T09:30:01.714Z",
  "createdOnUtc": "2019-07-29T09:30:01.714Z"
}


ApiChannels

Model
Name Schema Description
available ApiChannelsAvailable The currently available channel types.
comingSoon array[string] Channel types that will become available soon.
JSON
{
  "available": {
    "sms": {
      "keywords": [
        {
          "id": "00000000-0000-0000-0000-000000000000",
          "channelID": "0000000000|KEYWORD",
          "channelUrl": "https://www.cm.com/app/channels/00000000-0000-0000-0000-000000000000/sms/00000000-0000-0000-0000-000000000000/keywords/0000000000|KEYWORD",
          "isPending": false,
          "createdOnUtc": "2019-07-24T13:43:58.3329114"
        }
      ],
      "numbers": [
        {
          "id": "00000000-0000-0000-0000-000000000000",
          "channelID": "00000000-0000-0000-0000-000000000000",
          "channelUrl": "https://www.cm.com/app/channels/00000000-0000-0000-0000-000000000000/sms/00000000-0000-0000-0000-000000000000/numbers/00000000-0000-0000-0000-000000000000",
          "isPending": true,
          "createdOnUtc": "2019-07-24T13:18:01.1650535"
        }
      ]
    },
    "whatsApp": {
      "templates": [
        {
          "id": "00000000-0000-0000-0000-000000000000",
          "channelID": "00000000-0000-0000-0000-000000000000",
          "channelUrl": "https://www.cm.com/app/channels/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/templates/00000000-0000-0000-0000-000000000000",
          "isPending": true,
          "createdOnUtc": "2019-06-27T14:03:59.5380232"
        }
      ],
      "profiles": [
        {
          "id": "00000000-0000-0000-0000-000000000000",
          "channelID": "00000000-0000-0000-0000-000000000000",
          "channelUrl": "https://www.cm.com/app/channels/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/profiles/00000000-0000-0000-0000-000000000000",
          "isPending": false,
          "createdOnUtc": "2019-05-21T15:23:49.2085959"
        }
      ]
    }
  },
  "comingSoon": [
    "RCS",
    "Viber"
  ]
}


ApiChannelsAvailable

The object contains of a field for each available channel.
Each field is a dictionary containing a key for each category and a collection of configured channels as value.

JSON
{
  "sms": {
    "keywords": [
      {
        "id": "00000000-0000-0000-0000-000000000000",
        "channelID": "0000000000|KEYWORD",
        "channelUrl": "https://www.cm.com/app/channels/00000000-0000-0000-0000-000000000000/sms/00000000-0000-0000-0000-000000000000/keywords/0000000000|KEYWORD",
        "isPending": false,
        "createdOnUtc": "2019-07-24T13:43:58.3329114"
      }
    ],
    "numbers": [
      {
        "id": "00000000-0000-0000-0000-000000000000",
        "channelID": "00000000-0000-0000-0000-000000000000",
        "channelUrl": "https://www.cm.com/app/channels/00000000-0000-0000-0000-000000000000/sms/00000000-0000-0000-0000-000000000000/numbers/00000000-0000-0000-0000-000000000000",
        "isPending": true,
        "createdOnUtc": "2019-07-24T13:18:01.1650535"
      }
    ]
  },
  "whatsApp": {
    "templates": [
      {
        "id": "00000000-0000-0000-0000-000000000000",
        "channelID": "00000000-0000-0000-0000-000000000000",
        "channelUrl": "https://www.cm.com/app/channels/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/templates/00000000-0000-0000-0000-000000000000",
        "isPending": true,
        "createdOnUtc": "2019-06-27T14:03:59.5380232"
      }
    ],
    "profiles": [
      {
        "id": "00000000-0000-0000-0000-000000000000",
        "channelID": "00000000-0000-0000-0000-000000000000",
        "channelUrl": "https://www.cm.com/app/channels/00000000-0000-0000-0000-000000000000/whatsapp/00000000-0000-0000-0000-000000000000/profiles/00000000-0000-0000-0000-000000000000",
        "isPending": false,
        "createdOnUtc": "2019-05-21T15:23:49.2085959"
      }
    ]
  }
  ...
}


ApiChannel

Model
Name Schema Description
id string (uuid) The channel identifier.
channelID string The underlying entity identifier.
channelUrl string The URL to the Channels web application.
isPending boolean Indicates whether this channel is pending. A channel is pending when the underlying entity is not yet active.
createdOnUtc timestamp (UTC) The moment (UTC) the channel was created.
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "channelID": "CHANNELID",
  "channelUrl": "string",
  "isPending": true,
  "createdOnUtc": "2019-07-29T09:30:01.701Z"
}


ApiChannelTypeBaseResponse

Model
Name Schema Description
id string (uuid) The channel type identifier.
currency string The currency in the ISO 4217 notation.
description string Text that describes the channel type.
startupCost integer The startup cost.
monthlyCost integer The monthly cost.
channelRequestProcessingDays integer The processing time in days to fulfill a request of this type.
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "currency": "EUR",
  "description": "WhatsApp",
  "startupCost": 0,
  "monthlyCost": 0,
  "channelRequestProcessingDays": 7
}


ApiChannelTypeResponse

Model
Name Schema Description
id string (uuid) The channel type identifier.
currency string The currency in the ISO 4217 notation.
description string Text that describes the channel type.
startupCost integer The startup cost.
monthlyCost integer The monthly cost.
channelRequestProcessingDays integer The processing time in days to fulfill a request of this type.
noticePeriodDays integer The notice period in days.
categories array[ApiChannelCategory] The categories for the channel type.
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "currency": "EUR",
  "description": "WhatsApp",
  "startupCost": 0,
  "monthlyCost": 0,
  "channelRequestProcessingDays": 7,
  "noticePeriodDays": 30,
  "categories": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "templates"
    },
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "profiles"
    },
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "businessAccount"
    }
  ]
}


ApiChannelCategory

Model
Name Schema Description
id string (uuid) The channel category identifier.
name string The category name.
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "name": "CATEGORY NAME"
}


Channels

Models used at WhatsApp related endpoints.


ApiWhatsAppBusinessAccount

Model
Name Schema Description
id string (uuid) The business account identifier.
accountId string (uuid) Your account identifier.
channelRequestId string (uuid) Your WhatsApp channel request identifier.
isPending boolean Indicates whether this request is pending. A request is pending when the underlying onboarding process is not yet finalized.
cancelledOnUtc timestamp (UTC) The moment (UTC) the request was cancelled.
fulfilledOnUtc timestamp (UTC) The moment (UTC) the request was fulfilled.
createdOnUtc timestamp (UTC) The moment (UTC) the request was created.
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "channelRequestId": "00000000-0000-0000-0000-000000000000",
  "isPending": true,
  "cancelledOnUtc": "2019-07-29T09:30:01.877Z",
  "fulfilledOnUtc": "2019-07-29T09:30:01.877Z",
  "createdOnUtc": "2019-07-29T09:30:01.877Z"
}


ApiWhatsAppSupportedLanguage

Model
Name Schema Description
id string (uuid) The language identifier.
code string The WhatsApp language code.
name string The WhatsApp language name.
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "code": "string",
  "name": "string"
}


ApiWhatsAppProfile

Model
Name Schema Description
id string (uuid) The profile identifier.
channelId string (uuid) The channel identifier.
accountId string (uuid) Your account identifier.
phoneNumber string The phone number linked to the profile.
rejectionReason string The reason why the profile was rejected (if rejected).
name string The profile name.
image string The base64 encoded profile image.
isActive boolean Indicates whether this profile is active.
isOtpProcessed boolean Indicates whether the one-time-password for this profile is validated.
isOtpSent boolean Indicates whether the one-time-password for this profile is requested.
isPending boolean Indicates whether this profile is pending.
fulfilledOnUtc timestamp (UTC) The moment (UTC) the profile went active.
createdOnUtc timestamp (UTC) The moment (UTC) the profile was created.
rejectedOnUtc timestamp (UTC) The moment (UTC) the profile was rejected.
cancelledOnUtc timestamp (UTC) The moment (UTC) the profile was cancelled.
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "channelId": "00000000-0000-0000-0000-000000000000",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "phoneNumber": "0000000000",
  "rejectionReason": "REJECTION REASON",
  "name": "NAME",
  "image": "data:image/ ...",
  "isActive": false,
  "isOtpProcessed": false,
  "isOtpSent": false,
  "isPending": true,
  "fulfilledOnUtc": "2019-07-31T06:20:52.280Z",
  "createdOnUtc": "2019-07-31T06:20:52.280Z",
  "rejectedOnUtc": "2019-07-31T06:20:52.280Z",
  "cancelledOnUtc": "2019-07-31T06:20:52.280Z"
}


ApiWhatsAppProfileBase

Model
Name Schema Description
id string (uuid) The profile identifier.
accountId string (uuid) Your account identifier.
phoneNumber string The phone number linked to the profile.
name string The profile name.
image string The base64 encoded profile image.
isActive boolean Indicates whether this profile is active.
isOtpProcessed boolean Indicates whether the one-time-password for this profile is validated.
isOtpSent boolean Indicates whether the one-time-password for this profile is requested.
isPending boolean Indicates whether this profile is pending.
createdOnUtc timestamp (UTC) The moment (UTC) the profile was created.
rejectedOnUtc timestamp (UTC) The moment (UTC) the profile was rejected.
cancelledOnUtc timestamp (UTC) The moment (UTC) the profile was cancelled.
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "phoneNumber": "0000000000",
  "name": "NAME",
  "image": "data:image/ ...",
  "isActive": false,
  "isOtpProcessed": false,
  "isOtpSent": false,
  "isPending": true,
  "createdOnUtc": "2019-07-31T07:12:06.004Z",
  "rejectedOnUtc": "2019-07-31T07:12:06.004Z",
  "cancelledOnUtc": "2019-07-31T07:12:06.004Z"
}


ApiWhatsAppTemplateBaseResponse

Model
Name Schema Description
id string (uuid) The template identifier.
accountId string (uuid) Your account identifier.
templateCategoryId string (uuid) The template category identifier.
facebookName string The (generated) name the template is known as at facebook.
facebookNamespaceId string The linked namespace identifier at facebook.
name string The template name.
category string The template's category name. Templates are available for various categories, like a shipping update. A category was selected during the template creation and can be used to group message types.
languages dictionary[string (LANGUAGE NAME), ApiWhatsAppTemplateLanguage] The template languages.
isActive boolean Indicates whether this template is active. Template is active and usable when approved by Facebook.
isIncomplete boolean Indicates whether the template is incomplete. Template is incomplete when one, or more of the languages are not approved or submitted.
isValidationRequested boolean Indicates whether validation for this template is requested.
isPending boolean Indicates whether this template is pending. Template is pending when awaiting approval by Facebook, usually the throughput time is about 2 working days.
createdOnUtc timestamp (UTC) The moment (UTC) the template was created.
rejectedOnUtc timestamp (UTC) The moment (UTC) the template was rejected.
cancelledOnUtc timestamp (UTC) The moment (UTC) the template was cancelled.
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "templateCategoryId": "00000000-0000-0000-0000-000000000000",
  "facebookName": "facebook_name",
  "facebookNamespaceId": "0a0a0a0a0a0a0a0a",
  "name": "TEMPLATE NAME",
  "category": "TEMPLATE CATEGORY",
  "languages": {
    "LANGUAGE NAME": {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "LANGUAGE NAME",
      "content": "LANGUAGE CONTENT",
      "rejectionReason": "REJECTION REASON",
      "isActive": false,
      "isIncomplete": true,
      "isValidationRequested": false,
      "isPending": false,
      "updatedOnUtc": "2019-07-31T07:12:06.050Z",
      "fulfilledOnUtc": "2019-07-31T07:12:06.050Z",
      "createdOnUtc": "2019-07-31T07:12:06.050Z",
      "rejectedOnUtc": "2019-07-31T07:12:06.050Z"
    }
  },
  "isActive": false,
  "isIncomplete": true,
  "isValidationRequested": false,
  "isPending": true,
  "createdOnUtc": "2019-07-31T07:12:06.050Z",
  "rejectedOnUtc": "2019-07-31T07:12:06.050Z",
  "cancelledOnUtc": "2019-07-31T07:12:06.050Z"
}


ApiWhatsAppTemplate

Model
Name Schema Description
id string (uuid) The template identifier.
accountId string (uuid) Your account identifier.
templateCategoryId string (uuid) The template category identifier.
facebookName string The (generated) name the template is known as at facebook.
facebookNamespaceId string The linked namespace identifier at facebook.
name string The template name.
category string The template's category name. Templates are available for various categories, like a shipping update. A category was selected during the template creation and can be used to group message types.
settings ApiWhatsAppTemplateSettings The template settings.
languages dictionary[string (LANGUAGE NAME), ApiWhatsAppTemplateLanguage] The template languages.
rejectionReason string The reason why the template was rejected (if rejected).
isActive boolean Indicates whether this template is active. Template is active and usable when approved by Facebook.
isIncomplete boolean Indicates whether the template is incomplete. Template is incomplete when one, or more of the languages are not approved or submitted.
isValidationRequested boolean Indicates whether validation for this template is requested.
isPending boolean Indicates whether this template is pending. Template is pending when awaiting approval by Facebook, usually the throughput time is about 2 working days.
updatedOnUtc timestamp (UTC) The moment (UTC) the template was last updated.
fulfilledOnUtc timestamp (UTC) The moment (UTC) the template went active.
createdOnUtc timestamp (UTC) The moment (UTC) the template was created.
rejectedOnUtc timestamp (UTC) The moment (UTC) the template was rejected.
cancelledOnUtc timestamp (UTC) The moment (UTC) the template was cancelled.
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "templateCategoryId": "00000000-0000-0000-0000-000000000000",
  "facebookName": "facebook_name",
  "facebookNamespaceId": "0a0a0a0a0a0a0a0a",
  "name": "TEMPLATE NAME",
  "category": "TEMPLATE CATEGORY",
  "settings": {
    "replacementFields": [
      {
        "id": "00000000-0000-0000-0000-000000000000",
        "index": 0,
        "name": "FIELD NAME",
        "type": "FIELD TYPE"
      }
    ]
  },
  "languages": {
    "LANGUAGE NAME": {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "LANGUAGE NAME",
      "content": "LANGUAGE CONTENT",
      "rejectionReason": "REJECTION REASON",
      "isActive": false,
      "isIncomplete": true,
      "isValidationRequested": false,
      "isPending": false,
      "updatedOnUtc": "2019-07-31T07:12:06.050Z",
      "fulfilledOnUtc": "2019-07-31T07:12:06.050Z",
      "createdOnUtc": "2019-07-31T07:12:06.050Z",
      "rejectedOnUtc": "2019-07-31T07:12:06.050Z"
    }
  },
  "rejectionReason": "REJECTION REASON",
  "isActive": false,
  "isIncomplete": true,
  "isValidationRequested": false,
  "isPending": true,
  "updatedOnUtc": "2019-07-31T07:12:06.050Z",
  "fulfilledOnUtc": "2019-07-31T07:12:06.050Z",
  "createdOnUtc": "2019-07-31T07:12:06.050Z",
  "rejectedOnUtc": "2019-07-31T07:12:06.050Z",
  "cancelledOnUtc": "2019-07-31T07:12:06.050Z"
}


ApiWhatsAppTemplateSettings

Model
Name Schema Description
replacementFields array[ApiWhatsAppTemplateReplacementField] The replacement fields.
JSON
{
  "replacementFields": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "index": 0,
      "name": "FIELD NAME",
      "type": "FIELD TYPE"
    }
  ]
}


ApiWhatsAppTemplateReplacementField

Model
Name Schema Description
id string (uuid) The field identifier.
index integer The field index.
name string The field name.
type "text", "currency, "datetime" The field type.
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "index": 0,
  "name": "FIELD NAME",
  "type": "FIELD TYPE"
}


ApiWhatsAppTemplateLanguage

Model
Name Schema Description
id string (uuid) The language identifier.
name string The language name.
content string The language content. Body of the template/language.
rejectionReason string The reason why the language was rejected (if rejected).
isActive boolean Indicates whether this language is active. Language is active/usable when approved by Facebook.
isIncomplete boolean Indicates whether the language is incomplete. Language is incomplete when the content is empty or missing fields.
isValidationRequested boolean Indicates whether validation for this language is requested.
isPending boolean Indicates whether this language is pending. Language is pending when not yet approved by Facebook.
updatedOnUtc timestamp (UTC) The moment (UTC) the language was last updated. (Languages can not be edited once Facebook has approved them)
fulfilledOnUtc timestamp (UTC) The moment (UTC) the language went active. Template was approved by Facebook.
createdOnUtc timestamp (UTC) The moment (UTC) the language was created.
rejectedOnUtc timestamp (UTC) The moment (UTC) the language was rejected.
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "name": "LANGUAGE NAME",
  "content": "LANGUAGE CONTENT",
  "rejectionReason": "REJECTION REASON",
  "isActive": false,
  "isIncomplete": true,
  "isValidationRequested": false,
  "isPending": false,
  "updatedOnUtc": "2019-07-31T07:12:06.050Z",
  "fulfilledOnUtc": "2019-07-31T07:12:06.050Z",
  "createdOnUtc": "2019-07-31T07:12:06.050Z",
  "rejectedOnUtc": "2019-07-31T07:12:06.050Z" 
}


ApiWhatsAppTemplateUpdateRequest

Model
Name Schema Description
templateCategoryId string (uuid) The template category identifier.
name string The new template name.
languages dictionary[string (LANGUAGE NAME), ApiWhatsAppTemplateLanguage] The updated template languages (only content is editable).
JSON
{
  "templateCategoryId": "00000000-0000-0000-0000-000000000000",
  "name": "TEMPLATE NAME",
  "languages": {
    "LANGUAGE NAME": {
      "content": "LANGUAGE CONTENT"
    }
  }
}


ApiWhatsAppTemplateCategory

Model
Name Schema Description
id string (uuid) The category identifier.
name string The category name.
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "name": "CATEGORY NAME"
}


Keyword claims

Models used at keyword claiming related endpoints.


ApiKeywordClaimRequest

Model
Name Schema Description
phoneNumber
required
string The id of the phone number on which the keyword is about to be claimed on.
keyword
required
string The keyword that is about to be claimed.
JSON
{
  "phoneNumberId": "0000000000",
  "keyword": "KEYWORD"
}


ApiKeywordClaimResponse

Model
Name Schema Description
id string The identifier of the claim.
channelId string The channel id that's linked to the keyword claim.
phoneNumberId string The id of the phone number on which the claim is active on.
country string The country in ISO 3166-2 notation.
keyword string The keyword on which the claim is active on.
currency string The currency in the ISO 4217 notation.
startupCost integer The startup cost.
monthlyCost integer The monthly cost.
noticePeriodDays integer The notice period in days.
claimedOnUtc string The moment (UTC) the claim went active.
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "channelId": "00000000-0000-0000-0000-000000000000",
  "phoneNumber": "0000000000",
  "country": "NL",
  "keyword": "KEYWORD",
  "currency": "EUR",
  "startupCost": 0,
  "monthlyCost": 0,
  "noticePeriodDays": 0,
  "claimedOnUtc": "2019-03-18T09:56:31.723Z"
}


Dedicated phone numbers

Models used at dedicated phone number related endpoints.


ApiNumberRequestResponse

Model
Name Schema Description
id string (uuid) The number request identifier.
channelId string The channel id that's linked to the request.
accountId string (uuid) The account this request belongs to.
phoneNumberId
optional
string The phone number identifier. Is only set/returned when request is fulfilled/not pending.
numberType ApiNumberTypeResponse The type of number.
isPending boolean Indicates whether this request is pending. A request is pending when a suitable number is not immediately available.
isActive boolean Indicates whether this request is active. A request is active when a suitable number is assigned.
cancelledOnUtc timestamp (UTC) The moment (UTC) the request was cancelled.
fulfilledOnUtc timestamp (UTC) The moment (UTC) the request was fulfilled.
createdOnUtc timestamp (UTC) The moment (UTC) the request was created.
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "channelId": "00000000-0000-0000-0000-000000000000",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "phoneNumberId": "0000000000",
  "numberType": 
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "purpose": [
      "SMS"
    ],
    "country": "NL",
    "category": "MOBILE",
    "description": "A Dutch mobile number",
    "currency": "EUR",
    "startupCost": 0,
    "monthlyCost": 0,
    "noticePeriodDays": 0,
    "keywordStartupCost": 0,
    "keywordMonthlyCost": 0,
    "keywordNoticePeriodDays": 0,
    "numberRequestProcessingDays": 0
  },
  "isPending": true,
  "isActive": false,
  "cancelledOnUtc": "2019-07-29T09:30:01.785Z",
  "fulfilledOnUtc": "2019-03-18T09:56:31.764Z",
  "createdOnUtc": "2019-01-31T10:39:16.241Z"
}


ApiPhoneNumberResponse

Model
Name Schema Description
id string (uuid) The phone number identifier.
accountId
optional
string (uuid) The account this phone number is owned by. Is only returned to the account that owns the number.
numberType ApiNumberTypeResponse The type of number.
number string The phone number in international format with a "00" prefix.
isShared boolean True if this number can be shared by multiple customers.
ownedSinceUtc timestamp (UTC) The moment (UTC) since the number is in possession. Is only returned to the account that owns the number.
JSON
{
  "id": "0000000000",
  "accountId": "00000000-0000-0000-0000-000000000000",
  "numberType": 
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "purpose": [
      "SMS"
    ],
    "country": "NL",
    "category": "MOBILE",
    "description": "A Dutch mobile number",
    "currency": "EUR",
    "startupCost": 0,
    "monthlyCost": 0,
    "noticePeriodDays": 0,
    "keywordStartupCost": 0,
    "keywordMonthlyCost": 0,
    "keywordNoticePeriodDays": 0,
    "numberRequestProcessingDays": 0
  },
  "number": "0000000000",
  "isShared": false,
  "ownedSinceUtc": "2019-02-05T12:34:08.614Z"
}


ApiNumberTypeResponse

Model
Name Schema Description
id string (uuid) The number type identifier.
purpose string The purpose of the number.
country string The country in ISO 3166-2 notation.
category string The category.
description string The description.
currency string The currency in the ISO 4217 notation.
startupCost double The initial cost when renting a dedicated number of this type.
monthlyCost double The cost per month when renting a dedicated number of this type.
noticePeriodDays integer The notice period in days when renting a dedicated number of this type.
keywordStartupCost double The initial cost when claiming a keyword on a shared number of this type.
keywordMonthlyCost double The cost per month per claimed keyword on a shared number of this type.
keywordNoticePeriodDays integer The notice period in days for a claimed keyword on a shared number of this type.
numberRequestProcessingDays integer The processing time in days to fulfill the request of an unavailable dedicated number of this type.
JSON
{
  "id": "00000000-0000-0000-0000-000000000000",
  "purpose": [
    "SMS"
  ],
  "country": "NL",
  "category": "MOBILE",
  "description": "A Dutch mobile number",
  "currency": "EUR",
  "startupCost": 0,
  "monthlyCost": 0,
  "noticePeriodDays": 0,
  "keywordStartupCost": 0,
  "keywordMonthlyCost": 0,
  "keywordNoticePeriodDays": 0,
  "numberRequestProcessingDays": 0
}