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?
Start by checking whether your VOOI account already has Lighter credentials viaGET /user-exchange. It returns an array of { exchange, valid } objects — a lighter entry with valid: true means your account is connected:
- A
lighterentry withvalid: true— your account is already connected. No action needed. - No
lighterentry, or one withvalid: false— check your registration status on Lighter viaGET /user-exchange/{exchange}/register/status:
isRegistered: true— your wallet has a Lighter sub-account and is eligible to register. Follow the steps below, or, if you already created a Lighter API key yourself, paste those credentials viaPOST /user-exchange/lighter(see Use your own keys).isRegistered: false— your wallet has no Lighter sub-account yet. Deposit first (step 1 below) and the flag will flip once Lighter reflects the sub-account.
isRegistered reports “does this wallet have a Lighter sub-account” — in practice, “has it ever deposited to Lighter”. It does not mean a VOOI-managed key is active on that sub-account. A wallet that deposited directly through the Lighter UI also flips the flag to true — the check reads Lighter’s own state, not VOOI’s.Prerequisites
- An EVM wallet
- An active VOOI API token
- USDC deposited to Lighter from your wallet address (this creates your Lighter sub-account)
1. Deposit USDC to Lighter
Your wallet address must have a Lighter sub-account before you can register a VOOI-managed key. Depositing USDC creates one automatically. You can deposit through the Lighter UI or useGET /deposit to receive ready-to-sign calldata.
Using the deposit endpoint
approve followed by a transfer), submit them one at a time and wait for each to confirm before sending the next.
The minimum deposit amount is 5 USDC. Lighter usually processes deposits within up to 10 minutes.
2. Prepare registration
CallPOST /user-exchange/{exchange}/register/prepare with your wallet address and an API key index to generate the registration data.
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 API key index identifies which key slot on your Lighter sub-account VOOI will register. We recommend choosing a value greater than 230, since lower slots can collide with keys Lighter’s own apps use. If you use multiple integrations on the same Lighter account, give each a distinct value.
The API returns the following:
- a short-lived
registrationToken - a plain-text message to sign
signData is a plain-text string — not EIP-712 typed data.
The registrationToken expires in 10 minutes. If it expires before you complete registration, call this endpoint again to get a new token.
Possible errors:
3. Sign the message
Sign thesignData string as a plain text message (Ethereum personal_sign convention), not as EIP-712 typed data.
4. Execute registration
Submit your wallet address, theregistrationToken, and the signature (wrapped in a single-element signatures array) to POST /user-exchange/{exchange}/register/execute.
VOOI submits the signed ChangePubKey to Lighter on your behalf — you do not broadcast it yourself. The only on-chain transaction you sign is the USDC deposit in step 1.
Your wallet is now connected to Lighter through VOOI. You can use the VOOI API to place orders, manage positions, and query account data on Lighter.
If the broker you signed up through charges builder fees on Lighter, a one-time builder-fee approval is required before your orders carry the broker record — a separate signed step. See Approve flow fallback. Connecting to a broker that doesn’t use builder fees needs no extra approval.
Next steps
Start trading on Lighter
Place your first order
Connect your wallet to Hyperliquid
Register on Hyperliquid
Connect your wallet to Extended
Register on Extended