Appearance
Tournaments Guide
Competitive events where users are ranked by a scoring metric over a time window. Top players win prizes.
Works standalone - no challenge or funded account required.
How It Works
- Operator creates a tournament with scoring rules and prize structure
- Users enter (auto, opt-in, or invite)
- Bets during the window update leaderboard scores
- When the tournament ends, FAST settles it and distributes prizes as rewards
tournament.settledwebhook fires with results
Deployment Modes
| Mode | Description |
|---|---|
| Challenges + Tournaments | Tournaments add competition to challenge players |
| Tournaments only | Standalone competitive events on any bet activity |
Tournament Fields
| Field | Required | Description |
|---|---|---|
name | Yes | Tournament name |
description | No | Longer description |
scoringMetric | Yes | How to rank players (see below) |
entryMode | Yes | auto, opt_in, or invite |
entryFee | No | Fee in cents (0 = free, >0 = paid) |
prizePool | No | Total prizes (cents) |
maxEntrants | No | Cap on participants (null = unlimited) |
startsAt | Yes | Tournament window start |
endsAt | Yes | Tournament window end |
prizes | Yes | Array of rank ranges + reward types |
Scoring Metrics
| Metric | What it measures |
|---|---|
net_profit | Total profit from settled bets (EUR) |
total_wagered | Cumulative stake placed |
win_count | Number of won bets |
bet_count | Total bets placed |
highest_odds_won | Single highest-odds winning bet |
longest_win_streak | Longest consecutive win streak |
Entry Modes
| Mode | Behavior |
|---|---|
auto | All active users are scored. No enrollment needed. |
opt_in | User must join via widget or POST /users/:id/tournaments/:id/join |
invite | Operator selects users via POST /admin/tournaments/:id/invite |
Prize Structure
Prizes are defined as an array of rank ranges with reward types:
json
{
"prizes": [
{ "rankFrom": 1, "rankTo": 1, "rewardType": "free_bet", "rewardValue": 2500 },
{ "rankFrom": 2, "rankTo": 3, "rewardType": "free_bet", "rewardValue": 1000 },
{ "rankFrom": 4, "rankTo": 10, "rewardType": "bonus_credit", "rewardValue": 500 }
]
}All reward types are available. Use free_bet, bonus_credit, or custom for standalone operators.
API Reference
Operator (admin)
| Method | Endpoint | Purpose |
|---|---|---|
| GET | /v1/admin/tournaments | List all tournaments |
| POST | /v1/admin/tournaments | Create a tournament |
| POST | /v1/admin/tournaments/:id/settle | Manually settle |
| GET | /v1/admin/tournaments/:id/entries | View entries |
| POST | /v1/admin/tournaments/:id/invite | Invite users |
| GET | /v1/admin/tournaments/stats | Stats |
Public (widget key)
| Method | Endpoint | Purpose |
|---|---|---|
| GET | /v1/tournaments | Active/upcoming tournaments |
| GET | /v1/tournaments/:id/leaderboard | Live leaderboard |
| POST | /v1/users/:userId/tournaments/:id/join | Join (opt-in mode) |
Webhook Events
| Event | When |
|---|---|
tournament.started | Window opened |
tournament.user_joined | User entered |
tournament.user_invited | User invited |
tournament.settled | Prizes distributed |
tournament.cancelled | Cancelled by admin |