Returns the host's conversations, most recently active first.
GET /v2/messaging/conversationsRequest
Filters
| Parameter | Values | Description |
|---|---|---|
readState | All, Unread, Read | Unread returns only conversations holding messages that hosts have not read. Read returns only conversations holding messages that host have read. All returns conversations holding messages that host have read and not read. |
dateType | MessageSent, MessageViewed, CheckIn, CheckOut | Which date dateFrom and dateTo apply to |
dateFrom (optional) | date | Earliest date to include. Needs dateType. Inclusive. |
dateTo (optional) | date | Latest date to include. Needs dateType. Inclusive. |
listingId | integer | Only conversations about this listing, which must be the owned by the host |
bookingCode | string | The single conversation belonging to this booking |
limit | integer | How many conversations to return |
offset | integer | Where in the match set to start |
dateFrom and dateTo are only used when dateType is supplied, and without it no date filtering happens at all. Either bound can be left out on its own, and what it falls back to depends on the dateType:
DateType | dateFrom defaults to | dateTo defaults to |
|---|---|---|
MessageSent | 30 days ago | now |
MessageViewed | 30 days ago | now |
CheckIn | now | 12 months from now |
CheckOut | now | 12 months from now |
So the message dates look back, over the last 30 days of activity, while the stay dates look forward, over the next 12 months of arrivals or departures.
Both bounds are inclusive, but they are compared as moments rather than whole days. A bare date such as 2026-08-31 means midnight, so dateTo=2026-08-31 leaves out everything that happened during the 31st. Pass 2026-08-31T23:59:59 to take the whole day in.
MessageViewed leaves out conversations the host has never opened, because they have no viewed date to compare.
🚧 Note:
listingIdandbookingCodecannot be combined withreadState,dateType,dateFromordateTo. Sending them together returns 400. Filter by listing or booking, or filter by read state and date — not both in one request.
Response
On a success response, it's returned either a list of conversations or an empty list.
Conversation
| Field | Type | Description |
|---|---|---|
converssationId | integer | Unique identifier for the conversation, and the id every other route uses |
listingId | integer | The listing the conversation is about |
isEnquiry | boolean | true when the guest has not booked yet |
checkIn | dateTime (YYYY-MM-DDTHH:mm:ssZ) | Check in date of the stay |
checkOut | dateTime (YYYY-MM-DDTHH:mm:ssZ) | Check out date of the stay |
guests | integer | Number of guests the conversation is about |
dateCreated | dateTime (YYYY-MM-DDTHH:mm:ssZ) | When the conversation was started |
unreadMessages | integer | Messages addressed to the host that they have not read |
lastMessageAt | dateTime (YYYY-MM-DDTHH:mm:ssZ) | When the most recent message was sent, whoever sent it |
total is how many conversations matched, not how many this page returned. Page through the match set with limit and offSet.
Errors
| Status | Meaning |
|---|---|
200 | The request was valid. Nothing matching the filters is an empty data array with a total of 0, not an error |
400 | A filter combination that is not allowed, a missing dateType, an empty message body, or a file that is too large or the wrong type. The body is a ValidationProblemDetails naming each field |
401 | Missing or invalid token |
403 | The listingId filter names a listing this host does not own |
404 | No such conversation for this host, or no conversation for that bookingCode |
5xx | A transient failure reaching the messaging back end. Safe to retry, because this endpoint only reads |
A 400 returns a problem details body whose errors object is keyed by the query parameter at fault, with a sentence explaining the conflict. 401, 403 and 404 have empty bodies, so branch on the status code rather than on anything in the response.
404 is specific to bookingCode. Every other way of matching nothing, such as a listing of your own that has no conversations or a date range that catches none, is a 200 with an empty data array.
