Send product
curl --request POST \
--url https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-product \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "5511999999999",
"catalogPhone": "5511999999999",
"productId": "7190654897637620"
}
'import requests
url = "https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-product"
payload = {
"phone": "5511999999999",
"catalogPhone": "5511999999999",
"productId": "7190654897637620"
}
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',
catalogPhone: '5511999999999',
productId: '7190654897637620'
})
};
fetch('https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-product', 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-product",
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',
'catalogPhone' => '5511999999999',
'productId' => '7190654897637620'
]),
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-product"
payload := strings.NewReader("{\n \"phone\": \"5511999999999\",\n \"catalogPhone\": \"5511999999999\",\n \"productId\": \"7190654897637620\"\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-product")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"phone\": \"5511999999999\",\n \"catalogPhone\": \"5511999999999\",\n \"productId\": \"7190654897637620\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-product")
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 \"catalogPhone\": \"5511999999999\",\n \"productId\": \"7190654897637620\"\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 product
Send products from the WhatsApp Business catalog
POST
/
send-product
Send product
curl --request POST \
--url https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-product \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "5511999999999",
"catalogPhone": "5511999999999",
"productId": "7190654897637620"
}
'import requests
url = "https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-product"
payload = {
"phone": "5511999999999",
"catalogPhone": "5511999999999",
"productId": "7190654897637620"
}
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',
catalogPhone: '5511999999999',
productId: '7190654897637620'
})
};
fetch('https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-product', 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-product",
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',
'catalogPhone' => '5511999999999',
'productId' => '7190654897637620'
]),
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-product"
payload := strings.NewReader("{\n \"phone\": \"5511999999999\",\n \"catalogPhone\": \"5511999999999\",\n \"productId\": \"7190654897637620\"\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-product")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"phone\": \"5511999999999\",\n \"catalogPhone\": \"5511999999999\",\n \"productId\": \"7190654897637620\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.omni.z-api.io/channels/{channel_id}/token/{channel_token}/send-product")
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 \"catalogPhone\": \"5511999999999\",\n \"productId\": \"7190654897637620\"\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 products registered in the WhatsApp Business catalog. The product must be previously registered in the business account’s catalog. TheproductId can be obtained via the product listing API or through the products webhook.
This feature requires a WhatsApp Business account with a configured catalog.
Authorizations
Secret Key generated in the Omni Z-API Security panel
Body
application/json