Build on Elysium with Elysa's own nodes
A private RPC, live WebSockets and our indexed market data, on servers of their own in Singapore, Europe and the US. Yours while your wallet holds 500,000 ELYSA.
- Every method
- No eth_getLogs cap
- Capacity of its own
Pick the region nearest your bot. Every key works on all of them.
- Chain ID
- 99901
- Region
- Singapore
- Batch
- 100 calls
- WebSockets
- 50 per key
Private RPC
Every eth, net, web3 and arb method, plus tracing. eth_getLogs over the whole chain in one call, on capacity of its own.
Live WebSockets
Subscribe to new blocks and logs the moment they land. Up to 50 sockets per key.
Sending
Send now from every region through HyperEVM's Inbox.
Direct sends open with Elysium's public launch on Nov 9
Indexed data
Pairs, trades, holders and candles: the data Elysa runs on, as clean JSON.
Your API key
- 1Pick a wallet that holds ELYSA
- 2Sign once to prove it's yours
- 3Create your key
Signing proves you own the wallet. It can't move funds, and nothing is sent from your wallet.
Quickstart
Paste your key where it says <key>, then copy and run.
Plain JSON-RPC over HTTPS: single calls or batches of up to 100.
curl -s https://rpc.elysa.trade/<key> \ -H 'content-type: application/json' \ -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'# every log of a token, the whole chain in one callcurl -s https://rpc.elysa.trade/<key> \ -H 'content-type: application/json' \ -d '{"jsonrpc":"2.0","id":2,"method":"eth_getLogs", "params":[{"fromBlock":"0x0","toBlock":"latest","address":"0xcac5b6e74eb7383af0a6dc344d996e225bbf9a17"}]}'Reference
Everything a key gets, at a glance.
JSON-RPC methods
Every method of these namespaces the node serves:
eth_*net_*web3_*arb_*Tracing and raw data:
debug_traceTransactiondebug_traceCalldebug_traceBlockByNumberdebug_traceBlockByHashdebug_getRawBlockdebug_getRawHeaderdebug_getRawReceiptsdebug_getRawTransactionLive over the WebSocket:
eth_subscribe newHeadseth_subscribe logseth_unsubscribeSending: through HyperEVM's Inbox now, directly from Elysium's public launch on Nov 9:
eth_sendRawTransactioneth_sendRawTransactionConditionalLimits per key
- Calls per second
- 1,000 sustained, bursts to 10,000
- Batch size
- Up to 100 calls
- WebSockets
- 50 open at once per key
- Heavy calls
- 8 at once per key (logs, receipts, simulations, traces)
- Call timeout
- 60 seconds
- eth_getLogs range
- The whole chain in one call
- Request body
- Up to 2 MB
Data API
Under /v1, the same query parameters and JSON as Elysa's own API.
- GET /v1/pairsEvery pair, newest, trending or deepest first
- GET /v1/pulsePulse's columns: new pairs, final stretch, migrated
- GET /v1/discoverTokens trending by volume, from 1 minute to 24 hours
- GET /v1/searchTokens by name, ticker or address
- GET /v1/pairs/:idOne pair with its live figures
- GET /v1/pairs/:id/tradesA pair's trades, newest first, with filters
- GET /v1/pairs/:id/candlesOHLC candles, by window or by count
- GET /v1/pairs/:id/top-tradersTop traders by PnL or volume
- GET /v1/pairs/:id/routeThe pools a HYPE trade of the pair crosses
- GET /v1/pairs/:id/holder-statsInsiders, fresh wallets, pro traders, LP burned
- GET /v1/tokens/:addressA token and every pool it trades in
- GET /v1/tokens/:address/holdersHolders with balances and tags
- GET /v1/tokens/:address/creator-tokensEvery token its creator launched
- GET /v1/tokens/:address/bubble-mapHow the top holders are connected
- GET /v1/venuesEvery venue and launchpad we index
Data API reference
Every route's parameters and answer, field by field. Amounts are decimal strings, times are Unix milliseconds.
GET /v1/pairsEvery pair, newest, trending or deepest first
https://rpc.elysa.trade/<key>/v1/pairsParameters
sortnew | trending | liquidity · default newNewest, trending or deepest firstlimit1–100 · default 50How many to returnbeforemsOnly pairs created before this timecursorstringThe nextCursor of the previous pagevenueaddressOnly this venue's pairsprotocolv2 | v3 | v4Only this pool typequoteaddressOnly pairs quoted in this tokenminLiquidityUsdnumberOnly pairs with at least this much liquidity, USD
Answer
pairsPairCard[]The pairsnextCursorstring | nullPass it as cursor for the next page; null at the end
Types it uses:PairCardTokenPoolTaxPulseInfoLaunchpadRef
GET /v1/pulsePulse's columns: new pairs, final stretch, migrated
GET /v1/discoverTokens trending by volume, from 1 minute to 24 hours
https://rpc.elysa.trade/<key>/v1/discoverParameters
window1m | 5m | 30m | 1h | 24h · default 30mThe window volume is ranked overlimit1–100 · default 50How many to return
Answer
windowstringThe window asked forasOfnumberWhen these figures were computed (ms)pairsDiscoverPair[]Tokens by volume in the window, most first
Types it uses:DiscoverPairPairCardTokenPoolTaxPulseInfoLaunchpadRef
GET /v1/searchTokens by name, ticker or address
https://rpc.elysa.trade/<key>/v1/searchParameters
q1–100 charactersA name, a ticker (a leading $ is ignored) or an address (required)limit1–100 · default 50How many to return
Answer
querystringThe text searchedpairsPairCard[]One card per token, best match first
Types it uses:PairCardTokenPoolTaxPulseInfoLaunchpadRef
GET /v1/pairs/:idOne pair with its live figures
https://rpc.elysa.trade/<key>/v1/pairs/:idParameters
No parameters.
Answer
pairPairDetailThe pair with the pair page's figuresvenueVenueThe venue the pool is on
Types it uses:PairDetailPairCardTokenPoolTaxPulseInfoLaunchpadRefPeriodsVenueRouterInfo
GET /v1/pairs/:id/tradesA pair's trades, newest first, with filters
https://rpc.elysa.trade/<key>/v1/pairs/:id/tradesParameters
limit1–500 · default 100How many to returnbeforemsOnly trades before this timecursorstringThe nextCursor of the previous page (pass the same filters with it)traderaddressOnly this wallet's tradessidebuy | sellOnly buys or only sellsminUsdnumberOnly trades worth at least this, USDorderdesc | asc · default descasc starts at the pair's first trade
Answer
tradesTrade[]The tradesnextCursorstring | nullPass it as cursor for the next page; null at the end
Types it uses:Trade
GET /v1/pairs/:id/candlesOHLC candles, by window or by count
https://rpc.elysa.trade/<key>/v1/pairs/:id/candlesParameters
interval1s | 15s | 1m | 5m | 15m | 1h | 4h | 1d · default 1mThe candle sizefrommsA window's start (not with limit)tomsA window's end, or where a page by count ends (default: now)fill0 | 1 · default 1Windows only: fill quiet buckets with the last closelimit1–5000By count: the last buckets with trades before to, never filled
Answer
candlesCandle[]Oldest first, USD pricesnextnumber | nullBy count only: the to of the older page; null when nothing trades before it
Types it uses:Candle
GET /v1/pairs/:id/top-tradersTop traders by PnL or volume
https://rpc.elysa.trade/<key>/v1/pairs/:id/top-tradersParameters
limit1–100 · default 50How many to returnsortpnl | realized | volume | bought | sold | remaining · default pnlWhat ranks them
Answer
tradersTopTrader[]The tradersasOfnumberWhen these figures were computed (ms)
Types it uses:TopTraderWalletFunding
GET /v1/pairs/:id/routeThe pools a HYPE trade of the pair crosses
GET /v1/pairs/:id/holder-statsInsiders, fresh wallets, pro traders, LP burned
https://rpc.elysa.trade/<key>/v1/pairs/:id/holder-statsParameters
No parameters.
Answer
The whole answer is one PairHolderStats.
Types it uses:PairHolderStats
GET /v1/tokens/:addressA token and every pool it trades in
GET /v1/tokens/:address/holdersHolders with balances and tags
https://rpc.elysa.trade/<key>/v1/tokens/:address/holdersParameters
limit1–500 · default 100How many to return
Answer
holdersHolder[]The largest holders firstholderCountnumber | nullAddresses with a positive balanceasOfnumberWhen these figures were computed (ms)completebooleanFalse while the token's holder index is still filling: the figures are then partial
Types it uses:Holder
GET /v1/tokens/:address/creator-tokensEvery token its creator launched
https://rpc.elysa.trade/<key>/v1/tokens/:address/creator-tokensParameters
No parameters.
Answer
creatorstring | nullWho created the token's first pooltokensCreatorToken[]Every token that address launched, newest first; at most 100
Types it uses:CreatorToken
GET /v1/tokens/:address/bubble-mapHow the top holders are connected
https://rpc.elysa.trade/<key>/v1/tokens/:address/bubble-mapParameters
limit1–300 · default 150How many to return
Answer
The whole answer is one BubbleMap.
Types it uses:BubbleMapHolderBubbleFunderBubbleLink
GET /v1/venuesEvery venue and launchpad we index
https://rpc.elysa.trade/<key>/v1/venuesParameters
No parameters.
Answer
venuesVenue[]Every venue we index
Types it uses:VenueRouterInfo
Types
PairCardOne pool, as every list shows it
idstringThe pair's id (a v2/v3 pool address, or a v4 pool id)protocolv2 | v3 | v4The pool typevenue{ id, address, name, universalRouter, v2FeeBps }The venue (factory or PoolManager); id joins /venuespoolAddressstringThe pool's address (v4: the PoolManager)feenumber | nullv3/v4 fee in hundredths of a basis pointtickSpacingnumber | nullv3/v4 tick spacinghooksstring | nullv4 hook addresstokenTokenThe token sidequote{ address, symbol, decimals }What it is priced in (HYPE, a stablecoin…)exoticbooleanQuoted in something other than HYPE or a stablecoincreatedAtnumberUnix time in millisecondscreatedBlocknumberThe block the pool was created increatedTxstringThe transaction that created the poolcreatorstring | nullWho created the poolpriceQuotestring | nullPrice of one token in the quotepriceUsdstring | nullPrice of one token in USDmcapUsdstring | nullMarket cap, USDliquidityUsdstring | nullLiquidity in the pool, USDvolume5mstringUSD volume over the last 5 minutesvolume1hstringUSD volume over the last hourvolume24hstringUSD volume over the last 24 hourstxns5m{ buys, sells }Swaps over the last 5 minutestxns1h{ buys, sells }Swaps over the last hourtxns24h{ buys, sells }Swaps over the last 24 hourslastTradeAtnumber | nullUnix time in millisecondsnetBuy5mstringBuy minus sell volume over 5 minutes, USD (negative when sells lead)holdersnumber | nullAddresses with a positive balancetop10Pctnumber | null% of supply the 10 largest holders hold (pools and burn excluded)creatorHoldingPctnumber | null% of supply the creator holdssnipersPctnumber | null% of supply snipers hold nowbundlersPctnumber | null% of supply bundlers hold nowcreatorTokensnumber | nullTokens the creator has launched, this one includedtaxPoolTax | nullWhat a trade pays the poolpulsePulseInfo | nullThe token's Pulse stagelaunchpadLaunchpadRef | nullThe launchpad that made the pool
TokenThe same token object everywhere
addressstringLowercase addressnamestring | nullThe token's namesymbolstring | nullThe tickerdecimalsnumber | nullERC-20 decimalstotalSupplystring | nullBase units, as a decimal stringimagestring | nullOur copy of the logo (add ?s=64 or ?s=128 for smaller)descriptionstring | nullPlain text, at most 2,000 characterslinks{ website?, x?, telegram?, discord? } | nullValidated https linksmetadataSourcestring | nullWhere the metadata came from
PoolTaxWhat a trade pays the pool
buyPctnumber% of a buy the pool takes: LP fee plus hook cutsellPctnumber% of a sell the pool takesfeePctnumberThe LP fee part, %sourcestring | nullWhose hook or token sets the rest; null when the LP fee is all of it
PulseInfoThe token's Pulse stage
stagenew | stretch | migratedThe column it is inmainbooleanThis pool is the one Pulse shows for the tokensincenumberWhen it entered this stage (ms)migratedAtnumber | nullWhen it first reached the migration market cap (ms)
LaunchpadRefThe launchpad that made the pool
idstringThe registry's idnamestringThe launchpad's own name
DiscoverPairA card plus its figures over the Discover windowEvery field of PairCard, plus:
discover.windowstringThe windowdiscover.volumeUsdstringUSD volume of the token in the windowdiscover.buysnumberBuys in the windowdiscover.sellsnumberSells in the windowdiscover.changePctnumber | nullUSD price change over the window, %discover.spark(string | null)[]25 USD prices across the window, for a sparkline
PairDetailA card plus the pair page's figuresEvery field of PairCard, plus:
totalSupplystring | nullBase units, re-read from the chaindecimalsnumber | nullERC-20 decimalsmarketCapUsdstring | nullMarket cap, USDfdvUsdstring | nullFully diluted value, USDpriceHypestring | nullPrice of one token in HYPEchangePeriods<number | null>USD price change, %volumeUsdPeriods<string>USD volumebuysPeriods<number>BuyssellsPeriods<number>Sellsmakers24hnumberDistinct traders in the last 24 hourscreatorstring | nullWho created the pool
PeriodsOne figure per period
m5TLast 5 minutesh1TLast hourh6TLast 6 hoursh24TLast 24 hours
TradeOne swap
pairIdstringThe pair's id (a v2/v3 pool address, or a v4 pool id)tsnumberUnix time in millisecondsblocknumberBlock numbertxHashstringTransaction hashlogIndexnumberThe swap's log index in its blocksidebuy | sellBuy or sell of the tokentraderstringWho traded (for a retryable, its refundTo)amountTokenstringToken amount, base unitsamountQuotestringQuote amount, base unitspriceUsdstring | nullUSD, as a decimal string; null without a pricevolumeUsdstring | nullUSD, as a decimal string; null without a price
CandleOne bucket, USD prices
tnumberBucket start (ms)ostringOpening pricehstringHighest pricelstringLowest pricecstringClosing pricevstringUSD volume
TopTraderOne trader of the pair
addressstringLowercase addressboughtUsdstringUSD spent buyingsoldUsdstringUSD received sellingboughtTokenstringTokens bought, base unitssoldTokenstringTokens sold, base unitsbuysnumberBuyssellsnumberSellsrealizedUsdstringRealized PnL, USDunrealizedUsdstring | nullUnrealized PnL, USDpnlUsdstring | nullTotal PnL, USDheldTokenstringWhat its swaps leave held, base unitsbalancestring | nullIts token balance now, base units; null while the holder index fillsremainingUsdstring | nullWhat it still holds, at today's price, USDhypeBalancestring | nullHYPE in wei, as a decimal stringlastActiveAtnumber | nullIts newest swap in any pool (ms)feesHypestring | nullGas paid for its swaps in this pair, weifundingWalletFunding | nullIts first HYPE in on Elysiumtags(creator | sniper | bundler | pro | fresh)[]What kind of trader it istradesnumberBuys plus sellsfirstAtnumberIts first trade in the pair (ms)lastAtnumberIts last trade in the pair (ms)
WalletFundingA wallet's first HYPE in
fromstringThe senderkindtransfer | depositA transfer on Elysium, or a bridge deposit from HyperEVMlabelstring | nullA known sender's nameamountstringHYPE in wei, as a decimal stringatnumberUnix time in millisecondstxHashstringTransaction hash
PairRouteThe pools a HYPE trade of the pair crosses
pairIdstringThe pair's id (a v2/v3 pool address, or a v4 pool id)sidebuy | sellThe trade's directionhopsRouteHop[]1–3 pools, in trade orderviastring[]Symbols along the route, e.g. HYPE, USDC, TKNliquidityUsdstring | nullThe thinnest pool on the route, USDasOfnumberWhen the route was picked (ms)
RouteHopOne pool of a route
pairIdstringThe pair's id (a v2/v3 pool address, or a v4 pool id)protocolv2 | v3 | v4The pool typepoolstringThe v2 pair, v3 pool or v4 PoolManagervenuestringThe venue's addresstokenInstringWhat goes in (0x000…000: native HYPE)tokenOutstringWhat comes outfeenumber | nullv3/v4 fee in hundredths of a basis pointtickSpacingnumber | nullv3/v4 tick spacinghooksstring | nullv4 hook addressv2FeeBpsnumber | nullv2 only: the pair fee in basis pointsliquidityUsdstring | nullLiquidity in the pool, USD
PairHolderStatsThe Holders panel's figures
pairIdstringThe pair's id (a v2/v3 pool address, or a v4 pool id)completebooleanFalse while the token's holder index is still filling: the figures are then partialinsidersPctnumber | null% of supply; null until the holder index is completeinsidersnumber | nullInsiders holding some nowfreshPctnumber | null% of supply; null until the holder index is completefreshWalletsnumber | nullFresh wallets holding some nowproTradersPctnumber | null% of supply; null until the holder index is completeproTradersnumber | nullPro traders holding some nowlpBurnedPctnumber | null% of the pool's liquidity nobody can ever withdrawasOfnumberWhen these figures were computed (ms)
HolderOne holder of a token
addressstringLowercase addressbalancestringBase units, as a decimal stringpctnumber | null% of supply, 4 decimalstags(creator | pool | burn | router | contract)[]What the address is
BubbleMapThe largest holders and the links between them
tokenstringLowercase addressholdersHolder[]The largest holders, as /holdersfundersBubbleFunder[]Wallets that funded two or more of themlinksBubbleLink[]Every link between the holders and the funderstransfersbooleanFalse when transfers couldn't be read: links are funding onlyholderCountnumber | nullAddresses with a positive balancecompletebooleanFalse while the token's holder index is still filling: the figures are then partialasOfnumberWhen these figures were computed (ms)
BubbleFunderA wallet that funded several holders
addressstringLowercase addresslabelstring | nullA known sender's namecreatorbooleanIt created one of the token's pools
BubbleLinkOne link of the map
fromstringWho sent the token, or the first HYPEtostringWho received itkindtransfer | fundingA token transfer, or a first fundingcountnumberTransfers from → to (funding: 1)amountstringToken base units summed, or wei for funding
CreatorTokenA token its creator launched
addressstringLowercase addresssymbolstring | nullThe tickernamestring | nullThe token's nameimagestring | nullOur copy of the logo (add ?s=64 or ?s=128 for smaller)pairIdstringIts most liquid poolcreatedAtnumberUnix time in millisecondsmarketCapUsdstring | nullMarket cap, USDliquidityUsdstring | nullLiquidity in the pool, USD
VenueA factory or PoolManager we index
addressstringLowercase addresskindv2 | v3 | v4The pool typenamestring | nullIts nameuniversalRouterstring | nullIts Universal Router, if anyv2FeeBpsnumber | nullv2 only: the pair fee in basis pointspairsnumberPools indexed on itfirstSeennumberBlock it was first seen atroutersRouterInfo[]The routers that trade it (the Elysa Router)preferredstring | nullThe router to usewethstring[]The wrapped HYPE its pools pair againstquoterstring | nullIts quoter contractsellablebooleanFalse when its tokens can't be soldsellableReasonstring | nullWhy not, when they can'tlaunchpads{ id, name }[]Launchpads running on it
RouterInfoA router that trades a venue
addressstringLowercase addresskindstringWhat kind of router it isnamestringIts nameversionstring | nullIts versionapprovalpermit2 | erc20 | noneHow a sell approves itwethstring | nullThe wrapped HYPE it usesquoterstring | nullIts quoter contractverifiedbooleanIts bytecode matches a reviewed buildupgradeablebooleanIt can be changed by its ownersafetystring[]Plain-words flags; empty when nonesupports{ nativeIn, nativeOut, feeOnTransfer, multicall }What it can dolaunchpad{ id, name, referral } | nullThe launchpad it belongs topreferredbooleanThe router to useadapterstringHow to call itabistring | nullIts ABI filefeeOptionsstring[]How the platform fee is taken on it
Questions
Who can get a key?
Any wallet holding at least 500,000 ELYSA. Your tokens stay in your wallet: you sign in once, and the key works from any machine.
What happens if I move my ELYSA?
The key works while the wallet holds the minimum. Below it the key pauses, and it picks up again the moment the balance is back, with nothing to redo.
Can I use one key on several bots?
Yes. Use it from as many machines as you like, with up to 50 WebSockets open at once. Each wallet has one key; another wallet with its own 500,000 ELYSA gets its own.
I lost my key. What now?
Sign in and rotate it: you get a new key at once, and the old one stops working.
Where do the nodes run?
In Singapore, Europe, US East and US West, on servers that serve key holders only, so your traffic never shares capacity with the terminal. Pick the region nearest your bot on the endpoints card: every key works on all of them. For sending, Singapore sits closest to Elysium's sequencer in Tokyo.
Can I send transactions now?
Yes, from every region, through HyperEVM's Inbox: sign the Elysium transaction, wrap it as 0x04 followed by the signed transaction in a HyperEVM transaction to the Inbox's sendL2Message, signed by the same wallet, and send that with eth_sendRawTransaction through your key. The answer is the HyperEVM hash; the Elysium transaction runs about 10–17 seconds later under its own hash. The wallet needs a little HYPE on HyperEVM for gas, and another wallet can't sign the HyperEVM side. Direct sends to Elysium open with its public launch on Nov 9. The Send (Inbox) quickstart has the code.
Why was a call refused as heavy?
Each key runs up to 8 heavy calls at once: eth_getLogs, eth_getBlockReceipts, eth_simulateV1 and traces, the calls that can keep a node busy for seconds. One more while they run is answered with an error and the rest of its batch goes through; send it again when one finishes.
What does Elysa keep about my requests?
A count per day, for your usage chart. Never what you asked for, your IP address or the wallets your bot uses.