Skip to content

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_8431
GET https://{operator}.app.lootboxsolutions.com/api/s2s/inventory?playerExternalId=u_8431&state=unresolved,cashed_back
QueryRequiredNotes
playerExternalIdWhose items to list.
stateComma-separated item states to include. Defaults to unresolved (the actionable ones). Unknown tokens are ignored.
cursorOpaque 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 }
}
FieldNotes
idThe inventory id — the handle you pass to cashout (inventoryItemId) and shipping (inventoryItemIds[]).
itemIdThe catalog item id — the same id a purchase win and box detail carry.
name, imageUrlDisplay name (live, not snapshotted) and card-size image, or null when the item has none.
typeItem type (e.g. physical, digital, bonus).
valueMinor, currencyThe item’s value, in its own operator currency — not the player’s wallet currency. Format with this per-item currency.
stateCurrent lifecycle state. Only unresolved items are actionable.
cashbackMinorWhat the item would cash back for right now, in the item’s currency, or null when cashback isn’t offered for it.
shippabletrue when the item can be added to a shipping order.
wonAtRoundPublicIdThe round the item dropped from, or null for non-round sources.
createdAtWhen 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.