Skip to content

Catalog

Your WhatsApp number can have a product catalog attached (from Meta Commerce Manager). Instead of adding products by hand in the Catalogue screen, use this API to push products from your source of truth (your store DB, an ERP, a spreadsheet) and to read back the orders customers submit from the catalogue.

All calls act on the catalog connected to your number — resolved from your X-API-Key — so nothing about the number, catalog id, or token is hardcoded.

Every request sends your key as the X-API-Key header. Create one under Settings → API Keys (the token is shown once).

Terminal window
-H "X-API-Key: wa_live_xxx"
cURL
curl https://api.whatbot.in/public/v1/catalog -H "X-API-Key: wa_live_xxx"
Response
{ "connected": true, "catalog_id": "1234567890", "name": "My Store", "product_count": 42 }

Returns { "connected": false, ... } when no catalog is attached to the number.

cURL
curl "https://api.whatbot.in/public/v1/catalog/products?limit=100&search=ring" \
-H "X-API-Key: wa_live_xxx"
  • search (optional) — case-insensitive filter on the product name.
  • limit (optional, default 100, max 500).
Response
{
"products": [
{
"retailer_id": "SKU-001",
"name": "Gold Ring",
"description": "22k, 4g",
"price": "₹1,999.00",
"currency": "INR",
"sale_price": null,
"availability": "in stock",
"condition": "new",
"visibility": "published",
"brand": "Acme",
"image_url": "https://cdn.example.com/ring.jpg",
"url": "https://store.example.com/ring"
}
]
}

Upsert by retailer_id (your SKU): the first call creates the product, later calls with the same retailer_id update it.

cURL
curl -X POST https://api.whatbot.in/public/v1/catalog/products \
-H "X-API-Key: wa_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"retailer_id": "SKU-001",
"name": "Gold Ring",
"description": "22k, 4g",
"price": 199900,
"currency": "INR",
"availability": "in stock",
"condition": "new",
"image_url": "https://cdn.example.com/ring.jpg",
"url": "https://store.example.com/ring"
}'
Response
{ "success": true, "product_id": "7890...", "retailer_id": "SKU-001" }
FieldRequiredNotes
retailer_idYour SKU / Content ID — the upsert key.
nameProduct title.
priceInteger in the currency’s minor units — paise/cents. 199900 = ₹1,999.00.
currencyISO 4217, e.g. INR, USD.
image_urlPublic https:// image (JPG/PNG, under 8 MB) that Meta can fetch.
sale_priceInteger minor units, like price.
availabilityin stock · out of stock · preorder · available for order · discontinued (spaces, not underscores). Defaults to in stock.
conditionnew · refurbished · used. Defaults to new.
visibilitypublished (shown) or staging (hidden). Defaults to published.
description, brand, fb_product_category, urlOptional metadata.
cURL
curl -X DELETE https://api.whatbot.in/public/v1/catalog/products/SKU-001 \
-H "X-API-Key: wa_live_xxx"
Response
{ "success": true, "retailer_id": "SKU-001" }

Orders customers submitted from the catalogue (WhatsApp order messages), newest first, with the customer’s name/number and the line items.

cURL
curl "https://api.whatbot.in/public/v1/catalog/orders?limit=100" \
-H "X-API-Key: wa_live_xxx"
Response
{
"orders": [
{
"id": "a1b2...",
"conversation_id": "c9e6...",
"customer_name": "Devi",
"phone": "919876543210",
"items": [
{ "retailer_id": "SKU-001", "name": "Gold Ring", "image_url": "https://cdn.example.com/ring.jpg", "quantity": 2, "item_price": 1999, "currency": "INR" }
],
"total": 3998,
"currency": "INR",
"note": "Gift wrap please",
"created_at": "2026-07-14T06:03:28Z"
}
]
}

Failures return a 4xx with a plain-English detail (vendor codes and Graph URLs are stripped), e.g. A product image URL is required. or This WhatsApp number isn't permitted to manage its product catalog. A missing catalog returns 400 No product catalog is connected to this WhatsApp number.