BentoSDK
SDK API reference

User (wallet)

Auto-generated reference for sdk.user.* HTTP methods (routes, auth, snippets).

← SDK API reference · Prefer Cookbook for common flows.

92 methods across 9 namespaces.

Setup

import { createBentoSdk, walletAuthProvider, jwtAuthProvider } from '@bento.fun/sdk';

const sdk = createBentoSdk({
  baseUrl: process.env.BENTO_URL!,
  apiKey: process.env.BENTO_BUILDER_API_KEY!,
  auth: walletAuthProvider(() => ({ Authorization: `Bearer ${token}` })),
});

sdk.user.bets

Namespace sdk.user.bets, 10 method(s). Example:

await sdk.user.bets.estimateBuy({ /* body */ });
MethodHTTPPathAuth
estimateBuyPOST/bento/user/bets/estimate-buyWallet
estimatedWinPOST/bento/user/bets/estimated-winWallet
estimateSellPOST/bento/user/bets/estimate-sellWallet
getParentYesPercentageSnapshotsGET/bento/user/bets/yes-percentage-snapshots/parent/:parentMarketIdWallet
getSellUnlockLiquidityGET/bento/user/bets/sell-unlock-liquidity/:duelIdWallet
getUserBetLimitGET/bento/user/bets/user-bet-limit/:addressWallet
getUserSharesGET/bento/user/bets/user-shares/:duelId/:addressWallet
getYesPercentageSnapshotsGET/bento/user/bets/yes-percentage-snapshots/:duelIdWallet
placeBetPOST/bento/user/bets/createWallet
sellBetPOST/bento/user/bets/sellWallet

Mutation snippets

POST /bento/user/bets/estimate-buy Immediate pricing-engine buy quote (wallet auth required).

sdk.user.bets.estimateBuy, POST /bento/user/bets/estimate-buy

await sdk.user.bets.estimateBuy({ /* body */ });

sdk.user.bets.estimatedWin, POST /bento/user/bets/estimated-win

await sdk.user.bets.estimatedWin({ /* body */ });

POST /bento/user/bets/estimate-sell

sdk.user.bets.estimateSell, POST /bento/user/bets/estimate-sell

await sdk.user.bets.estimateSell({ /* body */ });

Client-side guards that mirror the frontend/chatbot betting path, so the two failure modes that return an opaque backend 500 are caught before the request: - an empty bet option label, and - a below-minimum amount (the platform floor is 5 units per option; estimateBuy does NOT enforce it, only placement does — which is why a sub-5 bet prices fine then 500s at placement). The amount check only runs when tokenDecimals is known (needed to convert base units to whole units) so it can never false-positive.

sdk.user.bets.placeBet, POST /bento/user/bets/create

await sdk.user.bets.placeBet({ /* body */ });

POST /bento/user/bets/sell — accepted / eventual only.

sdk.user.bets.sellBet, POST /bento/user/bets/sell

await sdk.user.bets.sellBet({ /* body */ });

sdk.user.duelInvitations

Namespace sdk.user.duelInvitations, 12 method(s). Example:

await sdk.user.duelInvitations.addMember({ /* body */ });
MethodHTTPPathAuth
addMemberPOST/bento/user/duel-invitations/add-memberWallet
checkMembershipGET/bento/user/duel-invitations/membership/:param/:paramWallet
createPOST/bento/user/duel-invitations/createWallet
getByInviteCodeGET/bento/user/duel-invitations/:paramWallet
joinPOST/bento/user/duel-invitations/joinWallet
listForDuelGET/bento/user/duel-invitations/duel/:paramWallet
listMembershipsGET/bento/user/duel-invitations/memberships/:paramWallet
removeMemberPOST/bento/user/duel-invitations/remove-memberWallet
revokePOST/bento/user/duel-invitations/revokeWallet
syncJoinSuccessPOST/bento/user/duel-invitations/sync-join-successWallet
userJoinPOST/bento/user/duel-invitations/user-joinWallet
validateInvitePOST/bento/user/duel-invitations/validate-inviteWallet

Mutation snippets

sdk.user.duelInvitations.addMember, POST /bento/user/duel-invitations/add-member

await sdk.user.duelInvitations.addMember({ /* body */ });

sdk.user.duelInvitations.create, POST /bento/user/duel-invitations/create

