Skip to content
Download OpenAPI description
Languages
Servers
Production server

https://provisioning.api.sinch.com/

Webhooks

Webhooks allow the Sinch servers to communicate with your server backend. The webhooks endpoint lets you create, update, and delete webhooks programmatically.

Operations

Bundles

The bundles endpoint allows you to create and manage bundles of account resources.

Operations

Conversation

The Conversation endpoints allows you to retrieve about channels used with Conversation API.

Operations

WhatsApp

The WhatsApp endpoint allows you to programmatically log in to and get details of your WhatsApp account.

Operations

WhatsApp Templates

The WhatsApp template endpoint offers a way for you to manage your WhatsApp templates that can be used with the Conversation API. The WhatsApp templates are a requirement to send the initial outbound messages in the WhatsApp API.

Operations

Request

Returns a paginated list of templates for the specified project. If no page token is supplied then the first 50 templates are returned in alphabetical order.

Security
BasicAuth and BearerAuth
Path
projectIdstringrequired

The unique ID of the project. You can find this on the Sinch Dashboard.

Query
pageTokenstring

The page token if retrieving the next page from a previous query.

pageSizenumber[ 1 .. 1000 ]

The page size requested.

fieldMaskArray of strings(WhatsappTemplateDtoFieldMaskPathsEnum)

Field masks are a way for API callers to list the fields that a request should return.

Items Enum"whatsappId""state""name""language""category""rejectionCode""qualityScore""changes""changes.status""changes.allowCategoryChange"
filterStatesArray of strings(WhatsappTemplateStatesEnum)

Optionally query for sender by states.

Items Enum"APPROVED""DISABLED""PAUSED""REJECTED"
filterStatusesArray of strings(WhatsappTemplateStatusesEnum)

Optionally query for sender by statuses.

Items Enum"DRAFT""IN_PROGRESS""REJECTED"
templateAnalyticsDateRangestring(WhatsappTemplateAnalyticsDateRangesEnum)

The date range to retrieve template analytics for. Fallback to DAY if none is set.

Enum"DAY""MONTH""QUARTER""WEEK"
templateNamestring

Optionally query for template by name. Will return all templates with names that begin with the query string.

curl -i -X GET \
  -u <username>:<password> \
  'https://provisioning.api.sinch.com/v1/projects/{projectId}/whatsapp/templates?pageToken=string&pageSize=1&fieldMask=whatsappId&filterStates=APPROVED&filterStatuses=DRAFT&templateAnalyticsDateRange=DAY&templateName=string' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

List of templates

Bodyapplication/json
One of:
totalSizenumberrequired

Total size of the entries matching the search query.

pageSizenumberrequired

Requested size of the page.

templatesArray of objects(WhatsappTemplateDto)required
templates[].​namestringrequired
templates[].​languagestringrequired
Enum"AF""AR""AZ""BG""BN""CA""CS""DA""DE""EL"
templates[].​categorystringrequired
Enum"AUTHENTICATION""MARKETING""UTILITY""UNRECOGNIZED"
templates[].​analyticsArray of objects(WhatsappTemplateAnalyticsDto)required

Template analytics.

templates[].​analytics[].​sentnumberrequired

Number of times template has been sent.

templates[].​analytics[].​deliverednumberrequired

Number of times template has been delivered.

templates[].​analytics[].​readnumberrequired

Number of times template has been read.

templates[].​analytics[].​startstringrequired

The UTC Date Time in ISO 8601 for start of date range.

templates[].​analytics[].​endstringrequired

The UTC Date Time in ISO 8601 for end of date range.

templates[].​analytics[].​buttonsArray of objects(WhatsappTemplateAnalyticsButtonsDto)required

Number of times buttons in the template has been clicked.

templates[].​analytics[].​buttons[].​typestringrequired

Type of button.

Enum"QUICK_REPLY""UNIQUE_URL""URL""UNRECOGNIZED"
templates[].​analytics[].​buttons[].​contentstringrequired

Content of the button.

templates[].​analytics[].​buttons[].​clicksnumberrequired

Number of times the button has been clicked.

templates[].​whatsappIdstring
templates[].​statestring
Enum"APPROVED""DISABLED""PAUSED""REJECTED"
templates[].​rejectionCodestring

Rejection code if template is in status 'REJECTED'

Enum"ABUSIVE_CONTENT""INCORRECT_CATEGORY""INVALID_FORMAT""NONE""SCAM""UNRECOGNIZED"
templates[].​qualityScorestring

Quality score of the HSM.

