---
title: "List the caller's campaign lootboxes"
method: GET
path: "/exchanges/predictfun/activities/{code}/boxes"
tags: ["Onboarding"]
---

# List the caller's campaign lootboxes

`GET /exchanges/predictfun/activities/{code}/boxes`

## Request

- Base URL: `https://execution.kairos.trade`
- URL: `https://execution.kairos.trade/exchanges/predictfun/activities/{code}/boxes`
- Auth: API key in header `X-Client-Id` and API key in header `X-Api-Key` and API key in header `X-Api-Secret`

The caller's revealed boxes, each with its match and, once opened, its prize. Reads up to 20 venue pages of 100; `truncated` is true when more remained, which is not an error.
> **Error shape.** Minimal `{"error": "...", "code": "..."}` (`OrderSimpleErrorResponse`).
**Rate limited** at 20 requests/minute per user (bucket `predictfun-lootbox`, shared by the overview, box list, and bulk reveal/open/claim routes), fail-closed.
**Auth.** API keys and delegations need `trade:execute` (a cold venue session is minted by signing a login challenge with the user's wallet) and the `predictfun` platform access flag.

## Path parameters

- `code` string, required

## Query parameters

- `opened` boolean

## Response `200`

List the caller's campaign lootboxes.

- OrderPredictfunLootboxBoxList
  - `boxes` OrderPredictfunLootboxBox[], required
    - `id` string, required
    - `matchId` string, required
    - `matchTitle` string, required
    - `teams` OrderPredictfunLootboxTeam[], required
      - `name` string, nullable, required
      - `shortName` string, nullable, required
      - `logoUrl` string, nullable, required
    - `boxTypeId` string, required
    - `opened` boolean, required
    - `revealedAt` string, nullable, required
    - `openedAt` string, nullable, required
    - `prizeType` string, nullable, required: Known once the box is opened.
    - `reward` OrderPredictfunRewardAmount, required: An amount in base units; divide by `10^decimals` to display.
      - `rewardType` 'TOKEN' | 'PREDICT_POINTS', required
      - `symbol` string, nullable
      - `decimals` integer, required
      - `amount` string, required
  - `truncated` boolean, required: True when the venue had more boxes than the page cap.

## Other responses

- `400`: `INVALID_QUERY` — `opened` is not `true` or `false`.
- `401`: No valid credential presented — missing/invalid API-key headers or an invalid/expired session token.
- `403`: `PLATFORM_API_ACCESS_DENIED` — the credential lacks `trade:execute` or `predictfun` access.
- `404`: `NO_CREDENTIALS` — the caller has no Predict.fun wallet; `ACTIVITY_NOT_FOUND` — the campaign is not one this deployment enrolls accounts in.
- `409`: `SIGNING_RESYNC_REQUIRED` — the wallet's signing delegation must be re-established before the venue session can be minted.
- `429`: `RATE_LIMITED` — more than 20 lootbox requests in a minute. No `Retry-After` header.
- `502`: `PREDICTFUN_API_ERROR` — Predict.fun rejected or failed a call.
- `503`: `NOT_CONFIGURED` — Predict.fun is not configured on this deployment, or API-key access could not be checked (fails closed).

---

[API](https://skmtc.dev/kairos/apis/kairos-order-execution-api.md) - [All operations](https://skmtc.dev/kairos/apis/kairos-order-execution-api/llms.txt) - [OpenAPI document](https://skmtc.dev/kairos/apis/kairos-order-execution-api/revisions/9ba7d463d505?raw)
