How Bento works
The mental model (markets on-chain, two hosts, sign-in, your managed account, and acceptance vs finality).
Five things explain almost everything about building on Bento. Read this once and the rest of the docs will click.
your app ──HTTP──▶ Bento API ──▶ BSC (on-chain settlement)
│ ▲
└── sign login ────┘ → JWT (Bearer), sent on sdk.user calls1. Markets live on-chain
Bento markets and tournament vaults settle on BSC. You don't manage contracts to get started. You call HTTP methods, and for a few flows (vault deposits) you submit a transaction with your own wallet.
2. Two hosts, one SDK
createBentoSdk() talks to two hosts:
- Markets host (
baseUrl): bets, packs, create-market, portfolio. - Tournaments host (
tournamentsBaseUrl): bracket tournaments and F1.
You only need the markets host to start. Add the tournaments host when you reach tournaments. → Two API hosts
3. Catalog is open; login and actions need a Builder key + user JWT
Catalog/price/analytics reads need no auth. Login and register need a Builder API key (apiKey → x-builder-api-key). Acting as a user (place a bet, create a market) also needs a JWT from that login. createBentoSdk requires apiKey so you're ready for both. → Builder API key · Authentication
4. You sign with your key, but trade through a managed account
When you register or log in, Bento provisions a managed account whose address is different from your signing wallet. Your balances, positions, and payouts live there. Register does not fund that account; on testnet call the auto-mint faucet next. → Accounts & wallets · Money
5. Accepted ≠ settled
A write returns when the server accepted it, not when the chain finalized. Poll a read to confirm the result. → Acceptance vs finality
Next: Quickstart for the zero → first-bet script, or Environments for hosts/env.
More detail (optional): Two hosts · Accounts · Money · Mutations · Glossary