Enviar enlace
curl --request POST \
--url https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-link \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "5511999999999",
"message": "Visita nuestro sitio web: https://www.omni.z-api.io",
"image": "https://www.omni.z-api.io/logo.png",
"linkUrl": "https://www.omni.z-api.io",
"title": "Omni Z-API",
"linkDescription": "API omnicanal para la comunicación empresarial"
}
'import requests
url = "https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-link"
payload = {
"phone": "5511999999999",
"message": "Visita nuestro sitio web: https://www.omni.z-api.io",
"image": "https://www.omni.z-api.io/logo.png",
"linkUrl": "https://www.omni.z-api.io",
"title": "Omni Z-API",
"linkDescription": "API omnicanal para la comunicación empresarial"
}
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',
message: 'Visita nuestro sitio web: https://www.omni.z-api.io',
image: 'https://www.omni.z-api.io/logo.png',
linkUrl: 'https://www.omni.z-api.io',
title: 'Omni Z-API',
linkDescription: 'API omnicanal para la comunicación empresarial'
})
};
fetch('https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-link', 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-link",
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',
'message' => 'Visita nuestro sitio web: https://www.omni.z-api.io',
'image' => 'https://www.omni.z-api.io/logo.png',
'linkUrl' => 'https://www.omni.z-api.io',
'title' => 'Omni Z-API',
'linkDescription' => 'API omnicanal para la comunicación empresarial'
]),
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-link"
payload := strings.NewReader("{\n \"phone\": \"5511999999999\",\n \"message\": \"Visita nuestro sitio web: https://www.omni.z-api.io\",\n \"image\": \"https://www.omni.z-api.io/logo.png\",\n \"linkUrl\": \"https://www.omni.z-api.io\",\n \"title\": \"Omni Z-API\",\n \"linkDescription\": \"API omnicanal para la comunicación empresarial\"\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-link")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"phone\": \"5511999999999\",\n \"message\": \"Visita nuestro sitio web: https://www.omni.z-api.io\",\n \"image\": \"https://www.omni.z-api.io/logo.png\",\n \"linkUrl\": \"https://www.omni.z-api.io\",\n \"title\": \"Omni Z-API\",\n \"linkDescription\": \"API omnicanal para la comunicación empresarial\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-link")
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 \"message\": \"Visita nuestro sitio web: https://www.omni.z-api.io\",\n \"image\": \"https://www.omni.z-api.io/logo.png\",\n \"linkUrl\": \"https://www.omni.z-api.io\",\n \"title\": \"Omni Z-API\",\n \"linkDescription\": \"API omnicanal para la comunicación empresarial\"\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"
}Mensajes
Enviar enlace
Envía mensajes con vista previa de enlace por WhatsApp
POST
/
send-link
Enviar enlace
curl --request POST \
--url https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-link \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "5511999999999",
"message": "Visita nuestro sitio web: https://www.omni.z-api.io",
"image": "https://www.omni.z-api.io/logo.png",
"linkUrl": "https://www.omni.z-api.io",
"title": "Omni Z-API",
"linkDescription": "API omnicanal para la comunicación empresarial"
}
'import requests
url = "https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-link"
payload = {
"phone": "5511999999999",
"message": "Visita nuestro sitio web: https://www.omni.z-api.io",
"image": "https://www.omni.z-api.io/logo.png",
"linkUrl": "https://www.omni.z-api.io",
"title": "Omni Z-API",
"linkDescription": "API omnicanal para la comunicación empresarial"
}
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',
message: 'Visita nuestro sitio web: https://www.omni.z-api.io',
image: 'https://www.omni.z-api.io/logo.png',
linkUrl: 'https://www.omni.z-api.io',
title: 'Omni Z-API',
linkDescription: 'API omnicanal para la comunicación empresarial'
})
};
fetch('https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-link', 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-link",
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',
'message' => 'Visita nuestro sitio web: https://www.omni.z-api.io',
'image' => 'https://www.omni.z-api.io/logo.png',
'linkUrl' => 'https://www.omni.z-api.io',
'title' => 'Omni Z-API',
'linkDescription' => 'API omnicanal para la comunicación empresarial'
]),
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-link"
payload := strings.NewReader("{\n \"phone\": \"5511999999999\",\n \"message\": \"Visita nuestro sitio web: https://www.omni.z-api.io\",\n \"image\": \"https://www.omni.z-api.io/logo.png\",\n \"linkUrl\": \"https://www.omni.z-api.io\",\n \"title\": \"Omni Z-API\",\n \"linkDescription\": \"API omnicanal para la comunicación empresarial\"\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-link")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"phone\": \"5511999999999\",\n \"message\": \"Visita nuestro sitio web: https://www.omni.z-api.io\",\n \"image\": \"https://www.omni.z-api.io/logo.png\",\n \"linkUrl\": \"https://www.omni.z-api.io\",\n \"title\": \"Omni Z-API\",\n \"linkDescription\": \"API omnicanal para la comunicación empresarial\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-link")
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 \"message\": \"Visita nuestro sitio web: https://www.omni.z-api.io\",\n \"image\": \"https://www.omni.z-api.io/logo.png\",\n \"linkUrl\": \"https://www.omni.z-api.io\",\n \"title\": \"Omni Z-API\",\n \"linkDescription\": \"API omnicanal para la comunicación empresarial\"\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"
}Conceptos
Método para enviar mensajes con vista previa de enlace, incluyendo imagen, título y descripción.Los enlaces solo son pulsables si el destinatario tiene tu número guardado en su agenda o si ha iniciado una conversación contigo anteriormente.
Autorizaciones
Secret Key generada en el panel de Seguridad de Omni Z-API
Cuerpo
application/json
Teléfono del destinatario (código de país + prefijo + número)
Ejemplo:
"5511999999999"
Texto del mensaje. Debe incluir la URL del enlace al final
URL de la imagen de vista previa del enlace
URL del enlace
Título del enlace
Descripción del enlace
Tamaño de la vista previa: SMALL, MEDIUM o LARGE
Opciones disponibles:
SMALL, MEDIUM, LARGE Retardo en segundos antes del envío (1-15)
Rango requerido:
1 <= x <= 15Tiempo en segundos mostrando el estado «escribiendo» (1-15)
Rango requerido:
1 <= x <= 15