JawblyJawblyDocs
API reference

Messages

Send messages to your customers and read the conversation history, all provider-agnostic (WhatsApp today, more channels later).

Base URLhttps://api.jawbly.com/v1
For agents: llms.txt·OpenAPI
POST/messages

Send a message

Send a text or template message from your connected number to a customer. Respects the channel’s 24-hour messaging window automatically.

Requires scope messages:write

Parameters

torequired
string (E.164) · body

Destination phone number, e.g. +14155550123.

typerequired
"text" | "template" · body

Message type. Outside the 24h window, only templates are allowed.

text
string · body

Message body when type is "text".

template
object · body

Template name + variables when type is "template".

curl -X POST "https://api.jawbly.com/v1/messages" \
  -H "Authorization: Bearer jwb_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+14155550123",
    "type": "text",
    "text": "Your order #1024 is on its way 🚚"
  }'
200 response
{
  "id": "msg_2Zt9…",
  "status": "queued",
  "conversationId": "conv_8fA1…",
  "createdAt": "2026-07-07T10:12:04Z"
}
GET/conversations/{conversationId}/messages

List messages

Page through the messages in a conversation, newest first.

Requires scope messages:read

Parameters

conversationIdrequired
string · path

The conversation to read.

limit
integer (1–100) · query

Page size. Defaults to 50.

before
string (cursor) · query

Return messages older than this cursor.

curl -X GET "https://api.jawbly.com/v1/conversations/{conversationId}/messages" \
  -H "Authorization: Bearer jwb_live_xxxxxxxxxxxxxxxxxxxxxxxx"
200 response
{
  "data": [
    {
      "id": "msg_2Zt9…",
      "direction": "outbound",
      "text": "Your order #1024 is on its way 🚚",
      "createdAt": "2026-07-07T10:12:04Z"
    }
  ],
  "nextCursor": null
}