All Products
Search
Document Center

Chat App Message Service:CreateChatappTemplate

Last Updated:Jun 09, 2026

Creates a message template. After a template is approved, you can use it to send messages.

Operation description

QPS limit

The queries per second (QPS) limit for this API operation is 50 for a single user. If you exceed the limit, API calls are rate-limited, which may affect your business. We recommend that you call this operation at a reasonable frequency.

Status change

You can monitor template status and quality changes using Message Service (MNS) or HTTP. For more information, see Message receipts.

Try it now

Try this API in OpenAPI Explorer, no manual signing needed. Successful calls auto-generate SDK code matching your parameters. Download it with built-in credential security for local usage.

Test

RAM authorization

The table below describes the authorization required to call this API. You can define it in a Resource Access Management (RAM) policy. The table's columns are detailed below:

  • Action: The actions can be used in the Action element of RAM permission policy statements to grant permissions to perform the operation.

  • API: The API that you can call to perform the action.

  • Access level: The predefined level of access granted for each API. Valid values: create, list, get, update, and delete.

  • Resource type: The type of the resource that supports authorization to perform the action. It indicates if the action supports resource-level permission. The specified resource must be compatible with the action. Otherwise, the policy will be ineffective.

    • For APIs with resource-level permissions, required resource types are marked with an asterisk (*). Specify the corresponding Alibaba Cloud Resource Name (ARN) in the Resource element of the policy.

    • For APIs without resource-level permissions, it is shown as All Resources. Use an asterisk (*) in the Resource element of the policy.

  • Condition key: The condition keys defined by the service. The key allows for granular control, applying to either actions alone or actions associated with specific resources. In addition to service-specific condition keys, Alibaba Cloud provides a set of common condition keys applicable across all RAM-supported services.

  • Dependent action: The dependent actions required to run the action. To complete the action, the RAM user or the RAM role must have the permissions to perform all dependent actions.

Action

Access level

Resource type

Condition key

Dependent action

cams:CreateChatappTemplate

create

*All Resource

*

None None

Request parameters

Parameter

Type

Required

Description

Example

Category

string

Yes

WhatsApp template categories:

  • UTILITY: Transactional.

  • MARKETING: Marketing.

  • AUTHENTICATION: Authentication.

Viber template categories:

  • UTILITY: Transactional.

  • MARKETING: Marketing.

  • AUTHENTICATION: Authentication.

UTILITY

Components

array<object>

Yes

The list of message template components.

Note

When Category is set to AUTHENTICATION, the Components array cannot contain a component of the HEADER type. If the component type is BODY or FOOTER, the Text parameter must be empty.

array<object>

No

The list of components.

Type

string

Yes

The component type. Valid values:

  • BODY

  • HEADER

  • FOOTER

  • BUTTONS

  • CAROUSEL

  • LIMITED_TIME_OFFER

Note
  • For WhatsApp templates, the BODY component can contain up to 1,024 characters. The HEADER and FOOTER components can contain up to 60 characters.

  • For Viber templates, the FOOTER, CAROUSEL, and LIMITED_TIME_OFFER types are invalid.

  • For Viber templates, images, videos, and files are placed in the HEADER component. The client displays the image below the text. The text is placed in the BODY component.

BODY

Text

string

No

The text of the message to send.

Note

For WhatsApp templates, if Category is set to AUTHENTICATION, this parameter is empty.

hello whatsapp

Format

string

No

The type of the media resource.

  • TEXT: text

  • IMAGE: image

  • DOCUMENT: document

  • VIDEO: video

TEXT

Url

string

No

The path of the media resource.

Note

For Viber templates, the recommended image size is 800 × 800 pixels.

https://image.developer.aliyundoc.com

Caption

string

No

The description of the file.

This is a video

FileName

string

No

The name of the file.

Express delivery video

Buttons

array<object>

No

The list of buttons. This parameter applies only to the BUTTONS component.

Note

Number of buttons for WhatsApp

  • For MARKETING or UTILITY templates, you can add up to 10 buttons.

  • You can add only one button of the PHONE_NUMBER type.

  • You can add up to two buttons of the URL type.

  • Buttons of the QUICK_REPLY type cannot be mixed with buttons of the PHONE_NUMBER or URL type.

Note

