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

# Get the caller's Predict.fun campaign lootboxes

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

## Request

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

Campaign details, enrollment, box types, the caller's box counts and rewards, matches waiting to be revealed (across every started phase), the matches the caller traded (`matches`, newest `startsAt` first), and rewards waiting to be claimed. `summary` is the venue's box summary, which covers its current phase. Several venue reads per call.
> **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

## Response `200`

Get the caller's Predict.fun campaign lootboxes.

- OrderPredictfunLootboxOverview
  - `activity` object, required
    - `code` string, required
    - `name` string, required
    - `endsAt` string, nullable
    - `requiresClaim` boolean, required
    - `phases` object[], required
      - `id` integer, required
      - `name` string, required
      - `claimOpensAt` string, nullable
  - `joined` boolean, required
  - `boxTypes` object[], required
    - `id` string, required
    - `code` string, required
    - `name` string, required
    - `rarity` integer, required
  - `summary` object, required
    - `canOpen` boolean, required
    - `boxCounts` OrderPredictfunLootboxBoxCount[], required
      - `boxTypeId` string, required
      - `revealedCount` integer, required
      - `openedCount` integer, required
      - `creditedCount` integer, required
      - `prizeType` string, nullable: Known once a box of this type has been opened.
      - `rewardPerBox` OrderPredictfunRewardAmount: 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
    - `openedRewards` OrderPredictfunRewardAmount[], required
      - `rewardType` 'TOKEN' | 'PREDICT_POINTS', required
      - `symbol` string, nullable
      - `decimals` integer, required
      - `amount` string, required
    - `creditedRewards` OrderPredictfunRewardAmount[], required
      - `rewardType` 'TOKEN' | 'PREDICT_POINTS', required
      - `symbol` string, nullable
      - `decimals` integer, required
      - `amount` string, required
  - `pendingRevealMatches` integer, required
  - `claimableRewards` OrderPredictfunRewardAmount[], required
    - `rewardType` 'TOKEN' | 'PREDICT_POINTS', required
    - `symbol` string, nullable
    - `decimals` integer, required
    - `amount` string, required
  - `matches` OrderPredictfunLootboxMatch[], required: Matches the caller traded across started phases, newest `startsAt` first (undated last).
    - `id` string, required
    - `phaseId` integer, required
    - `title` string, required
    - `startsAt` string, nullable, required
    - `teams` OrderPredictfunLootboxTeam[], required
      - `name` string, nullable, required
      - `shortName` string, nullable, required
      - `logoUrl` string, nullable, required
    - `allocatedBoxCount` integer, nullable, required: Null until the reveal window opens; includes boxes already revealed or opened.
    - `revealEnabledAt` string, nullable, required
    - `status` 'pending' | 'revealable' | 'revealed', required: `revealed` once the venue reports a performance; `revealable` when the reveal window is open and boxes are allocated; otherwise `pending` (window not open, or zero boxes).
    - `performance` OrderPredictfunLootboxPerformance, required
      - `revealedAt` string, nullable, required
      - `preMatchTradeCount` integer, required
      - `inMatchTradeCount` integer, required
      - `preMatchVolumeUsd` string, required: USD volume as a decimal string.
      - `inMatchVolumeUsd` string, required: USD volume as a decimal string.
      - `boxCounts` object[], required
        - `boxTypeId` string, required
        - `revealedCount` integer, required

## Other responses

- `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)
