curl --request POST \
--url https://api.omni.z-api.io/v1/channels/{channelId}/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"recipient": {
"identifier": "5511999999999"
},
"content": {
"type": "TEMPLATE",
"attachments": [
{
"template": {
"name": "welcome_v2",
"language": {
"policy": "deterministic",
"code": "en_US"
},
"components": [
{
"type": "body",
"parameters": []
}
]
}
}
]
}
}
'{
"messageId": "01A0C92D0C957FE98B73C8BA0CACF741"
}{
"error": 401,
"message": "Unauthorized"
}{
"timestamp": "2026-10-22T14:00:00.123Z",
"code": "BUSINESS_RULE_VIOLATION",
"subCode": "CHANNEL_DISCONNECTED",
"message": "Channel is disconnected"
}Other endpoints
Send template
Send Meta-approved templates
POST
/
v1
/
channels
/
{channelId}
/
messages
curl --request POST \
--url https://api.omni.z-api.io/v1/channels/{channelId}/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"recipient": {
"identifier": "5511999999999"
},
"content": {
"type": "TEMPLATE",
"attachments": [
{
"template": {
"name": "welcome_v2",
"language": {
"policy": "deterministic",
"code": "en_US"
},
"components": [
{
"type": "body",
"parameters": []
}
]
}
}
]
}
}
'{
"messageId": "01A0C92D0C957FE98B73C8BA0CACF741"
}{
"error": 401,
"message": "Unauthorized"
}{
"timestamp": "2026-10-22T14:00:00.123Z",
"code": "BUSINESS_RULE_VIOLATION",
"subCode": "CHANNEL_DISCONNECTED",
"message": "Channel is disconnected"
}Overview
Sends a Meta-approved message template to a contact. This is the only way to send messages outside the conversation window (24 hours). Thecontent.type field must be TEMPLATE and the template is sent within attachments.
Templates are a Meta Cloud API only feature. They do not exist on the other channels — and they are not needed there, because there is no window to reopen. See what each channel accepts.
The template must have
APPROVED status to work. Use the Templates endpoints to create and manage your templates.If the channel is disconnected, the API refuses the send with
422 and subCode CHANNEL_DISCONNECTED, and the message is not sent. See Send errors.Authorizations
Secret Key generated in the Omni Z-API Security panel
Path Parameters
Channel ID
Example:
"YOUR_CHANNEL_ID"
Body
application/json
Response
Message sent successfully
Sent message ID — 32-character uppercase hexadecimal string