GET /deposit returns one or more unsigned EVM transactions that move USDC (or another supported stablecoin) into the target exchange. You sign and broadcast them yourself — VOOI never holds the user’s key.
Prerequisites: an active VOOI API token. See API Tokens if you don’t have one.
Request
tokenAddress parameter is optional — omit it to deposit the venue’s default stablecoin on that chain (USDC for Hyperliquid, Lighter, Extended, and Ondo; USDG for Robinhood; the first listed token for Aster). Extended and Ondo accept USDC only — any other tokenAddress is rejected.
Response shape
calldata and submit it to the target chain in the order returned. When the response contains multiple transactions, wait for each to confirm before sending the next — each one is a dependency of the one that follows.
Bridge-based deposits (Extended) may also include a top-level fee alongside transactions.
meta.type tells you what the transaction is for:
Per-venue patterns
Supported chains and tokens are enforced per venue — they are not enumerated in the response, which carries only the deposittransactions (and, for bridge-based venues, a top-level fee). An unsupported chainId or tokenAddress is rejected with an error (see Errors). The table below is a behavioral summary:
VOOI does not expose deposits, withdrawals, or transfers for Binance, Bybit, or MEXC. Move funds through those venues directly.
The Lighter and Robinhood
transfer to field is a per-deposit intent address — it differs for each deposit request, so don’t cache it. Request fresh deposit transactions for each deposit.Extended deposits bridge USDC to your Extended account. Request fresh deposit transactions for each deposit — don’t reuse old calldata.
After the deposit confirms
There is no callback endpoint to post a transaction hash back. To know when the deposit has landed, watch the balance on the target venue:GET /exchange/accounts— poll until the new balance is visible.- Real-time updates — subscribe to the
accountsSSE event and react when the balance changes.
Abandoning a multi-step deposit
If the user submits transaction 1 (for example,approve) and abandons transaction 2, there is no reserved quote to expire and no cleanup endpoint to call — the state of the deposit is whatever the chain reflects. To resume, call GET /deposit again and submit whichever transactions the wallet still needs to send.
Errors
Deposit error messages are prefixed with the lowercase venue code (e.g.
hyperliquid: Unsupported chain ID for Hyperliquid deposit: <id>).
Next steps
Register on Hyperliquid
Authorize a VOOI-managed agent once USDC is on Hyperliquid
Register on Lighter
Authorize a VOOI-managed key once USDC is on Lighter
Register on Extended
Set up an Extended account from your EVM wallet
Withdrawals
Move funds back out to your wallet