Get one conversation
GET/v1/threads/{id}
scope messages.read
The same shape as a row in the list. 404 if the conversation is not on one of your listings.
Response#
| Field | Type | Description |
|---|---|---|
data | object | One conversation, the same shape as an element of GET /v1/threads. A conversation on someone else's listing simply does not come back, which is why this 404s rather than 403s. |
data. | integer | The conversation id, for the message endpoints. |
data. | string|null | What the conversation is about, usually the listing title. |
data. | object|null | The listing being discussed. |
data. | integer | Our product id. |
data. | string | Its title. |
data. | string | Its URL segment. |
data. | object|null | Who you are talking to. |
data. | integer | The buyer's user id. |
data. | string | Their display name, shortened the way buyers appear elsewhere on the marketplace. |
data. | object|null | The most recent message, so a list renders without a call per row. null on an empty conversation. |
data. | integer | That message's id. |
data. | string | Who wrote it. Accepts |
data. | string | A truncated body — the full text is on GET /v1/threads/{id}/messages. |
data. | string | ISO-8601 UTC. |
data. | boolean | Whether the buyer has written since you last read it. POST /v1/threads/{id}/read clears it. |
data. | string | ISO-8601 UTC, when the conversation started. |
data. | string | ISO-8601 UTC, when it last moved. |
Example
{
"data": {
"id": 107373,
"subject": "Trek Marlin 7",
"product": {
"id": 237233,
"title": "Trek Marlin 7",
"slug": "trek-marlin-7"
},
"buyer": {
"id": 9000002,
"name": "Jane Doe"
},
"last_message": {
"id": 174420,
"from": "buyer",
"preview": "Is this still available?",
"created_at": "2026-09-10T06:15:18Z"
},
"is_unread": true,
"created_at": "2026-09-10T06:15:18Z",
"updated_at": "2026-09-10T06:15:18Z"
}
}