Send poll
curl --request POST \
--url https://api.z-api.io/instances/{instanceId}/token/{token}/send-poll \
--header 'Client-Token: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "<string>",
"message": "<string>",
"poll": [
{
"name": "<string>"
}
]
}
'import requests
url = "https://api.z-api.io/instances/{instanceId}/token/{token}/send-poll"
payload = {
"phone": "<string>",
"message": "<string>",
"poll": [{ "name": "<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>', poll: [{name: '<string>'}]})
};
fetch('https://api.z-api.io/instances/{instanceId}/token/{token}/send-poll', 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-poll",
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>',
'poll' => [
[
'name' => '<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-poll"
payload := strings.NewReader("{\n \"phone\": \"<string>\",\n \"message\": \"<string>\",\n \"poll\": [\n {\n \"name\": \"<string>\"\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-poll")
.header("Client-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"phone\": \"<string>\",\n \"message\": \"<string>\",\n \"poll\": [\n {\n \"name\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.z-api.io/instances/{instanceId}/token/{token}/send-poll")
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 \"poll\": [\n {\n \"name\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_bodyMessages
Send poll
Send a poll message
POST
/
instances
/
{instanceId}
/
token
/
{token}
/
send-poll
Send poll
curl --request POST \
--url https://api.z-api.io/instances/{instanceId}/token/{token}/send-poll \
--header 'Client-Token: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "<string>",
"message": "<string>",
"poll": [
{
"name": "<string>"
}
]
}
'import requests
url = "https://api.z-api.io/instances/{instanceId}/token/{token}/send-poll"
payload = {
"phone": "<string>",
"message": "<string>",
"poll": [{ "name": "<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>', poll: [{name: '<string>'}]})
};
fetch('https://api.z-api.io/instances/{instanceId}/token/{token}/send-poll', 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-poll",
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>',
'poll' => [
[
'name' => '<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-poll"
payload := strings.NewReader("{\n \"phone\": \"<string>\",\n \"message\": \"<string>\",\n \"poll\": [\n {\n \"name\": \"<string>\"\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-poll")
.header("Client-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"phone\": \"<string>\",\n \"message\": \"<string>\",\n \"poll\": [\n {\n \"name\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.z-api.io/instances/{instanceId}/token/{token}/send-poll")
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 \"poll\": [\n {\n \"name\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_bodyOverview
With this method you can send poll messages.Sending polls is only available for groups, following WhatsApp Web behavior.
Example on WhatsApp

Attributes
Header
string
required
Your instance ID. Available in the Z-API panel under Instances.
string
required
Your Z-API instance token.
Required
string
required
Recipient group ID. This ID can be obtained through the get/chats method
string
required
Poll text
Optional
number
Delay added to the message. You can choose between a range of 1 to 15 sec, meaning how many seconds it will wait before sending the next message. (E.g.: “delayMessage”: 5). The default delay if not provided is 1 to 3 sec
number
Maximum number of votes per person in the poll
Request Body
Multiple choice:{
"phone": "120363019502650977-group",
"message": "What is the best WhatsApp API?",
"poll": [
{ "name": "Z-API" },
{ "name": "Others" }
]
}
{
"phone": "120363019502650977-group",
"message": "What is the best WhatsApp API?",
"pollMaxOptions": 1,
"poll": [
{ "name": "Z-API" },
{ "name": "Others" }
]
}
Response
200
{
"zaapId": "3999984263738042930CD6ECDE9VDWSA",
"messageId": "D241XXXX732339502B68",
"id": "D241XXXX732339502B68"
}