await sdk.user.duelInvitations.create({ /* body */ });

sdk.user.duelInvitations.join, POST /bento/user/duel-invitations/join

await sdk.user.duelInvitations.join({ /* body */ });

sdk.user.duelInvitations.removeMember, POST /bento/user/duel-invitations/remove-member

await sdk.user.duelInvitations.removeMember({ /* body */ });

sdk.user.duelInvitations.revoke, POST /bento/user/duel-invitations/revoke

await sdk.user.duelInvitations.revoke({ /* body */ });

sdk.user.duelInvitations.syncJoinSuccess, POST /bento/user/duel-invitations/sync-join-success

await sdk.user.duelInvitations.syncJoinSuccess({ /* body */ });

sdk.user.duelInvitations.userJoin, POST /bento/user/duel-invitations/user-join

await sdk.user.duelInvitations.userJoin({ /* body */ });

sdk.user.duelInvitations.validateInvite, POST /bento/user/duel-invitations/validate-invite

await sdk.user.duelInvitations.validateInvite({ /* body */ });

sdk.user.duels

Namespace sdk.user.duels, 8 method(s). Example:

await sdk.user.duels.createDuel({ /* body */ });
MethodHTTPPathAuth
createDuelPOST/bento/user/duels/createWallet
finalizeContestPOST/bento/user/duels/finalize-contestWallet
getContestsGET/bento/user/duels/contest/:paramWallet
getCreatorContestsGET/bento/user/duels/:param/contestsWallet
getMyContestGET/bento/user/duels/contest/:param/my-contestWallet
getParticipantsGET/bento/user/duels/participants/:paramWallet
resolvePOST/bento/user/duels/resolveWallet
submitContestPOST/bento/user/duels/contestWallet

Mutation snippets

POST /bento/user/duels/create Submits on-chain market creation. HTTP 201 returns duelId + txHash but full catalog visibility is still eventual — poll PublicClient.getDuelById.

sdk.user.duels.createDuel, POST /bento/user/duels/create

await sdk.user.duels.createDuel({ /* body */ });

sdk.user.duels.finalizeContest, POST /bento/user/duels/finalize-contest

await sdk.user.duels.finalizeContest({ /* body */ });

sdk.user.duels.resolve, POST /bento/user/duels/resolve

await sdk.user.duels.resolve({ /* body */ });

sdk.user.duels.submitContest, POST /bento/user/duels/contest

await sdk.user.duels.submitContest({ /* body */ });

sdk.user.packs

Namespace sdk.user.packs, 11 method(s). Example:

await sdk.user.packs.addMarket({ /* body */ });
MethodHTTPPathAuth
addMarketPOST/bento/packs/creator/packs/:param/marketsWallet
createPackPOST/bento/packs/creator/packsWallet
enterPOST/bento/packs/:param/enterWallet
estimatePickPOST/bento/packs/:param/picks/estimateWallet
getMyEntryGET/bento/packs/:param/meWallet
getPayoutProofGET/bento/packs/:param/payout-proofWallet
getPayoutSummaryGET/bento/packs/:param/payout-summaryWallet
getRefundProofGET/bento/packs/:param/refund-proofWallet
getRefundSummaryGET/bento/packs/:param/refund-summaryWallet
placePickPOST/bento/packs/:param/picksWallet
publishPOST/bento/packs/creator/packs/:param/publishWallet

Mutation snippets

sdk.user.packs.addMarket, POST /bento/packs/creator/packs/:param/markets

await sdk.user.packs.addMarket({ /* body */ });

sdk.user.packs.createPack, POST /bento/packs/creator/packs

await sdk.user.packs.createPack({ /* body */ });

sdk.user.packs.enter, POST /bento/packs/:param/enter

await sdk.user.packs.enter({ /* body */ });

sdk.user.packs.estimatePick, POST /bento/packs/:param/picks/estimate

await sdk.user.packs.estimatePick({ /* body */ });

sdk.user.packs.placePick, POST /bento/packs/:param/picks

await sdk.user.packs.placePick({ /* body */ });

sdk.user.packs.publish, POST /bento/packs/creator/packs/:param/publish

await sdk.user.packs.publish({ /* body */ });

sdk.user.parentMarkets

Namespace sdk.user.parentMarkets, 9 method(s). Example:

