Enviar botões
Envia uma mensagem de botões interativos. O type de cada botão é um entre reply, copy, url, call, pix.
curl --request POST \
--url https://pilotstatus.com.br/api/layer/evolution-v2/message/sendButtons/{instance} \
--header 'Content-Type: application/json' \
--header 'apikey: <api-key>' \
--data '
{
"number": "5511999999999",
"buttons[].type": "<string>",
"buttons": [
{
"type": "reply",
"displayText": "Talk to sales",
"id": "sales"
},
{
"type": "url",
"displayText": "Visit site",
"url": "https://pilotstatus.com.br"
},
{
"type": "call",
"displayText": "Call us",
"phoneNumber": "5511967435133"
}
],
"buttons[].displayText": "<string>",
"buttons[].id": "<string>",
"buttons[].url": "<string>",
"buttons[].phoneNumber": "<string>",
"buttons[].currency": "<string>",
"buttons[].name": "<string>",
"buttons[].keyType": "<string>",
"buttons[].key": "<string>",
"title": "How can we help?",
"description": "Choose an option below",
"footer": "Pilot Status",
"thumbnailUrl": "<string>",
"delay": 123,
"quoted": {},
"everyOne": true,
"mentioned": [
"<string>"
]
}
'import requests
url = "https://pilotstatus.com.br/api/layer/evolution-v2/message/sendButtons/{instance}"
payload = {
"number": "5511999999999",
"buttons[].type": "<string>",
"buttons": [
{
"type": "reply",
"displayText": "Talk to sales",
"id": "sales"
},
{
"type": "url",
"displayText": "Visit site",
"url": "https://pilotstatus.com.br"
},
{
"type": "call",
"displayText": "Call us",
"phoneNumber": "5511967435133"
}
],
"buttons[].displayText": "<string>",
"buttons[].id": "<string>",
"buttons[].url": "<string>",
"buttons[].phoneNumber": "<string>",
"buttons[].currency": "<string>",
"buttons[].name": "<string>",
"buttons[].keyType": "<string>",
"buttons[].key": "<string>",
"title": "How can we help?",
"description": "Choose an option below",
"footer": "Pilot Status",
"thumbnailUrl": "<string>",
"delay": 123,
"quoted": {},
"everyOne": True,
"mentioned": ["<string>"]
}
headers = {
"apikey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {apikey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
number: '5511999999999',
'buttons[].type': '<string>',
buttons: [
{type: 'reply', displayText: 'Talk to sales', id: 'sales'},
{type: 'url', displayText: 'Visit site', url: 'https://pilotstatus.com.br'},
{type: 'call', displayText: 'Call us', phoneNumber: '5511967435133'}
],
'buttons[].displayText': '<string>',
'buttons[].id': '<string>',
'buttons[].url': '<string>',
'buttons[].phoneNumber': '<string>',
'buttons[].currency': '<string>',
'buttons[].name': '<string>',
'buttons[].keyType': '<string>',
'buttons[].key': '<string>',
title: 'How can we help?',
description: 'Choose an option below',
footer: 'Pilot Status',
thumbnailUrl: '<string>',
delay: 123,
quoted: {},
everyOne: true,
mentioned: ['<string>']
})
};
fetch('https://pilotstatus.com.br/api/layer/evolution-v2/message/sendButtons/{instance}', 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://pilotstatus.com.br/api/layer/evolution-v2/message/sendButtons/{instance}",
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([
'number' => '5511999999999',
'buttons[].type' => '<string>',
'buttons' => [
[
'type' => 'reply',
'displayText' => 'Talk to sales',
'id' => 'sales'
],
[
'type' => 'url',
'displayText' => 'Visit site',
'url' => 'https://pilotstatus.com.br'
],
[
'type' => 'call',
'displayText' => 'Call us',
'phoneNumber' => '5511967435133'
]
],
'buttons[].displayText' => '<string>',
'buttons[].id' => '<string>',
'buttons[].url' => '<string>',
'buttons[].phoneNumber' => '<string>',
'buttons[].currency' => '<string>',
'buttons[].name' => '<string>',
'buttons[].keyType' => '<string>',
'buttons[].key' => '<string>',
'title' => 'How can we help?',
'description' => 'Choose an option below',
'footer' => 'Pilot Status',
'thumbnailUrl' => '<string>',
'delay' => 123,
'quoted' => [
],
'everyOne' => true,
'mentioned' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"apikey: <api-key>"
],
]);
$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://pilotstatus.com.br/api/layer/evolution-v2/message/sendButtons/{instance}"
payload := strings.NewReader("{\n \"number\": \"5511999999999\",\n \"buttons[].type\": \"<string>\",\n \"buttons\": [\n {\n \"type\": \"reply\",\n \"displayText\": \"Talk to sales\",\n \"id\": \"sales\"\n },\n {\n \"type\": \"url\",\n \"displayText\": \"Visit site\",\n \"url\": \"https://pilotstatus.com.br\"\n },\n {\n \"type\": \"call\",\n \"displayText\": \"Call us\",\n \"phoneNumber\": \"5511967435133\"\n }\n ],\n \"buttons[].displayText\": \"<string>\",\n \"buttons[].id\": \"<string>\",\n \"buttons[].url\": \"<string>\",\n \"buttons[].phoneNumber\": \"<string>\",\n \"buttons[].currency\": \"<string>\",\n \"buttons[].name\": \"<string>\",\n \"buttons[].keyType\": \"<string>\",\n \"buttons[].key\": \"<string>\",\n \"title\": \"How can we help?\",\n \"description\": \"Choose an option below\",\n \"footer\": \"Pilot Status\",\n \"thumbnailUrl\": \"<string>\",\n \"delay\": 123,\n \"quoted\": {},\n \"everyOne\": true,\n \"mentioned\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("apikey", "<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://pilotstatus.com.br/api/layer/evolution-v2/message/sendButtons/{instance}")
.header("apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"number\": \"5511999999999\",\n \"buttons[].type\": \"<string>\",\n \"buttons\": [\n {\n \"type\": \"reply\",\n \"displayText\": \"Talk to sales\",\n \"id\": \"sales\"\n },\n {\n \"type\": \"url\",\n \"displayText\": \"Visit site\",\n \"url\": \"https://pilotstatus.com.br\"\n },\n {\n \"type\": \"call\",\n \"displayText\": \"Call us\",\n \"phoneNumber\": \"5511967435133\"\n }\n ],\n \"buttons[].displayText\": \"<string>\",\n \"buttons[].id\": \"<string>\",\n \"buttons[].url\": \"<string>\",\n \"buttons[].phoneNumber\": \"<string>\",\n \"buttons[].currency\": \"<string>\",\n \"buttons[].name\": \"<string>\",\n \"buttons[].keyType\": \"<string>\",\n \"buttons[].key\": \"<string>\",\n \"title\": \"How can we help?\",\n \"description\": \"Choose an option below\",\n \"footer\": \"Pilot Status\",\n \"thumbnailUrl\": \"<string>\",\n \"delay\": 123,\n \"quoted\": {},\n \"everyOne\": true,\n \"mentioned\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://pilotstatus.com.br/api/layer/evolution-v2/message/sendButtons/{instance}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["apikey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"number\": \"5511999999999\",\n \"buttons[].type\": \"<string>\",\n \"buttons\": [\n {\n \"type\": \"reply\",\n \"displayText\": \"Talk to sales\",\n \"id\": \"sales\"\n },\n {\n \"type\": \"url\",\n \"displayText\": \"Visit site\",\n \"url\": \"https://pilotstatus.com.br\"\n },\n {\n \"type\": \"call\",\n \"displayText\": \"Call us\",\n \"phoneNumber\": \"5511967435133\"\n }\n ],\n \"buttons[].displayText\": \"<string>\",\n \"buttons[].id\": \"<string>\",\n \"buttons[].url\": \"<string>\",\n \"buttons[].phoneNumber\": \"<string>\",\n \"buttons[].currency\": \"<string>\",\n \"buttons[].name\": \"<string>\",\n \"buttons[].keyType\": \"<string>\",\n \"buttons[].key\": \"<string>\",\n \"title\": \"How can we help?\",\n \"description\": \"Choose an option below\",\n \"footer\": \"Pilot Status\",\n \"thumbnailUrl\": \"<string>\",\n \"delay\": 123,\n \"quoted\": {},\n \"everyOne\": true,\n \"mentioned\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"key": {
"remoteJid": "5511999999999@s.whatsapp.net",
"fromMe": true,
"id": "3EB0BTN8899AABBCCDDEE"
},
"pushName": "Você",
"status": "PENDING",
"message": {
"interactiveMessage": {
"body": {
"text": "*Confirme seu pedido*\n\nPedido #1234 no valor de R$ 49,90\n"
},
"footer": {
"text": "Pilot Status"
},
"nativeFlowMessage": {
"buttons": [
{
"name": "quick_reply",
"buttonParamsJson": "{\"display_text\":\"Confirmar\",\"id\":\"confirm_1234\"}"
},
{
"name": "quick_reply",
"buttonParamsJson": "{\"display_text\":\"Cancelar\",\"id\":\"cancel_1234\"}"
}
],
"messageParamsJson": "{\"from\":\"api\",\"templateId\":\"b3f2c1a0-9e8d-4c7b-a6f5-1d2e3f4a5b6c\"}"
}
}
},
"contextInfo": null,
"messageType": "interactiveMessage",
"messageTimestamp": 1720483860,
"instanceId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"source": "web"
}{
"status": 400,
"error": "Bad Request",
"message": "Invalid payload"
}Autorizações
Your Pilot Status API key (ps_...). Evolution GO also accepts Authorization: Bearer <key>.
Parâmetros de caminho
O nome de exibição do número no painel do Pilot Status.
Corpo
Telefone do destinatário em E.164 sem +, ou um JID.
"5511999999999"
Tipo do botão: reply, copy, url, call ou pix.
Array de objetos de botão (veja os campos abaixo).
[
{
"type": "reply",
"displayText": "Talk to sales",
"id": "sales"
},
{
"type": "url",
"displayText": "Visit site",
"url": "https://pilotstatus.com.br"
},
{
"type": "call",
"displayText": "Call us",
"phoneNumber": "5511967435133"
}
]
Texto exibido no botão.
Identificador do botão (para reply).
URL a abrir (para url).
Número de telefone a ligar (para call).
Moeda (para pix).
Nome do recebedor/chave (para pix).
Tipo de chave Pix: phone, email, cpf, cnpj, random.
Valor da chave Pix (para pix).
Título da mensagem.
"How can we help?"
Texto do corpo da mensagem.
"Choose an option below"
Texto de rodapé.
"Pilot Status"
URL de uma imagem de miniatura.
Atraso antes do envio, em milissegundos.
Mensagem a citar/responder (key, message).
Mencionar todos no grupo.
Array de strings numéricas a mencionar.
Resposta
Sucesso — corpo de resposta nativo do provedor.
Sent an interactive buttons message. Returns the persisted Baileys messageRaw envelope containing an interactiveMessage with a nativeFlowMessage of buttons.
Esta página foi útil?
curl --request POST \
--url https://pilotstatus.com.br/api/layer/evolution-v2/message/sendButtons/{instance} \
--header 'Content-Type: application/json' \
--header 'apikey: <api-key>' \
--data '
{
"number": "5511999999999",
"buttons[].type": "<string>",
"buttons": [
{
"type": "reply",
"displayText": "Talk to sales",
"id": "sales"
},
{
"type": "url",
"displayText": "Visit site",
"url": "https://pilotstatus.com.br"
},
{
"type": "call",
"displayText": "Call us",
"phoneNumber": "5511967435133"
}
],
"buttons[].displayText": "<string>",
"buttons[].id": "<string>",
"buttons[].url": "<string>",
"buttons[].phoneNumber": "<string>",
"buttons[].currency": "<string>",
"buttons[].name": "<string>",
"buttons[].keyType": "<string>",
"buttons[].key": "<string>",
"title": "How can we help?",
"description": "Choose an option below",
"footer": "Pilot Status",
"thumbnailUrl": "<string>",
"delay": 123,
"quoted": {},
"everyOne": true,
"mentioned": [
"<string>"
]
}
'import requests
url = "https://pilotstatus.com.br/api/layer/evolution-v2/message/sendButtons/{instance}"
payload = {
"number": "5511999999999",
"buttons[].type": "<string>",
"buttons": [
{
"type": "reply",
"displayText": "Talk to sales",
"id": "sales"
},
{
"type": "url",
"displayText": "Visit site",
"url": "https://pilotstatus.com.br"
},
{
"type": "call",
"displayText": "Call us",
"phoneNumber": "5511967435133"
}
],
"buttons[].displayText": "<string>",
"buttons[].id": "<string>",
"buttons[].url": "<string>",
"buttons[].phoneNumber": "<string>",
"buttons[].currency": "<string>",
"buttons[].name": "<string>",
"buttons[].keyType": "<string>",
"buttons[].key": "<string>",
"title": "How can we help?",
"description": "Choose an option below",
"footer": "Pilot Status",
"thumbnailUrl": "<string>",
"delay": 123,
"quoted": {},
"everyOne": True,
"mentioned": ["<string>"]
}
headers = {
"apikey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {apikey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
number: '5511999999999',
'buttons[].type': '<string>',
buttons: [
{type: 'reply', displayText: 'Talk to sales', id: 'sales'},
{type: 'url', displayText: 'Visit site', url: 'https://pilotstatus.com.br'},
{type: 'call', displayText: 'Call us', phoneNumber: '5511967435133'}
],
'buttons[].displayText': '<string>',
'buttons[].id': '<string>',
'buttons[].url': '<string>',
'buttons[].phoneNumber': '<string>',
'buttons[].currency': '<string>',
'buttons[].name': '<string>',
'buttons[].keyType': '<string>',
'buttons[].key': '<string>',
title: 'How can we help?',
description: 'Choose an option below',
footer: 'Pilot Status',
thumbnailUrl: '<string>',
delay: 123,
quoted: {},
everyOne: true,
mentioned: ['<string>']
})
};
fetch('https://pilotstatus.com.br/api/layer/evolution-v2/message/sendButtons/{instance}', 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://pilotstatus.com.br/api/layer/evolution-v2/message/sendButtons/{instance}",
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([
'number' => '5511999999999',
'buttons[].type' => '<string>',
'buttons' => [
[
'type' => 'reply',
'displayText' => 'Talk to sales',
'id' => 'sales'
],
[
'type' => 'url',
'displayText' => 'Visit site',
'url' => 'https://pilotstatus.com.br'
],
[
'type' => 'call',
'displayText' => 'Call us',
'phoneNumber' => '5511967435133'
]
],
'buttons[].displayText' => '<string>',
'buttons[].id' => '<string>',
'buttons[].url' => '<string>',
'buttons[].phoneNumber' => '<string>',
'buttons[].currency' => '<string>',
'buttons[].name' => '<string>',
'buttons[].keyType' => '<string>',
'buttons[].key' => '<string>',
'title' => 'How can we help?',
'description' => 'Choose an option below',
'footer' => 'Pilot Status',
'thumbnailUrl' => '<string>',
'delay' => 123,
'quoted' => [
],
'everyOne' => true,
'mentioned' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"apikey: <api-key>"
],
]);
$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://pilotstatus.com.br/api/layer/evolution-v2/message/sendButtons/{instance}"
payload := strings.NewReader("{\n \"number\": \"5511999999999\",\n \"buttons[].type\": \"<string>\",\n \"buttons\": [\n {\n \"type\": \"reply\",\n \"displayText\": \"Talk to sales\",\n \"id\": \"sales\"\n },\n {\n \"type\": \"url\",\n \"displayText\": \"Visit site\",\n \"url\": \"https://pilotstatus.com.br\"\n },\n {\n \"type\": \"call\",\n \"displayText\": \"Call us\",\n \"phoneNumber\": \"5511967435133\"\n }\n ],\n \"buttons[].displayText\": \"<string>\",\n \"buttons[].id\": \"<string>\",\n \"buttons[].url\": \"<string>\",\n \"buttons[].phoneNumber\": \"<string>\",\n \"buttons[].currency\": \"<string>\",\n \"buttons[].name\": \"<string>\",\n \"buttons[].keyType\": \"<string>\",\n \"buttons[].key\": \"<string>\",\n \"title\": \"How can we help?\",\n \"description\": \"Choose an option below\",\n \"footer\": \"Pilot Status\",\n \"thumbnailUrl\": \"<string>\",\n \"delay\": 123,\n \"quoted\": {},\n \"everyOne\": true,\n \"mentioned\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("apikey", "<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://pilotstatus.com.br/api/layer/evolution-v2/message/sendButtons/{instance}")
.header("apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"number\": \"5511999999999\",\n \"buttons[].type\": \"<string>\",\n \"buttons\": [\n {\n \"type\": \"reply\",\n \"displayText\": \"Talk to sales\",\n \"id\": \"sales\"\n },\n {\n \"type\": \"url\",\n \"displayText\": \"Visit site\",\n \"url\": \"https://pilotstatus.com.br\"\n },\n {\n \"type\": \"call\",\n \"displayText\": \"Call us\",\n \"phoneNumber\": \"5511967435133\"\n }\n ],\n \"buttons[].displayText\": \"<string>\",\n \"buttons[].id\": \"<string>\",\n \"buttons[].url\": \"<string>\",\n \"buttons[].phoneNumber\": \"<string>\",\n \"buttons[].currency\": \"<string>\",\n \"buttons[].name\": \"<string>\",\n \"buttons[].keyType\": \"<string>\",\n \"buttons[].key\": \"<string>\",\n \"title\": \"How can we help?\",\n \"description\": \"Choose an option below\",\n \"footer\": \"Pilot Status\",\n \"thumbnailUrl\": \"<string>\",\n \"delay\": 123,\n \"quoted\": {},\n \"everyOne\": true,\n \"mentioned\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://pilotstatus.com.br/api/layer/evolution-v2/message/sendButtons/{instance}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["apikey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"number\": \"5511999999999\",\n \"buttons[].type\": \"<string>\",\n \"buttons\": [\n {\n \"type\": \"reply\",\n \"displayText\": \"Talk to sales\",\n \"id\": \"sales\"\n },\n {\n \"type\": \"url\",\n \"displayText\": \"Visit site\",\n \"url\": \"https://pilotstatus.com.br\"\n },\n {\n \"type\": \"call\",\n \"displayText\": \"Call us\",\n \"phoneNumber\": \"5511967435133\"\n }\n ],\n \"buttons[].displayText\": \"<string>\",\n \"buttons[].id\": \"<string>\",\n \"buttons[].url\": \"<string>\",\n \"buttons[].phoneNumber\": \"<string>\",\n \"buttons[].currency\": \"<string>\",\n \"buttons[].name\": \"<string>\",\n \"buttons[].keyType\": \"<string>\",\n \"buttons[].key\": \"<string>\",\n \"title\": \"How can we help?\",\n \"description\": \"Choose an option below\",\n \"footer\": \"Pilot Status\",\n \"thumbnailUrl\": \"<string>\",\n \"delay\": 123,\n \"quoted\": {},\n \"everyOne\": true,\n \"mentioned\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"key": {
"remoteJid": "5511999999999@s.whatsapp.net",
"fromMe": true,
"id": "3EB0BTN8899AABBCCDDEE"
},
"pushName": "Você",
"status": "PENDING",
"message": {
"interactiveMessage": {
"body": {
"text": "*Confirme seu pedido*\n\nPedido #1234 no valor de R$ 49,90\n"
},
"footer": {
"text": "Pilot Status"
},
"nativeFlowMessage": {
"buttons": [
{
"name": "quick_reply",
"buttonParamsJson": "{\"display_text\":\"Confirmar\",\"id\":\"confirm_1234\"}"
},
{
"name": "quick_reply",
"buttonParamsJson": "{\"display_text\":\"Cancelar\",\"id\":\"cancel_1234\"}"
}
],
"messageParamsJson": "{\"from\":\"api\",\"templateId\":\"b3f2c1a0-9e8d-4c7b-a6f5-1d2e3f4a5b6c\"}"
}
}
},
"contextInfo": null,
"messageType": "interactiveMessage",
"messageTimestamp": 1720483860,
"instanceId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"source": "web"
}{
"status": 400,
"error": "Bad Request",
"message": "Invalid payload"
}