Appearance
Missions Guide
Time-boxed engagement tasks. "Place 10 bets this week." "Wager 200 EUR today." Completions grant rewards.
Works standalone - no challenge or funded account required.
How It Works
- Operator creates mission templates in the backoffice
- Users are enrolled automatically (auto mode) or opt-in manually
- Bets increment progress toward the goal
- On completion, a reward is granted and
mission.completedwebhook fires - If the mission expires before completion,
mission.expiredfires
Deployment Modes
| Mode | Description |
|---|---|
| Challenges + Missions | Missions drive daily activity, rewards feed into challenge bonuses |
| Missions only | Pure engagement. Rewards are free_bet, bonus_credit, etc. Operator fulfills. |
Mission Template Fields
| Field | Required | Description |
|---|---|---|
name | Yes | Display name ("Weekend Warrior") |
description | No | Longer explanation shown in widget |
criteriaType | Yes | What to count (see below) |
criteriaThreshold | Yes | Target value to reach |
rewardType | Yes | What to grant on completion |
rewardValue | Yes | Amount/points to grant |
rewardApplyMode | No | auto (default) or claim |
enrollmentMode | Yes | auto, opt_in, or targeted |
startsAt | Yes | When the mission window opens |
endsAt | Yes | When the mission expires |
icon | No | Icon name for widget display |
repeatable | No | If true, resets and can be done again |
Criteria Types
| Type | What it counts | Threshold unit |
|---|---|---|
bets_placed | Accepted bet placements | Count |
bets_won | Won settlements | Count |
total_wagered | Cumulative stake | Cents |
odds_above | Bets at odds >= threshold | Decimal odds |
bets_settled | Any settlement (won + lost) | Count |
bet_count | Same as bets_placed | Count |
win_count | Same as bets_won | Count |
Enrollment Modes
| Mode | Behavior |
|---|---|
auto | All users are enrolled when the mission starts. No action needed. |
opt_in | User must click "Join" in the widget or call POST /users/:id/missions/:id/join |
targeted | Operator selects specific users via admin API |
API Reference
Operator (admin)
| Method | Endpoint | Purpose |
|---|---|---|
| GET | /v1/admin/missions | List all mission templates |
| POST | /v1/admin/missions | Create a mission template |
| PUT | /v1/admin/missions/:id | Update a mission |
| DELETE | /v1/admin/missions/:id | Delete a mission |
| GET | /v1/admin/missions/stats | Global mission stats |
| GET | /v1/admin/missions/:id/stats | Stats for a specific mission |
Public (widget key)
| Method | Endpoint | Purpose |
|---|---|---|
| GET | /v1/users/:userId/missions | Active + available + completed missions |
| POST | /v1/users/:userId/missions/:id/join | Join an opt-in mission |
SDK Usage
typescript
import { FastClient } from '@fundedfast/sdk';
const fast = new FastClient({ apiKey: 'key-...' });
// List missions
const missions = await fast.admin.missions.list();
// Create a mission
await fast.admin.missions.create({
name: 'Weekend 10',
criteriaType: 'bets_placed',
criteriaThreshold: 10,
rewardType: 'free_bet',
rewardValue: 500,
enrollmentMode: 'auto',
startsAt: '2026-07-05T00:00:00Z',
endsAt: '2026-07-07T23:59:59Z',
});
// Get user missions (public)
const { active, available, completed } = await fast.admin.missions.getUserMissions('player-42');Webhook Events
| Event | When |
|---|---|
mission.enrolled | User enrolled (auto or join) |
mission.progress | Progress incremented |
mission.completed | Target reached, reward granted |
mission.expired | Time ran out before completion |
Widget Display
Missions appear as collapsible rows in the Missions tab:
- In Progress (blue accent): progress bar, time remaining
- Available (neutral): description, join button (opt-in) or auto badge
- Completed (grey): done checkmark, completion date