---
title: "Calculated-Reward Missions for a Player"
method: GET
path: "/missions/brand/{brandId}/player/{playerId}/calculated-rewards"
tags: ["Missions"]
---

# Calculated-Reward Missions for a Player

`GET /missions/brand/{brandId}/player/{playerId}/calculated-rewards`

## Request

- Base URL: `https://opti-ls-api-us.optimove.net/api`
- URL: `https://opti-ls-api-us.optimove.net/api/missions/brand/{brandId}/player/{playerId}/calculated-rewards`
- Auth: none declared

Returns active calculated-reward objectives the player is eligible for based on target-group membership. Calculated-reward missions issue a dynamic reward amount per qualifying event using a formula (`ebfrFormula`) rather than counting completions toward a fixed goal.

These objectives are excluded from the regular [Player missions](/reference/getplayermissions) endpoint and have no `mission` progress record (rewards are issued per qualifying event, not accumulated toward a goal). Use this endpoint to display available calculated-reward missions in the widget.

Only objectives with `status = "active"` are returned. Target-group filtering happens server-side.

## Path parameters

- `brandId` string, uuid, required
- `playerId` string, required

## Response `200`

Array of calculated-reward objectives.

- CalculatedRewardObjective[]
  - `id` string, uuid: UUID of the objective. Use as `objectiveId` in unlock/claim calls.
  - `name` string: Title shown to the player.
  - `description` string, nullable: Optional longer description.
  - `type` 'task' | 'mission': `task` (standalone) or `mission` (part of a mission group).
  - `goal` integer: Target value the player must reach (e.g. 5 purchases).
  - `icon` string, nullable: URL to the mission icon. Validate it is an `https` URL from a trusted host before using in `src`/`href`.
  - `status` 'active' | 'draft' | 'archived' | 'deleted': Lifecycle of the objective definition. Only render `active`.
  - `isRepeatable` boolean: Whether the mission can be completed more than once.
  - `repeatLimit` integer, nullable: Maximum number of times the mission can be repeated. `null` = unlimited.
  - `cooldownPeriodSeconds` integer, nullable: Seconds the player must wait between repeats. `null` = no cooldown.
  - `unlockCurrencyId` string, uuid, nullable: UUID of the currency required to unlock. `null` if no unlock cost.
  - `unlockAmount` integer, nullable: Amount of that currency required to unlock. `null` if no unlock cost.
  - `operator` string: Comparison operator applied to the triggering event value (e.g. `greaterThanInclusive`). Used together with `goal` to determine whether the event qualifies for the calculated reward.
  - `ebfrFormula` string: Formula evaluated against the triggering event to compute the reward amount (e.g. `event.amount * 2`). Always present and non-empty on this endpoint.
  - `targetGroupIds` integer[], nullable: Target group IDs that gate access to this objective. `null` means no target-group restriction. The server filters this list to only return objectives the player is eligible for, so widget code does not need to re-check.

## Other responses

- `404`: Resource not found (brand, player, mission, leaderboard, etc.).

---

[API](https://skmtc.dev/optimove/apis/optimove-loyalty-system-api.md) - [All operations](https://skmtc.dev/optimove/apis/optimove-loyalty-system-api/llms.txt) - [OpenAPI document](https://skmtc.dev/optimove/apis/optimove-loyalty-system-api/revisions/f174877a5fb7?raw)
