BentoSDK

Two API hosts

Markets host vs tournaments host — when to use baseUrl and tournamentsBaseUrl.

Bento runs on two HTTP services. The SDK routes each namespace to the correct host.

Markets host (baseUrl)

Default: https://mainnet-server.bento.fun

ClientsPrefixProducts
sdk.public/bento/...Duels, packs, analytics, auth
sdk.user/bento/...Bets, create market, withdraw
sdk.realtimeWebSocket on same hostMarket list, duel activity

OpenAPI snapshot: packages/documentation/contracts/bento.docs-json.snapshot.json (pinned from /bento/docs-json).

Tournaments host (tournamentsBaseUrl)

Set via PARLAY_TOURNMENT_URL (frontend: NEXT_PUBLIC_PARLAY_BACKEND_URL).

ClientPrefixesProducts
sdk.tournaments/api/parlay, /api/tournaments, /bento/*Parlay, bracket, F1, fantasy, social

OpenAPI snapshot: packages/documentation/contracts/tournaments.docs-json.snapshot.json (exported from Nest locally).

Configuration

const sdk = createBentoSdk({
  baseUrl: process.env.BENTO_URL!,
  tournamentsBaseUrl: process.env.PARLAY_TOURNMENT_URL, // optional
  auth: walletAuthProvider(/* … */),
  tournamentsAuth: jwtAuthProvider({ getAccessToken: () => token }),
});

If tournamentsBaseUrl is omitted, sdk.tournaments and sdk.onchain are undefined.

Auth per host

  • Markets: wallet signature headers or JWT from public.auth.eoaLogin
  • Tournaments: often JWT via tournaments.auth.login; some reads use wallet headers

You can pass different providers: auth for markets, tournamentsAuth for tournaments.

Standalone tournaments client

import { createTournamentsSdk } from '@bento.fun/sdk';

const tournaments = createTournamentsSdk({
  baseUrl: process.env.PARLAY_TOURNMENT_URL!,
  auth: jwtAuthProvider({ getAccessToken: () => token }),
});

On this page