Get products V2
curl --request POST \
--url https://api.z-api.io/instances/{instanceId}/token/{token}/catalogs \
--header 'Client-Token: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"nextCursor": "<string>"
}
'import requests
url = "https://api.z-api.io/instances/{instanceId}/token/{token}/catalogs"
payload = { "nextCursor": "<string>" }
headers = {
"Client-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Client-Token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({nextCursor: '<string>'})
};
fetch('https://api.z-api.io/instances/{instanceId}/token/{token}/catalogs', 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.z-api.io/instances/{instanceId}/token/{token}/catalogs",
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([
'nextCursor' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Client-Token: <api-key>",
"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.z-api.io/instances/{instanceId}/token/{token}/catalogs"
payload := strings.NewReader("{\n \"nextCursor\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Client-Token", "<api-key>")
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.z-api.io/instances/{instanceId}/token/{token}/catalogs")
.header("Client-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"nextCursor\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.z-api.io/instances/{instanceId}/token/{token}/catalogs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Client-Token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"nextCursor\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyWhatsApp Business
Get products V2
Returns catalog products (V2 with pagination via body)
POST
/
instances
/
{instanceId}
/
token
/
{token}
/
catalogs
Get products V2
curl --request POST \
--url https://api.z-api.io/instances/{instanceId}/token/{token}/catalogs \
--header 'Client-Token: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"nextCursor": "<string>"
}
'import requests
url = "https://api.z-api.io/instances/{instanceId}/token/{token}/catalogs"
payload = { "nextCursor": "<string>" }
headers = {
"Client-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Client-Token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({nextCursor: '<string>'})
};
fetch('https://api.z-api.io/instances/{instanceId}/token/{token}/catalogs', 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.z-api.io/instances/{instanceId}/token/{token}/catalogs",
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([
'nextCursor' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Client-Token: <api-key>",
"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.z-api.io/instances/{instanceId}/token/{token}/catalogs"
payload := strings.NewReader("{\n \"nextCursor\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Client-Token", "<api-key>")
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.z-api.io/instances/{instanceId}/token/{token}/catalogs")
.header("Client-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"nextCursor\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.z-api.io/instances/{instanceId}/token/{token}/catalogs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Client-Token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"nextCursor\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyOverview
With this method you can get the products from a WhatsApp Business catalog. This version uses POST with pagination via body, ideal for when the pagination cursor is too large for the URL.Attributes
Header
string
required
Your instance ID. Available in the Z-API panel under Instances.
string
required
Your Z-API instance token.
Body
string
Pagination token to fetch more records
Request Body
{
"nextCursor": "eyJwbHVnaW5fbmFtZSI6IldIQVRTQVBQX0NBVEFMT0ciLCJxdWVy..."
}
Response
200
{
"cartEnabled": true,
"products": [
{
"availability": "in stock",
"id": "999999999999999",
"retailerId": null,
"description": "Mouse description",
"price": "100000",
"salePrice": "90000",
"currency": "BRL",
"name": "Mouse",
"quantity": null,
"images": ["https://..."]
}
]
}