API reference
Messages
Conversations between buyers and shops.
List conversations
GET
/v1/threadsNeeds a key with read
Conversations with buyers across your shops (role=seller, the default) or with shops you've written to (role=buyer), most recent first.
Query
role"seller" | "buyer"default "seller"unreadboolean- Only conversations waiting on you.
limitintegerdefault 25- How many to return, 1 to 100. Default 25.
offsetintegerdefault 0- How many to skip, for the next page.
curl https://api.resell.store/v1/threads?unread=true \
-H "Authorization: Bearer $RESELL_KEY"Response
{
"object": "list",
"data": [
{
"object": "thread",
"id": "t_91c…",
"with": "Jess",
"shop": {
"slug": "maya",
"name": "Maya's closet"
},
"listing": {
"id": "8d1e6c2a-…",
"title": "Yellow Le Creuset dutch oven, 5.5 qt",
"photo": "https://files.resell.store/…",
"url": "https://maya.resell.store/yellow-le-creuset-dutch-oven-5-5-qt"
},
"preview": "Is the lid included?",
"last_from": "them",
"unread": true,
"needs_you": false,
"last_message_at": "2026-10-02T17:42:00.000Z"
}
],
"total": 1,
"has_more": false
}Read a conversation
GET
/v1/threads/:idNeeds a key with read
The whole conversation, oldest message first. Reading it here doesn't mark it read; POST /threads/:id/read does.
Path
idstringrequired- The id.
curl https://api.resell.store/v1/threads/t_91c… \
-H "Authorization: Bearer $RESELL_KEY"Response
{
"object": "thread",
"id": "t_91c…",
"with": "Jess",
"shop": {
"slug": "maya",
"name": "Maya's closet"
},
"listing": {
"id": "8d1e6c2a-…",
"title": "Yellow Le Creuset dutch oven, 5.5 qt",
"photo": "https://files.resell.store/…",
"url": "https://maya.resell.store/yellow-le-creuset-dutch-oven-5-5-qt"
},
"preview": "Is the lid included?",
"last_from": "them",
"unread": true,
"needs_you": false,
"last_message_at": "2026-10-02T17:42:00.000Z",
"role": "seller",
"messages": [
{
"id": "m_1",
"from": "them",
"by_agent": false,
"body": "Hi! Is the lid included?",
"created_at": "2026-10-02T17:42:00.000Z"
},
{
"id": "m_2",
"from": "you",
"by_agent": false,
"body": "It is, and it fits snugly.",
"created_at": "2026-10-02T17:50:00.000Z"
}
]
}Reply
POST
/v1/threads/:id/messagesNeeds a key with messages
Sends a message in a conversation, from whichever side you're on. Sending also marks it read for you.
Path
idstringrequired- The id.
Body
bodystringrequired
curl https://api.resell.store/v1/threads/t_91c…/messages \
-H "Authorization: Bearer $RESELL_KEY" \
-d body="It is, and it fits snugly."Response
{
"id": "m_2",
"from": "you",
"by_agent": false,
"body": "It is, and it fits snugly.",
"created_at": "2026-10-02T17:50:00.000Z"
}Mark read
POST
/v1/threads/:id/readNeeds a key with messages
Path
idstringrequired- The id.
curl -X POST https://api.resell.store/v1/threads/t_91c…/read \
-H "Authorization: Bearer $RESELL_KEY"Response
{
"object": "thread",
"id": "t_91c…",
"with": "Jess",
"shop": {
"slug": "maya",
"name": "Maya's closet"
},
"listing": {
"id": "8d1e6c2a-…",
"title": "Yellow Le Creuset dutch oven, 5.5 qt",
"photo": "https://files.resell.store/…",
"url": "https://maya.resell.store/yellow-le-creuset-dutch-oven-5-5-qt"
},
"preview": "Is the lid included?",
"last_from": "them",
"unread": false,
"needs_you": false,
"last_message_at": "2026-10-02T17:42:00.000Z"
}Message a shop
POST
/v1/threadsNeeds a key with buying
Writes to a shop as a buyer, about one of its listings or in general. If you've written to them about it before, the message goes in that conversation.
Body
shopstringrequired- The shop's slug.
listingstring- A listing id, if it's about one.
bodystringrequired
curl https://api.resell.store/v1/threads \
-H "Authorization: Bearer $RESELL_KEY" \
-d shop=maya \
-d listing="8d1e6c2a-…" \
-d body="Hi! Is the lid included?"Response
{
"object": "thread",
"id": "t_91c…",
"with": "Maya's closet",
"shop": {
"slug": "maya",
"name": "Maya's closet"
},
"listing": {
"id": "8d1e6c2a-…",
"title": "Yellow Le Creuset dutch oven, 5.5 qt",
"photo": "https://files.resell.store/…",
"url": "https://maya.resell.store/yellow-le-creuset-dutch-oven-5-5-qt"
},
"preview": "Is the lid included?",
"last_from": "you",
"unread": false,
"needs_you": false,
"last_message_at": "2026-10-02T17:42:00.000Z",
"role": "buyer",
"messages": []
}