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
conversation.updatedevents to get notified instantly when new messages arrive — instead of polling.List conversations
/v1/conversationscurl "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: 50Maximum number of conversations to return.
offsetintegerDefault: 0Number of results to skip for pagination.
reservation_idstringFilter 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
idstringUnique conversation identifier.
reservationIdstringID of the linked reservation.
propertyIdstringID of the property this conversation belongs to.
guestNamestringFull name of the guest.
lastMessagestringPreview of the most recent message in the thread.
lastMessageAtstringISO 8601 timestamp of the last message.
unreadCountintegerNumber of unread messages from the guest.
typestringConversation type: reservation, inquiry, or general.
createdAtstringISO 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.