API Reference
Complete API reference for both Cosmos SDK and EVM endpoints. Includes Cosmos RPC, REST API, WebSocket, gRPC, and Ethereum JSON-RPC methods with code examples, best practices, and Cosmos EVM implementation notes.
https://rpc.integralayer.comhttps://api.integralayer.comFor real-time CometBFT event subscriptions
Efficient binary protocol for Cosmos SDK queries, typically on port 9090
https://evm.integralayer.comFor real-time EVM event subscriptions
status
Node status and sync info
curl https://rpc.integralayer.com/statusblock
Get block at height
curl https://rpc.integralayer.com/block?height=1tx
Get transaction by hash
curl "https://rpc.integralayer.com/tx?hash=0x..."broadcast_tx_sync
Broadcast transaction synchronously and wait for CheckTx result
curl "https://rpc.integralayer.com/broadcast_tx_sync?tx=0x..."validators
Get validator set at a given height
curl "https://rpc.integralayer.com/validators?height=1&per_page=100"abci_query
ABCI query for direct application state access
curl "https://rpc.integralayer.com/abci_query?path="/store/bank/key"&data=0x..."Connecting and Querying with CosmJS
import { StargateClient } from "@cosmjs/stargate";
// Connect to the Cosmos RPC endpoint
const client = await StargateClient.connect("https://rpc.integralayer.com");
// Get chain ID
const chainId = await client.getChainId();
console.log("Chain ID:", chainId); // integra-1
// Get latest block height
const height = await client.getHeight();
console.log("Current block height:", height);
// Query all balances for an address
const address = "integra1...";
const balances = await client.getAllBalances(address);
console.log("Balances:", balances);
// => [{ denom: "airl", amount: "1000000000000000000" }]
// Get a specific block
const block = await client.getBlock(height);
console.log("Block hash:", block.id);
console.log("Block time:", block.header.time);
// Query a transaction by hash
const tx = await client.getTx("TXHASH...");
console.log("Transaction:", tx);Rate Limiting
Handle 429 errors gracefully with exponential backoff. Public endpoints may enforce rate limits to protect node resources.
eth_getLogs Pagination
Block range limited to 5,000-10,000 blocks per query. Split larger ranges into smaller chunks to avoid timeouts.
Filter Expiration
Filters are held in-memory for approximately 5 minutes and are lost on node restart. Re-create filters if they expire.
Gas Estimation
Integralayer uses binary search for gas estimation, which differs from standard EVM estimation. Always add a buffer to estimated gas values.
Instant Finality
No reorgs on Integralayer. One confirmation is final with approximately 5-second block times. No need to wait for multiple confirmations.
Archive Nodes
Transaction logs and blooms may not be persisted after chain upgrades. Historical data queries may require an archive node.
Revert Reasons
Nodes do not store failure reasons for reverted transactions. Historical replay to determine revert reasons requires an archive node.
Integralayer runs the EVM as a Cosmos SDK module. There are several behavioral differences from standard Ethereum nodes:
- effectiveGasPrice: Gas price behavior may differ from standard Ethereum. Integralayer uses minimal gas fees (~1 gwei).
- Receipt fields: Transaction receipts may not include all standard Ethereum fields (e.g., no
receiptsRootin block headers). - Client implementations: Libraries like ethers.js may need minor adjustments. Use viem for best compatibility. See the EVM RPC tab for tested configurations.