Enviar lista de opções
curl --request POST \
--url https://api.z-api.io/instances/{instanceId}/token/{token}/send-option-list \
--header 'Client-Token: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "<string>",
"message": "<string>",
"optionList": {
"title": "<string>",
"buttonLabel": "<string>",
"options": [
{
"title": "<string>",
"description": "<string>",
"id": "<string>"
}
]
}
}
'import requests
url = "https://api.z-api.io/instances/{instanceId}/token/{token}/send-option-list"
payload = {
"phone": "<string>",
"message": "<string>",
"optionList": {
"title": "<string>",
"buttonLabel": "<string>",
"options": [
{
"title": "<string>",
"description": "<string>",
"id": "<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>',
optionList: {
title: '<string>',
buttonLabel: '<string>',
options: [{title: '<string>', description: '<string>', id: '<string>'}]
}
})
};
fetch('https://api.z-api.io/instances/{instanceId}/token/{token}/send-option-list', 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-option-list",
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>',
'optionList' => [
'title' => '<string>',
'buttonLabel' => '<string>',
'options' => [
[
'title' => '<string>',
'description' => '<string>',
'id' => '<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-option-list"
payload := strings.NewReader("{\n \"phone\": \"<string>\",\n \"message\": \"<string>\",\n \"optionList\": {\n \"title\": \"<string>\",\n \"buttonLabel\": \"<string>\",\n \"options\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"id\": \"<string>\"\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-option-list")
.header("Client-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"phone\": \"<string>\",\n \"message\": \"<string>\",\n \"optionList\": {\n \"title\": \"<string>\",\n \"buttonLabel\": \"<string>\",\n \"options\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"id\": \"<string>\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.z-api.io/instances/{instanceId}/token/{token}/send-option-list")
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 \"optionList\": {\n \"title\": \"<string>\",\n \"buttonLabel\": \"<string>\",\n \"options\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"id\": \"<string>\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_bodyMessages
Enviar lista de opções
Envia uma mensagem com lista de opções selecionáveis
POST
/
instances
/
{instanceId}
/
token
/
{token}
/
send-option-list
Enviar lista de opções
curl --request POST \
--url https://api.z-api.io/instances/{instanceId}/token/{token}/send-option-list \
--header 'Client-Token: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "<string>",
"message": "<string>",
"optionList": {
"title": "<string>",
"buttonLabel": "<string>",
"options": [
{
"title": "<string>",
"description": "<string>",
"id": "<string>"
}
]
}
}
'import requests
url = "https://api.z-api.io/instances/{instanceId}/token/{token}/send-option-list"
payload = {
"phone": "<string>",
"message": "<string>",
"optionList": {
"title": "<string>",
"buttonLabel": "<string>",
"options": [
{
"title": "<string>",
"description": "<string>",
"id": "<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>',
optionList: {
title: '<string>',
buttonLabel: '<string>',
options: [{title: '<string>', description: '<string>', id: '<string>'}]
}
})
};
fetch('https://api.z-api.io/instances/{instanceId}/token/{token}/send-option-list', 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-option-list",
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>',
'optionList' => [
'title' => '<string>',
'buttonLabel' => '<string>',
'options' => [
[
'title' => '<string>',
'description' => '<string>',
'id' => '<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-option-list"
payload := strings.NewReader("{\n \"phone\": \"<string>\",\n \"message\": \"<string>\",\n \"optionList\": {\n \"title\": \"<string>\",\n \"buttonLabel\": \"<string>\",\n \"options\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"id\": \"<string>\"\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-option-list")
.header("Client-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"phone\": \"<string>\",\n \"message\": \"<string>\",\n \"optionList\": {\n \"title\": \"<string>\",\n \"buttonLabel\": \"<string>\",\n \"options\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"id\": \"<string>\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.z-api.io/instances/{instanceId}/token/{token}/send-option-list")
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 \"optionList\": {\n \"title\": \"<string>\",\n \"buttonLabel\": \"<string>\",\n \"options\": [\n {\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"id\": \"<string>\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_bodyConceituação
Neste método você poderá enviar mensagens de texto com uma lista de opções, onde o usuário poderá selecionar uma das opções enviadas.A funcionalidade de lista de opções não funciona mais em grupos.
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 a ser enviado
object
obrigatório
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": "5511999999999",
"message": "Selecione a melhor opção:",
"optionList": {
"title": "Opções disponíveis",
"buttonLabel": "Abrir lista de opções",
"options": [
{
"id": "1",
"description": "Z-API Asas para sua imaginação",
"title": "Z-API"
},
{
"id": "2",
"description": "Não funcionam",
"title": "Outros"
}
]
}
}
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