Send location
curl --request POST \
--url https://api.omni.z-api.io/v1/channels/{channelId}/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"recipient": {
"identifier": "5544936181064",
"name": "Recipient Name",
"subject": "Title",
"picture": ""
},
"sender": {
"identifier": "5544936181064",
"name": "Sender Name",
"picture": ""
},
"content": {
"type": "LOCATION",
"attachments": [
{
"name": "Google Brasil",
"address": "Av. Brg. Faria Lima, 3477 - Itaim Bibi, São Paulo - SP, 04538-133",
"latitude": "-23.0696347",
"longitude": "-50.4357913"
}
]
}
}
'import requests
url = "https://api.omni.z-api.io/v1/channels/{channelId}/messages"
payload = {
"recipient": {
"identifier": "5544936181064",
"name": "Recipient Name",
"subject": "Title",
"picture": ""
},
"sender": {
"identifier": "5544936181064",
"name": "Sender Name",
"picture": ""
},
"content": {
"type": "LOCATION",
"attachments": [
{
"name": "Google Brasil",
"address": "Av. Brg. Faria Lima, 3477 - Itaim Bibi, São Paulo - SP, 04538-133",
"latitude": "-23.0696347",
"longitude": "-50.4357913"
}
]
}
}
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({
recipient: {
identifier: '5544936181064',
name: 'Recipient Name',
subject: 'Title',
picture: ''
},
sender: {identifier: '5544936181064', name: 'Sender Name', picture: ''},
content: {
type: 'LOCATION',
attachments: [
{
name: 'Google Brasil',
address: 'Av. Brg. Faria Lima, 3477 - Itaim Bibi, São Paulo - SP, 04538-133',
latitude: '-23.0696347',
longitude: '-50.4357913'
}
]
}
})
};
fetch('https://api.omni.z-api.io/v1/channels/{channelId}/messages', 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/v1/channels/{channelId}/messages",
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([
'recipient' => [
'identifier' => '5544936181064',
'name' => 'Recipient Name',
'subject' => 'Title',
'picture' => ''
],
'sender' => [
'identifier' => '5544936181064',
'name' => 'Sender Name',
'picture' => ''
],
'content' => [
'type' => 'LOCATION',
'attachments' => [
[
'name' => 'Google Brasil',
'address' => 'Av. Brg. Faria Lima, 3477 - Itaim Bibi, São Paulo - SP, 04538-133',
'latitude' => '-23.0696347',
'longitude' => '-50.4357913'
]
]
]
]),
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/v1/channels/{channelId}/messages"
payload := strings.NewReader("{\n \"recipient\": {\n \"identifier\": \"5544936181064\",\n \"name\": \"Recipient Name\",\n \"subject\": \"Title\",\n \"picture\": \"\"\n },\n \"sender\": {\n \"identifier\": \"5544936181064\",\n \"name\": \"Sender Name\",\n \"picture\": \"\"\n },\n \"content\": {\n \"type\": \"LOCATION\",\n \"attachments\": [\n {\n \"name\": \"Google Brasil\",\n \"address\": \"Av. Brg. Faria Lima, 3477 - Itaim Bibi, São Paulo - SP, 04538-133\",\n \"latitude\": \"-23.0696347\",\n \"longitude\": \"-50.4357913\"\n }\n ]\n }\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/v1/channels/{channelId}/messages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"recipient\": {\n \"identifier\": \"5544936181064\",\n \"name\": \"Recipient Name\",\n \"subject\": \"Title\",\n \"picture\": \"\"\n },\n \"sender\": {\n \"identifier\": \"5544936181064\",\n \"name\": \"Sender Name\",\n \"picture\": \"\"\n },\n \"content\": {\n \"type\": \"LOCATION\",\n \"attachments\": [\n {\n \"name\": \"Google Brasil\",\n \"address\": \"Av. Brg. Faria Lima, 3477 - Itaim Bibi, São Paulo - SP, 04538-133\",\n \"latitude\": \"-23.0696347\",\n \"longitude\": \"-50.4357913\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.omni.z-api.io/v1/channels/{channelId}/messages")
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 \"recipient\": {\n \"identifier\": \"5544936181064\",\n \"name\": \"Recipient Name\",\n \"subject\": \"Title\",\n \"picture\": \"\"\n },\n \"sender\": {\n \"identifier\": \"5544936181064\",\n \"name\": \"Sender Name\",\n \"picture\": \"\"\n },\n \"content\": {\n \"type\": \"LOCATION\",\n \"attachments\": [\n {\n \"name\": \"Google Brasil\",\n \"address\": \"Av. Brg. Faria Lima, 3477 - Itaim Bibi, São Paulo - SP, 04538-133\",\n \"latitude\": \"-23.0696347\",\n \"longitude\": \"-50.4357913\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"messageId": "01A0C92D0C957FE98B73C8BA0CACF741"
}Messages
Send location
Send location messages
POST
/
v1
/
channels
/
{channelId}
/
messages
Send location
curl --request POST \
--url https://api.omni.z-api.io/v1/channels/{channelId}/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"recipient": {
"identifier": "5544936181064",
"name": "Recipient Name",
"subject": "Title",
"picture": ""
},
"sender": {
"identifier": "5544936181064",
"name": "Sender Name",
"picture": ""
},
"content": {
"type": "LOCATION",
"attachments": [
{
"name": "Google Brasil",
"address": "Av. Brg. Faria Lima, 3477 - Itaim Bibi, São Paulo - SP, 04538-133",
"latitude": "-23.0696347",
"longitude": "-50.4357913"
}
]
}
}
'import requests
url = "https://api.omni.z-api.io/v1/channels/{channelId}/messages"
payload = {
"recipient": {
"identifier": "5544936181064",
"name": "Recipient Name",
"subject": "Title",
"picture": ""
},
"sender": {
"identifier": "5544936181064",
"name": "Sender Name",
"picture": ""
},
"content": {
"type": "LOCATION",
"attachments": [
{
"name": "Google Brasil",
"address": "Av. Brg. Faria Lima, 3477 - Itaim Bibi, São Paulo - SP, 04538-133",
"latitude": "-23.0696347",
"longitude": "-50.4357913"
}
]
}
}
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({
recipient: {
identifier: '5544936181064',
name: 'Recipient Name',
subject: 'Title',
picture: ''
},
sender: {identifier: '5544936181064', name: 'Sender Name', picture: ''},
content: {
type: 'LOCATION',
attachments: [
{
name: 'Google Brasil',
address: 'Av. Brg. Faria Lima, 3477 - Itaim Bibi, São Paulo - SP, 04538-133',
latitude: '-23.0696347',
longitude: '-50.4357913'
}
]
}
})
};
fetch('https://api.omni.z-api.io/v1/channels/{channelId}/messages', 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/v1/channels/{channelId}/messages",
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([
'recipient' => [
'identifier' => '5544936181064',
'name' => 'Recipient Name',
'subject' => 'Title',
'picture' => ''
],
'sender' => [
'identifier' => '5544936181064',
'name' => 'Sender Name',
'picture' => ''
],
'content' => [
'type' => 'LOCATION',
'attachments' => [
[
'name' => 'Google Brasil',
'address' => 'Av. Brg. Faria Lima, 3477 - Itaim Bibi, São Paulo - SP, 04538-133',
'latitude' => '-23.0696347',
'longitude' => '-50.4357913'
]
]
]
]),
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/v1/channels/{channelId}/messages"
payload := strings.NewReader("{\n \"recipient\": {\n \"identifier\": \"5544936181064\",\n \"name\": \"Recipient Name\",\n \"subject\": \"Title\",\n \"picture\": \"\"\n },\n \"sender\": {\n \"identifier\": \"5544936181064\",\n \"name\": \"Sender Name\",\n \"picture\": \"\"\n },\n \"content\": {\n \"type\": \"LOCATION\",\n \"attachments\": [\n {\n \"name\": \"Google Brasil\",\n \"address\": \"Av. Brg. Faria Lima, 3477 - Itaim Bibi, São Paulo - SP, 04538-133\",\n \"latitude\": \"-23.0696347\",\n \"longitude\": \"-50.4357913\"\n }\n ]\n }\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/v1/channels/{channelId}/messages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"recipient\": {\n \"identifier\": \"5544936181064\",\n \"name\": \"Recipient Name\",\n \"subject\": \"Title\",\n \"picture\": \"\"\n },\n \"sender\": {\n \"identifier\": \"5544936181064\",\n \"name\": \"Sender Name\",\n \"picture\": \"\"\n },\n \"content\": {\n \"type\": \"LOCATION\",\n \"attachments\": [\n {\n \"name\": \"Google Brasil\",\n \"address\": \"Av. Brg. Faria Lima, 3477 - Itaim Bibi, São Paulo - SP, 04538-133\",\n \"latitude\": \"-23.0696347\",\n \"longitude\": \"-50.4357913\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.omni.z-api.io/v1/channels/{channelId}/messages")
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 \"recipient\": {\n \"identifier\": \"5544936181064\",\n \"name\": \"Recipient Name\",\n \"subject\": \"Title\",\n \"picture\": \"\"\n },\n \"sender\": {\n \"identifier\": \"5544936181064\",\n \"name\": \"Sender Name\",\n \"picture\": \"\"\n },\n \"content\": {\n \"type\": \"LOCATION\",\n \"attachments\": [\n {\n \"name\": \"Google Brasil\",\n \"address\": \"Av. Brg. Faria Lima, 3477 - Itaim Bibi, São Paulo - SP, 04538-133\",\n \"latitude\": \"-23.0696347\",\n \"longitude\": \"-50.4357913\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"messageId": "01A0C92D0C957FE98B73C8BA0CACF741"
}Being implemented. On WhatsApp Web, the place name is not passed on: the
name field is not sent to WhatsApp yet. The fix is in progress.Overview
Sends a location message to a contact. Thecontent.type field must be LOCATION and the coordinates are provided in the attachments array using latitude and longitude.
The name and address fields are optional and allow displaying the place name and address directly in the message.
Send latitude and longitude as text, like the example: "-23.0696347".
The API does not validate the
latitude and longitude fields. Requests without these values will be accepted, but the message will not display the location correctly on WhatsApp. Always provide both fields.Details of the Meta Cloud API rule in conversation window. See what each channel accepts for every channel.
If the channel is disconnected, the API refuses the send with
422 and subCode CHANNEL_DISCONNECTED, and the message is not sent. See Send errors.Authorizations
Secret Key generated in the Omni Z-API Security panel
Path Parameters
Channel ID
Example:
"YOUR_CHANNEL_ID"
Body
application/json
Response
Message sent successfully
Sent message ID — 32-character uppercase hexadecimal string