Inventory
GET /api/s2s/inventory lists the items a player has won — their vault. Use
it when you drive everything from your backend
and render your own “My Items” surface, offering cashback
or shipping on each item.
Request
GET https://{operator}.app.lootboxsolutions.com/api/s2s/inventory?playerExternalId=u_8431GET https://{operator}.app.lootboxsolutions.com/api/s2s/inventory?playerExternalId=u_8431&state=unresolved,cashed_back| Query | Required | Notes |
|---|---|---|
playerExternalId | ✅ | Whose items to list. |
state | — | Comma-separated item states to include. Defaults to unresolved (the actionable ones). Unknown tokens are ignored. |
cursor | — | Opaque page cursor from a previous response’s cursor.next / cursor.prev. |
Response — 200
{ "items": [ { "id": 88, "itemId": 906, "name": "Golden Sword", "type": "physical", "imageUrl": "https://cdn…/items/golden-sword-card.png", "valueMinor": 320, "currency": "EUR", "state": "unresolved", "cashbackMinor": 80, "shippable": true, "wonAtRoundPublicId": "rnd_7b…", "createdAt": "2026-06-16T12:00:00Z" } ], "cursor": { "next": "eyJpZCI6ODh9", "prev": null }}| Field | Notes |
|---|---|
id | The inventory id — the handle you pass to cashout (inventoryItemId) and shipping (inventoryItemIds[]). |
itemId | The catalog item id — the same id a purchase win and box detail carry. |
name, imageUrl | Display name (live, not snapshotted) and card-size image, or null when the item has none. |
type | Item type (e.g. physical, digital, bonus). |
valueMinor, currency | The item’s value, in its own operator currency — not the player’s wallet currency. Format with this per-item currency. |
state | Current lifecycle state. Only unresolved items are actionable. |
cashbackMinor | What the item would cash back for right now, in the item’s currency, or null when cashback isn’t offered for it. |
shippable | true when the item can be added to a shipping order. |
wonAtRoundPublicId | The round the item dropped from, or null for non-round sources. |
createdAt | When it landed in the vault (ISO-8601). |
The list is newest-first and cursor-paginated: when cursor.next is non-null
there are more items — pass it back as ?cursor= to fetch the next page.
Per-item currency. Values come back in each item’s own operator currency, exactly as your catalog priced it — not repriced into the player’s wallet currency. The wallet currency only enters the picture when you actually cash an item back, where you name it on the request.
Errors
The signed request returns 401 on a bad signature (see
authentication); a malformed query returns
422 with the standard { "error": { "code", "message", "fields" } } envelope.
Same data, two callers. The game app reads the equivalent in-iframe Items tab with a session token. This S2S endpoint is the backend-driven equivalent — same item shape, signed with your API key.