Enviar ubicación
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": "Nombre del Destinatario",
"subject": "Título",
"picture": ""
},
"sender": {
"identifier": "5544936181064",
"name": "Nombre del Remitente",
"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": "Nombre del Destinatario",
"subject": "Título",
"picture": ""
},
"sender": {
"identifier": "5544936181064",
"name": "Nombre del Remitente",
"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: 'Nombre del Destinatario',
subject: 'Título',
picture: ''
},
sender: {identifier: '5544936181064', name: 'Nombre del Remitente', 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' => 'Nombre del Destinatario',
'subject' => 'Título',
'picture' => ''
],
'sender' => [
'identifier' => '5544936181064',
'name' => 'Nombre del Remitente',
'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\": \"Nombre del Destinatario\",\n \"subject\": \"Título\",\n \"picture\": \"\"\n },\n \"sender\": {\n \"identifier\": \"5544936181064\",\n \"name\": \"Nombre del Remitente\",\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\": \"Nombre del Destinatario\",\n \"subject\": \"Título\",\n \"picture\": \"\"\n },\n \"sender\": {\n \"identifier\": \"5544936181064\",\n \"name\": \"Nombre del Remitente\",\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\": \"Nombre del Destinatario\",\n \"subject\": \"Título\",\n \"picture\": \"\"\n },\n \"sender\": {\n \"identifier\": \"5544936181064\",\n \"name\": \"Nombre del Remitente\",\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": "wamid.HBgNNTU0NDk3MDUwNzg1FQIAERgSM0"
}{
"error": 401,
"message": "Unauthorized"
}{
"error": 422,
"message": "Conversation window is closed"
}Mensajes
Enviar ubicación
Envía mensajes de ubicación
POST
/
v1
/
channels
/
{channelId}
/
messages
Enviar ubicación
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": "Nombre del Destinatario",
"subject": "Título",
"picture": ""
},
"sender": {
"identifier": "5544936181064",
"name": "Nombre del Remitente",
"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": "Nombre del Destinatario",
"subject": "Título",
"picture": ""
},
"sender": {
"identifier": "5544936181064",
"name": "Nombre del Remitente",
"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: 'Nombre del Destinatario',
subject: 'Título',
picture: ''
},
sender: {identifier: '5544936181064', name: 'Nombre del Remitente', 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' => 'Nombre del Destinatario',
'subject' => 'Título',
'picture' => ''
],
'sender' => [
'identifier' => '5544936181064',
'name' => 'Nombre del Remitente',
'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\": \"Nombre del Destinatario\",\n \"subject\": \"Título\",\n \"picture\": \"\"\n },\n \"sender\": {\n \"identifier\": \"5544936181064\",\n \"name\": \"Nombre del Remitente\",\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\": \"Nombre del Destinatario\",\n \"subject\": \"Título\",\n \"picture\": \"\"\n },\n \"sender\": {\n \"identifier\": \"5544936181064\",\n \"name\": \"Nombre del Remitente\",\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\": \"Nombre del Destinatario\",\n \"subject\": \"Título\",\n \"picture\": \"\"\n },\n \"sender\": {\n \"identifier\": \"5544936181064\",\n \"name\": \"Nombre del Remitente\",\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": "wamid.HBgNNTU0NDk3MDUwNzg1FQIAERgSM0"
}{
"error": 401,
"message": "Unauthorized"
}{
"error": 422,
"message": "Conversation window is closed"
}Conceptos
Envía un mensaje de ubicación a un contacto. El campocontent.type debe ser LOCATION y las coordenadas se indican en el array attachments mediante latitude y longitude.
Los campos name y address son opcionales y permiten mostrar el nombre y la dirección del lugar directamente en el mensaje.
La API no valida los campos
latitude y longitude. Las peticiones que no incluyan esos valores se aceptarán, pero el mensaje no mostrará la ubicación correctamente en WhatsApp. Indica siempre ambos campos.Detalles de la regla de WhatsApp Oficial en ventana de conversación. Consulta la matriz de capacidades para todos los canales.
Autorizaciones
Secret Key generada en el panel de Seguridad de Omni Z-API
Parámetros de ruta
ID del canal
Ejemplo:
"SU_CHANNEL_ID"
Cuerpo
application/json
Respuesta
Mensaje enviado correctamente
ID del mensaje enviado