EVM L2 network documentation

Elysium RPC API reference

MainnetChain ID 9990136 RPC methods

Endpoint, plans and limits: Elysium RPC endpoint.

HTTPS endpointhttps://triport.io/r/{key}/elysium
Elysium RPC endpointPlans, endpoints & pricing for ElysiumElysium chain ID, RPC URL & network configIdentifiers with sources, wallet setup
All Elysium reference pages 46

JSON-RPC

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 / EndpointNetworkChain IDAuthenticationRequired scopeTier / rate limit
POST https://triport.io/r/<key>/elysiumElysium mainnet99901API key in path, or header form belowelysium:rpcFree 5 RPS reads, 1 RPS eth_getLogs; see Limits

Network parameters

ParameterValue
Mainnet chain ID99901 / 0x1863d
Native gas tokenHYPE
StackArbitrum Orbit / Nitro
Settlement networkHyperEVM, chain ID 999
Observed block cadenceApproximately 10 blocks per second (BE1, 2026-11-08)
HistoryFull history including historical state from block 1, confirmed on both measured nodes by BE1 on 2026-11-08
Data availabilityAnyTrust; 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

SurfaceEndpointAuthentication
HTTPS JSON-RPC 2.0https://triport.io/r/&lt;key&gt;/elysiumReplace <key> with your API key
HTTPS header formhttps://triport.io/rpc/elysiumX-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