Send contact
curl --request POST \
--url https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-contact \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "5511999999999",
"contactName": "Omni Z-API Support",
"contactPhone": "5511888888888"
}
'import requests
url = "https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-contact"
payload = {
"phone": "5511999999999",
"contactName": "Omni Z-API Support",
"contactPhone": "5511888888888"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
phone: '5511999999999',
contactName: 'Omni Z-API Support',
contactPhone: '5511888888888'
})
};
fetch('https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-contact', 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.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-contact",
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' => '5511999999999',
'contactName' => 'Omni Z-API Support',
'contactPhone' => '5511888888888'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-contact"
payload := strings.NewReader("{\n \"phone\": \"5511999999999\",\n \"contactName\": \"Omni Z-API Support\",\n \"contactPhone\": \"5511888888888\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-contact")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"phone\": \"5511999999999\",\n \"contactName\": \"Omni Z-API Support\",\n \"contactPhone\": \"5511888888888\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-contact")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phone\": \"5511999999999\",\n \"contactName\": \"Omni Z-API Support\",\n \"contactPhone\": \"5511888888888\"\n}"
response = http.request(request)
puts response.read_body{
"zaapId": "3999984263738042930CD6ECDE9VDWSA",
"messageId": "D241XXXX732339502B68",
"id": "D241XXXX732339502B68"
}{
"error": 405,
"message": "Method not allowed"
}{
"error": 415,
"message": "Unsupported media type"
}Messages
Send contact
Send contacts via WhatsApp
POST
/
send-contact
Send contact
curl --request POST \
--url https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-contact \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "5511999999999",
"contactName": "Omni Z-API Support",
"contactPhone": "5511888888888"
}
'import requests
url = "https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-contact"
payload = {
"phone": "5511999999999",
"contactName": "Omni Z-API Support",
"contactPhone": "5511888888888"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
phone: '5511999999999',
contactName: 'Omni Z-API Support',
contactPhone: '5511888888888'
})
};
fetch('https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-contact', 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.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-contact",
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' => '5511999999999',
'contactName' => 'Omni Z-API Support',
'contactPhone' => '5511888888888'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-contact"
payload := strings.NewReader("{\n \"phone\": \"5511999999999\",\n \"contactName\": \"Omni Z-API Support\",\n \"contactPhone\": \"5511888888888\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-contact")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"phone\": \"5511999999999\",\n \"contactName\": \"Omni Z-API Support\",\n \"contactPhone\": \"5511888888888\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-contact")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phone\": \"5511999999999\",\n \"contactName\": \"Omni Z-API Support\",\n \"contactPhone\": \"5511888888888\"\n}"
response = http.request(request)
puts response.read_body{
"zaapId": "3999984263738042930CD6ECDE9VDWSA",
"messageId": "D241XXXX732339502B68",
"id": "D241XXXX732339502B68"
}{
"error": 405,
"message": "Method not allowed"
}{
"error": 415,
"message": "Unsupported media type"
}Overview
Method for sending contacts. The contact doesn’t need to be saved in your address book — just provide the name and phone number.Authorizations
Secret Key generated in the Omni Z-API Security panel
Body
application/json
Recipient phone number (country code + area code + number)
Example:
"5511999999999"
Name of the contact to share
Phone number of the contact to share
Contact description (not displayed in WhatsApp Web)
ID of an existing message to reply to
Delay in seconds before sending (1-15)
Required range:
1 <= x <= 15