Skip to content
EVMKit Docs EVMKit Docs
Back to site
EVMKit Docs EVMKit Docs
Site

Docs RPC API

RPC API

Public EVMKit and supported `eth_*` JSON-RPC methods on the shared root POST endpoint.

All current public methods are sent through the same regional JSON-RPC root endpoint:

https://rpc-<endpoint>.evmkit.app/

Replace <endpoint> with your chosen regional endpoint. See Regions for hostname patterns and the current regional layout.

Use the same headers for every method:

Content-Type: application/json
X-Api-Key: evk_your_live_key

Methods that execute against a chosen block use hex block numbers in the request body.

For pricing, use the single table on the Billing & CU pricing page.

Register a structured transaction payload under a deterministic hash for later simulation or tracing.

Example request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "evmkit_prepare",
"params": [
{
"tx": {
"from": "0x1111111111111111111111111111111111111111",
"to": "0x2222222222222222222222222222222222222222",
"input": "0x1234",
"value": "0x0",
"gas": 250000
},
"hash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"blockNumber": "0x16e3600",
"stateBlockNumber": "0x16e35ff"
}
]
}

Example response:

{
"jsonrpc": "2.0",
"id": 1,
"result": null
}

Successful prepare calls return null.

Register a pre-built payload under a deterministic hash for later simulation or tracing.

Example request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "evmkit_prepareRaw",
"params": [
{
"tx": "0x02f86c01808506fc23ac0082520894aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa80c0",
"hash": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"blockNumber": "0x16e3600",
"stateBlockNumber": "0x16e35ff"
}
]
}

Example response:

{
"jsonrpc": "2.0",
"id": 1,
"result": null
}

Successful raw prepare calls return null.

Run a prepared or one-shot simulation request and return success status, gas used, optional output bytes, and optional access list.

prep is the prepared hash you previously registered with evmkit_prepare or evmkit_prepareRaw.

Example request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "evmkit_call",
"params": [
{
"prep": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"tx": {
"from": "0x1111111111111111111111111111111111111111",
"to": "0x2222222222222222222222222222222222222222",
"value": "0x0",
"input": "0x1234",
"gas": 250000
},
"blockNumber": "0x16e3600",
"stateBlockNumber": "0x16e35ff",
"createOutput": true,
"createAccessList": true
}
]
}

Example response:

{
"jsonrpc": "2.0",
"id": 1,
"result": {
"s": true,
"r": {
"s": true,
"g": 184221,
"c": "0x0000000000000000000000000000000000000000000000000000000000000001",
"a": {
"g": 123456,
"l": [
{
"address": "0xabc",
"storageKeys": [
"0x1",
"0x2"
]
},
{
"address": "0xdef",
"storageKeys": []
}
]
}
}
}
}

If createAccessList is true, result.r.a.g returns the access-list gas estimate and result.r.a.l returns the generated access list.

Return a structured trace for a prepared or one-shot simulation request.

Example request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "evmkit_trace",
"params": [
{
"options": {
"disableStorage": false,
"disableStack": true,
"disableReturnData": true,
"disableMemory": true,
"tracer": "muxTracer",
"tracerConfig": {
"callTracer": {
"withLog": true
}
}
},
"tx": {
"hash": "0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"tx": {
"from": "0x1111111111111111111111111111111111111111",
"to": "0x2222222222222222222222222222222222222222",
"value": "0x0",
"input": "0x1234",
"gas": 250000
}
},
"blockNumber": "0x16e3600",
"stateBlockNumber": "0x16e35ff"
}
]
}

Example response:

{
"jsonrpc": "2.0",
"id": 1,
"result": {
"e": false,
"s": true,
"g": 184221,
"r": {
"callTracer": {
"from": "0x1111111111111111111111111111111111111111",
"to": "0x2222222222222222222222222222222222222222",
"gas": "0x3d090",
"gasUsed": "0x2cf9d",
"input": "0x1234",
"output": "0x",
"type": "CALL",
"logs": [
{
"address": "0x2222222222222222222222222222222222222222",
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
],
"data": "0x0000000000000000000000001111111111111111111111111111111111111111",
"index": "0x0",
"position": "0x0"
}
]
}
}
}
}

result.g returns the gas used by the traced transaction. result.e is true when the traced transaction already exists on chain.

Returns the latest pending block context: number, basefee, timestamp.

Example request:

{
"jsonrpc": "2.0",
"id": 1,
"method": "evmkit_pendingBlock",
"params": []
}

Example response:

{
"jsonrpc": "2.0",
"id": 1,
"result": {
"number": "0x14d99a2",
"basefee": "0x5e57394a",
"timestamp": "0x67d1a25a"
}
}
MethodNotes
eth_getBlockByHashBlock by hash, with optional full transactions.
eth_getBlockByNumberBlock by tag or number, with optional full transactions.
eth_getBlockReceiptsFull receipt list for a block.
eth_getRawTransactionByHashRaw signed transaction bytes by hash.
eth_getTransactionByHashDecoded transaction by hash.
eth_getRawTransactionByBlockHashAndIndexRaw transaction by block hash and index.
eth_getTransactionByBlockHashAndIndexTransaction by block hash and index.
eth_getRawTransactionByBlockNumberAndIndexRaw transaction by block number and index.
eth_getTransactionByBlockNumberAndIndexTransaction by block number and index.
eth_getTransactionBySenderAndNonceReth extension for sender plus nonce lookup.
eth_getTransactionReceiptReceipt by transaction hash.
eth_getBalanceAccount balance at a block tag or number.
eth_getStorageAtStorage slot value at a block tag or number.
eth_getTransactionCountNonce at a block tag or number.
eth_getCodeBytecode at a block tag or number.
eth_gasPriceSuggested legacy gas price.
eth_maxPriorityFeePerGasSuggested priority fee.
eth_blobBaseFeeCurrent blob base fee.
eth_getLogsLog query with upstream range and result limits.