API reference

Buying

Your orders, checkout links and confirming delivery.

List your orders

GET/v1/orders
Needs a key with read

Things you've bought, newest first.

Query

status"paid" | "shipped" | "delivered" | "completed" | "refunded" | "cancelled"
limitintegerdefault 25
How many to return, 1 to 100. Default 25.
offsetintegerdefault 0
How many to skip, for the next page.
Request
curl https://api.resell.store/v1/orders \
  -H "Authorization: Bearer $RESELL_KEY"
Response
{
  "object": "list",
  "data": [
    {
      "object": "order",
      "id": "a71c…",
      "status": "shipped",
      "item": 170,
      "shipping": 18,
      "total": 188,
      "delivery": "tracked",
      "tracking_number": null,
      "offer": "5b0f…",
      "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"
      },
      "ship_to": {
        "name": "Jess Park",
        "address": "12 Elm St, Portland, OR 97201",
        "country": "United States"
      },
      "paid_at": "2026-10-02T18:30:00.000Z",
      "shipped_at": null,
      "delivered_at": null,
      "completed_at": null
    }
  ],
  "total": 1,
  "has_more": false
}

Get an order

GET/v1/orders/:id
Needs a key with read

Path

idstringrequired
The id.
Request
curl https://api.resell.store/v1/orders/a71c… \
  -H "Authorization: Bearer $RESELL_KEY"
Response
{
  "object": "order",
  "id": "a71c…",
  "status": "paid",
  "item": 170,
  "shipping": 18,
  "total": 188,
  "delivery": "tracked",
  "tracking_number": null,
  "offer": "5b0f…",
  "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"
  },
  "ship_to": {
    "name": "Jess Park",
    "address": "12 Elm St, Portland, OR 97201",
    "country": "United States"
  },
  "paid_at": "2026-10-02T18:30:00.000Z",
  "shipped_at": null,
  "delivered_at": null,
  "completed_at": null
}

It arrived, all good

POST/v1/orders/:id/confirm
Needs a key with buying

Confirms the item arrived as described. This releases the held money to the seller, so only call it once you have it.

Path

idstringrequired
The id.
Request
curl -X POST https://api.resell.store/v1/orders/a71c…/confirm \
  -H "Authorization: Bearer $RESELL_KEY"
Response
{
  "object": "order",
  "id": "a71c…",
  "status": "completed",
  "item": 170,
  "shipping": 18,
  "total": 188,
  "delivery": "tracked",
  "tracking_number": null,
  "offer": "5b0f…",
  "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"
  },
  "ship_to": {
    "name": "Jess Park",
    "address": "12 Elm St, Portland, OR 97201",
    "country": "United States"
  },
  "paid_at": "2026-10-02T18:30:00.000Z",
  "shipped_at": null,
  "delivered_at": null,
  "completed_at": null
}

Get a checkout link

POST/v1/checkout
Needs a key with buying

