API reference
Offers
List offers
/v1/offersOffers on your listings (role=seller, the default) or offers you've made (role=buyer), newest first. Status is as of now: an open offer past its deadline reads expired.
Query
role"seller" | "buyer"default "seller"status"open" | "countered" | "accepted" | "declined" | "withdrawn" | "expired" | "paid"listingstring- Only offers on this listing id.
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/offers?status=open \
-H "Authorization: Bearer $RESELL_KEY"{
"object": "list",
"data": [
{
"object": "offer",
"id": "5b0f…",
"status": "open",
"amount": 150,
"counter": null,
"agreed": 150,
"note": "Could pick up this weekend.",
"deposit": null,
"expires_at": "2026-10-04T18:00:00.000Z",
"responded_at": null,
"created_at": "2026-10-02T18:00:00.000Z",
"listing": {
"id": "8d1e6c2a-…",
"title": "Yellow Le Creuset dutch oven, 5.5 qt",
"price": 185,
"status": "live",
"photo": "https://files.resell.store/…",
"url": "https://maya.resell.store/yellow-le-creuset-dutch-oven-5-5-qt"
},
"shop": {
"slug": "maya",
"name": "Maya's closet"
},
"buyer": {
"name": "Jess"
}
}
],
"total": 1,
"has_more": false
}Get an offer
/v1/offers/:idOne offer, on your listing or made by you.
Path
idstringrequired- The id.
curl https://api.resell.store/v1/offers/5b0f… \
-H "Authorization: Bearer $RESELL_KEY"{
"object": "offer",
"id": "5b0f…",
"status": "open",
"amount": 150,
"counter": null,
"agreed": 150,
"note": "Could pick up this weekend.",
"deposit": null,
"expires_at": "2026-10-04T18:00:00.000Z",
"responded_at": null,
"created_at": "2026-10-02T18:00:00.000Z",
"listing": {
"id": "8d1e6c2a-…",
"title": "Yellow Le Creuset dutch oven, 5.5 qt",
"price": 185,
"status": "live",
"photo": "https://files.resell.store/…",
"url": "https://maya.resell.store/yellow-le-creuset-dutch-oven-5-5-qt"
},
"shop": {
"slug": "maya",
"name": "Maya's closet"
},
"buyer": {
"name": "Jess"
}
}Accept an offer
/v1/offers/:id/acceptSays yes. The buyer gets an email and 48 hours to pay the offered amount.
Path
idstringrequired- The id.
curl -X POST https://api.resell.store/v1/offers/5b0f…/accept \
-H "Authorization: Bearer $RESELL_KEY"{
"object": "offer",
"id": "5b0f…",
"status": "accepted",
"amount": 150,
"counter": null,
"agreed": 150,
"note": "Could pick up this weekend.",
"deposit": null,
"expires_at": "2026-10-04T18:00:00.000Z",
"responded_at": "2026-10-02T19:00:00.000Z",
"created_at": "2026-10-02T18:00:00.000Z",
"listing": {
"id": "8d1e6c2a-…",
"title": "Yellow Le Creuset dutch oven, 5.5 qt",
"price": 185,
"status": "live",
"photo": "https://files.resell.store/…",
"url": "https://maya.resell.store/yellow-le-creuset-dutch-oven-5-5-qt"
},
"shop": {
"slug": "maya",
"name": "Maya's closet"
},
"buyer": {
"name": "Jess"
}
}Decline an offer
/v1/offers/:id/declineSays no, kindly. The buyer gets an email.
Path
idstringrequired- The id.
curl -X POST https://api.resell.store/v1/offers/5b0f…/decline \
-H "Authorization: Bearer $RESELL_KEY"{
"object": "offer",
"id": "5b0f…",
"status": "declined",
"amount": 150,
"counter": null,
"agreed": 150,
"note": "Could pick up this weekend.",
"deposit": null,
"expires_at": "2026-10-04T18:00:00.000Z",
"responded_at": "2026-10-02T19:00:00.000Z",
"created_at": "2026-10-02T18:00:00.000Z",
"listing": {
"id": "8d1e6c2a-…",
"title": "Yellow Le Creuset dutch oven, 5.5 qt",
"price": 185,
"status": "live",
"photo": "https://files.resell.store/…",
"url": "https://maya.resell.store/yellow-le-creuset-dutch-oven-5-5-qt"
},
"shop": {
"slug": "maya",
"name": "Maya's closet"
},
"buyer": {
"name": "Jess"
}
}Counter an offer
/v1/offers/:id/counterNames your price. It has to sit between their offer and your asking price. The buyer has 48 hours to take it.
Path
idstringrequired- The id.
Body
amountnumberrequired- Your counter, in dollars.
curl https://api.resell.store/v1/offers/5b0f…/counter \
-H "Authorization: Bearer $RESELL_KEY" \
-d amount=170{
"object": "offer",
"id": "5b0f…",
"status": "countered",
"amount": 150,
"counter": 170,
"agreed": 170,
"note": "Could pick up this weekend.",
"deposit": null,
"expires_at": "2026-10-04T18:00:00.000Z",
"responded_at": "2026-10-02T19:00:00.000Z",
"created_at": "2026-10-02T18:00:00.000Z",
"listing": {
"id": "8d1e6c2a-…",
"title": "Yellow Le Creuset dutch oven, 5.5 qt",
"price": 185,
"status": "live",
"photo": "https://files.resell.store/…",
"url": "https://maya.resell.store/yellow-le-creuset-dutch-oven-5-5-qt"
},
"shop": {
"slug": "maya",
"name": "Maya's closet"
},
"buyer": {
"name": "Jess"
}
}Make an offer
/v1/offersOffers a price on a live listing that takes offers. It has to be under the asking price. The seller has 48 hours to answer; a new offer on the same listing replaces your last one.
Body
listingstringrequired- The listing id.
amountnumberrequired- Your offer, in dollars.
notestring- A line for the seller.
curl https://api.resell.store/v1/offers \
-H "Authorization: Bearer $RESELL_KEY" \
-d listing="8d1e6c2a-…" \
-d amount=150 \
-d note="Could pick up this weekend."{
"object": "offer",
"id": "5b0f…",
"status": "open",
"amount": 150,
"counter": null,
"agreed": 150,
"note": "Could pick up this weekend.",
"deposit": null,
"expires_at": "2026-10-04T18:00:00.000Z",
"responded_at": null,
"created_at": "2026-10-02T18:00:00.000Z",
"listing": {
"id": "8d1e6c2a-…",
"title": "Yellow Le Creuset dutch oven, 5.5 qt",
"price": 185,
"status": "live",
"photo": "https://files.resell.store/…",
"url": "https://maya.resell.store/yellow-le-creuset-dutch-oven-5-5-qt"
},
"shop": {
"slug": "maya",
"name": "Maya's closet"
}
}Withdraw your offer
/v1/offers/:id/withdrawTakes back an offer that's still open or countered.
Path
idstringrequired- The id.
curl -X POST https://api.resell.store/v1/offers/5b0f…/withdraw \
-H "Authorization: Bearer $RESELL_KEY"{
"object": "offer",
"id": "5b0f…",
"status": "withdrawn",
"amount": 150,
"counter": null,
"agreed": 150,
"note": "Could pick up this weekend.",
"deposit": null,
"expires_at": "2026-10-04T18:00:00.000Z",
"responded_at": null,
"created_at": "2026-10-02T18:00:00.000Z",
"listing": {
"id": "8d1e6c2a-…",
"title": "Yellow Le Creuset dutch oven, 5.5 qt",
"price": 185,
"status": "live",
"photo": "https://files.resell.store/…",
"url": "https://maya.resell.store/yellow-le-creuset-dutch-oven-5-5-qt"
},
"shop": {
"slug": "maya",
"name": "Maya's closet"
}
}Take the counter
/v1/offers/:id/accept-counterAgrees to the seller's counter. You then have 48 hours to pay (see POST /checkout).
Path
idstringrequired- The id.
curl -X POST https://api.resell.store/v1/offers/5b0f…/accept-counter \
-H "Authorization: Bearer $RESELL_KEY"{
"object": "offer",
"id": "5b0f…",
"status": "accepted",
"amount": 150,
"counter": null,
"agreed": 150,
"note": "Could pick up this weekend.",
"deposit": null,
"expires_at": "2026-10-04T18:00:00.000Z",
"responded_at": null,
"created_at": "2026-10-02T18:00:00.000Z",
"listing": {
"id": "8d1e6c2a-…",
"title": "Yellow Le Creuset dutch oven, 5.5 qt",
"price": 185,
"status": "live",
"photo": "https://files.resell.store/…",
"url": "https://maya.resell.store/yellow-le-creuset-dutch-oven-5-5-qt"
},
"shop": {
"slug": "maya",
"name": "Maya's closet"
}
}Turn down the counter
/v1/offers/:id/decline-counterSays no to the seller's counter. The offer ends.
Path
idstringrequired- The id.
curl -X POST https://api.resell.store/v1/offers/5b0f…/decline-counter \
-H "Authorization: Bearer $RESELL_KEY"{
"object": "offer",
"id": "5b0f…",
"status": "declined",
"amount": 150,
"counter": null,
"agreed": 150,
"note": "Could pick up this weekend.",
"deposit": null,
"expires_at": "2026-10-04T18:00:00.000Z",
"responded_at": null,
"created_at": "2026-10-02T18:00:00.000Z",
"listing": {
"id": "8d1e6c2a-…",
"title": "Yellow Le Creuset dutch oven, 5.5 qt",
"price": 185,
"status": "live",
"photo": "https://files.resell.store/…",
"url": "https://maya.resell.store/yellow-le-creuset-dutch-oven-5-5-qt"
},
"shop": {
"slug": "maya",
"name": "Maya's closet"
}
}