Create a tournament
Create, stage, and activate a bracket tournament on the tournaments host.
Prerequisites
tournamentsBaseUrlandtournamentsAuth(wallet or JWT on tournaments host)- Creator eligibility (backend may gate new creators)
Check eligibility
import { createBentoSdk, jwtAuthProvider } from '@bento.fun/sdk';
const sdk = createBentoSdk({
baseUrl: process.env.BENTO_URL!,
tournamentsBaseUrl: process.env.PARLAY_TOURNMENT_URL,
tournamentsAuth: jwtAuthProvider({
getAccessToken: () => localStorage.getItem('bento_jwt') ?? '',
}),
});
const eligibility = await sdk.tournaments!.tournaments.getCreatorCreateFlowEligibility();
// Inspect eligibility before calling admin APIsCreate and activate
Bracket tournament creators use sdk.tournaments.admin:
// 1. Create tournament shell
const created = await sdk.tournaments!.admin.createTournament({
name: 'World Cup bracket',
// … format, entry fee, schedule — see Tournaments OpenAPI
});
const tournamentId = created.id as string;
// 2. Add stages (groups, knockout, etc.)
await sdk.tournaments!.admin.createStage(tournamentId, {
name: 'Group stage',
format: 'round_robin',
});
// Or draft a stage, attach markets, then publish:
const draft = await sdk.tournaments!.admin.createDraftStage(tournamentId, {
name: 'Round of 16',
});
await sdk.tournaments!.admin.publishDraftStage(draft.id as string, {
/* markets, fixtures */
});
// 3. Activate so players can enter
await sdk.tournaments!.admin.activateTournament(tournamentId);Exact body fields vary by format — use the Tournaments OpenAPI schema for POST /api/tournaments/admin/tournaments and stage endpoints.
Participant flow
Once live, players use the Enter a tournament guide (tournaments.enter, vault deposit, claims).
Agent API (server-to-server)
External agents with an API key:
import { createTournamentsSdk, externalAgentAuthProvider } from '@bento.fun/sdk';
const tournaments = createTournamentsSdk({
baseUrl: process.env.PARLAY_TOURNMENT_URL!,
auth: externalAgentAuthProvider(process.env.AGENT_API_KEY!),
});
await tournaments.agentsExternal.createTournament({ /* body */ });Operator lifecycle (summary)
| Phase | Admin methods |
|---|---|
| Build bracket | createStage, createGroups, generateFixtures, postBracket |
| Run markets | startStage, lockStage, resolveMarket |
| Settle | settleStage, finalizeTournament, setPayoutRootOnchain |
| Health | getHealth, getHealthTournament |
Full method list: SDK API reference → sdk.tournaments.admin.
Related
- Enter a tournament — player deposit and claims
- Place a parlay — parlay engine (separate from bracket tournaments)
- Authentication — JWT vs agent keys
- Tournaments OpenAPI — request/response schemas