BentoSDK

FAQ

Quick answers to the questions new integrators hit first.

Do I need a wallet or login to read data?

No. Public catalog/price/analytics reads need no user JWT. You still pass a Builder apiKey to createBentoSdk (required by the factory). Use an empty walletAuthProvider(() => ({})) for reads.

Why is my account address different from my wallet?

Registering / logging in provisions a managed account. Funds and positions live there, not on your signing wallet. Session field address is the managed account. → Accounts

I'm getting 401 Unauthorized.

Markets sdk.user needs Authorization: Bearer <JWT> from eoaLogin / eoaRegister, not raw x-wallet-* headers. → Authentication

I'm getting 400 "Insufficient Credits".

The managed account has no balance. Register/login does not fund you. On testnet: await sdk.public.faucet.mint({ address: managedAccountAddress }). → Money

eoaLogin returns no token.

New wallets get { exists: false }. Call eoaRegister once with a username, then use the returned token.

How do I bet inside a tournament after I enter?

Vault buy-in uses credits/USDC. Match picks use virtual stage chips via submitPicks (not placeBet). → Enter a tournament

How do private markets and invites work?

Create with privacyAccess: 'private', then duelInvitations.create. Invitees must userJoin before betting. → Create a market

Why are there two URLs / hosts?

Markets (BENTO_URL) for bets/packs/create-market; tournaments (PARLAY_TOURNAMENT_URL) for brackets/F1. Markets-only is enough to start. → Environments

getDuelById returns 404.

You passed database id instead of duelId. Use duelId from the list row.

My amounts look enormous / bets fail with tiny stakes.

Amounts are wei (18 decimals on BSC/credits). '10000000000000000000' is 10 units. Platform minimum is 5 units.

Should I use placeBet or placeBetFromEstimate?

placeBetFromEstimate. Hand-building from estimate.min_shares_out causes slippage 400s on larger bets. → Place a bet

credits vs usdc: which do I use?

credits = test/play, not geo-gated. usdc = real collateral, geo-gated. Set collateralMode per market/bet.

How do I get Sportmonks / live sports data?

Use the tournaments-host Sportmonks proxies (server holds the API token). Send x-builder-api-key (BENTO_BUILDER_API_KEY), pass a ttl profile (live, ended, default, …), poll no faster than the fresh window, and expect 60 req/min/IP on the proxy POSTs (429 + Retry-After if exceeded). → Sportmonks sports data

Where should an AI agent start?

/llms.txtQuickstartCookbookCommon patterns.

On this page