---
title: "Reveal one campaign match"
method: POST
path: "/exchanges/predictfun/activities/{code}/matches/{match_id}/reveal"
tags: ["Onboarding"]
---

# Reveal one campaign match

`POST /exchanges/predictfun/activities/{code}/matches/{match_id}/reveal`

## Request

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

Reveals one settled match the caller traded, which allocates its boxes, and returns the caller's performance in it. The venue rejects a match that is not revealable (`502`).
> **Error shape.** Minimal `{"error": "...", "code": "..."}` (`OrderSimpleErrorResponse`).
**Rate limited** at 60 requests/minute per user (bucket `predictfun-lootbox-item`, shared by the one-match reveal and one-box open 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
- `match_id` string, required

## Response `200`

Reveal one campaign match.

- OrderPredictfunLootboxMatchReveal
  - `matchId` string, required
  - `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

- `400`: `INVALID_ID` — the path id is not 1-128 letters, digits, `_` or `-`; it is never sent to the venue.
- `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 60 single-box or single-match 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)
