Send WhatsApp Templates
Send an approved template to one or more recipients. Templates must already exist and be approved — create them first. Session (non-template) messages belong on Interactive messages or Customize.
Read WhatsApp for template approval and the 24-hour session window before you pick a payload below. Every example uses the same POST /v1/whatsapp path; only the body changes.
Endpoint
https://api.azmarq.com/v1/whatsappHeaders
- Name
Content-Type- Type
- string
- Description
application/json
- Name
apikey- Type
- string
- Description
Dashboard API key. See Authentication.
Template With Header - None
Send an approved template that has no header media and no body variables. Use this when the template is static text only.
Required attributes
- Name
from- Type
- string
- Description
The number registered with WhatsApp business from which the message is to be sent. Ensure that the country code is prefixed to the number. For example, if the number is in the India, the format would be: +91XXXXXXXXXX
- Name
templateName- Type
- string
- Description
This template name contains only lowercase alphanumeric characters and underscores.
- Name
to- Type
- string
- Description
Recipient’s MSISDN
- Name
type- Type
- string
- Description
WhatsApp message templates type
Optional attributes
- Name
campaignName- Type
- string
- Description
The WhatsApp campaign name refers to the specific name or title given to a campaign conducted through WhatsApp
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{
"from": "+91XXXXXXXXXX",
"campaignName": "api-test",
"to": "+91XXXXXXXXXX",
"templateName": "template_name",
"type": "template"
}'Response
{
"id": "58d63c02-XXXX-XXXX-XXXX-XXXXbb39453",
"data": [
{
"recipient": "+91XXXXXXXXXX",
"messageId": "58d63c02-XXXXX-XXXXX-XXXXX-XXXX9bb39453:1"
}],
"totalCount": 1,
"message": "Message Sent Successfully!",
"error": null
}
Template With Header - None And Having Variables
This endpoint is designed for templates without complex headers but supports parameters for customization. Simply plug in and configure your parameters for easy and efficient use.
Required attributes
- Name
from- Type
- string
- Description
The number registered with WhatsApp business from which the message is to be sent. Ensure that the country code is prefixed to the number. For example, if the number is in the India, the format would be: +91XXXXXXXXXX
- Name
templateName- Type
- string
- Description
This template name contains only lowercase alphanumeric characters and underscores.
- Name
to- Type
- string
- Description
Recipient’s MSISDN
- Name
type- Type
- string
- Description
WhatsApp message templates type
- Name
components- Type
- object
- Description
To build a message content object for WhatsApp, typically include various fields such as param, header type(text, images, video, and other media).
- Name
body- Type
- object
- Description
Template body
- Name
params- Type
- string
- Description
If you have a registered template with placeholders and you need to submit parameter values in the same order as in the template, you can represent this as an array of values. Ensure that the values are not null, and if the template was registered without placeholders, you can submit an empty array.
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{
"from": "+91XXXXXXXXXX ",
"campaignName": "api-test",
"to": "+91XXXXXXXXXX",
"templateName": "template_name",
"components": {
"body": {
"params": [
"var1",
"var2",
"var3"
]
}
},
"type": "template"
}'Response
{
"id": "58d63c02-XXXX-XXXX-XXXX-XXXXbb39453",
"data": [
{
"recipient": "+91XXXXXXXXXX",
"messageId": "58d63c02-XXXXX-XXXXX-XXXXX-XXXX9bb39453:1"
} ],
"totalCount": 1,
"message": "Message Sent Successfully!", "error": null
}
Template With Header - Text And Having Variables
This endpoint is for text-header templates with customizable parameters—simple integration, versatile customization.
Required attributes
- Name
from- Type
- string
- Description
The number registered with WhatsApp business from which the message is to be sent. Ensure that the country code is prefixed to the number. For example, if the number is in the India, the format would be: +91XXXXXXXXXX
- Name
templateName- Type
- string
- Description
This template name contains only lowercase alphanumeric characters and underscores.
- Name
to- Type
- string
- Description
Recipient’s MSISDN
- Name
type- Type
- string
- Description
WhatsApp message templates type
- Name
components- Type
- string
- Description
To build a message content object for WhatsApp, typically include various fields such as param, header type(text, images, video, and other media).
- Name
body- Type
- string
- Description
Template body
- Name
params- Type
- string
- Description
If you have a registered template with placeholders and you need to submit parameter values in the same order as in the template, you can represent this as an array of values. Ensure that the values are not null, and if the template was registered without placeholders, you can submit an empty array.
- Name
Type(header type text)- Type
- string
- Description
To comply with the requirements, ensure that the URL provided for the image starts with either "https://" or "http://", and that the image is in one of the supported formats (JPG, JPEG, or PNG) with a maximum size of 5MB.
Optional attributes
- Name
campaignName- Type
- string
- Description
The WhatsApp campaign name refers to the specific name or title given to a campaign conducted through WhatsApp
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{
"from": "+91XXXXXXXXXX ",
"campaignName": "api-test",
"to": "+91XXXXXXXXXX",
"templateName": "template_name",
"components": {
"body":{
"params":["var1", "var2", "var3"]
}
"header":{
"type":"text",
"text": "text value"
}
},
"type": "template"
}'Response
{
"id": "58d63c02-XXXX-XXXX-XXXX-XXXXbb39453",
"data": [
{
"recipient": "+91XXXXXXXXXX",
"messageId": "58d63c02-XXXXX-XXXXX-XXXXX-XXXX9bb39453:1"
} ],
"totalCount": 1,
"message": "Message Sent Successfully!", "error": null
}
Template With Header - Image And Having Variables
For templates with image headers, use this endpoint with customizable parameters for easy integration and tailored content.
Required attributes
- Name
from- Type
- string
- Description
The number registered with WhatsApp business from which the message is to be sent. Ensure that the country code is prefixed to the number. For example, if the number is in the India, the format would be: +91XXXXXXXXXX
- Name
templateName- Type
- string
- Description
This template name contains only lowercase alphanumeric characters and underscores.
- Name
to- Type
- string
- Description
Recipient’s MSISDN
- Name
type- Type
- string
- Description
WhatsApp message templates type
- Name
components- Type
- string
- Description
To build a message content object for WhatsApp, typically include various fields such as param, header type(text, images, video, and other media).
- Name
body- Type
- string
- Description
Template body
- Name
params- Type
- string
- Description
If you have a registered template with placeholders and you need to submit parameter values in the same order as in the template, you can represent this as an array of values. Ensure that the values are not null, and if the template was registered without placeholders, you can submit an empty array.
- Name
Type(header type image)- Type
- object
- Description
To comply with the requirements, ensure that the URL provided for the image starts with either "https://" or "http://", and that the image is in one of the supported formats (JPG, JPEG, or PNG) with a maximum size of 5MB.
Optional attributes
- Name
campaignName- Type
- string
- Description
The WhatsApp campaign name refers to the specific name or title given to a campaign conducted through WhatsApp
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{
"from": "+91XXXXXXXXXX ",
"campaignName": "api-test",
"to": "+91XXXXXXXXXX",
"templateName": "template_name",
"components": {
"body": {
"params": [
"var1",
"var2",
"var3"
]
},
"header": {
"type": "image",
"image": {
"link": "mediaUrl"
}
}
},
"type": "template"
}'Response
{
"id": "58d63c02-XXXX-XXXX-XXXX-XXXXbb39453",
"data": [
{
"recipient": "+91XXXXXXXXXX",
"messageId": "58d63c02-XXXXX-XXXXX-XXXXX-XXXX9bb39453:1"
} ],
"totalCount": 1,
"message": "Message Sent Successfully!", "error": null
}
Template With Header - Video And Having Variables
For video-header templates, use this endpoint with customizable parameters for easy integration and personalized adjustments.
Required attributes
- Name
from- Type
- string
- Description
The number registered with WhatsApp business from which the message is to be sent. Ensure that the country code is prefixed to the number. For example, if the number is in the India, the format would be: +91XXXXXXXXXX
- Name
templateName- Type
- string
- Description
This template name contains only lowercase alphanumeric characters and underscores.
- Name
to- Type
- string
- Description
Recipient’s MSISDN
- Name
type- Type
- string
- Description
WhatsApp message templates type
- Name
components- Type
- string
- Description
To build a message content object for WhatsApp, typically include various fields such as param, header type(text, images, video, and other media).
- Name
body- Type
- string
- Description
Template body
- Name
params- Type
- string
- Description
If you have a registered template with placeholders and you need to submit parameter values in the same order as in the template, you can represent this as an array of values. Ensure that the values are not null, and if the template was registered without placeholders, you can submit an empty array.
- Name
Type(header type image)- Type
- object
- Description
To comply with the requirements, ensure that the URL provided for the image starts with either "https://" or "http://", and that the image is in one of the supported formats (JPG, JPEG, or PNG) with a maximum size of 5MB.
Optional attributes
- Name
campaignName- Type
- string
- Description
The WhatsApp campaign name refers to the specific name or title given to a campaign conducted through WhatsApp
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{
"from": "+91XXXXXXXXXX ",
"campaignName": "api-test",
"to": "+91XXXXXXXXXX",
"templateName": "template_name",
"components": {
"body":{
"params":["var1", "var2", "var3"]
}
"header":{
"type":"video",
"video":{
"link": "mediaUrl"
}
}
},
"type": "template"
}'Response
{
"id": "58d63c02-XXXX-XXXX-XXXX-XXXXbb39453",
"data": [
{
"recipient": "+91XXXXXXXXXX",
"messageId": "58d63c02-XXXXX-XXXXX-XXXXX-XXXX9bb39453:1"
} ],
"totalCount": 1,
"message": "Message Sent Successfully!", "error": null
}
Template With Header - Document And Having Variables
This endpoint is for document-header templates, use this endpoint with customizable parameters for seamless integration and personalization.
Required attributes
- Name
from- Type
- string
- Description
The number registered with WhatsApp business from which the message is to be sent. Ensure that the country code is prefixed to the number. For example, if the number is in the India, the format would be: +91XXXXXXXXXX
- Name
templateName- Type
- string
- Description
This template name contains only lowercase alphanumeric characters and underscores.
- Name
to- Type
- string
- Description
Recipient’s MSISDN
- Name
type- Type
- string
- Description
WhatsApp message templates type
- Name
components- Type
- string
- Description
To build a message content object for WhatsApp, typically include various fields such as param, header type(text, images, video, and other media).
- Name
body- Type
- string
- Description
Template body
- Name
params- Type
- string
- Description
If you have a registered template with placeholders and you need to submit parameter values in the same order as in the template, you can represent this as an array of values. Ensure that the values are not null, and if the template was registered without placeholders, you can submit an empty array.
- Name
Type(header type image)- Type
- object
- Description
To comply with the requirements, ensure that the URL provided for the image starts with either "https://" or "http://", and that the image is in one of the supported formats (JPG, JPEG, or PNG) with a maximum size of 5MB.
Optional attributes
- Name
campaignName- Type
- string
- Description
The WhatsApp campaign name refers to the specific name or title given to a campaign conducted through WhatsApp
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{
"from": "+91XXXXXXXXXX ",
"campaignName": "api-test",
"to": "+91XXXXXXXXXX",
"templateName": "template_name",
"components": {
"body":{
"params":["var1", "var2", "var3"]
}
"header":{
"type":"document",
"document":{
"link": "url",
"filename": "XXXXXXXXXXXXXXX"
}
}
},
"type": "template"
}'Response
{
"id": "58d63c02-XXXX-XXXX-XXXX-XXXXbb39453",
"data": [
{
"recipient": "+91XXXXXXXXXX",
"messageId": "58d63c02-XXXXX-XXXXX-XXXXX-XXXX9bb39453:1"
} ],
"totalCount": 1,
"message": "Message Sent Successfully!", "error": null
}
Authentication Template
This endpoint is for authentication templates, use this endpoint to send a authentication template.
Required attributes
- Name
from- Type
- string
- Description
The number registered with WhatsApp business from which the message is to be sent. Ensure that the country code is prefixed to the number. For example, if the number is in the India, the format would be: +91XXXXXXXXXX
- Name
templateName- Type
- string
- Description
This template name contains only lowercase alphanumeric characters and underscores.
- Name
to- Type
- string
- Description
Recipient’s MSISDN
- Name
type- Type
- string
- Description
WhatsApp message templates type
- Name
OTP- Type
- string
- Description
WhatsApp OTP
Optional attributes
- Name
campaignName- Type
- string
- Description
The WhatsApp campaign name refers to the specific name or title given to a campaign conducted through WhatsApp
- Name
language- Type
- string
- Description
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{
"from": "+91XXXXXXXXXX ",
"campaignName": "api-test",
"to": "+91XXXXXXXXXX",
"templateName": "template_name",
"otp": "XXXX",
"type": "template",
"language": {
"code": "en"
}
}'Response
{
"id": "58d63c02-XXXX-XXXX-XXXX-XXXXbb39453",
"data": [
{
"recipient": "+91XXXXXXXXXX",
"messageId": "58d63c02-XXXXX-XXXXX-XXXXX-XXXX9bb39453:1"
} ],
"totalCount": 1,
"message": "Message Sent Successfully!", "error": null
}
Template With Button (Personalize URL)
This endpoint is for template having personalize url templates, use this endpoint with customizable parameters for seamless integration and personalization.
Required attributes
- Name
from- Type
- string
- Description
The number registered with WhatsApp business from which the message is to be sent. Ensure that the country code is prefixed to the number. For example, if the number is in the India, the format would be: +91XXXXXXXXXX
- Name
templateName- Type
- string
- Description
This template name contains only lowercase alphanumeric characters and underscores.
- Name
to- Type
- string
- Description
Recipient’s MSISDN
- Name
type- Type
- string
- Description
WhatsApp message templates type
- Name
components- Type
- string
- Description
To build a message content object for WhatsApp, typically include various fields such as param, header type(text, images, video, and other media).
Optional attributes
- Name
campaignName- Type
- string
- Description
The WhatsApp campaign name refers to the specific name or title given to a campaign conducted through WhatsApp
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{
"from": "+91XXXXXXXXXX ",
"campaignName": "api-test",
"to": "+91XXXXXXXXXX",
"templateName": "template_name",
"components": {
"buttons": {
"params": [
"https://www.lipsum.com/"
]
}
},
"type": "template"
}'Response
{
"id": "58d63c02-XXXX-XXXX-XXXX-XXXXbb39453",
"data": [
{
"recipient": "+91XXXXXXXXXX",
"messageId": "58d63c02-XXXXX-XXXXX-XXXXX-XXXX9bb39453:1"
} ],
"totalCount": 1,
"message": "Message Sent Successfully!", "error": null
}
Template with Dynamic URL Button
This endpoint is used to send a WhatsApp template message with a document header, dynamic body parameters, and a dynamic URL button parameter.
Required attributes
- Name
from- Type
- string
- Description
WhatsApp sender phone number associated with your WhatsApp Business Account.
- Name
to- Type
- string
- Description
Recipient's WhatsApp phone number in international format.
- Name
campaignName- Type
- string
- Description
Name of the campaign used to send the WhatsApp template.
- Name
templateName- Type
- string
- Description
Name of the approved WhatsApp template.
- Name
components- Type
- object
- Description
Contains the dynamic values for the template body, header, and buttons.
- Name
type- Type
- string
- Description
Use template when sending an approved WhatsApp template.
Component parameters
- Name
body.params- Type
- array
- Description
Dynamic values used to replace variables in the WhatsApp template body.
- Name
header.type- Type
- string
- Description
Type of header media. For a document header, use document.
- Name
header.document.link- Type
- string
- Description
Publicly accessible URL of the document to be sent.
- Name
header.document.filename- Type
- string
- Description
File name displayed to the recipient.
- Name
buttons.params- Type
- array
- Description
Dynamic values used by URL buttons in the WhatsApp template.
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{}'Template With Catalog
Use this endpoint to send a WhatsApp template message that includes a product catalog.
Required attributes
- Name
from- Type
- string
- Description
The number registered with WhatsApp business from which the message is to be sent. Ensure that the country code is prefixed to the number. For example, if the number is in the India, the format would be: +91XXXXXXXXXX
- Name
templateName- Type
- string
- Description
This template name contains only lowercase alphanumeric characters and underscores.
- Name
to- Type
- string
- Description
Recipient’s MSISDN
- Name
type- Type
- string
- Description
WhatsApp message templates type
- Name
components- Type
- string
- Description
To build a message content object for WhatsApp, typically include various fields such as param, header type(text, images, video, and other media).
Optional attributes
- Name
campaignName- Type
- string
- Description
The WhatsApp campaign name refers to the specific name or title given to a campaign conducted through WhatsApp
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{
"from": "+91XXXXXXXXXX ",
"campaignName": "api-test",
"to": "+91XXXXXXXXXX",
"templateName": "template_name",
"components": {
"type": "button",
"sub_type": "catalog",
"index": "0"
},
"type": "template"
}'Response
{
"id": "58d63c02-XXXX-XXXX-XXXX-XXXXbb39453",
"data": [
{
"recipient": "+91XXXXXXXXXX",
"messageId": "58d63c02-XXXXX-XXXXX-XXXXX-XXXX9bb39453:1"
} ],
"totalCount": 1,
"message": "Message Sent Successfully!", "error": null
}
Template With Flow
Use this endpoint to send a WhatsApp template message that includes a flow.
Required attributes
- Name
from- Type
- string
- Description
The number registered with WhatsApp business from which the message is to be sent. Ensure that the country code is prefixed to the number. For example, if the number is in the India, the format would be: +91XXXXXXXXXX
- Name
templateName- Type
- string
- Description
This template name contains only lowercase alphanumeric characters and underscores.
- Name
to- Type
- string
- Description
Recipient’s MSISDN
- Name
type- Type
- string
- Description
WhatsApp message templates type
- Name
components- Type
- string
- Description
To build a message content object for WhatsApp, typically include various fields such as param, header type(text, images, video, and other media).
Optional attributes
- Name
campaignName- Type
- string
- Description
The WhatsApp campaign name refers to the specific name or title given to a campaign conducted through WhatsApp
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{
"from": "+91XXXXXXXXXX ",
"campaignName": "api-flow",
"to": "+91XXXXXXXXXX",
"templateName": "template_name",
"components": {
"buttons": {
"flow": [
0
],
"params": [
"https://xyz.com/"
]
}
},
"type": "template"
}'Response
{
"id": "58d63c02-XXXX-XXXX-XXXX-XXXXbb39453",
"data": [
{
"recipient": "+91XXXXXXXXXX",
"messageId": "58d63c02-XXXXX-XXXXX-XXXXX-XXXX9bb39453:1"
} ],
"totalCount": 1,
"message": "Message Sent Successfully!", "error": null
}
Carousel Template — Static Cards
Send an approved carousel template using the expose components object (same style as body / header / buttons).
Card count must match the approved template (2–10). Every card uses the same header media type (IMAGE or VIDEO only) and the same button types in the same order. Meta still requires a header media link on each card at send time.
Required attributes
- Name
from- Type
- string
- Description
The WhatsApp Business number to send from, with country code. Example: +91XXXXXXXXXX
- Name
to- Type
- string
- Description
Recipient MSISDN with country code.
- Name
templateName- Type
- string
- Description
Approved carousel template name.
- Name
type- Type
- string
- Description
Must be template.
- Name
components.carousel- Type
- object
- Description
Object with
cards. Each card may includeheader,body.params, andbuttons.params.
- Name
components.carousel.cards[].header- Type
- object
- Description
Media for that card:
image.linkorvideo.link(public HTTPS URL).
Optional attributes
- Name
campaignName- Type
- string
- Description
Campaign name for reporting.
- Name
components.body- Type
- object
- Description
Use only when the template has a top-level (bubble) BODY above the carousel. See Bubble Body + Cards.
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{
"from": "+91XXXXXXXXXX",
"campaignName": "api-test",
"to": "+91XXXXXXXXXX",
"templateName": "promo_carousel_template",
"type": "template",
"components": {
"carousel": {
"cards": [
{
"header": {
"image": {
"link": "https://example.com/product1.jpg"
}
}
},
{
"header": {
"image": {
"link": "https://example.com/product2.jpg"
}
}
}
]
}
}
}'Response
{
"id": "58d63c02-XXXX-XXXX-XXXX-XXXXbb39453",
"data": [
{
"recipient": "+91XXXXXXXXXX",
"messageId": "58d63c02-XXXXX-XXXXX-XXXXX-XXXX9bb39453:1"
} ],
"totalCount": 1,
"message": "Message Sent Successfully!", "error": null
}
Carousel Template — Image Cards With Body Variables
Use this when each card body has {{n}} placeholders. Pass values in body.params in the same order as the placeholders on that card.
Required attributes
- Name
from- Type
- string
- Description
The WhatsApp Business number to send from, with country code.
- Name
to- Type
- string
- Description
Recipient MSISDN with country code.
- Name
templateName- Type
- string
- Description
Approved carousel template name.
- Name
type- Type
- string
- Description
Must be template.
- Name
components.carousel.cards[].header- Type
- object
- Description
image.linkfor every card.
- Name
components.carousel.cards[].body.params- Type
- array
- Description
One string per card body placeholder, in order.
Optional attributes
- Name
campaignName- Type
- string
- Description
Campaign name for reporting.
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{
"from": "+91XXXXXXXXXX",
"campaignName": "api-test",
"to": "+91XXXXXXXXXX",
"templateName": "promo_carousel_template",
"type": "template",
"components": {
"carousel": {
"cards": [
{
"header": {
"image": {
"link": "https://example.com/earbuds.jpg"
}
},
"body": {
"params": [
"Wireless Earbuds",
"1999"
]
}
},
{
"header": {
"image": {
"link": "https://example.com/watch.jpg"
}
},
"body": {
"params": [
"Smart Watch",
"4999"
]
}
}
]
}
}
}'Response
{
"id": "58d63c02-XXXX-XXXX-XXXX-XXXXbb39453",
"data": [
{
"recipient": "+91XXXXXXXXXX",
"messageId": "58d63c02-XXXXX-XXXXX-XXXXX-XXXX9bb39453:1"
} ],
"totalCount": 1,
"message": "Message Sent Successfully!", "error": null
}
Carousel Template — Video Cards
Same card shape as image carousel. Header type must be video on every card. Do not mix image and video cards. Document headers are not supported on carousel cards.
Required attributes
- Name
from- Type
- string
- Description
The WhatsApp Business number to send from, with country code.
- Name
to- Type
- string
- Description
Recipient MSISDN with country code.
- Name
templateName- Type
- string
- Description
Approved video carousel template name.
- Name
type- Type
- string
- Description
Must be template.
- Name
components.carousel.cards[].header.video- Type
- object
- Description
Public
link(HTTPS) for the card video.
Optional attributes
- Name
campaignName- Type
- string
- Description
Campaign name for reporting.
- Name
components.carousel.cards[].body.params- Type
- array
- Description
Card body variables when the template has placeholders.
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{
"from": "+91XXXXXXXXXX",
"campaignName": "api-test",
"to": "+91XXXXXXXXXX",
"templateName": "video_carousel_template",
"type": "template",
"components": {
"carousel": {
"cards": [
{
"header": {
"video": {
"link": "https://example.com/clip1.mp4"
}
},
"body": {
"params": [
"Clip 1"
]
}
},
{
"header": {
"video": {
"link": "https://example.com/clip2.mp4"
}
},
"body": {
"params": [
"Clip 2"
]
}
}
]
}
}
}'Response
{
"id": "58d63c02-XXXX-XXXX-XXXX-XXXXbb39453",
"data": [
{
"recipient": "+91XXXXXXXXXX",
"messageId": "58d63c02-XXXXX-XXXXX-XXXXX-XXXX9bb39453:1"
} ],
"totalCount": 1,
"message": "Message Sent Successfully!", "error": null
}
Carousel Template — Bubble Body + Cards
Use this when the template has a top-level BODY with {{n}} above the carousel. Send bubble variables in components.body.params, and card data under components.carousel.cards.
Required attributes
- Name
from- Type
- string
- Description
The WhatsApp Business number to send from, with country code.
- Name
to- Type
- string
- Description
Recipient MSISDN with country code.
- Name
templateName- Type
- string
- Description
Approved carousel template name.
- Name
type- Type
- string
- Description
Must be template.
- Name
components.body.params- Type
- array
- Description
Values for the top-level (bubble) body placeholders, in order.
- Name
components.carousel.cards- Type
- array
- Description
One entry per template card (same count / order), each with header media.
Optional attributes
- Name
campaignName- Type
- string
- Description
Campaign name for reporting.
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{
"from": "+91XXXXXXXXXX",
"campaignName": "api-test",
"to": "+91XXXXXXXXXX",
"templateName": "promo_carousel_template",
"type": "template",
"components": {
"body": {
"params": [
"Hi John",
"this week"
]
},
"carousel": {
"cards": [
{
"header": {
"image": {
"link": "https://example.com/product1.jpg"
}
}
},
{
"header": {
"image": {
"link": "https://example.com/product2.jpg"
}
}
}
]
}
}
}'Response
{
"id": "58d63c02-XXXX-XXXX-XXXX-XXXXbb39453",
"data": [
{
"recipient": "+91XXXXXXXXXX",
"messageId": "58d63c02-XXXXX-XXXXX-XXXXX-XXXX9bb39453:1"
} ],
"totalCount": 1,
"message": "Message Sent Successfully!", "error": null
}
Carousel Template — Dynamic URL Button
Use this when a card URL button has a path placeholder such as https://shop.com/{'{{1}}'}.
Pass only the suffix in buttons.params (Meta error #132012 if a full URL is sent for a non-shorten template). Params are read in order across dynamic URL buttons on that card. Omit static URL / phone / quick-reply buttons from params.
Required attributes
- Name
from- Type
- string
- Description
The WhatsApp Business number to send from, with country code.
- Name
to- Type
- string
- Description
Recipient MSISDN with country code.
- Name
templateName- Type
- string
- Description
Approved carousel template name.
- Name
type- Type
- string
- Description
Must be template.
- Name
components.carousel.cards[].buttons.params- Type
- array
- Description
One string per dynamic URL (or copy-code) variable on that card, in button order.
Optional attributes
- Name
campaignName- Type
- string
- Description
Campaign name for reporting.
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{
"from": "+91XXXXXXXXXX",
"campaignName": "api-test",
"to": "+91XXXXXXXXXX",
"templateName": "promo_carousel_template",
"type": "template",
"components": {
"carousel": {
"cards": [
{
"header": {
"image": {
"link": "https://example.com/earbuds.jpg"
}
},
"buttons": {
"params": [
"earbuds"
]
}
},
{
"header": {
"image": {
"link": "https://example.com/watch.jpg"
}
},
"buttons": {
"params": [
"watch"
]
}
}
]
}
}
}'Response
{
"id": "58d63c02-XXXX-XXXX-XXXX-XXXXbb39453",
"data": [
{
"recipient": "+91XXXXXXXXXX",
"messageId": "58d63c02-XXXXX-XXXXX-XXXXX-XXXX9bb39453:1"
} ],
"totalCount": 1,
"message": "Message Sent Successfully!", "error": null
}
Carousel Template — Shorten URL (Personalised Clicker)
When the approved card URL button uses your shorten domain (for example https://5az.me/{'{{1}}'}), pass the full destination URL in buttons.params. The platform rewrites it to a tracked short path before Meta send.
Each card CTA gets its own slug under one message trackingId (same SortenData model as flat WhatsApp shorten).
Required attributes
- Name
from- Type
- string
- Description
The WhatsApp Business number to send from, with country code.
- Name
to- Type
- string
- Description
Recipient MSISDN with country code.
- Name
templateName- Type
- string
- Description
Carousel template whose card URL example uses the shorten domain.
- Name
type- Type
- string
- Description
Must be template.
- Name
components.carousel.cards[].buttons.params- Type
- array
- Description
Full destination URL(s) for that card’s shorten CTA(s), e.g.
https://shop.com/p/earbuds.
Optional attributes
- Name
campaignName- Type
- string
- Description
Campaign name for reporting.
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{
"from": "+91XXXXXXXXXX",
"campaignName": "api-test",
"to": "+91XXXXXXXXXX",
"templateName": "promo_carousel_shorten",
"type": "template",
"components": {
"carousel": {
"cards": [
{
"header": {
"image": {
"link": "https://example.com/earbuds.jpg"
}
},
"body": {
"params": [
"Wireless Earbuds"
]
},
"buttons": {
"params": [
"https://shop.example.com/p/earbuds?utm=wa"
]
}
},
{
"header": {
"image": {
"link": "https://example.com/watch.jpg"
}
},
"body": {
"params": [
"Smart Watch"
]
},
"buttons": {
"params": [
"https://shop.example.com/p/watch?utm=wa"
]
}
}
]
}
}
}'Response
{
"id": "58d63c02-XXXX-XXXX-XXXX-XXXXbb39453",
"data": [
{
"recipient": "+91XXXXXXXXXX",
"messageId": "58d63c02-XXXXX-XXXXX-XXXXX-XXXX9bb39453:1"
} ],
"totalCount": 1,
"message": "Message Sent Successfully!", "error": null
}
Carousel Template — Quick Reply
Static QUICK_REPLY buttons are defined on the template. You do not need to send button params for them—only card header (and body variables if any).
Required attributes
- Name
from- Type
- string
- Description
The WhatsApp Business number to send from, with country code.
- Name
to- Type
- string
- Description
Recipient MSISDN with country code.
- Name
templateName- Type
- string
- Description
Approved carousel template name.
- Name
type- Type
- string
- Description
Must be template.
- Name
components.carousel.cards[].header- Type
- object
- Description
Card media link (
imageorvideo).
Optional attributes
- Name
campaignName- Type
- string
- Description
Campaign name for reporting.
- Name
components.carousel.cards[].body.params- Type
- array
- Description
Card body variables when present on the template.
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{
"from": "+91XXXXXXXXXX",
"campaignName": "api-test",
"to": "+91XXXXXXXXXX",
"templateName": "promo_carousel_template",
"type": "template",
"components": {
"carousel": {
"cards": [
{
"header": {
"image": {
"link": "https://example.com/product1.jpg"
}
}
},
{
"header": {
"image": {
"link": "https://example.com/product2.jpg"
}
}
}
]
}
}
}'Response
{
"id": "58d63c02-XXXX-XXXX-XXXX-XXXXbb39453",
"data": [
{
"recipient": "+91XXXXXXXXXX",
"messageId": "58d63c02-XXXXX-XXXXX-XXXXX-XXXX9bb39453:1"
} ],
"totalCount": 1,
"message": "Message Sent Successfully!", "error": null
}
Carousel Template — Call Button
Phone / voice-call numbers are fixed on the approved template. Do not send call button params in the expose request—only card header media (and body / URL params if the template has them).
Required attributes
- Name
from- Type
- string
- Description
The WhatsApp Business number to send from, with country code.
- Name
to- Type
- string
- Description
Recipient MSISDN with country code.
- Name
templateName- Type
- string
- Description
Approved carousel template name.
- Name
type- Type
- string
- Description
Must be template.
- Name
components.carousel.cards[].header- Type
- object
- Description
Card media link (
imageorvideo).
Optional attributes
- Name
campaignName- Type
- string
- Description
Campaign name for reporting.
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{
"from": "+91XXXXXXXXXX",
"campaignName": "api-test",
"to": "+91XXXXXXXXXX",
"templateName": "promo_carousel_template",
"type": "template",
"components": {
"carousel": {
"cards": [
{
"header": {
"image": {
"link": "https://example.com/product1.jpg"
}
}
},
{
"header": {
"image": {
"link": "https://example.com/product2.jpg"
}
}
}
]
}
}
}'Response
{
"id": "58d63c02-XXXX-XXXX-XXXX-XXXXbb39453",
"data": [
{
"recipient": "+91XXXXXXXXXX",
"messageId": "58d63c02-XXXXX-XXXXX-XXXXX-XXXX9bb39453:1"
} ],
"totalCount": 1,
"message": "Message Sent Successfully!", "error": null
}
Carousel Template — Copy Code
When a card has a COPY_CODE button, send the coupon string in buttons.params (same array order as dynamic URL / copy-code buttons on that card).
Required attributes
- Name
from- Type
- string
- Description
The WhatsApp Business number to send from, with country code.
- Name
to- Type
- string
- Description
Recipient MSISDN with country code.
- Name
templateName- Type
- string
- Description
Approved carousel template name.
- Name
type- Type
- string
- Description
Must be template.
- Name
components.carousel.cards[].buttons.params- Type
- array
- Description
Coupon code string(s) for COPY_CODE buttons on that card.
Optional attributes
- Name
campaignName- Type
- string
- Description
Campaign name for reporting.
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{
"from": "+91XXXXXXXXXX",
"campaignName": "api-test",
"to": "+91XXXXXXXXXX",
"templateName": "promo_carousel_template",
"type": "template",
"components": {
"carousel": {
"cards": [
{
"header": {
"image": {
"link": "https://example.com/product1.jpg"
}
},
"buttons": {
"params": [
"SAVE20"
]
}
},
{
"header": {
"image": {
"link": "https://example.com/product2.jpg"
}
},
"buttons": {
"params": [
"SAVE20"
]
}
}
]
}
}
}'Response
{
"id": "58d63c02-XXXX-XXXX-XXXX-XXXXbb39453",
"data": [
{
"recipient": "+91XXXXXXXXXX",
"messageId": "58d63c02-XXXXX-XXXXX-XXXXX-XXXX9bb39453:1"
} ],
"totalCount": 1,
"message": "Message Sent Successfully!", "error": null
}
Carousel Template — Two Buttons (URL + Quick Reply)
Each card can have 1 or 2 buttons. Types and order must match the template on every card.
For a dynamic URL + static quick reply, put only the URL suffix (or shorten destination) in buttons.params. Quick reply does not consume a param slot.
Required attributes
- Name
from- Type
- string
- Description
The WhatsApp Business number to send from, with country code.
- Name
to- Type
- string
- Description
Recipient MSISDN with country code.
- Name
templateName- Type
- string
- Description
Approved carousel template name.
- Name
type- Type
- string
- Description
Must be template.
- Name
components.carousel.cards[].buttons.params- Type
- array
- Description
Values for dynamic URL (and copy-code) buttons only, in template button order.
Optional attributes
- Name
campaignName- Type
- string
- Description
Campaign name for reporting.
- Name
components.carousel.cards[].body.params- Type
- array
- Description
Card body variables when present.
Request
curl --location --request POST 'https://api.azmarq.com/v1/whatsapp' \
--header 'Content-Type: application/json' \
--header 'apikey: YOUR_API_KEY' \
--data-raw '{
"from": "+91XXXXXXXXXX",
"campaignName": "api-test",
"to": "+91XXXXXXXXXX",
"templateName": "promo_carousel_template",
"type": "template",
"components": {
"carousel": {
"cards": [
{
"header": {
"image": {
"link": "https://example.com/earbuds.jpg"
}
},
"body": {
"params": [
"Wireless Earbuds"
]
},
"buttons": {
"params": [
"earbuds"
]
}
},
{
"header": {
"image": {
"link": "https://example.com/watch.jpg"
}
},
"body": {
"params": [
"Smart Watch"
]
},
"buttons": {
"params": [
"watch"
]
}
}
]
}
}
}'Response
{
"id": "58d63c02-XXXX-XXXX-XXXX-XXXXbb39453",
"data": [
{
"recipient": "+91XXXXXXXXXX",
"messageId": "58d63c02-XXXXX-XXXXX-XXXXX-XXXX9bb39453:1"
} ],
"totalCount": 1,
"message": "Message Sent Successfully!", "error": null
}