Skip to main content

Catching up after a missed webhook

A webhook delivery is attempted once. If your endpoint was down, read back what you missed:
  1. Take the receivedAt of the last event you handled and go back five minutes — messages that arrive together can be delivered out of order.
  2. GET /api/v1/conversations?since=<that time> — every conversation a customer has written in since then, including brand-new ones.
  3. For each, GET /api/v1/conversations/{id}/messages?since=<same time>.
  4. Skip any message whose id matches a messageId you already handled.
Poll this every few minutes as a safety net and a missed message never goes unanswered for long.

GET /conversations

Newest first.
string
whatsapp, web, telegram, voice or email.
string
ISO 8601. Keeps conversations where the customer last wrote at or after this.
number
Up to 100. Default 25. Follow nextCursor with ?cursor= for the next page.

GET /conversations/{id}/messages

Newest first. The customer’s messages, your agent’s replies, and replies a teammate sent from the inbox (author: "teammate"). Your team’s internal notes are not included.
string
ISO 8601. Keeps messages written after this.
number
Up to 100. Default 25. Follow nextCursor with ?cursor=.
Photos, voice notes, videos and documents a customer sent come back as links that stay valid for eight hours. Download what you need to keep.

Errors