Enum"QUALITY_SCORE_GREEN""QUALITY_SCORE_RED""QUALITY_SCORE_YELLOW""QUALITY_SCORE_UNKNOWN""UNRECOGNIZED"
templates[].​changesobject

Object containing changes on the template. If empty the changes has been approved and applied to the template.

templates[].​detailsobject

Template details and information.

previousPageTokenstring

Encoded token to use in list request to fetch previous batch of entries.

nextPageTokenstring

Encoded token to use in list request to fetch next batch of entries.

Response
application/json
{ "totalSize": 0, "pageSize": 0, "previousPageToken": "string", "nextPageToken": "string", "templates": [ {} ] }

Request

Creates a new template with the request data. If the status field is set to submit the template will be created immediately, otherwise it will be saved as a draft.

Security
BasicAuth and BearerAuth
Path
projectIdstringrequired

The unique ID of the project. You can find this on the Sinch Dashboard.

Bodyapplication/jsonrequired

Template data

namestring<= 512 characters^[a-z0-9][a-z0-9_]*[a-z0-9]$required
languagestringrequired
Enum"AF""AR""AZ""BG""BN""CA""CS""DA""DE""EL"
categorystringrequired
Enum"AUTHENTICATION""MARKETING""UTILITY"
detailsobjectrequired

'Template input details and information.' Not required for draft.

details.​componentsArray of WhatsappLocationHeaderComponentInputDto (object) or WhatsappTextHeaderComponentInputDto (object) or WhatsappMediaHeaderComponentInputDto (object) or WhatsappBodyComponentInputDto (object) or WhatsappFooterComponentInputDto (object) or WhatsappButtonsComponentInputDto (object) or WhatsappInputCarouselComponentDto (object)uniquerequired

List of components in the template. Must contain a BODY component and can only have one entry of each type. Not required for draft. Field 'type' must have unique values across items.

Any of:
details.​components[].​typestringrequired
Value"HEADER"
details.​components[].​formatstringrequired
Value"LOCATION"
details.​messageSendTtlSecondsnumber

Template message delivery retry time-to-live (TTL) override value. If unable to deliver the template message, it will be periodically retry for this period of time. If it is unable to deliver the message for this period of time, the message will be dropped.

AUTHENTICATIONMARKETINGUTILITY
Default10 minutes30 days30 days
Customizable range10 seconds to 15 minutes12 hours to 30 days30 seconds to 12 hours
Valid values10 to 900 seconds43200 to 2592000 seconds30 to 43200 seconds

Please note that authentication templates created before October 23, 2024, have a default TTL of 30 days.

statusstring

Create as draft or submit. Defaults to submit.

Default "SUBMIT"
Enum"DRAFT""SUBMIT"
saveDraftOnFailureboolean

Flag to save template as draft if submission fails. Defaults to false.

Default false
allowCategoryChangeboolean

True if Meta should be allowed to change the category if they determine the category is wrong. If false, Meta might reject the template if they determine the category is wrong based on the template contents. Defaults to false.

