Skip to content

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/texts
GET https://{operator}.app.lootboxsolutions.com/api/s2s/boxes/texts?locale=pt-BR
GET https://{operator}.app.lootboxsolutions.com/api/s2s/boxes/texts?page=2&perPage=200
QueryNotes
localeBCP-47-ish code (e.g. en, pt-BR). Every name comes back in this language where a translation exists. Defaults to the operator default.
pagePage number, 1-based. Defaults to 1.
perPagePage 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
}
}
FieldNotes
boxIdMatches the boxId in the catalog — join on it.
nameThe box name in the requested language.
itemNamesThe 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.
paginationSame 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_updated or box_version_published webhook — 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.