Number of buttons for Viber

  • Only one button of the URL type is allowed.

  • If the HEADER component contains a video, the button type is URL, but you cannot set a URL.

array<object>

No

The button definition.

Type

string

Yes

The button type.

  • PHONE_NUMBER: A call button.

  • URL: A URL button.

  • QUICK_REPLY: A quick reply button.

  • COPY_CODE: A button to copy a verification code or coupon code.

  • ONE_TAP: An autofill button for AUTHENTICATION templates.

  • ZERO_TAP: An autofill button for AUTHENTICATION templates.

  • MPM: A multi-product message.

  • CATALOG: A catalog.

  • FLOW: Opens a WhatsApp flow.

Note
  • For WhatsApp templates, if Category is set to AUTHENTICATION, only one button is allowed. The button type must be COPY_CODE or ONE_TAP. If you set the button type to COPY_CODE, the Text parameter is required. If you set the button type to ONE_TAP, the Text (the name of the copy code button displayed on the client if the destination app is not installed), SignatureHash, PackageName, and AutofillText parameters are required.

  • For Viber templates, only one button is allowed, and it must be of the URL type.

PHONE_NUMBER

Text

string

No

The name displayed on the button.

Call Me

PhoneNumber

string

No

The phone number. This parameter is valid only when the button type is PHONE_NUMBER.

+861368897****

Url

string

No

The URL that is visited when the URL button is clicked.

https://example.com

UrlType

string

No

The URL type.

  • static: Static

  • dynamic: Dynamic

static

SignatureHash deprecated

string

No

Use the properties under SupportedApps.

wi299382

PackageName deprecated

string

No

Use the properties under SupportedApps.

com.demo

AutofillText

string

No

This parameter is required for WhatsApp templates when Category is set to AUTHENTICATION and the button type is ONE_TAP or ZERO_TAP. It specifies the button text for the WhatsApp autofill action.

Autofill

IsOptOut

boolean

No

This parameter is valid for WhatsApp templates when Category is set to Marketing and the button type is QUICK_REPLY. It indicates that the button is a marketing opt-out button. If a customer clicks this button and you have configured sending control operations in ChatApp, subsequent marketing messages will not be sent to the customer.

false

CouponCode

string

No

The value of the coupon code. It supports only letters and digits. You can pass a variable such as $(couponCode) and then pass the actual coupon code when sending the message.

120293

FlowId

string

No

The flow ID.

479884093605****

FlowAction

string

No

The flow data event type. Valid values:

  • DATA_EXCHANGE: Data exchange.

  • NAVIGATE: Navigation.

NAVIGATE

NavigateScreen

string

No

The screen to navigate to. This parameter is required when FlowAction is set to NAVIGATE.

DETAILS

SupportedApps

array<object>

No

The list of supported apps.

object

No

SignatureHash

string

No

This parameter is required for WhatsApp templates when Category is set to AUTHENTICATION and the button type is ONE_TAP or ZERO_TAP. It specifies the signature hash of the app that WhatsApp will launch.

ieid83kdiek

PackageName

string

No

This parameter is required for WhatsApp templates when Category is set to AUTHENTICATION and the button type is ONE_TAP or ZERO_TAP. It specifies the package name of the app that WhatsApp will launch.

com.kuaidian.waimaistaff

ThumbUrl

string

No

The thumbnail of a Viber message that contains a video.

https://cdn.multiplymall.mobiapp.cloud/yunmall/B-LM-LMALL202207130001/20220730/d712a057-a6af-4513-bbe6-7ee57ea60983.png?x-oss-process=image/resize,w_100

Duration

integer

No

The duration of the video in a Viber video message, in seconds. The value ranges from 0 to 600.

120

FileType

string

No

The file type of a Viber file message.

docx

CodeExpirationMinutes

integer

No

The validity period of the verification code for a WhatsApp AUTHENTICATION template, in minutes. This parameter is valid only for WhatsApp messages when Category is set to AUTHENTICATION and the component type is Footer. This information is displayed in the footer.

5

AddSecretRecommendation

boolean

No

This parameter is valid for WhatsApp templates when Category is set to AUTHENTICATION and the component type is Body. It indicates that a security recommendation is displayed above the body, advising the user not to share the verification code.

true

HasExpiration

boolean

No

