This guide assumes that you already have an active VOOI API token. See API Tokens for how to obtain one.
Do you need to register?
Check whether your VOOI account already has Aster credentials viaGET /user-exchange:
{ exchange, valid } objects.
- An entry with
exchange: "aster"is present and itsvalidistrue— your account is already connected. No action needed. - No
asterentry is present, or theasterentry hasvalid: false— follow the steps below. A present-but-valid: falseentry means the existing credentials no longer work and you need to re-register.
Prerequisites
- An EVM wallet
- An active VOOI API token
1. Prepare registration
CallPOST /user-exchange/{exchange}/register/prepare with your wallet address.
The optional referralCode field binds a referral code to the new account at registration. Omit it and the VOOI code is applied; it cannot be changed afterwards. See Points & rewards.
The response contains:
- a short-lived
registrationToken signData— a two-item array of EIP-712 typed data objects. You sign each one in order:[0]registers and approves the VOOI API agent (read, spot-trade, and perp-trade permissions; withdrawals disabled),[1]approves the VOOI builder used for order-time fee attribution.
signData item has domain, message, primaryType, and types — pass each through to an EIP-712 signer (see step 2). The two items differ: [0] uses primaryType: "Message" (its message.msg carries the agent-registration parameters), [1] uses primaryType: "ApproveBuilder". Both domains use chainId: 56 (BSC). See the API reference for the full schema.
The first signature grants VOOI an API agent with read, spot-trade, and perp-trade permissions; withdrawals are disabled.
The agent is valid for 90 days by default. To choose a different expiry, pass agentExpiry (milliseconds since the Unix epoch) in the prepare request — it sets the expiry of the agent registered by the [0] signature.
The registrationToken expires in 10 minutes. If it expires before you complete registration, call this endpoint again to get a new token.
Customize the builder approval
The second signature ([1], ApproveBuilder) approves a builder address that VOOI uses when routing orders on Aster, along with a maximum builder fee rate. Defaults are server-side: a VOOI-controlled builder, name VOOI, and a 0.0003 (3 bps) cap. To override any of these, pass them in the prepare body:
builderName and maxFeeRate may only be sent together with builderAddress — sending either one alone returns 400. Once approved, this cap is enforced on every Aster order: the per-order broker.feeBps you submit cannot exceed it. Re-running registration with a different cap replaces the previous approval.
2. Sign both messages
Sign eachsignData object as EIP-712 typed data, in the same order as the response.
Both messages use chainId: 56 (BSC). Many end-user wallet apps warn or refuse to sign typed data whose domain chainId does not match the active network — if you prompt an end-user wallet to sign, switch it to BSC first. Signing with a raw private key has no network to match against.
3. Execute registration
Submit your wallet address, theregistrationToken, and both signatures to POST /user-exchange/{exchange}/register/execute.
VOOI submits the signed messages to Aster on your behalf — you do not broadcast them yourself. No on-chain transaction is required.
The signatures array must contain exactly two entries, in the same order as the signData items from the prepare response: index 0 is the agent registration-and-approval signature, index 1 is the builder-approval signature.
A failed builder approval (
[1]) does not fail registration — the connection still completes with valid: true; only the agent-registration signature failing is fatal.
Your wallet is now connected to Aster through VOOI.
Aster account configuration
Trading through VOOI expects your Aster account to be in:- Cross-margin mode
- Multi-asset margin enabled
- One-way position mode
Next steps
Start trading on Aster
Place your first order
Connect your wallet to Hyperliquid
Register on Hyperliquid
Connect your wallet to Extended
Register on Extended