API

The resell.store API

Everything you can do in the app, your code can do too: make and publish listings, look up prices, answer offers, ship sales, reply to buyers and follow your numbers.

Quick start

  1. Make a secret key on resell.store/tools/api. It's shown once, so copy it somewhere safe.
  2. Check it works:
Terminal
export RESELL_KEY=rs_live_...

curl https://api.resell.store/v1/me \
  -H "Authorization: Bearer $RESELL_KEY"
  1. List something with one request. It goes live straight away because it has a title and a price:
Terminal
curl https://api.resell.store/v1/listings \
  -H "Authorization: Bearer $RESELL_KEY" \
  -d shop=maya \
  -d title="Yellow dutch oven, 5.5 qt" \
  -d price=185 \
  -d lowest_price=160 \
  -d publish=true

Not sure what it's worth? Send a prompt in your own words with research=true instead, and the research agent works out what it is and suggests a price. See Research.

Base URL

https://api.resell.store/v1

Everything is under /v1. We only add to v1 (new endpoints, new fields), so code you write now keeps working. Anything that would break it gets a new version.

How it works

Sending dataJSON with Content-Type: application/json, or plain form fields (curl -d). Nested fields use brackets: -d fields[Brand]=Le Creuset.
MoneyUS dollars as numbers: 185 or 185.5. Never cents.
TimesISO 8601 in UTC, like 2026-10-02T18:30:00.000Z.
ObjectsEvery object has an object field saying what it is (listing, offer, order…) and an id. Shops and stores go by their slug.
ChangesPATCH takes only the fields that change. null clears a field.
Who sees whatWith your key you see your own shops, listings, offers, sales and messages, never anyone else's. Marketplace endpoints show what any visitor sees.

Seller and buyer, one key

A key belongs to a person, and people both sell and buy. Offers and messages take role=seller (the default) or role=buyer to say which side you're asking about.

Lists and pages

Lists come back as { "object": "list", "data": [...], "total": 42, "has_more": true }. Ask for the next page with offset, and up to 100 at a time with limit (default 25).

Terminal
curl "https://api.resell.store/v1/listings?status=live&limit=50&offset=50" \
  -H "Authorization: Bearer $RESELL_KEY"

Reference

Prefer a machine-readable description? openapi.json works with Postman, Insomnia and code generators.