BentoSDK

Create a tournament

Create, stage, and activate a bracket tournament on the tournaments host.

Prerequisites

  • tournamentsBaseUrl and tournamentsAuth (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 APIs

Create 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)

PhaseAdmin methods
Build bracketcreateStage, createGroups, generateFixtures, postBracket
Run marketsstartStage, lockStage, resolveMarket
SettlesettleStage, finalizeTournament, setPayoutRootOnchain
HealthgetHealth, getHealthTournament

Full method list: SDK API referencesdk.tournaments.admin.

On this page