Skip to main content
GET
List threads

Authorizations

Authorization
string
header
required

A bearer token obtained through one of the two flows below.

Query Parameters

page[after]
string

The cursor from the previous page's links.next. Do not build it yourself, and do not hold on to it: follow the link until there is no next.

page[limit]
integer
default:25

How many to return. Up to 50; more than that is refused rather than quietly trimmed. The same everywhere in this API.

Required range: 1 <= x <= 50
include
enum<string>

Related resources to return alongside. Combine them with commas: a list of threads with include=watch,watch.cover,seller is one call for a whole mailbox screen, photo included. messages is the whole thread and belongs on one thread, not on the list — lastMessage is the attribute a row draws from.

Available options:
watch,
watch.cover,
watch.watchModel,
seller,
messages
sort
enum<string>

createdAt or updatedAt, prefixed with - for descending. Newest activity first by default, which is the order a mailbox is read in.

Available options:
createdAt,
-createdAt,
updatedAt,
-updatedAt
filter[side]
enum<string>
default:buyer

buyer (the default) or seller. Buyer is what the app is; seller returns the threads of the shops you belong to, and is for the seller environment. Anything else is a 400.

Available options:
buyer,
seller
filter[seller]
string

One business. With filter[side]=seller it is the shop whose threads you want, which is what staff at two businesses need after switching into one of them; on the buyer side it means "my threads with this business".

It only ever narrows. An id belonging to a business you do not work at answers an empty list, never somebody else's correspondence, and meta.unread narrows with it.

filter[unread]
boolean

true or false, answered from the side you are browsing -- the buyer's column by default, the seller's when you asked for filter[side]=seller.

filter[archived]
boolean

true or false, for the side you are browsing, the same way.

filter[q]
string

Words, each of which has to appear on the row: the watch's name or reference, or the name of whoever is at the other end — the buyer on the shop's side, the shop on your own.

Maximum string length: 255
filter[hasOpenOffer]
boolean

true for the threads with an offer still waiting on an answer — a buyer's offer nobody has answered or withdrawn, or a shop's proposal that has not run out — the same thing a message's priceProposal.status calls pending. false for the rest.

filter[unanswered]
boolean

The shop's "Unanswered", with filter[side]=seller -- exactly the website's filter of that name: not archived, the last message not yours (so a thread with no messages yet, or one a colleague answered last, is waiting too), and not a thread the shop marked noReplyNeeded unless the buyer wrote since. false for the rest. On the buyer's side it is a 400 seller_side_filter: a buyer has nothing to answer.

Response

A page of threads, with meta.unread beside it.

data
object[]
required
included
object[]

Present when the answer is a page.

meta
object

page when the answer is a page: from, to, perPage and hasMore for a cursor (from and to are cursors, not numbers), or currentPage, from, lastPage, perPage, to and total for numbered pages. Some lists add their own beside it, such as statusCounts, unread or facets.