Enviar carrossel
curl --request POST \
--url https://api.z-api.io/instances/{instanceId}/token/{token}/send-carousel \
--header 'Client-Token: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "<string>",
"message": "<string>",
"carousel": [
{
"text": "<string>",
"image": "<string>",
"buttons": [
{
"id": "<string>",
"label": "<string>",
"type": "<string>",
"url": "<string>",
"phone": "<string>"
}
]
}
]
}
'import requests
url = "https://api.z-api.io/instances/{instanceId}/token/{token}/send-carousel"
payload = {
"phone": "<string>",
"message": "<string>",
"carousel": [
{
"text": "<string>",
"image": "<string>",
"buttons": [
{
"id": "<string>",
"label": "<string>",
"type": "<string>",
"url": "<string>",
"phone": "<string>"
}
]
}
]
}
headers = {
"Client-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Client-Token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
phone: '<string>',
message: '<string>',
carousel: [
{
text: '<string>',
image: '<string>',
buttons: [
{
id: '<string>',
label: '<string>',
type: '<string>',
url: '<string>',
phone: '<string>'
}
]
}
]
})
};
fetch('https://api.z-api.io/instances/{instanceId}/token/{token}/send-carousel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.z-api.io/instances/{instanceId}/token/{token}/send-carousel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'phone' => '<string>',
'message' => '<string>',
'carousel' => [
[
'text' => '<string>',
'image' => '<string>',
'buttons' => [
[
'id' => '<string>',
'label' => '<string>',
'type' => '<string>',
'url' => '<string>',
'phone' => '<string>'
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Client-Token: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.z-api.io/instances/{instanceId}/token/{token}/send-carousel"
payload := strings.NewReader("{\n \"phone\": \"<string>\",\n \"message\": \"<string>\",\n \"carousel\": [\n {\n \"text\": \"<string>\",\n \"image\": \"<string>\",\n \"buttons\": [\n {\n \"id\": \"<string>\",\n \"label\": \"<string>\",\n \"type\": \"<string>\",\n \"url\": \"<string>\",\n \"phone\": \"<string>\"\n }\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Client-Token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.z-api.io/instances/{instanceId}/token/{token}/send-carousel")
.header("Client-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"phone\": \"<string>\",\n \"message\": \"<string>\",\n \"carousel\": [\n {\n \"text\": \"<string>\",\n \"image\": \"<string>\",\n \"buttons\": [\n {\n \"id\": \"<string>\",\n \"label\": \"<string>\",\n \"type\": \"<string>\",\n \"url\": \"<string>\",\n \"phone\": \"<string>\"\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.z-api.io/instances/{instanceId}/token/{token}/send-carousel")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Client-Token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phone\": \"<string>\",\n \"message\": \"<string>\",\n \"carousel\": [\n {\n \"text\": \"<string>\",\n \"image\": \"<string>\",\n \"buttons\": [\n {\n \"id\": \"<string>\",\n \"label\": \"<string>\",\n \"type\": \"<string>\",\n \"url\": \"<string>\",\n \"phone\": \"<string>\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_bodyMessages
Enviar carrossel
Envia uma mensagem de carrossel com imagens, texto e botões de ação
POST
/
instances
/
{instanceId}
/
token
/
{token}
/
send-carousel
Enviar carrossel
curl --request POST \
--url https://api.z-api.io/instances/{instanceId}/token/{token}/send-carousel \
--header 'Client-Token: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "<string>",
"message": "<string>",
"carousel": [
{
"text": "<string>",
"image": "<string>",
"buttons": [
{
"id": "<string>",
"label": "<string>",
"type": "<string>",
"url": "<string>",
"phone": "<string>"
}
]
}
]
}
'import requests
url = "https://api.z-api.io/instances/{instanceId}/token/{token}/send-carousel"
payload = {
"phone": "<string>",
"message": "<string>",
"carousel": [
{
"text": "<string>",
"image": "<string>",
"buttons": [
{
"id": "<string>",
"label": "<string>",
"type": "<string>",
"url": "<string>",
"phone": "<string>"
}
]
}
]
}
headers = {
"Client-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Client-Token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
phone: '<string>',
message: '<string>',
carousel: [
{
text: '<string>',
image: '<string>',
buttons: [
{
id: '<string>',
label: '<string>',
type: '<string>',
url: '<string>',
phone: '<string>'
}
]
}
]
})
};
fetch('https://api.z-api.io/instances/{instanceId}/token/{token}/send-carousel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.z-api.io/instances/{instanceId}/token/{token}/send-carousel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'phone' => '<string>',
'message' => '<string>',
'carousel' => [
[
'text' => '<string>',
'image' => '<string>',
'buttons' => [
[
'id' => '<string>',
'label' => '<string>',
'type' => '<string>',
'url' => '<string>',
'phone' => '<string>'
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Client-Token: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.z-api.io/instances/{instanceId}/token/{token}/send-carousel"
payload := strings.NewReader("{\n \"phone\": \"<string>\",\n \"message\": \"<string>\",\n \"carousel\": [\n {\n \"text\": \"<string>\",\n \"image\": \"<string>\",\n \"buttons\": [\n {\n \"id\": \"<string>\",\n \"label\": \"<string>\",\n \"type\": \"<string>\",\n \"url\": \"<string>\",\n \"phone\": \"<string>\"\n }\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Client-Token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.z-api.io/instances/{instanceId}/token/{token}/send-carousel")
.header("Client-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"phone\": \"<string>\",\n \"message\": \"<string>\",\n \"carousel\": [\n {\n \"text\": \"<string>\",\n \"image\": \"<string>\",\n \"buttons\": [\n {\n \"id\": \"<string>\",\n \"label\": \"<string>\",\n \"type\": \"<string>\",\n \"url\": \"<string>\",\n \"phone\": \"<string>\"\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.z-api.io/instances/{instanceId}/token/{token}/send-carousel")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Client-Token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phone\": \"<string>\",\n \"message\": \"<string>\",\n \"carousel\": [\n {\n \"text\": \"<string>\",\n \"image\": \"<string>\",\n \"buttons\": [\n {\n \"id\": \"<string>\",\n \"label\": \"<string>\",\n \"type\": \"<string>\",\n \"url\": \"<string>\",\n \"phone\": \"<string>\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_bodyConceituação
Neste método você poderá enviar mensagens de carrossel com imagens, texto e com botões de ação. A partir dos botões de ação, você conseguirá redirecionar para links, fazer chamadas, e também dar respostas padrões.Exemplo no WhatsApp

Atributos
Header
string
obrigatório
ID da sua instância. Disponível no painel Z-API em Instâncias.
string
obrigatório
Token da sua instância Z-API.
Obrigatórios
string
obrigatório
Telefone (ou ID do grupo para casos de envio para grupos) do destinatário no formato DDI DDD NÚMERO. Ex: 551199999999
string
obrigatório
Texto da mensagem
array
obrigatório
Array de cartões do carrossel
Mostrar Propriedades do cartão
Mostrar Propriedades do cartão
string
obrigatório
Texto do cartão
string
obrigatório
URL da imagem do cartão
Opcionais
number
Delay adicionado na mensagem. Você pode decidir entre um range de 1 a 15 sec, significa quantos segundos ele vai esperar para enviar a próxima mensagem. (Ex.: “delayMessage”: 5). O delay default caso não seja informado é de 1 a 3 sec
Request Body
{
"phone": "551199999999",
"message": "Texto da mensagem",
"carousel": [
{
"text": "Texto do cartão",
"image": "https://firebasestorage.googleapis.com/v0/b/zaap-messenger-web.appspot.com/o/logo.png?alt=media",
"buttons": [
{
"id": "1",
"label": "Nome do botão",
"url": "https://z-api.io",
"type": "URL"
},
{
"id": "2",
"label": "Nome do botão",
"type": "REPLY"
}
]
},
{
"text": "Texto do cartão",
"image": "https://firebasestorage.googleapis.com/v0/b/zaap-messenger-web.appspot.com/o/logo.png?alt=media",
"buttons": [
{
"id": "1",
"label": "Nome do botão",
"url": "https://z-api.io",
"type": "URL"
},
{
"id": "2",
"label": "Nome do botão",
"type": "REPLY"
}
]
}
]
}
Response
200
{
"zaapId": "3999984263738042930CD6ECDE9VDWSA",
"messageId": "D241XXXX732339502B68",
"id": "D241XXXX732339502B68"
}
405
Neste caso certifique que esteja enviando corretamente a especificação do método, ou seja verifique se você enviou o POST ou GET conforme especificado no início deste tópico.415
Caso você receba um erro 415, certifique de adicionar na headers da requisição o “Content-Type” do objeto que você está enviando, em sua grande maioria “application/json”.⌘I