Paying always happens with a person at the wheel: this gives you the checkout page for a listing (at an accepted offer's price, if you have one) to open in a browser, where the buyer pays with PayPal. Nothing is charged by this call.

Body

listingstringrequired
The listing id.
Request
curl https://api.resell.store/v1/checkout \
  -H "Authorization: Bearer $RESELL_KEY" \
  -d listing="8d1e6c2a-…"
Response
{
  "object": "checkout_link",
  "listing": "8d1e6c2a-…",
  "price": 185,
  "url": "https://resell.store/checkout/8d1e6c2a-…"
}

Cancel an order that hasn't shipped

POST/v1/orders/:id/cancel
Needs a key with buying

Once the ship-by date (3 days after paying) has passed without it shipping, the buyer can call it off and gets everything back.

Path

idstringrequired
The id.
Request
curl -X POST https://api.resell.store/v1/orders/a71c…/cancel \
  -H "Authorization: Bearer $RESELL_KEY"
Response
{
  "object": "problem",
  "order": "a71c…",
  "order_status": "cancelled",
  "refunded": 188,
  "problem": null
}

Get the problem on an order

GET/v1/orders/:id/problem
Needs a key with read

The latest problem reported on an order, with everything both sides said. problem is null if there's never been one.

Path

idstringrequired
The id.
Request
curl https://api.resell.store/v1/orders/a71c…/problem \
  -H "Authorization: Bearer $RESELL_KEY"
Response
{
  "object": "problem",
  "order": "a71c…",
  "order_status": "shipped",
  "refunded": 0,
  "problem": {
    "id": "d3f0…",
    "status": "open",
    "source": "buyer",
    "reason": "damaged",
    "details": "The lid arrived chipped.",
    "refund_offered": null,
    "escalated_at": null,
    "resolved_at": null,
    "created_at": "2026-10-05T10:00:00.000Z",
    "events": [
      {
        "side": "buyer",
        "kind": "opened",
        "body": "The lid arrived chipped.",
        "amount": null,
        "created_at": "2026-10-05T10:00:00.000Z"
      }
    ]
  }
}

Report a problem

POST/v1/orders/:id/problem
Needs a key with buying

For an order that's shipped. The seller is told, and the held money isn't released until it's sorted.

Path

idstringrequired
The id.

Body

reason"not_arrived" | "not_as_described" | "damaged" | "other"required
detailsstringrequired
What's wrong, in the buyer's words. The seller reads this.
Request
curl https://api.resell.store/v1/orders/a71c…/problem \
  -H "Authorization: Bearer $RESELL_KEY" \
  -d reason=damaged \
  -d details="The lid arrived chipped."
Response
{
  "object": "problem",
  "order": "a71c…",
  "order_status": "shipped",
  "refunded": 0,
  "problem": {
    "id": "d3f0…",
    "status": "open",
    "source": "buyer",
    "reason": "damaged",
    "details": "The lid arrived chipped.",
    "refund_offered": null,
    "escalated_at": null,
    "resolved_at": null,
    "created_at": "2026-10-05T10:00:00.000Z",
    "events": [
      {
        "side": "buyer",
        "kind": "opened",
        "body": "The lid arrived chipped.",
        "amount": null,
        "created_at": "2026-10-05T10:00:00.000Z"
      }
    ]
  }
}

Answer a refund offer

POST/v1/orders/:id/problem/answer
Needs a key with buying

Take the part refund the seller offered (the rest goes to them and the order is done), or turn it down.

Path

idstringrequired
The id.

Body

acceptbooleanrequired
Request
curl https://api.resell.store/v1/orders/a71c…/problem/answer \
  -H "Authorization: Bearer $RESELL_KEY" \
  -d accept=true
Response
{
  "object": "problem",
  "order": "a71c…",
  "order_status": "completed",
  "refunded": 40,
  "problem": {
    "id": "d3f0…",
    "status": "open",
    "source": "buyer",
    "reason": "damaged",
    "details": "The lid arrived chipped.",
    "refund_offered": null,
    "escalated_at": null,
    "resolved_at": null,
    "created_at": "2026-10-05T10:00:00.000Z",
    "events": [
      {
        "side": "buyer",
        "kind": "opened",
        "body": "The lid arrived chipped.",
        "amount": null,
        "created_at": "2026-10-05T10:00:00.000Z"
      }
    ]
  }
}

Say a problem is sorted

POST/v1/orders/:id/problem/close
Needs a key with buying

Closes the problem without a refund. The order goes back to its usual timer and the seller is paid as normal.

Path

idstringrequired
The id.
Request
curl -X POST https://api.resell.store/v1/orders/a71c…/problem/close \
  -H "Authorization: Bearer $RESELL_KEY"
Response
{
  "object": "problem",
  "order": "a71c…",
  "order_status": "shipped",
  "refunded": 0,
  "problem": {
    "id": "d3f0…",
    "status": "closed",
    "source": "buyer",
    "reason": "damaged",
    "details": "The lid arrived chipped.",
    "refund_offered": null,
    "escalated_at": null,
    "resolved_at": null,
    "created_at": "2026-10-05T10:00:00.000Z",
    "events": [
      {
        "side": "buyer",
        "kind": "opened",
        "body": "The lid arrived chipped.",
        "amount": null,
        "created_at": "2026-10-05T10:00:00.000Z"
      }
    ]
  }
}

Reply about a problem

POST/v1/orders/:id/problem/reply
Needs a key with buying

Path

idstringrequired
The id.

Body

bodystringrequired
Request
curl https://api.resell.store/v1/orders/a71c…/problem/reply \
  -H "Authorization: Bearer $RESELL_KEY" \
  -d body="Could you send a photo?"
Response
{
  "object": "problem",
  "order": "a71c…",
  "order_status": "shipped",
  "refunded": 0,
  "problem": {
    "id": "d3f0…",
    "status": "open",
    "source": "buyer",
    "reason": "damaged",
    "details": "The lid arrived chipped.",
    "refund_offered": null,
    "escalated_at": null,
    "resolved_at": null,
    "created_at": "2026-10-05T10:00:00.000Z",
    "events": [
      {
        "side": "buyer",
        "kind": "opened",
        "body": "The lid arrived chipped.",
        "amount": null,
        "created_at": "2026-10-05T10:00:00.000Z"
      }
    ]
  }
}

Ask resell.store to step in

POST/v1/orders/:id/problem/escalate
Needs a key with buying

We read both sides and decide. The money stays held until then.

Path

idstringrequired
The id.

Body

notestring
Request
curl https://api.resell.store/v1/orders/a71c…/problem/escalate \
  -H "Authorization: Bearer $RESELL_KEY"
Response
{
  "object": "problem",
  "order": "a71c…",
  "order_status": "shipped",
  "refunded": 0,
  "problem": {
    "id": "d3f0…",
    "status": "escalated",
    "source": "buyer",
    "reason": "damaged",
    "details": "The lid arrived chipped.",
    "refund_offered": null,
    "escalated_at": null,
    "resolved_at": null,
    "created_at": "2026-10-05T10:00:00.000Z",
    "events": [
      {
        "side": "buyer",
        "kind": "opened",
        "body": "The lid arrived chipped.",
        "amount": null,
        "created_at": "2026-10-05T10:00:00.000Z"
      }
    ]
  }
}

Review an order

POST/v1/orders/:id/review
Needs a key with buying

Once an order is done (the buyer said it's all good, or the check window closed), the buyer can give it 1 to 5 stars and a few words. One review per order. Set public to false to send it only to the seller.

Path

idstringrequired
The id.

Body

ratingintegerrequired
1 to 5 stars.
bodystring
A few words, up to 1,000 characters. Optional.
publicboolean
Show it on the shop and the listing. Default true.
Request
curl https://api.resell.store/v1/orders/a71c…/review \
  -H "Authorization: Bearer $RESELL_KEY" \
  -d rating=5 \
  -d body="Exactly like the photos, and packed with a little note." \
  -d public=true
Response
{
  "object": "review",
  "id": "5b2e…",
  "rating": 5,
  "body": "Exactly like the photos, and packed with a little note.",
  "from": "Priya",
  "created_at": "2026-10-05T10:00:00.000Z",
  "reply": null,
  "listing": {
    "id": "8d1e6c2a-…",
    "title": "Linen wrap dress",
    "url": "https://maya.resell.store/linen-wrap-dress"
  },
  "shop": {
    "slug": "maya",
    "name": "Maya's closet"
  },
  "order": "a71c…",
  "public": true,
  "hidden": false
}

Get your review of an order

GET/v1/orders/:id/review
Needs a key with read

The review the buyer left on an order, with the seller's reply. 404 if there isn't one yet.

Path

idstringrequired
The id.
Request
curl https://api.resell.store/v1/orders/a71c…/review \
  -H "Authorization: Bearer $RESELL_KEY"
Response
{
  "object": "review",
  "id": "5b2e…",
  "rating": 5,
  "body": "Exactly like the photos, and packed with a little note.",
  "from": "Priya",
  "created_at": "2026-10-05T10:00:00.000Z",
  "reply": {
    "body": "Thank you, Priya! Enjoy it.",
    "created_at": "2026-10-05T12:00:00.000Z"
  },
  "listing": {
    "id": "8d1e6c2a-…",
    "title": "Linen wrap dress",
    "url": "https://maya.resell.store/linen-wrap-dress"
  },
  "shop": {
    "slug": "maya",
    "name": "Maya's closet"
  },
  "order": "a71c…",
  "public": true,
  "hidden": false
}