Skip to content

GET /v3/bidder/my-cart

GET
/v3/bidder/my-cart
curl --request GET \
--url 'https://api-ha-prod-p8.handbid.dev/v3/bidder/my-cart?whitelabelKey=handbid&limit=20' \
--header 'Authorization: Bearer <token>'

NEW (HAN-1849, 2026-05-21). Shopping-cart view. Unified post-close list of paid + unpaid purchases across the user’s visible auctions, with a totals block for the cart-icon badge. Replaces the shape of the legacy /v3/bidder/my-items endpoint (which used the wrong mental model).

Auth: required.

Response shape:

{
  "items": [
    {
      // ItemCard base fields...
      "itemType": "silent",            // granular DB enum — sealedBid, ticket, forSale, etc.
      "auctionName": "Spring Gala",    // auction context (5 fields)
      "auctionStatus": "closed",
      "auctionEndTime": 1716232000,
      "isCurrent": false,              // a.statusId IN (2,3,4,5,8) = in-flight
      "purchaseId": 998877,
      "purchaseAmount": "250.00",
      "purchasedAt": 1716230000,
      "purchaseQuantity": 1,
      "receiptId": 778899,
      "isPaid": false
    }
  ],
  "totalCount": 12,
  "totals": {
    "unpaidAmount": "245.00",
    "paidAmount":   "180.00",
    "currency":     "USD"
  }
}

No itemType filter (unlike /my-activity’s purchases[] which excludes auction-style types). Cart shows EVERYTHING: won silent items, ticket purchases, donations, raffles — anything the user has a purchases row for.

Sort: unpaid first (COALESCE(r.paid, 0) ASC), then purchasedAt DESC within each group. Action-required surfaces top of the list.

isCurrent flag: lets iOS visually segment the cart into “current auction(s)” vs “previous auctions still in checkout window” via disclosure UX.

Auction scope: same as /my-activity and /my-auctions — whitelabel-scoped, status visible, closed grace-bounded.

Empty-set guard: returns {items:[], totalCount:0, totals:{unpaidAmount:"0.00", paidAmount:"0.00", currency:"USD"}} without issuing SQL.

Multi-currency: totals.currency is MAX(a.currency) across the user’s visible auctions — v1 approximation. Acceptable for the common single-currency case.

Cache: 30s TTL (longer than my-activity’s 15s — cart changes less often). Tags: userMyItems, userMyAuctions, plus auction(:id) for every auctionId in the response set.

whitelabelKey
string

Defaults to ‘handbid’ when omitted. Legacy whitelabelId also accepted.

Example
handbid
limit
integer

Default reads from whitelabels.myActivityPageSize (typically 20); range 1-100

Example
20

Successful response

Media type application/json