await sdk.user.parentMarkets.addChildDuel({ /* body */ });
MethodHTTPPathAuth
addChildDuelPOST/bento/user/parent-markets/:param/add-duelWallet
createInvitationPOST/bento/user/parent-markets/create-invitationWallet
createParentMarketPOST/bento/user/parent-markets/createWallet
getByIdGET/bento/user/parent-markets/:paramWallet
joinPOST/bento/user/parent-markets/joinWallet
listAccessibleGET/bento/user/parent-markets/accessibleWallet
listInvitationsGET/bento/user/parent-markets/:param/invitationsWallet
listMembersGET/bento/user/parent-markets/:param/membersWallet
validateInvitePOST/bento/user/parent-markets/validate-inviteWallet

Mutation snippets

sdk.user.parentMarkets.addChildDuel, POST /bento/user/parent-markets/:param/add-duel

await sdk.user.parentMarkets.addChildDuel({ /* body */ });

sdk.user.parentMarkets.createInvitation, POST /bento/user/parent-markets/create-invitation

await sdk.user.parentMarkets.createInvitation({ /* body */ });

sdk.user.parentMarkets.createParentMarket, POST /bento/user/parent-markets/create

await sdk.user.parentMarkets.createParentMarket({ /* body */ });

sdk.user.parentMarkets.join, POST /bento/user/parent-markets/join

await sdk.user.parentMarkets.join({ /* body */ });

sdk.user.parentMarkets.validateInvite, POST /bento/user/parent-markets/validate-invite

await sdk.user.parentMarkets.validateInvite({ /* body */ });

sdk.user.polymarket

Namespace sdk.user.polymarket, 31 method(s). Example:

await sdk.user.polymarket.approveTrading({ /* body */ });
MethodHTTPPathAuth
approveTradingPOST/bento/user/polymarket/approve-tradingWallet
cancelAllDELETE/bento/user/polymarket/cancel-allWallet
cancelOrderDELETE/bento/user/polymarket/cancel-order/:paramWallet
deploySafePOST/bento/user/polymarket/deploy-safeWallet
deployWalletPOST/bento/user/polymarket/deploy-walletWallet
depositPOST/bento/user/polymarket/depositWallet
deriveCredentialsPOST/bento/user/polymarket/derive-credentialsWallet
getApprovalStatusGET/bento/user/polymarket/approval-statusWallet
getAuthStatusGET/bento/user/polymarket/auth-statusWallet
getBalanceGET/bento/user/polymarket/balanceWallet
getCardPricesPOST/bento/user/polymarket/discovery/card-pricesWallet
getDepositStatusGET/bento/user/polymarket/deposit-status/:paramWallet
getEventsByTagsGET/bento/user/polymarket/discovery/events-by-tagsWallet
getLiveScoresGET/bento/user/polymarket/discovery/live-scoresWallet
getOrdersGET/bento/user/polymarket/ordersWallet
getPolygonBalancesGET/bento/user/polymarket/polygon-balancesWallet
getPositionsGET/bento/user/polymarket/positionsWallet
getRelayerTxGET/bento/user/polymarket/relayer-tx/:paramWallet
getSafeStatusGET/bento/user/polymarket/safe-statusWallet
getSportsMapGET/bento/user/polymarket/discovery/sports-mapWallet
getTickSizeGET/bento/user/polymarket/tick-sizeWallet
getTradesGET/bento/user/polymarket/tradesWallet
getWalletStatusGET/bento/user/polymarket/wallet-statusWallet
placeOrderPOST/bento/user/polymarket/place-orderWallet
publicSearchGET/bento/user/polymarket/discovery/public-searchWallet
recoverFundsPOST/bento/user/polymarket/recover-fundsWallet
redeemPOST/bento/user/polymarket/redeemWallet
refreshCredentialsPOST/bento/user/polymarket/refresh-credentialsWallet
withdrawPOST/bento/user/polymarket/withdrawWallet
withdrawClobPOST/bento/user/polymarket/withdraw-clobWallet
wrapLegacyCollateralPOST/bento/user/polymarket/wrap-legacy-collateralWallet

Mutation snippets

sdk.user.polymarket.approveTrading, POST /bento/user/polymarket/approve-trading

await sdk.user.polymarket.approveTrading({ /* body */ });

sdk.user.polymarket.cancelAll, DELETE /bento/user/polymarket/cancel-all

