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://..."]
}
]
}
405
Make sure you are correctly sending the method specification, that is, verify that you sent POST or GET as specified at the beginning of this topic.415
If you receive a 415 error, make sure to add the “Content-Type” header to your request, which in most cases is “application/json”.⌘I