Box texts (search words)
GET /api/s2s/boxes/texts returns, for every box in your catalog, the box name
and the names of the prizes inside it — in a single language. It exists so you
can build a search box over your own grid: a player typing “dragon” should also
find the box that holds a Dragon Figure, and this endpoint is the cheap way to
know that without reading every box’s detail.
Names only. No prices, no odds, no images — read
/boxes for those.
Request
GET https://{operator}.app.lootboxsolutions.com/api/s2s/boxes/textsGET https://{operator}.app.lootboxsolutions.com/api/s2s/boxes/texts?locale=pt-BRGET https://{operator}.app.lootboxsolutions.com/api/s2s/boxes/texts?page=2&perPage=200| Query | Notes |
|---|---|
locale | BCP-47-ish code (e.g. en, pt-BR). Every name comes back in this language where a translation exists. Defaults to the operator default. |
page | Page number, 1-based. Defaults to 1. |
perPage | Page size. Defaults to 100, capped at 200. |
Response
{ "dataVersion": 2, "texts": [ { "boxId": 42, "name": "Dragon Box", "itemNames": ["Dragon Figure", "Silver Coin", "Enamel Pin"] } ], "pagination": { "page": 1, "perPage": 100, "total": 240, "totalPages": 3, "hasMore": true }}| Field | Notes |
|---|---|
boxId | Matches the boxId in the catalog — join on it. |
name | The box name in the requested language. |
itemNames | The names of the prizes in the box’s current version, de-duplicated. A prize removed by a later version is not listed; a prize renamed in your admin shows its new name immediately, no republish needed. |
pagination | Same envelope as the catalog — walk hasMore to get every box. |
Which boxes appear
Exactly the boxes the catalog returns by default: active, with a published version. An inactive or unpublished box is absent from both, and so is a collectibles box while collectibles are switched off for your operator — search can never surface a box your players cannot see.
There is no ids mode and no filtering here: this endpoint answers “what words
describe each box”, and you already hold the catalog rows to filter against.
Language fallback
Each name resolves in the same order the rest of the API uses: the requested
locale, then the operator’s default language, then the name as it was
originally written. Any locale is accepted — one you haven’t configured simply
falls back rather than failing, so you never have to guard the call.
To let a player search in their own language and still match what they saw before switching, fetch this endpoint once per language you display and search across both snapshots.
Keeping it fresh
Cache the pages the same way you cache the catalog. Two things to know:
- A box going live, going inactive, or changing its prizes sends a
box_updatedorbox_version_publishedwebhook — refetch on those. - Editing only a translation sends no webhook. Give the snapshot a short lifetime (a few minutes) if you want translation edits to appear promptly.