await sdk.user.polymarket.cancelAll({ /* body */ });

sdk.user.polymarket.cancelOrder, DELETE /bento/user/polymarket/cancel-order/:param

await sdk.user.polymarket.cancelOrder({ /* body */ });

sdk.user.polymarket.deploySafe, POST /bento/user/polymarket/deploy-safe

await sdk.user.polymarket.deploySafe({ /* body */ });

sdk.user.polymarket.deployWallet, POST /bento/user/polymarket/deploy-wallet

await sdk.user.polymarket.deployWallet({ /* body */ });

sdk.user.polymarket.deposit, POST /bento/user/polymarket/deposit

await sdk.user.polymarket.deposit({ /* body */ });

sdk.user.polymarket.deriveCredentials, POST /bento/user/polymarket/derive-credentials

await sdk.user.polymarket.deriveCredentials({ /* body */ });

sdk.user.polymarket.getCardPrices, POST /bento/user/polymarket/discovery/card-prices

await sdk.user.polymarket.getCardPrices({ /* body */ });

sdk.user.polymarket.placeOrder, POST /bento/user/polymarket/place-order

await sdk.user.polymarket.placeOrder({ /* body */ });

sdk.user.polymarket.recoverFunds, POST /bento/user/polymarket/recover-funds

await sdk.user.polymarket.recoverFunds({ /* body */ });

sdk.user.polymarket.redeem, POST /bento/user/polymarket/redeem

await sdk.user.polymarket.redeem({ /* body */ });

sdk.user.polymarket.refreshCredentials, POST /bento/user/polymarket/refresh-credentials

await sdk.user.polymarket.refreshCredentials({ /* body */ });

+ 3 more mutations in table above.

sdk.user.portfolio

Namespace sdk.user.portfolio, 6 method(s). Example:

await sdk.user.portfolio.getAccountDetails({ /* body */ });
MethodHTTPPathAuth
getAccountDetailsPOST/bento/user/portfolio/accountDetailsWallet
getDuelsPOST/bento/user/portfolio/duelsWallet
getDuelsTablePOST/bento/user/portfolio/table/duelsWallet
getHistoryTablePOST/bento/user/portfolio/table/historyWallet
getPnlChartPOST/bento/user/portfolio/pnl-chartWallet
getPositionsGET/bento/user/portfolio/positions/:paramWallet

Mutation snippets

sdk.user.portfolio.getAccountDetails, POST /bento/user/portfolio/accountDetails

await sdk.user.portfolio.getAccountDetails({ /* body */ });

sdk.user.portfolio.getDuels, POST /bento/user/portfolio/duels

await sdk.user.portfolio.getDuels({ /* body */ });

sdk.user.portfolio.getDuelsTable, POST /bento/user/portfolio/table/duels

await sdk.user.portfolio.getDuelsTable({ /* body */ });

sdk.user.portfolio.getHistoryTable, POST /bento/user/portfolio/table/history

await sdk.user.portfolio.getHistoryTable({ /* body */ });

sdk.user.portfolio.getPnlChart, POST /bento/user/portfolio/pnl-chart

await sdk.user.portfolio.getPnlChart({ /* body */ });

sdk.user.referralAnalytics

Namespace sdk.user.referralAnalytics, 1 method(s). Example:

await sdk.user.referralAnalytics.getMine(/* args */);
MethodHTTPPathAuth
getMineGET/bento/user/referral-analyticsWallet

sdk.user.withdraw

Namespace sdk.user.withdraw, 4 method(s). Example:

await sdk.user.withdraw.claimFees({ /* body */ });
MethodHTTPPathAuth
claimFeesPOST/bento/user/withdraw/claim-feesWallet
claimWinningsPOST/bento/user/withdraw/claim-winningsWallet
getCreatorFeesGET/bento/user/withdraw/creator-feesWallet
withdrawPOST/bento/user/withdrawWallet

Mutation snippets

sdk.user.withdraw.claimFees, POST /bento/user/withdraw/claim-fees

await sdk.user.withdraw.claimFees({ /* body */ });

sdk.user.withdraw.claimWinnings, POST /bento/user/withdraw/claim-winnings

await sdk.user.withdraw.claimWinnings({ /* body */ });

sdk.user.withdraw.withdraw, POST /bento/user/withdraw

await sdk.user.withdraw.withdraw({ /* body */ });

On this page