GetProduct#
The method is designed to retrieve information about a specific catalog product by its identifier.
Behavior change
Previously the method worked without instance authorization via WhatsApp's public GraphQL. Now the instance must be authorized.
If the method is called on an unauthorized instance, an authorization error is returned.
WhatsApp-side limitations
If catalog methods are called frequently, WhatsApp may temporarily restrict access to the Business Catalog API. Do not send a large number of requests to catalog methods over a short period of time.
Request#
To get a product, you need to send a request to the address:
{{apiUrl}}/waInstance{{idInstance}}/getProduct/{{apiTokenInstance}}
To obtain the request parameters idInstance and apiTokenInstance, refer to the section Before you start.
Request parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
chatId | string | Yes | Seller's chat identifier in the format 79876543210@c.us |
productId | string | Yes | Unique product identifier in WhatsApp |
Request body example#
{
"chatId": "79876543210@c.us",
"productId": "26437451389197252"
}
Response#
Response fields#
| Field | Type | Description |
|---|---|---|
id | string | Unique product identifier |
name | string | Product name |
description | string | Product description |
price | string | Price (in the smallest currency unit, e.g., 95000 = 950.00 EUR) |
currency | string | Currency code (e.g., EUR) |
retailer_id | string | Product identifier from the retailer |
is_hidden | boolean | Whether the product is hidden |
is_sanctioned | boolean | Whether the product is under sanctions |
product_availability | string | Product availability (IN_STOCK, OUT_OF_STOCK, etc.) |
max_available | integer | Maximum available quantity |
url | string | Product page URL |
shimmed_url | string | Processed URL |
status_info | object | Moderation status information (status field: APPROVED, PENDING, REJECTED) |
sale_price | string | Sale price (if available) |
media | object | Media files (images and videos arrays) |
belongs_to | string | Product owner |
compliance_category | string | Compliance category |
compliance_info | object | Compliance information (includes country_code_origin, importer_name, importer_address) |
variant_info | object | Product variant information |
Response body example#
{
"id": "26437451389197252",
"retailer_id": null,
"is_hidden": null,
"is_sanctioned": false,
"product_availability": "IN_STOCK",
"max_available": 99,
"name": "Handmade Ceramic Mug - Large+",
"description": "Hand-painted ceramic mug, 450ml. Dishwasher safe. New larger size.",
"url": null,
"shimmed_url": null,
"currency": "USD",
"price": "900",
"status_info": {
"can_appeal": null,
"status": "APPROVED"
},
"sale_price": null,
"media": {
"images": [
{
"id": "26756491040611445",
"original_image_url": "https://mmg.whatsapp.net/...",
"request_image_url": "https://mmg.whatsapp.net/..."
}
],
"videos": []
},
"belongs_to": null,
"compliance_category": null,
"compliance_info": {
"country_code_origin": "RU",
"importer_name": "",
"importer_address": null
},
"variant_info": null
}
GetProduct errors#
For a list of common errors for all methods, see the section Common errors
Code examples#
import requests
url = "{{apiUrl}}/waInstance{{idInstance}}/getProduct/{{apiTokenInstance}}"
payload = {
"chatId": "79876543210@c.us",
"productId": "26437451389197252"
}
headers = {
'Content-Type': 'application/json'
}
response = requests.post(url, json=payload, headers=headers)
print(response.text.encode('utf8'))
curl --location '{{apiUrl}}/waInstance{{idInstance}}/getProduct/{{apiTokenInstance}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"chatId": "79876543210@c.us",
"productId": "26437451389197252"
}'