NexaDesk

Conversations

API endpoints for listing and managing conversations

Access conversation data programmatically. List conversations, retrieve full message histories, and update conversation status.

List Conversations

Retrieve a paginated list of conversations with filtering and sorting.

GET /api/v1/external/conversations

ParameterTypeDescription
statusstringFilter by status: open, pending, active, archived, or all
searchstringSearch by visitor name, email, or company
tagstringFilter by tag (exact match)
sortstringSort field and direction. Allowed fields: created_at, updated_at
limitnumberResults per page (default 50, max 100)
cursorstringPagination cursor from previous response

bash
curl "https://chats.nexadesk.ai/api/v1/external/conversations?status=open&sort=updated_at:desc&limit=20" \
  -H "Authorization: Bearer fc_live_xxxxxxxxxxxx"

json
{
  "success": true,
  "data": [
    {
      "id": "c70f9500-a39c-42e5-b827-557766550002",
      "source": "widget",
      "status": "open",
      "tags": ["billing"],
      "created_at": "2026-03-20T08:00:00.000Z",
      "updated_at": "2026-03-20T08:45:00.000Z",
      "agent_id": null,
      "department_id": null,
      "visitor_name": "Sarah",
      "visitor_email": "[email protected]",
      "visitor_company": null,
      "agent_name": null,
      "last_message": "Can you tell me about your pricing plans?",
      "message_count": 6
    }
  ],
  "pagination": {
    "has_more": false,
    "next_cursor": null,
    "total_count": 1,
    "limit": 20
  }
}

Get Conversation with Messages

Retrieve a single conversation with its full message history.

GET /api/v1/external/conversations?id={conversation_id}

bash
curl "https://chats.nexadesk.ai/api/v1/external/conversations?id=c70f9500-a39c-42e5-b827-557766550002" \
  -H "Authorization: Bearer fc_live_xxxxxxxxxxxx"

json
{
  "success": true,
  "data": {
    "conversation": {
      "id": "c70f9500-a39c-42e5-b827-557766550002",
      "source": "widget",
      "status": "open",
      "tags": ["billing"],
      "created_at": "2026-03-20T08:00:00.000Z",
      "updated_at": "2026-03-20T08:45:00.000Z",
      "visitor_name": "Sarah",
      "visitor_last_name": null,
      "visitor_email": "[email protected]",
      "visitor_phone": null,
      "visitor_company": null,
      "agent_name": null,
      "agent_last_name": null,
      "agent_email": null
    },
    "messages": [
      {
        "id": "msg-001",
        "sender_type": "visitor",
        "content": "Hi, I have a question about pricing",
        "attachments": null,
        "status": "delivered",
        "created_at": "2026-03-20T08:00:00.000Z",
        "sender_name": "Sarah"
      },
      {
        "id": "msg-002",
        "sender_type": "bot",
        "content": "Hello Sarah! I'd be happy to help with pricing information.",
        "attachments": null,
        "status": "delivered",
        "created_at": "2026-03-20T08:00:01.000Z",
        "sender_name": null
      }
    ],
    "message_count": 2
  }
}

Update Conversation

Update conversation status, assignment, or tags.

PATCH /api/v1/external/conversations?id={conversation_id}

All fields are optional. Only provided fields are updated.

FieldTypeDescription
statusstringNew status: open, pending, active, archived
agent_idstring (UUID) or nullAssign to an agent or unassign
department_idstring (UUID) or nullAssign to a department
tagsstring[]Replace tags array

bash
curl -X PATCH "https://chats.nexadesk.ai/api/v1/external/conversations?id=c70f9500-a39c-42e5-b827-557766550002" \
  -H "Authorization: Bearer fc_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "active",
    "tags": ["billing", "escalated"]
  }'

json
{
  "success": true,
  "data": {
    "id": "c70f9500-a39c-42e5-b827-557766550002",
    "status": "active",
    "tags": ["billing", "escalated"],
    "updated_at": "2026-03-20T09:00:00.000Z"
  }
}