Default false
curl -i -X POST \
  -u <username>:<password> \
  'https://provisioning.api.sinch.com/v1/projects/{projectId}/whatsapp/templates' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "my_template",
    "category": "MARKETING",
    "language": "EN",
    "details": {
      "components": [
        {
          "type": "HEADER",
          "format": "LOCATION"
        },
        {
          "type": "HEADER",
          "format": "TEXT",
          "text": "Save {{1}}% on your next purchase!",
          "example": "20"
        },
        {
          "type": "HEADER",
          "format": "DOCUMENT",
          "example": {
            "url": "https://example.com/photos/1.png"
          }
        },
        {
          "type": "BODY",
          "text": "Good morning {{1}}, your package has arrived.",
          "examples": [
            "Mr. Smith"
          ],
          "addSecurityRecommendation": true
        },
        {
          "type": "FOOTER",
          "text": "To track your order please click the '\''Track Your Order'\'' button",
          "codeExpirationMinutes": 5
        },
        {
          "type": "BUTTONS",
          "buttons": [
            {
              "type": "PHONE_NUMBER",
              "text": "Example text.",
              "phoneNumber": "+48 777 777777"
            },
            {
              "type": "URL",
              "text": "Example test",
              "url": "https://www.my-website.com?name={{1}}",
              "example": "https://www.my-website.com?name=john"
            },
            {
              "type": "QUICK_REPLY",
              "text": "Track Your Order"
            },
            {
              "type": "OTP",
              "otpType": "COPY_CODE",
              "text": "Example text."
            },
            {
              "type": "FLOW",
              "text": "Start Flow",
              "flowId": "flow-id",
              "navigateScreen": "QUESTION_ONE",
              "flowAction": "NAVIGATE"
            }
          ]
        },
        {
          "type": "CAROUSEL",
          "cards": [
            {
              "components": [
                {
                  "type": "HEADER",
                  "format": "IMAGE",
                  "example": {
                    "url": "https://example.com/photos/1.png"
                  }
                },
                {
                  "type": "BODY",
                  "text": "Good morning {{1}}, your package has arrived.",
                  "examples": [
                    "Mr. Smith"
                  ]
                },
                {
                  "type": "BUTTONS",
                  "buttons": [
                    {
                      "type": "URL",
                      "text": "Example test",
                      "url": "https://www.my-website.com?name={{1}}",
                      "example": "https://www.my-website.com?name=john"
                    },
                    {
                      "type": "QUICK_REPLY",
                      "text": "Track Your Order"
                    },
                    {
                      "type": "PHONE_NUMBER",
                      "text": "Example text.",
                      "phoneNumber": "+48 777 777777"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  }'

Responses

Created template

Bodyapplication/json
namestringrequired
languagestringrequired
Enum"AF""AR""AZ""BG""BN""CA""CS""DA""DE""EL"
categorystringrequired
Enum"AUTHENTICATION""MARKETING""UTILITY""UNRECOGNIZED"
analyticsArray of objects(WhatsappTemplateAnalyticsDto)required

Template analytics.

analytics[].​sentnumberrequired

Number of times template has been sent.

analytics[].​deliverednumberrequired

Number of times template has been delivered.

analytics[].​readnumberrequired

Number of times template has been read.

analytics[].​startstringrequired

The UTC Date Time in ISO 8601 for start of date range.

analytics[].​endstringrequired

The UTC Date Time in ISO 8601 for end of date range.

analytics[].​buttonsArray of objects(WhatsappTemplateAnalyticsButtonsDto)required

Number of times buttons in the template has been clicked.

analytics[].​buttons[].​typestringrequired

Type of button.

Enum"QUICK_REPLY""UNIQUE_URL""URL""UNRECOGNIZED"
analytics[].​buttons[].​contentstringrequired

Content of the button.

analytics[].​buttons[].​clicksnumberrequired

Number of times the button has been clicked.

whatsappIdstring
statestring
Enum"APPROVED""DISABLED""PAUSED""REJECTED"
rejectionCodestring

Rejection code if template is in status 'REJECTED'

Enum"ABUSIVE_CONTENT""INCORRECT_CATEGORY""INVALID_FORMAT""NONE""SCAM""UNRECOGNIZED"
qualityScorestring

Quality score of the HSM.

Enum"QUALITY_SCORE_GREEN""QUALITY_SCORE_RED""QUALITY_SCORE_YELLOW""QUALITY_SCORE_UNKNOWN""UNRECOGNIZED"
changesobject

Object containing changes on the template. If empty the changes has been approved and applied to the template.

detailsobject

Template details and information.

Response
application/json

Response when successfully creating a template.

{ "name": "My WhatsApp Template", "category": "UTILITY", "language": "EN_US", "qualityScore": "QUALITY_SCORE_GREEN", "changes": { "status": "DRAFT", "details": {} }, "analytics": [] }

Callbacks

WhatsApp Template received a comment
post
WhatsApp Template approved
post
WhatsApp Template rejected
post
WhatsApp Template status updated
post
WhatsApp Template deleted
post
WhatsApp Template quality score updated
post
WhatsApp Template category updated
post
WhatsApp Template category coming update
post

List all templates for a specific nameGA

Request

Returns a paginated list of templates for the specified project and name. If no page token is supplied then the first 50 templates are returned in alphabetical order.

Security
BasicAuth and BearerAuth
Path
projectIdstringrequired

The unique ID of the project. You can find this on the Sinch Dashboard.

templateNamestringrequired

The unique name of the template.

Query
pageTokenstring

The page token if retrieving the next page from a previous query.

pageSizenumber[ 1 .. 1000 ]

The page size requested.

fieldMaskArray of strings(WhatsappTemplateDtoFieldMaskPathsEnum)

Field masks are a way for API callers to list the fields that a request should return.

Items Enum"whatsappId""state""name""language""category""rejectionCode""qualityScore""changes""changes.status""changes.allowCategoryChange"
templateAnalyticsDateRangestring(WhatsappTemplateAnalyticsDateRangesEnum)

The date range to retrieve template analytics for. Fallback to DAY if none is set.

Enum"DAY""MONTH""QUARTER""WEEK"
curl -i -X GET \
  -u <username>:<password> \
  'https://provisioning.api.sinch.com/v1/projects/{projectId}/whatsapp/templates/{templateName}?pageToken=string&pageSize=1&fieldMask=whatsappId&templateAnalyticsDateRange=DAY' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

List of templates with the same name

Bodyapplication/json
One of:
totalSizenumberrequired

Total size of the entries matching the search query.

pageSizenumberrequired

Requested size of the page.

templatesArray of objects(WhatsappTemplateDto)required
templates[].​namestringrequired
templates[].​languagestringrequired
Enum"AF""AR""AZ""BG""BN""CA""CS""DA""DE""EL"
templates[].​categorystringrequired
Enum"AUTHENTICATION""MARKETING""UTILITY""UNRECOGNIZED"
templates[].​analyticsArray of objects(WhatsappTemplateAnalyticsDto)required

Template analytics.

templates[].​analytics[].​sentnumberrequired

Number of times template has been sent.

templates[].​analytics[].​deliverednumberrequired

Number of times template has been delivered.

templates[].​analytics[].​readnumberrequired

Number of times template has been read.

templates[].​analytics[].​startstringrequired

The UTC Date Time in ISO 8601 for start of date range.

templates[].​analytics[].​endstringrequired

The UTC Date Time in ISO 8601 for end of date range.

templates[].​analytics[].​buttonsArray of objects(WhatsappTemplateAnalyticsButtonsDto)required

Number of times buttons in the template has been clicked.

templates[].​analytics[].​buttons[].​typestringrequired

Type of button.

Enum"QUICK_REPLY""UNIQUE_URL""URL""UNRECOGNIZED"
templates[].​analytics[].​buttons[].​contentstringrequired

Content of the button.

templates[].​analytics[].​buttons[].​clicksnumberrequired

Number of times the button has been clicked.

templates[].​whatsappIdstring
templates[].​statestring
Enum"APPROVED""DISABLED""PAUSED""REJECTED"
templates[].​rejectionCodestring

Rejection code if template is in status 'REJECTED'

Enum"ABUSIVE_CONTENT""INCORRECT_CATEGORY""INVALID_FORMAT""NONE""SCAM""UNRECOGNIZED"
templates[].​qualityScorestring

Quality score of the HSM.

Enum"QUALITY_SCORE_GREEN""QUALITY_SCORE_RED""QUALITY_SCORE_YELLOW""QUALITY_SCORE_UNKNOWN""UNRECOGNIZED"
templates[].​changesobject

Object containing changes on the template. If empty the changes has been approved and applied to the template.

templates[].​detailsobject

Template details and information.

previousPageTokenstring

Encoded token to use in list request to fetch previous batch of entries.

nextPageTokenstring

Encoded token to use in list request to fetch next batch of entries.

Response
application/json
{ "totalSize": 0, "pageSize": 0, "previousPageToken": "string", "nextPageToken": "string", "templates": [ {} ] }

WhatsApp Senders

A WhatsApp Sender is also referred to as a 'Business Profile' or a WhatsApp channel. The WhatsApp Sender endpoint allows you to create a Sender through Meta's Embedded sign up. A Sender must be provisioned for you as a consumer of the WhatsApp API to send messages to your end users.

Operations

WhatsApp Accounts

The WhatsApp accounts endpoint lets you create and update WhatsApp accounts as well as get account activity and leave comments.

Operations

WhatsApp Flows

The WhatsApp flows endpoint lets you retrieve and manage WhatsApp Flows associated with the project.

Operations

WhatsApp Solutions

The WhatsApp solutions endpoint offers a way for you to manage your WhatsApp solutions.

Operations

KakaoTalk Templates

The KakaoTalk template endpoint offers a way for you to manage your KakaoTalk templates that can be used with the Conversation API.

Operations

KakaoTalk Categories

The KakoaTalk categories endpoint offers a way for you to manage all of the KakaoTalk template categories that you can use with the Conversation API.

Operations

KakaoTalk Senders

The KakaoTalk sender endpoint offers a way for you to manage your KakaoTalk senders that can be used with the Conversation API.

Operations

RCS Accounts

The RCS endpoint offers you a way to manage your RCS accounts.

Operations

RCS Questionnaire

Manage your RCS questionnaires.

Operations

RCS Senders

The RCS sender endpoint offers a way for you to manage your RCS senders that can be used with the Conversation API.

Operations

RCS Upscales

The RCS upscales endpoint offers a way for you to manage your RCS upscales.

Operations