Boltly Boltly / Docs
Docs / API Reference / Conversations

Conversations

List and inspect WhatsApp conversations, and route them to the right agents with assignment and transfer operations.

GET /v1/conversations

List conversations

Retrieve a paginated list of conversations, optionally filtered by inbox, contact, or status.

Parameters

inbox_id string

Filter by inbox ID.

contact_id string

Filter by contact ID.

team_id string

Filter by assigned team ID.

status string

Filter by status. One of: open, pending, closed, snoozed, spam.

filter string

Named filter, e.g. "assigned_to_me" or "unassigned".

page integer

Page number. Defaults to 1.

per_page integer

Results per page. Defaults to 25, max 100.

Request

cURL
curl https://api.boltly.online/v1/conversations?status=open \
  -H "X-API-Key: $API_KEY"

Response

JSON
{
  "data": [
    {
      "id": "conv_01H...",
      "contact_id": "c1a2b3c4-...",
      "contact_name": "Jane Doe",
      "phone_number": "+1234567890",
      "platform": "whatsapp",
      "status": "open",
      "last_message_at": "2026-04-03T12:00:00Z",
      "is_within_24h_window": true,
      "assigned_to": "u_01H...",
      "created_at": "2026-04-01T08:00:00Z",
      "updated_at": "2026-04-03T12:00:00Z"
    }
  ],
  "meta": { "page": 1, "per_page": 25, "total": 34 }
}

GET /v1/conversations/{id}

Get conversation

Retrieve a single conversation by its ID, including assignment and 24-hour window state.

Parameters

id string required

Conversation ID.

Request

cURL
curl https://api.boltly.online/v1/conversations/conv_01H... \
  -H "X-API-Key: $API_KEY"

Response

JSON
{
  "data": {
    "id": "conv_01H...",
    "organization_id": "org_01H...",
    "inbox_id": "inb_01H...",
    "contact_id": "c1a2b3c4-...",
    "contact_name": "Jane Doe",
    "phone_number": "+1234567890",
    "platform": "whatsapp",
    "status": "open",
    "last_message_at": "2026-04-03T12:00:00Z",
    "last_user_message_at": "2026-04-03T11:45:00Z",
    "is_within_24h_window": true,
    "is_expired": false,
    "is_favorite": false,
    "assigned_to": "u_01H...",
    "assigned_to_name": "Sam Agent",
    "team_id": "team_01H...",
    "created_at": "2026-04-01T08:00:00Z",
    "updated_at": "2026-04-03T12:00:00Z"
  }
}

POST /v1/conversations/{id}/assign

Assign agent

Assign a conversation to an agent, a team, or both.

Parameters

id string required

Conversation ID.

assigned_to string

User ID of the agent to assign.

team_id string

Team ID to assign the conversation to.

reason string

Optional note recorded in the assignment history.

Request

cURL
curl -X POST https://api.boltly.online/v1/conversations/conv_01H.../assign \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "assigned_to": "u_01H...",
    "reason": "Escalated billing question"
  }'

Response

JSON
{
  "data": {
    "id": "asg_01H...",
    "conversation_id": "conv_01H...",
    "assigned_to": "u_01H...",
    "assigned_by": "u_02H...",
    "assignment_type": "manual",
    "reason": "Escalated billing question",
    "created_at": "2026-04-03T12:05:00Z"
  }
}

POST /v1/conversations/{id}/transfer

Transfer

Transfer a conversation from one agent to another.

Parameters

id string required

Conversation ID.

from_agent string required

User ID of the agent currently handling the conversation.

to_agent string required

User ID of the agent to transfer the conversation to.

reason string

Optional note recorded in the assignment history.

Request

cURL
curl -X POST https://api.boltly.online/v1/conversations/conv_01H.../transfer \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from_agent": "u_01H...",
    "to_agent": "u_03H...",
    "reason": "Shift handover"
  }'

Response

JSON
{
  "data": {
    "id": "asg_02H...",
    "conversation_id": "conv_01H...",
    "assigned_to": "u_03H...",
    "assigned_by": "u_01H...",
    "assignment_type": "transfer",
    "reason": "Shift handover",
    "created_at": "2026-04-03T18:00:00Z"
  }
}