List my conversations (inbox)
Chat
List my conversations (inbox)
Returns the authenticated user’s conversations sorted by recent activity.
GET
List my conversations (inbox)
Overview
Returns every conversation the caller is a participant of, sorted bylastMessageAt descending (newest activity first), with _id descending as the tie-breaker so the order is stable across pages. This is the inbox feed.
A conversation with lastMessage: null (handshake created but no message yet) sorts at the bottom — the secondary _id sort keeps it at a deterministic position. The mobile client typically renders these as “Say hi — you matched with X” placeholders.
Conversations are returned as full documents (same shape as Get conversation) so the inbox can render last-message previews, unread badges, and timestamps without a follow-up call per row.
Authentication
Bearer <accessToken> required. requireOnboarded middleware applied — half-onboarded users hit 403 ONBOARDING_INCOMPLETE.
Path parameters
None.Query parameters
| Name | Type | Required | Default | Notes | Example |
|---|---|---|---|---|---|
limit | integer | no | 50 | 1..50 inclusive. Phase 4 returns the full inbox at once; cursor paging lands in Phase 5 when inboxes are expected to outgrow the default. | 20 |
The Phase 4 implementation does not yet accept a cursor — the entire inbox is returned in one page up to
limit rows. Adding ?cursor= will be additive in Phase 5 and will not break callers that ignore it.Request body
None.Response — 200 OK
| Field | Type | Notes | Example |
|---|---|---|---|
conversations | object[] | Array of conversation rows, sorted by lastMessageAt desc, _id desc. Empty array ([]) if the caller has no conversations. |
Example response
Each conversation embeds an enriched
peer (firstName + avatar) and property (the peer’s listing — cover photo + address) so the inbox renders a name, avatar, and property thumbnail per row without a follow-up call. See the Conversation object for the full field reference. peer / property may be null if the underlying user / listing has been deleted.Error responses
| Status | Code | Meaning |
|---|---|---|
| 401 | UNAUTHENTICATED | Missing, malformed, or expired access token. |
| 403 | ONBOARDING_INCOMPLETE | Caller has not finished onboarding. |
Side effects
None — pure read.See also
- Get conversation — single-row variant with the same shape.
- Match → Conversation handshake — how a row gets into this list.
- Socket events — to keep the inbox live the client should listen for
chat:message:newand re-sort.