Environments & endpoints
Base URLs, chain IDs and contract addresses for mainnet and testnet.
| Item | Mainnet | Testnet |
|---|---|---|
| REST base URL | https://mainnet.zklighter.elliot.ai | https://testnet.zklighter.elliot.ai |
| REST API prefix | /api/v1/ | /api/v1/ |
| WebSocket | wss://mainnet.zklighter.elliot.ai/stream | wss://testnet.zklighter.elliot.ai/stream |
| Chain ID (for signing) | 304 | 300 |
| Web app | app.lighter.xyz | testnet.app.lighter.xyz |
| Explorer API | https://explorer.elliot.ai/api/ | – |
| Deposit bridge API | https://bridge.lighter.xyz | – |
Chain ID must match the environmentThe chain ID you pass to the signer must match the environment you send to. A transaction signed for
304will be rejected by testnet, and vice versa.
Lighter on Robinhood ChainLighter on Robinhood Chain is a separate exchange with its own endpoints (
api.rh.lighter.xyz) and chain ID (466324). See Lighter on Robinhood Chain.
Ethereum contract (mainnet)
Lighter's main contract on Ethereum holds platform collateral and handles deposits, secure withdrawals and priority transactions:
0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7
See Priority Transactions for its functions.
Read-only WebSocket for restricted regions
Clients in restricted regions can still read market data:
wss://mainnet.zklighter.elliot.ai/stream?readonly=trueLatency & colocation
For the lowest latency, run in AWS Tokyo ap-northeast-1, AZ apne1-az4. Premium accounts on the top staking tier can request direct access that skips AWS CloudFront via the #support Discord channel.
Quick smoke test
# All markets with decimals and minimums
curl "https://mainnet.zklighter.elliot.ai/api/v1/orderBookDetails"
# System config (integrator fee caps, pool indexes)
curl "https://mainnet.zklighter.elliot.ai/api/v1/systemConfig"Updated 3 days ago