Indicates whether the coupon code has an expiration time. This parameter is used when type is set to LIMITED_TIME_OFFER.

true

Cards

array<object>

No

The list of cards for a carousel template.

array<object>

No

The card object for a carousel template.

CardComponents

array<object>

Yes

The list of controls in the carousel card.

array<object>

No

The card object in the carousel template.

Type

string

Yes

The component type. Valid values:

  • BODY

  • HEADER

  • BUTTONS

BODY

Format

string

No

The type of the media resource. This parameter is valid when Type is set to HEADER.

  • IMAGE: image

  • VIDEO: video

IMAGE

Text

string

No

The content of the BODY component in the carousel card.

Who is the very powerful team

Url

string

No

The path of the media resource.

https://alibaba.com/img.png

Buttons

array<object>

No

The list of buttons. This parameter applies only to the BUTTONS component. Each card in a carousel can have a maximum of two buttons.

object

No

The button object.

Text

string

No

The button text.

Call me

Type

string

Yes

The button type.

  • PHONE_NUMBER: A call button.

  • URL: A URL button.

  • QUICK_REPLY: A quick reply button.

PHONE_NUMBER

Url

string

No

The URL that is visited when the button is clicked.

https://alibaba.com/xx

UrlType

string

No

The URL type.

  • static: Static

  • dynamic: Dynamic

static

PhoneNumber

string

No

The phone number.

+86138007****

Name

string

Yes

The template name.

hello_whatsapp

Language

string

Yes

The template language. For more information about language codes, see Language codes.

en

Example

object

No

An example of how to create a template.

hello_whatsapp

string

No

An example of how to create a template.

StringConcat('a', 'b', 'c')

TemplateType

string

Yes

The template type.

  • WHATSAPP

  • VIBER

WHATSAPP

CustWabaId deprecated

string

No

The WhatsApp Business Account (WABA) ID of the independent software vendor (ISV) customer.

Note

This parameter is deprecated. Use CustSpaceId instead.

65921621816****

IsvCode

string

No

The ISV verification code, used to verify whether the RAM user is authorized by the ISV.

skdi3kksloslikdkkdk

CustSpaceId

string

Yes

The Space ID of the ISV sub-customer or the instance ID of the direct customer.

293483938849493

AllowCategoryChange deprecated

boolean

No

Indicates whether to allow Facebook to automatically change the category of the template. This can increase the approval rate of the template. This parameter is valid only when TemplateType is set to WHATSAPP.

Important This property is deprecated. WhatsApp no longer supports this property.

true

MessageSendTtlSeconds

integer

No

The time-to-live (TTL) of the template message in WhatsApp.

  • For AUTHENTICATION templates, the value ranges from 30 to 900.

  • For UTILITY templates, the value ranges from 30 to 43200.

120

Response elements

Element

Type

Description

Example

object

The returned data.

RequestId

string

The request ID.

90E63D28-E31D-1EB2-8939-A94866411B2D

Code

string

The status code of the request.

  • An `OK` response indicates that the request was successful.

  • For other error codes, see API error codes.

OK

Message

string

The error message.

User not authorized to operate on the specified resource.

Data

object

The returned data.

{"templateCode": "****4b5c79c9432497a075bdfca36bf5","templateName": "hello_whatsapp"}

TemplateCode

string

The template code.

SMS_232907****

TemplateName

string

The template name.

hello_whatsapp

AccessDeniedDetail

string

The details about the access denial.

None

Examples

Success response

JSON format

{
  "RequestId": "90E63D28-E31D-1EB2-8939-A94866411B2D",
  "Code": "OK",
  "Message": "User not authorized to operate on the specified resource.",
  "Data": {
    "TemplateCode": "SMS_232907****",
    "TemplateName": "hello_whatsapp"
  },
  "AccessDeniedDetail": "None"
}

Error codes

HTTP status code

Error code

Error message

Description

400 Product.Unsubscript You have not subscribed to the specified product. You have not subscribed to the specified product.
400 Ram.PermissionDeny You are not authorized to perform the operation.
400 System.LimitControl The system is under flow control. The system is under flow control.
400 Unknown.ResourceOwnerId The resource does not belong to the current user. The resource does not belong to the current user.

See Error Codes for a complete list.

Release notes

See Release Notes for a complete list.