Skip to content

Conversations

Every endpoint on this page needs the /conversations grant.

GET /v2/conversations/recent

Returns one row per contact, with the most recent chat first.

Query Default Description
page 1 Page number
pageSize 20 Up to 50
selected_channel Limit the results to one channel
{
"data": {
"conversations": [
{
"contact_id": 381,
"name": "Asha",
"contact_number": "919400294110",
"last_message": "Yes, thank you!",
"last_sender": "user",
"last_type": "text",
"last_status": "read",
"last_message_at": "2026-10-01T09:37:05.353Z"
}
],
"page": 1,
"pageSize": 20
}
}

GET /v2/conversations/{contactId}/messages

Query Default Description
page 1 Page 1 holds the newest messages
pageSize 30 Up to 100
since ISO timestamp. Only returns messages after this time, which is useful for polling
Terminal window
curl "https://api.wabot.shop/v2/conversations/381/messages?since=2026-10-01T09:00:00Z" \
-H "Authorization: $TOKEN"
{
"data": {
"contact_id": 381,
"messages": [
{
"id": 9912,
"message": "Your order has shipped.",
"type": "template",
"sender": "admin",
"sendStatus": "read",
"wa_message_id": "wamid.HBgN…",
"created_at": "2026-10-01T09:30:00.000Z",
"delivered_at": "2026-10-01T09:30:02.000Z",
"read_at": "2026-10-01T09:31:40.000Z"
},
{ "id": 9913, "message": "Yes, thank you!", "type": "text", "sender": "user", "created_at": "2026-10-01T09:37:05.353Z" }
],
"lastCustomerMessageTime": "2026-10-01T09:37:05.353Z",
"page": 1,
"pageSize": 30,
"total": 2
}
}
  • Messages within a page are ordered oldest to newest, so you can show them in order.
  • sender: "admin" means the message was sent by you: an agent, a campaign, a bot or the API.
  • lastCustomerMessageTime tells you whether you can send a session message. If it was less than 24 hours ago, the window is open.

Instead of polling, you can:

  • subscribe to the WhatsApp Message webhook
  • set event: ["replied"] with a callback_url when you send a message
  • use subscribe_replies on the MCP server if you’re building an AI agent