UrbanChat IMS API · v1.3
Connect WhatsApp to your inventory
Urbanchat’s WhatsApp flows and AI agents call this API to answer customers’ product questions from live stock, and to turn a conversation into a confirmed order. Each company issues its own key, and a key only ever reaches that company’s data.
What you can do
- Browse the catalogue: products with their variants (size, colour and any other option), price, MRP, GST rate, photos and stock available to order right now. Catalogue and stock
- Place orders captured in chat, with the delivery address and cash on delivery or prepaid. Orders are confirmed immediately and reserve stock. Orders
- Track orders and recognise customers by phone number. Customers
- Give an AI agent the same abilities as tools over the Model Context Protocol. MCP server
Base URL
GEThttps://www.chatcom.in/api/v1/urbanchat
Every request is HTTPS and every body is JSON. Money and quantities are strings ("499.00", "1.5"), never floating-point numbers, so no paisa is lost on the way. Prices are in Indian rupees and include GST at the stated tax_rate.
Quickstart
- A Super Admin or Admin of the company opens Settings → Urbanchat WhatsApp → API access, chooses New key, and sends the key to you over a private channel. It is shown once.
- Keep it on your server as an environment variable, here
UC_API_KEY. - Find what the customer is asking about:
curl "https://www.chatcom.in/api/v1/urbanchat/catalog/products?search=t-shirt&in_stock=true&limit=5" \
-H "X-API-KEY: $UC_API_KEY"- Order a variant by its
sku. Reuse the sameexternal_referenceif you retry — you get the same order back, never a second one.
curl -X POST "https://www.chatcom.in/api/v1/urbanchat/orders" \
-H "X-API-KEY: $UC_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customer": {
"name": "Anjali Menon",
"phone": "+91 98765 43210",
"email": "anjali@example.com"
},
"items": [
{
"product_id": "TSHIRT-RED-M",
"quantity": 2
},
{
"product_id": "TSHIRT-BLU-L",
"quantity": 1
}
],
"external_reference": "wa-conv-8f2c1e-order-1",
"notes": "Gift wrap, please.",
"delivery_address": {
"line1": "12/4 MG Road, Ravipuram",
"line2": "Opposite the bus stop",
"city": "Kochi",
"pincode": "682016"
},
"payment": "prepaid",
"payment_reference": "UPI 412345678901"
}'Conventions
- Field names are
snake_case. Unknown fields in a request are ignored. - Timestamps are ISO 8601 in UTC, e.g.
2026-10-13T07:42:11.000Z. - Phone numbers may be written any way —
+91 98765 43210,9876543210— and are matched on the number, not the formatting. - Errors share one shape; see Errors and limits.
- There is no price field anywhere in a request. Prices always come from the company’s catalogue.