API reference

Sales

What sold, where it ships, and marking it shipped.

List sales

GET/v1/sales
Needs a key with read

What's sold across your shops, newest first: who bought it, where it ships, and what you get once the money's released.

Query

status"paid" | "shipped" | "delivered" | "completed" | "refunded" | "cancelled"
paid means it's waiting for you to ship.
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/sales?status=paid \
  -H "Authorization: Bearer $RESELL_KEY"
Response
{
  "object": "list",
  "data": [
    {
      "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"
      },
      "buyer": {
        "name": "Jess"
      },
      "ship_to": {
        "name": "Jess Park",
        "address": "12 Elm St, Portland, OR 97201",
        "country": "United States"
      },
      "payout": {
        "provider": "paypal",
        "platform_fee": 17,
        "paypal_fee": 6.86,
        "seller_net": 164.14,
        "released_at": null
      },
      "paid_at": "2026-10-02T18:30:00.000Z",
      "shipped_at": null,
      "delivered_at": null,
      "completed_at": null
    }
  ],
  "total": 1,
  "has_more": false
}

Get a sale

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

Path

idstringrequired
The id.
Request
curl https://api.resell.store/v1/sales/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"
  },
  "buyer": {
    "name": "Jess"
  },
  "ship_to": {
    "name": "Jess Park",
    "address": "12 Elm St, Portland, OR 97201",
    "country": "United States"
  },
  "payout": {
    "provider": "paypal",
    "platform_fee": 17,
    "paypal_fee": 6.86,
    "seller_net": 164.14,
    "released_at": null
  },
  "paid_at": "2026-10-02T18:30:00.000Z",
  "shipped_at": null,
  "delivered_at": null,
  "completed_at": null
}

Mark shipped

POST/v1/sales/:id/ship
Needs a key with orders

Says it's in the post, with a tracking number if you have one. The buyer gets an email with the tracking link. The money is released when they confirm it arrived.

Path

idstringrequired
The id.

Body

tracking_numberstring
Request
curl https://api.resell.store/v1/sales/a71c…/ship \
  -H "Authorization: Bearer $RESELL_KEY" \
  -d tracking_number=9400111899223197428490
Response
{
  "object": "order",
  "id": "a71c…",
  "status": "shipped",
  "item": 170,
  "shipping": 18,
  "total": 188,
  "delivery": "tracked",
  "tracking_number": "9400111899223197428490",
  "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"
  },
  "buyer": {
    "name": "Jess"
  },
  "ship_to": {
    "name": "Jess Park",
    "address": "12 Elm St, Portland, OR 97201",
    "country": "United States"
  },
  "payout": {
    "provider": "paypal",
    "platform_fee": 17,
    "paypal_fee": 6.86,
    "seller_net": 164.14,
    "released_at": null
  },
  "paid_at": "2026-10-02T18:30:00.000Z",
  "shipped_at": "2026-10-03T15:00:00.000Z",
  "delivered_at": null,
  "completed_at": null
}

Cancel a sale you can't send

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

Before it ships. The buyer gets everything back and the listing goes back on sale. Needs a full API key.

Path

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

Get the problem on a sale

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

Path

idstringrequired
The id.
Request
curl https://api.resell.store/v1/sales/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"
      }
    ]
  }
}

Refund for a problem

POST/v1/sales/:id/problem/refund
Needs a key with orders

With amount, offers that much back for the buyer to take or leave. Without it, refunds everything now. Needs a full API key.

Path

idstringrequired
The id.

Body

amountnumber
Dollars to offer back. Leave out to refund in full.
notestring
Request
curl https://api.resell.store/v1/sales/a71c…/problem/refund \
  -H "Authorization: Bearer $RESELL_KEY" \
  -d amount=40 \
  -d note="Sorry about the lid."
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": 40,
    "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/sales/:id/problem/reply
Needs a key with orders

Path

idstringrequired
The id.

Body

bodystringrequired
Request
curl https://api.resell.store/v1/sales/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/sales/:id/problem/escalate
Needs a key with orders

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/sales/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"
      }
    ]
  }
}

List reviews of your shops

GET/v1/reviews
Needs a key with read

Every review on your shops, newest first, including private ones (only you see those) and any resell.store took down (hidden).

Query

shopstring
A shop's slug, to list just that one.
limitintegerdefault 25
offsetintegerdefault 0
Request
curl https://api.resell.store/v1/reviews \
  -H "Authorization: Bearer $RESELL_KEY"
Response
{
  "object": "list",
  "data": [
    {
      "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
    }
  ],
  "total": 1,
  "has_more": false
}

Reply to a review

POST/v1/reviews/:id/reply
Needs a key with shops

Answer a review on one of your shops. It shows under the review. There's one reply per review; sending again changes it.

Path

idstringrequired
The id.

Body

bodystringrequired
Your reply, up to 1,000 characters.
Request
curl https://api.resell.store/v1/reviews/5b2e…/reply \
  -H "Authorization: Bearer $RESELL_KEY" \
  -d body="Thank you, Priya! Enjoy it."
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
}