post
https://api.gupshup.io/wa/api/v1/template/msg
cURL
curl --location '{{api_front_base_url}}/wa/api/v1/template/msg' \
--header 'apikey: {{apiKey}}' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'channel=whatsapp' \
--data-urlencode 'source={{source phone number}}' \
--data-urlencode 'destination={{destination phone number}}' \
--data-urlencode 'src.name={{app_name}}' \
--data-urlencode 'template={"id":"<template_id>","params":[<list_of_template_parameters>]}' \
--data-urlencode 'message={{message}}'
- Carousel templates can only be sent via CAPI apps.* The
template.paramslist will contain all variable parameter values, including those in main message bubble and individual cards, in order of their appearance* Omit thepostbackTextsparameter in the curl above if the template doesn’t have quick reply buttons, or if it has but there’s no need for postback text support.
Request Parameters
| Parameter | Location | Type | Description | Example |
|---|---|---|---|---|
| apikey | Header | string | Your account API key | 2xxc4x4xx2c94xxxc2f9xx9d43xxxx8a |
Form Parameters (Request Body)
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| source | string | Yes | Sender WhatsApp Number | 919163xxxxx3 |
| src.name | string | Yes | App name that the source number belongs to | DemoApp |
| destination | string | Yes | Receiver WhatsApp Number | 917839xxxxx3 |
| template | object | Yes | Contains template id and list of template parameters, including the coupon code | See below for detailed structure |
| message | object | No | Optional; required for media templates | See below for detailed structure |
| postbackTexts | array | No | List of objects containing postback text details | See below for detailed structure |
| channel | string | No | Messaging Platform Name |
template object structure:
template object structure:| Field | Type | Description | Example |
|---|---|---|---|
| id | string | Template ID | template_id |
| params | array | List of template parameters; MUST include the coupon code value in order | ["125OFF"] |
message object structure:
message object structure:| Field | Type | Description | Example |
|---|---|---|---|
| type | string | Type of message | carousel |
| cardHeaderType | string | Type of header in the carousel | IMAGE / VIDEO |
| cards | array | List of cards in the carousel | See below for detailed structure |
cards object structure:
cards object structure:| Field | Type | Description | Example |
|---|---|---|---|
| id | string | Media ID of the image or video | "<image_media_id/video_media_id>" |
| link | string | Media URL of the image or video | "<image_media_url/video_media_url>" |
| postbackTexts | array | List of objects containing postback text details | See below for detailed structure |
postbackTexts object structure:
postbackTexts object structure:| Field | Type | Description | Example |
|---|---|---|---|
| index | integer | Button index (0-based) | 0 |
| text | string | Postback text for the button | hello |
postbackTexts object structure:
postbackTexts object structure:| Field | Type | Description | Example |
|---|---|---|---|
| index | integer | Button index (0-based) | 0 |
| text | string | Postback text for the button | hello |
Status Codes
| Status Code | Description | Response Schema |
|---|---|---|
| 202 | Success response | { "messageId": "message id", "status": "success" } |
| 400 | Error response; in case of bad request | { "message": "Invalid Destination", "status": "error" } |
| 401 | Error response; in case of authentication failure | { "message": "Authentication Failed", "status": "error" } |
