Sellers

List sellers

Lists the sellers of your account, one page at a time.

GET
/v1/sellers

Returns the sellers of your account in pages, from the newest to the oldest by default. Use it to sync your records with ours or to build a list on your screen.

Sorting

sort picks the order. One parameter; a leading minus means descending.

sortOrder
-createdAtnewest first (default)
createdAtoldest first
nameby name, A to Z, ignoring letter case
-nameby name, Z to A

Ties are broken by id, so the order is stable across pages.

curl "$BACKEND_URL/v1/sellers?sort=name&pageSize=50" \
  -H "Authorization: Bearer mk_your_api_key"

Filtering

externalId returns only the seller with that external id, compared exactly. It is unique within your account, so data has one item or none, and pagination.totalItems is 1 or 0. It is the way to find your customer's record from your own id without storing ours.

curl "$BACKEND_URL/v1/sellers?externalId=customer-123" \
  -H "Authorization: Bearer mk_your_api_key"

metadata[key]=value filters by the seller's metadata. See Metadata.

Go through all pages

  1. Ask for page 1 (page=1). Use pageSize for the size (1 to 100, default 20).
  2. Read the pagination of the response: totalPages tells how many pages there are, and hasNext tells if there is one after this.
  3. While hasNext comes back true, ask for page + 1.
# first page
curl "$BACKEND_URL/v1/sellers?page=1&pageSize=50" \
  -H "Authorization: Bearer mk_your_api_key"

# next page
curl "$BACKEND_URL/v1/sellers?page=2&pageSize=50" \
  -H "Authorization: Bearer mk_your_api_key"

With 3 sellers and pageSize=2, page 1 brings 2 sellers in data and this pagination:

{
  "page": 1,
  "pageSize": 2,
  "totalItems": 3,
  "totalPages": 2,
  "hasNext": true,
  "hasPrev": false
}

A page after the last one

Asking for a page past the end (in the example, page=3) is not an error. The response is 200 with data: [] and a pagination with the real totals, which show where the list ends.

Common errors

  • 400 VALIDATION_ERROR: page below 1, pageSize outside 1 to 100, a value that is not an integer, a sort outside the table above, or an empty externalId. details points at the wrong parameter (path: ["page"]).

A seller created while you read

If a seller is created while you go through the pages, the others move down one position. The last seller of a page shows up again at the start of the next one. Use the id so you don't process the same seller twice.

Authorization

api_key
headerAuthorizationBearer <token>

API key (mk_...)

Query Parameters

page?integer

Page number, starting at 1. Defaults to 1. A page beyond pagination.totalPages is not an error: it returns empty data.

Range1 <= value <= 9007199254740991
Default1
pageSize?integer

Items per page, from 1 to 100. Defaults to 20.

Range1 <= value <= 100
Default20
sort?string

Order of the listing. -createdAt (default): newest first. createdAt: oldest first. name: A to Z, ignoring case. -name: Z to A. Ties are broken by id, so the order is stable across pages.

Default"-createdAt"
Value in"-createdAt""createdAt""name""-name"
externalId?string

Only the seller with this externalId, compared exactly (it is unique within your account, so data has one item or none). Omit it to list every seller.

Length1 <= length <= 120
metadata?

Only the sellers whose metadata matches, written as metadata[key]=value. A stored string, number or boolean must be equal. A number compares by value: metadata[stores]=3 and metadata[stores]=3.0 both find the number 3. metadata[active]=true finds the boolean true. A string must match the text exactly, case included: metadata[stores]=3 also finds the string "3", but not "3.0". A stored array matches when it contains the value. Repeat a key to accept any of its values (OR): metadata[plan]=pro&metadata[plan]=max. Different keys must all match (AND). A key that holds an object, or a key the seller does not have, never matches. Up to 10 keys, 20 values per key, each value 1 to 500 characters.

Propertiesproperties <= 10

Response Body

One page of sellers in the order sort asks for (newest first by default), narrowed by the filters. pagination carries the totals of the filtered listing; a page beyond pagination.totalPages returns empty data, not 404.

application/json
  1. response

One page of sellers.

data*array<>

The sellers of this page, newest first.

pagination*

Where this page sits in the whole listing: the totals and whether there are pages before and after it.

curl -X GET "https://example.com/v1/sellers"
{  "data": [    {      "id": "8a2e5b90-1c44-4d7a-b3f2-5e6a7c8d9f02",      "name": "Globex Imports",      "externalId": null,      "metadata": {},      "connections": [],      "createdAt": "2026-10-06T14:31:00.000Z",      "updatedAt": "2026-10-06T14:31:00.000Z"    },    {      "id": "3d1c8a52-7f0e-4b0a-8a65-9c1b2f6d7e01",      "name": "Acme Store",      "externalId": "customer-123",      "metadata": {        "plan": "pro",        "region": "south",        "tags": [          "vip",          "b2b"        ]      },      "connections": [        {          "id": "9a1b2c3d-4e5f-4a6b-8c7d-0e1f2a3b4c5d",          "marketplace": "mercadolivre",          "marketplaceDisplayName": "Mercado Livre",          "status": "active"        }      ],      "createdAt": "2026-10-06T14:30:00.000Z",      "updatedAt": "2026-10-06T14:30:00.000Z"    }  ],  "pagination": {    "page": 1,    "pageSize": 2,    "totalItems": 3,    "totalPages": 2,    "hasNext": true,    "hasPrev": false  }}