List Conversations

Retrieve all guest conversations across every connected platform. Each conversation is linked to a reservation and includes the latest message preview.

When to use this endpoint

  • Build a unified inbox that aggregates messages from Airbnb, Booking.com, and direct channels
  • Monitor guest communication volume and response times
  • Feed conversation context into your AI agent for automated responses
  • Display unread message counts in your dashboard

Real-time updates

Combine this endpoint with webhooks subscribing to conversation.updatedevents to get notified instantly when new messages arrive — instead of polling.

List conversations

GET/v1/conversations
curl "https://api.repull.dev/v1/conversations?limit=20" \
  -H "Authorization: Bearer sk_test_YOUR_KEY" \
  -H "X-Workspace-Id: YOUR_WORKSPACE_ID"

Query parameters

limitintegerDefault: 50

Maximum number of conversations to return.

offsetintegerDefault: 0

Number of results to skip for pagination.

reservation_idstring

Filter conversations for a specific reservation.

Response format

Returns a paginated array of conversation objects with message previews.

{
  "data": [
    {
      "id": "100",
      "reservationId": "456",
      "propertyId": "123",
      "guestName": "Sarah Mitchell",
      "lastMessage": "Hi! What are the check-in instructions?",
      "lastMessageAt": "2026-05-28T14:30:00Z",
      "unreadCount": 1,
      "type": "reservation",
      "createdAt": "2026-05-15T09:00:00Z"
    },
    {
      "id": "101",
      "reservationId": "789",
      "propertyId": "124",
      "guestName": "Marco Rossi",
      "lastMessage": "Thank you for the early check-in!",
      "lastMessageAt": "2026-05-27T10:15:00Z",
      "unreadCount": 0,
      "type": "reservation",
      "createdAt": "2026-05-20T11:00:00Z"
    }
  ],
  "pagination": {
    "total": 42,
    "limit": 50,
    "offset": 0,
    "hasMore": false
  }
}

Response fields

idstring

Unique conversation identifier.

reservationIdstring

ID of the linked reservation.

propertyIdstring

ID of the property this conversation belongs to.

guestNamestring

Full name of the guest.

lastMessagestring

Preview of the most recent message in the thread.

lastMessageAtstring

ISO 8601 timestamp of the last message.

unreadCountinteger

Number of unread messages from the guest.

typestring

Conversation type: reservation, inquiry, or general.

createdAtstring

ISO 8601 timestamp when the conversation was created.

Pagination

Results are paginated using limit and offset. Check pagination.hasMore to determine if additional pages exist.

// Fetch conversations with unread messages
const unread = [];
let offset = 0;
const limit = 50;
let hasMore = true;

while (hasMore) {
  const { data, pagination } = await repull.conversations.list({ limit, offset });

  for (const conv of data) {
    if (conv.unreadCount > 0) unread.push(conv);
  }

  hasMore = pagination.hasMore;
  offset += limit;
}

console.log(`${unread.length} conversations need a reply`);

API Reference

See the complete Conversations API Reference for all endpoints including reading messages and sending replies.

AI