Sign-in identity vs trading wallet
A person has one AGG user per app. That user can have several sign-in identities: Ethereum and Solana wallets, Google, Twitter, Apple, and email. Add more with Account linking. One identity belongs to one AGG user; linking it to a second user returns409.
Signing in does not choose where funds are held. A wallet used to sign in is only a self-custody
trading wallet when you pass it as signingAddress. Without that, every trade uses the managed
account.
Managed account
Each user gets a managed wallet with two addresses:evmAddress and svmAddress. AGG holds the
keys and signs every trade, bridge, and withdrawal. The user does not sign anything.
evmAddressreceives on every supported EVM chain and on Hyperliquid.svmAddressreceives on Solana.- Balances are tracked per chain and per token. A trade can spend from any chain; AGG moves the funds to the venue it routes to.
{ "ready": false } until the addresses exist; Funding & withdrawals owns the
poll, balances, and withdrawals.
Privy wallet provider. When your app uses Privy as its wallet provider, the managed wallet is
the user’s own Privy wallet instead of one AGG creates. AGG still signs, through the authorization
key you saved, with no user present. evmAddress is that Privy wallet. See
Privy wallet provider.
Self-custody
The user keeps their own key. Their EVM wallet, an EOA, must first be linked to the account with Account linking. Quotes and fills name it assigningAddress. AGG
prices the route against that wallet’s balances and asks it to sign each step. A Solana wallet
cannot be a signingAddress.
fundingAddresses names other linked EVM wallets the same trade may spend from. The signing wallet
still signs the venue order; each funding wallet signs only the transfers of its own money.
Self-custody is supported on these venues. Any other venue is refused at fill time.
Polymarket deposit wallet. Each linked EOA has one Polymarket deposit wallet. Its address is
derived from the EOA and stays fixed once AGG records it. Polymarket
orders are placed from it. A self-custody Polymarket limit order needs it to exist already.
Legacy Polymarket wallets. Some users have a wallet Polymarket created before AGG, owned by
their EOA. AGG finds it and reads its balance. There are two kinds:
- Legacy Safe: a Gnosis Safe. Its balance can fund a trade on any venue. The EOA approves moving
funds out of it with a
safe_txsignature. - Legacy proxy: its balance can only be spent on Polymarket. Nothing moves it to another venue, and self-custody limit orders are refused for a wallet that has one.
GET /execution/balances?custody=self lists each of these with a custodyKind of EOA,
DEPOSIT_WALLET, or POLYMARKET_LEGACY, plus legacyKind. A proxy row still counts in the
token’s totalRaw and availableRaw; subtract it to show what can be spent elsewhere. Kalshi cash
does not appear in this view.
Procedures: Self-custody trading and
Self-custody signing reference.
Venue accounts
Some balances live inside a single venue and can only be spent there.- BetDEX hosted account. AGG creates and runs a BetDEX account for the user. It has its own Solana USDC deposit address, separate from the managed balance. See Hosted venue accounts.
- ProphetX and Novig direct accounts. When your app’s execution mode for that venue is
direct, the user stores their own venue credentials withPUT /venue-keysand trades with that account’s cash. AGG does not deposit, withdraw, or redeem those funds. See Market resolution. - Kalshi account. The user’s own Kalshi account and API key, stored with Venue keys. Every Kalshi trade, managed or self-custody, spends that account’s cash. See Kalshi.
Which mode, at a glance
Compare the trading flows in Choose your integration.