Batch verification
curl --request POST \
--url https://api.z-api.io/instances/{instanceId}/token/{token}/phone-exists-batch \
--header 'Client-Token: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"phones": [
{}
]
}
'import requests
url = "https://api.z-api.io/instances/{instanceId}/token/{token}/phone-exists-batch"
payload = { "phones": [{}] }
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({phones: [{}]})
};
fetch('https://api.z-api.io/instances/{instanceId}/token/{token}/phone-exists-batch', 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}/phone-exists-batch",
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([
'phones' => [
[
]
]
]),
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}/phone-exists-batch"
payload := strings.NewReader("{\n \"phones\": [\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}/phone-exists-batch")
.header("Client-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"phones\": [\n {}\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.z-api.io/instances/{instanceId}/token/{token}/phone-exists-batch")
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 \"phones\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_body{
"exists": true,
"inputPhone": "<string>",
"outputPhone": "<string>",
"lid": "<string>"
}Contacts
Batch verification
Batch check if numbers have WhatsApp accounts
POST
/
instances
/
{instanceId}
/
token
/
{token}
/
phone-exists-batch
Batch verification
curl --request POST \
--url https://api.z-api.io/instances/{instanceId}/token/{token}/phone-exists-batch \
--header 'Client-Token: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"phones": [
{}
]
}
'import requests
url = "https://api.z-api.io/instances/{instanceId}/token/{token}/phone-exists-batch"
payload = { "phones": [{}] }
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({phones: [{}]})
};
fetch('https://api.z-api.io/instances/{instanceId}/token/{token}/phone-exists-batch', 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}/phone-exists-batch",
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([
'phones' => [
[
]
]
]),
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}/phone-exists-batch"
payload := strings.NewReader("{\n \"phones\": [\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}/phone-exists-batch")
.header("Client-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"phones\": [\n {}\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.z-api.io/instances/{instanceId}/token/{token}/phone-exists-batch")
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 \"phones\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_body{
"exists": true,
"inputPhone": "<string>",
"outputPhone": "<string>",
"lid": "<string>"
}Overview
Unlike the previous method that individually validates if a number has WhatsApp through a GET request, this API offers batch verification.Maximum of 50,000 validations per request.
Use this API for form validation. It is not recommended to use this API to verify the number’s existence before sending a message, as Z-API already validates the number’s existence for each message sent.
Attributes
Header
string
required
Your instance ID. Available in the Z-API panel under Instances.
string
required
Your Z-API instance token.
Body
array
required
List of phone numbers in DDI DDD NUMBER format. E.g.: 551199999999
Request Body
{
"phones": ["554499999999", "554488888888"]
}
Response
200
boolean
Whether the number has WhatsApp
string
Number sent in the request
string
Formatted number per WhatsApp’s response
string
WhatsApp’s unique private identifier (null if exists = false)
[
{
"exists": true,
"inputPhone": "554499999999",
"outputPhone": "554499999999",
"lid": "999999999999999@lid"
}
]