EVM L2 network documentation
Elysium RPC API reference
Endpoint, plans and limits: Elysium RPC endpoint.
https://triport.io/r/{key}/elysiumAll Elysium reference pages 46
JSON-RPC
- eth_accounts
- eth_blobBaseFee
- eth_blockNumber
- eth_call
- eth_chainId
- eth_createAccessList
- eth_estimateGas
- eth_feeHistory
- eth_gasPrice
- eth_getBalance
- eth_getBlockByHash
- eth_getBlockByNumber
- eth_getBlockReceipts
- eth_getBlockTransactionCountByHash
- eth_getBlockTransactionCountByNumber
- eth_getCode
- eth_getHeaderByNumber
- eth_getLogs
- eth_getProof
- eth_getRawTransactionByHash
- eth_getStorageAt
- eth_getTransactionByBlockHashAndIndex
- eth_getTransactionByBlockNumberAndIndex
- eth_getTransactionByHash
- eth_getTransactionCount
- eth_getTransactionReceipt
- eth_getUncleByBlockHashAndIndex
- eth_getUncleByBlockNumberAndIndex
- eth_getUncleCountByBlockHash
- eth_getUncleCountByBlockNumber
- eth_maxPriorityFeePerGas
- eth_sendRawTransaction
- eth_simulateV1
- eth_syncing
- net_version
- web3_clientVersion
Guides & operations
Contracts
Capabilities
- JSON-RPC readsAvailableResponses and complete batches up to 8 MB (8,388,608 bytes); larger returns -32005.
- Event logs (eth_getLogs)AvailableUse an address filter and page by block range; at most 10,000 blocks per request.
- Transaction submissionAvailableA returned hash is not inclusion: poll eth_getTransactionReceipt. Unknown outcome returns -32000 with data.txHash; no automatic resend. Network rejections are passed through.
- WebSocket logsAvailableBasic+An address or topics filter is required. Removed (reorged) logs are not re-sent.
- WebSocket newHeadsAvailablePro+Headers arrive in order, in small batches. newPendingTransactions is not available on Elysium.
Statuses reflect checks up to 2026-11-08. Rate limits are plan policy, not measured capacity.
Elysium is the Kinetiq team's EVM-compatible Arbitrum Orbit L2, settling on HyperEVM. This reference describes mainnet chain ID 99901 (0x1863d) and native gas token HYPE.
Snapshot: 2026-11-08. Public mainnet launch is scheduled for 2026-11-09. The endpoints below are live: every documented method was verified through Triport production on 2026-11-08 (D2 check). Transaction submission and the batch-history products are live as well.
| Method / Endpoint | Network | Chain ID | Authentication | Required scope | Tier / rate limit |
|---|---|---|---|---|---|
| POST https://triport.io/r/<key>/elysium | Elysium mainnet | 99901 | API key in path, or header form below | elysium:rpc | Free 5 RPS reads, 1 RPS eth_getLogs; see Limits |
Network parameters
| Parameter | Value |
|---|---|
| Mainnet chain ID | 99901 / 0x1863d |
| Native gas token | HYPE |
| Stack | Arbitrum Orbit / Nitro |
| Settlement network | HyperEVM, chain ID 999 |
| Observed block cadence | Approximately 10 blocks per second (BE1, 2026-11-08) |
| History | Full history including historical state from block 1, confirmed on both measured nodes by BE1 on 2026-11-08 |
| Data availability | AnyTrust; the 2026-11-08 keyset observation records one committee member |
The sequencer's L2 head, data availability and confirmation of settlement on HyperEVM are separate stages. AnyTrust describes data availability; a newly returned L2 block is not by itself proof of settlement finality. The observed rollup uses BoLD assertions on its settlement layer. No fixed finality duration or confirmation count is promised here. Check the settlement status required by your application; do not treat eth_syncing=false or a fast-moving head as a finality signal.
Endpoints
| Surface | Endpoint | Authentication |
|---|---|---|
| HTTPS JSON-RPC 2.0 | https://triport.io/r/<key>/elysium | Replace <key> with your API key |
| HTTPS header form | https://triport.io/rpc/elysium | X-API-Key: $TRIPORT_API_KEY |
Both forms require scope elysium:rpc; a key with all-network access has it. A key with an explicit scope list that lacks it gets HTTP 403 scope_missing. The separate DAS batch stream uses elysium:das and follows confirmed batch postings.
Quickstart
Set TRIPORT_API_KEY to your own key. The examples run as shown against production.
curl
curl -sS "https://triport.io/r/$TRIPORT_API_KEY/elysium" \
-H 'Content-Type: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'Header form:
curl -sS https://triport.io/rpc/elysium \
-H "X-API-Key: $TRIPORT_API_KEY" \
-H 'Content-Type: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'Expected identity response:
{"jsonrpc":"2.0","id":1,"result":"0x1863d"}ethers v6
import { JsonRpcProvider } from "ethers";
const key = process.env.TRIPORT_API_KEY;
if (!key) throw new Error("Set TRIPORT_API_KEY");
const provider = new JsonRpcProvider(
"https://triport.io/r/" + encodeURIComponent(key) + "/elysium"
);
const chainId = await provider.send("eth_chainId", []);
if (chainId !== "0x1863d") throw new Error("Unexpected chain: " + chainId);
console.log(await provider.getBlockNumber());viem
import { createPublicClient, http } from "viem";
const key = process.env.TRIPORT_API_KEY;
if (!key) throw new Error("Set TRIPORT_API_KEY");
const url = "https://triport.io/r/" + encodeURIComponent(key) + "/elysium";
const client = createPublicClient({ transport: http(url) });
if (await client.getChainId() !== 99901) throw new Error("Unexpected chain");
console.log(await client.getBlockNumber());web3.py
import os
from urllib.parse import quote
from web3 import Web3
key = quote(os.environ["TRIPORT_API_KEY"], safe="")
w3 = Web3(Web3.HTTPProvider(f"https://triport.io/r/{key}/elysium"))
if w3.eth.chain_id != 99901:
raise RuntimeError("Unexpected chain")
print(w3.eth.block_number)Checking the connection
Call eth_chainId first and require 0x1863d. Then read eth_blockNumber to inspect the head and eth_getBlockByNumber for block details. Stop on a different chain ID. Network identity alone does not establish freshness or finality.
What's available
The method index contains all 35 admitted read methods from the BE1 matrix. Every method has a complete measured fixture and page: BE1 captures plus 18 newly completed methods and a fresh eth_call capture from D1C (2026-11-08). On 2026-11-08 the D2 check replayed every page's request through Triport production: all 35 answered, and the results for fixed historical blocks matched the published examples. BE1 confirms full history including historical state from block 1 on both measured nodes (block retrieval, eth_getBalance, eth_getCode and eth_call). Historical-state access and settlement finality are separate properties.
The eth_gasPrice result may differ slightly between requests. The example is a measured value, not a fixed fee.
eth_sendRawTransaction is live. It returns a hash on accepted submission; an unknown outcome returns the hash in error.data.txHash without an automatic resend. Poll eth_getTransactionReceipt for inclusion and execution status. Receipts usually appear within seconds; finalized follows batch publication on HyperEVM on a scale of minutes. These are not production timing guarantees. See unsupported methods for net_listening, net_peerCount, txpool_, debug_ and trace_*: they are rejected with HTTP 403 method_unknown, and a batch that contains one is rejected entirely.
Batch history
The DAS index covers signed sequencer transactions since genesis, with coverage.complete: false. Deposits and other L1→L2 messages are counted per batch only; address history excludes them, internal calls and creations, and execution status. Freshness follows confirmed batch cadence, not real time. Use RPC for the current head. The REST and batch WebSocket paths require scope elysium:das; the batch stream needs Pro or higher. DAS REST has its own budget, up to 3× the ordinary-read RPS of the same plan: 10 / 25 / 60 / 120 / 120 RPS for batch list, address history and status, 2 / 4 / 8 / 15 / 15 RPS for a single batch (BE12, 2026-11-08).
Limits
See network limits and Rate Limits & Tiers. BE3 (2026-11-08): getLogs is limited to 10,000 blocks per request; each response and the entire batch are limited to 8 MB (8,388,608 bytes), with -32005 on response-size overflow. BE5 sustained RPS (Free / Basic / Pro / Business / Enterprise): ordinary reads 5 / 10 / 25 / 40 / 40, getLogs 1 / 2 / 5 / 10 / 10. Each element of a JSON-RPC batch counts as one request; see limits.
Errors
See network errors and the shared error reference. Handle the HTTP status and JSON-RPC envelope separately.
Methods
- Read methods and transaction submission
- Sending transactions: fees, unknown outcomes and SDK examples
- Bridge: HYPE deposits and withdrawals
- DAS products: batches, address history and batch stream
- Unsupported methods