# Welcome to BlockPI!

Rock-Solid & Fast RPC Network

## Developer Resources

<table data-view="cards"><thead><tr><th valign="top"></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td valign="top">Supported Networks and Advanced Features</td><td><a href="/files/ZjOVYGhx9wOgeUVtIY5X">/files/ZjOVYGhx9wOgeUVtIY5X</a></td><td><a href="/pages/yTzgeBfx6LS0iGegaFrN">/pages/yTzgeBfx6LS0iGegaFrN</a></td></tr><tr><td valign="top">API Reference</td><td><a href="/files/nDWBeYcJ17K1i53FBzWC">/files/nDWBeYcJ17K1i53FBzWC</a></td><td><a href="/pages/w3gqyy5sS4mtYbBr3SaD">/pages/w3gqyy5sS4mtYbBr3SaD</a></td></tr><tr><td valign="top">Bundler Service</td><td><a href="/files/BkL0xKn1PnsS5ITtHaf8">/files/BkL0xKn1PnsS5ITtHaf8</a></td><td><a href="/pages/7NP2PCCM4Q9Dr19POPW6">/pages/7NP2PCCM4Q9Dr19POPW6</a></td></tr></tbody></table>

## Basic Tutorials

<table data-view="cards"><thead><tr><th valign="top"></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td valign="top">How to Add Network in Wallet</td><td><a href="/pages/kVTowHeGTXU6EYwGe7Wn">/pages/kVTowHeGTXU6EYwGe7Wn</a></td><td><a href="/files/LkcrwuowIgmud5X9YwHU">/files/LkcrwuowIgmud5X9YwHU</a></td></tr><tr><td valign="top">How to Generate An API Key</td><td><a href="/pages/bK5Ss4ibcn8n9Mxj7uX3">/pages/bK5Ss4ibcn8n9Mxj7uX3</a></td><td><a href="/files/pLqOs1p8Hw7jmyrSWXdx">/files/pLqOs1p8Hw7jmyrSWXdx</a></td></tr><tr><td valign="top">Build Your Own Team</td><td><a href="/pages/hziTGx4fsqjWAUSyamrh">/pages/hziTGx4fsqjWAUSyamrh</a></td><td><a href="/files/60cxsbwNKoO40DHPLooE">/files/60cxsbwNKoO40DHPLooE</a></td></tr></tbody></table>


# About BlockPI

{% hint style="info" %}
BlockPI Network Alpha-net officially launched on October 25th, 2022. Compared to Testnet, it is a more stable version and ready for production environments. For more information, please refer to [BlockPI Medium article](https://medium.com/blockpi/blockpi-alpha-net-your-reliable-web3-rpc-service-provider-9574201ec90b).&#x20;
{% endhint %}

BlockPI Network RPC service is supporting more than 70 blockchain networks. Check the full list .

{% content-ref url="/pages/yTzgeBfx6LS0iGegaFrN" %}
[Supported Networks and Advanced Features](/build/supported-networks-and-advanced-features)
{% endcontent-ref %}

## Service Structure

BlockPI Network aims to provide high-quality, robust, and efficient RPC service. To avoid the single-point failure and limitation of scalability, the network is designed to be a distributed structure with expandable working nodes. This page introduces the detailed roles and the service mechanisms of the BlockPI Network.

<figure><img src="/files/R8wb0XetqBeQcc4i6Vsi" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Users" %}
Users include individual developers, personal users, and blockchain applications. Regardless of the type of user, they send RPC requests through the RPC endpoint domain resolution provided by the RPC provider. Some applications place the RPC endpoint in the web frontend, so users send requests directly from their local machines to the RPC server. Other applications set up backend servers, where users first send requests to the backend of the applications, which then uniformly sends the requests to the RPC provider.
{% endtab %}

{% tab title="Gateway" %}
Gateways collect and sort users' requests, and route them to an appropriate Node Client by the BlockPI Load Balancer. The gateway is divided into general gateways and private gateways. General gateways serve all nodes across all chains, while private gateways are deployed flexibly for customized services.
{% endtab %}

{% tab title="Load Balancer" %}
The load balancer is an algorithm deployed within the Gateway. Our algorithm has undergone multiple iterations, configuring different settings based on the characteristics of each blockchain network to scientifically and reasonably allocate RPC requests to different regions and types of blockchain node clients.
{% endtab %}

{% tab title="Node Client" %}
Node Client is the end node that processes RPC requests and sends responses to users through Gateway. Some blockchain networks have multiple node clients, each with varying performance in handling RPC methods. After thorough testing, we create configurations for specific clients and provide them to the Load Balancer.
{% endtab %}
{% endtabs %}

## Service Lifecycle

* To use the BlockPI Network service, a user must register on [BlockPI Dashboard](https://dashboard.blockpi.io/) and create an API key. At the same time, the RPC endpoint (url) is generated. Different types of RU packages are also available to be purchased by users.
* Requests can be sent by this endpoint and routed to a proper Gateway by DNS.&#x20;
* The Gateway checks the user authority. After that, it sends the request to a Node Client through BlockPI Load Balancer.&#x20;
* Node Client processes the request and produce the response payload. The response is sent back to the Gateway and therefore delivered to the user.

### Guides for users: Jump right in

For a higher quality RPC service, follow these instructions to register and generate your first BlockPI API key.&#x20;

{% content-ref url="/pages/ulZhxvt8pIs02hZ9fnU9" %}
[Registration & Login](/basic-tutorials/registration-and-login)
{% endcontent-ref %}

{% content-ref url="/pages/bK5Ss4ibcn8n9Mxj7uX3" %}
[API Key](/basic-tutorials/api-key)
{% endcontent-ref %}

{% content-ref url="/pages/kVTowHeGTXU6EYwGe7Wn" %}
[Wallet Set Up](/basic-tutorials/wallet-set-up)
{% endcontent-ref %}

{% content-ref url="/pages/pB1ZWAKiBztXyprIOtVN" %}
[Account Management](/basic-tutorials/account-management)
{% endcontent-ref %}

{% content-ref url="/pages/R5ArmMUwq3t3YhXi4tpf" %}
[Team Management](/basic-tutorials/team-management)
{% endcontent-ref %}


# Background

## The Web3 Evolution

Web3 represents the next generation of the internet, one that focuses on shifting power from big tech companies to individual users. We’re now in the midst of this revolution.&#x20;

Everyone knows that putting all eggs into one basket is a foolish decision, especially when it comes to important data and digital assets. And that is exactly what we do in Web2. We hand over our data to large internet companies and let them extract value from every user at the cost of privacy and valuable content. Unfortunately, this is the inherent characteristic of a centralized structure. **The imbalance of power caused by the asymmetry of information was supposed to be eliminated by Web3, a promising decentralized world that gives power back to end-users.**&#x20;

## The Industry

There are tons of decentralized applications in the industry, yet many of them are centralized in infrastructure. Most of us are just simply trusting information provided by centralized infrastructure companies, and allowing them to obtain every single request from users in all dApps. Just like we were doing before, in Web2.

The other concern is that users are vulnerable to outages. Users lose access to their digital assets when the API service is down. You know your assets are safe, yet you can not interact with them. You must switch it every single time when there is an outage, whereas the privacy problem is still outstanding. The truth is, most end users don't know how to change API endpoints or even understand what an API is. **The industry thirsts for stronger trustless infrastructure providers. This is the motivation of the BlockPI Network.**&#x20;

## Our Visions

* Although BlockPI will provide most of the nodes at the beginning of the project, the plan is to build a fully scalable RPC service network. Our vision is to build an efficient and robust Web3 infrastructure. Thus the plan was put forward in the spirit of **"One for all, and all for one"**.&#x20;
* Self-owned RPC nodes from wallets, exchanges, dApps, and third-party RPC providers will be encouraged to join the BlockPI Network by incentives.
  * Every participant who connects the RPC server to the BlockPI Network will be benefited from it. They don't need to keep renting servers to be prepared for the peak demand of RPC requests.&#x20;
  * In this way, they significantly increase the maximum RPC requests availability with a minus cost, only fees of extra inflow usage on-demand.&#x20;
  * On the other hand, any participant with idle capacity can earn by providing outflow RPC requests using its redundant resource.&#x20;
* From a whole picture perspective, the BlockPI Network smooths out volatile of RPC requests load through the entire network, improving the utilization of resources as much as possible and providing infinite scalability at the same time.
* BlockPI Network is a non-competitive web3 service layer. Any RPC service provider is welcome to join. The team will deploy a native version of distributed RPC Dapp on each blockchain. Third-party nodes will be easy to register and connect their clusters to the network.&#x20;


# Glossary

<table><thead><tr><th width="216.8363932348065">Terms</th><th width="455.8958094609532">Definition</th></tr></thead><tbody><tr><td>API key</td><td>A simple encrypted string generated by users and verified by BlockPI Hub. It is a pass to use the BlockPI Network service.</td></tr><tr><td>Auto-Renew</td><td>Setting of the following automatic purchase strategy when the current RU packages are fully consumed.</td></tr><tr><td>BlockPI Hub</td><td>BlockPI servers which manage the user system, node rating and authenticator system, and accounting system.</td></tr><tr><td>BlockPI Node Balancer</td><td>An algorithm BlockPI developed that governs how Gateways dispatch requests to HyperNodes.</td></tr><tr><td>BlockPI Testnet</td><td>A BlockPI Testnet is a network constructed for testing purposes. It consists of multiple instances such as Testnet #1, #2, and so on. Testnet #1 has completed in September 2022. Typically, a Testnet provides incentives and is open to third-party operators and users.</td></tr><tr><td>Gateway</td><td>Distributed nodes which collect and sort users' requests, and route them to the proper HyperNodes.</td></tr><tr><td>Node Client</td><td>End nodes that process RPC requests and send the response back to the users.</td></tr><tr><td>Pay As You Go</td><td>An option in Auto-Renew. Directly deduction of the wallet balance for extra RU use if the wallet balance is greater than $0 and the RU balance is 0.</td></tr><tr><td>IPFS</td><td>A distributed system for storing and accessing files, websites, applications, and data.</td></tr><tr><td>Public User</td><td>Unregistered users who use BlockPI public endpoints for free.</td></tr><tr><td>Registered User</td><td>Users who registered are able to generate API keys and enjoy advanced services.</td></tr><tr><td>Request Unit (RU)</td><td>The basic unit used to calculate the users' usage for sending RPC requests.</td></tr><tr><td>RU Package</td><td>An RU package contains a certain amount of RUs. Different RU packages come with varying numbers of RUs and expiration dates.</td></tr></tbody></table>


# Registration & Login

Follow these instructions to register & login.

{% content-ref url="/pages/GJOg7ewDFDGbkI9xiTLV" %}
[Link and Login with Web3 Wallet](/basic-tutorials/registration-and-login/link-and-login-with-web3-wallet)
{% endcontent-ref %}


# Link and Login with Web3 Wallet

We support web3 login which means you can log in with a wallet. Only an address which has been linked to a registered email are able to log in.

## Link the wallet address with an existing account

{% stepper %}
{% step %}
Go to the Personal and click Setting tab.

<figure><img src="/files/nkq4nFWofuFIuJ0CBgxL" alt=""><figcaption></figcaption></figure>

{% endstep %}

{% step %}
Connected accounts.

Click connect under Metamask tab. Sign with the Metamask and you are done with the wallet connecting.

<figure><img src="/files/JT3e8O1FpIyqFtsmJRux" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

## Log in with MetaMask

After connecting with a wallet, you are able to directly login with your web3 wallet. Click the wallet icon to proceed.

<figure><img src="/files/KCrrLp4Kwly5ZnvtjHAU" alt=""><figcaption></figcaption></figure>


# API Key

Go to BlockPI Network dashboard to generate your exclusive RPC endpoints.

{% content-ref url="/pages/p5M3fpzA8LGMkrqkhyQm" %}
[Generate An API Key](/basic-tutorials/api-key/generate-an-api-key)
{% endcontent-ref %}

{% content-ref url="/pages/CertCL71svqvoBEWEwYn" %}
[Statistic Page](/basic-tutorials/api-key/statistic-page)
{% endcontent-ref %}

{% content-ref url="/pages/lpsRNrIYLeTvazklQIIc" %}
[Best Practices](/basic-tutorials/best-practices)
{% endcontent-ref %}


# Generate An API Key

{% hint style="info" %}
An API key is a simple encrypted string generated by users and verified by BlockPI Hub. It is a pass to use the BlockPI Network service. You will be asked to generate one if you are a new user.&#x20;
{% endhint %}

{% stepper %}
{% step %}
Click '+ Create an endpoint' on the dashboard page.

<figure><img src="/files/PO2jK1EafnhGmt0dle3G" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Choose the blockchain network and input a key name. Then click generate.&#x20;

<figure><img src="/files/ePpYggRskWfxX8XCYg8k" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
There will be a new endpoint in the Endpoint list. You can choose wss or https and use it at your will.&#x20;

<figure><img src="/files/9BR0LqJE2mpIfhDTkW8N" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

### Now you can add the RPC endpoint to your Web3 wallet.&#x20;

{% content-ref url="/pages/kVTowHeGTXU6EYwGe7Wn" %}
[Wallet Set Up](/basic-tutorials/wallet-set-up)
{% endcontent-ref %}

BlockPI Network RPC service is supporting more than 60 blockchain networks.&#x20;

{% content-ref url="/pages/yTzgeBfx6LS0iGegaFrN" %}
[Supported Networks and Advanced Features](/build/supported-networks-and-advanced-features)
{% endcontent-ref %}


# Statistic Page

After creating endpoints, you can check the statistics of the endpoints at Statistic tab. There are a total of three areas here.

* On the left, you can choose to filter the statistics by key name or network.
* The upper part on the right is the statistical chart.&#x20;
* The lower part on the right shows the five most commonly used methods.

<figure><img src="/files/J1z1NEcGjqPS3tu2sani" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Note that Success Rate does not equal to *1-InvalidRequests/Requests.* Because Invalid Requests calculate any failed requests while Success Rate calculate failed requests with EVM errors and system errors.&#x20;
{% endhint %}


# Customize Endpoint Advanced Features

BlockPI provides users with ample flexibility to customize advanced features of their Endpoints, including Archive mode, MEV protection, ERC-4337 Bundler service, and more.

To determine whether a specific network supports any features, refer to the "Advanced Feature" column in the API Key List. For more detailed supported advanced features, please go to [this page](/build/supported-networks-and-advanced-features).

<figure><img src="/files/MqkqH3rgSne9izgfBGbd" alt=""><figcaption></figcaption></figure>

## Endpoint Whitelist

Each endpoint can have an independent whitelist, allowing you to set up to 10 IP addresses and domains. Once the whitelist feature is enabled, any requests sent to this endpoint will be checked; if they are not on the whitelist, an error will be returned.

<figure><img src="/files/qEgW0Yl6Dg8XPKUMFRb7" alt=""><figcaption></figcaption></figure>

## Archive Mode

If you require access to data from earlier blocks, you can utilize the **Archive Mode**. This feature enables users to retrieve and access the complete historical data of the blockchain.

Enabling Archive mode will route all requests sent to this API key to the archive nodes of the blockchain network. It's important to note that there is a **30% increase in RU consumption**, since running an archive node requires significant storage capacity.&#x20;

In order to optimize efficiency, we recommend activating Archive mode only when necessary, or generate an individual API key to send the archive requests. Check [Best Practices](/basic-tutorials/best-practices) to more efficiently use the feature. Additionally, processing times may be longer due to the substantial amount of data involved. Check [here ](/build/supported-networks-and-advanced-features)for the full list of chains that the Archive mode is supported.

By default, the Archive mode is set to off. To enable it, simply click on the Archive mode symbol corresponding to the endpoint in the API Key list.

<figure><img src="/files/OU5CBq6Staa4vo83KNDF" alt=""><figcaption></figcaption></figure>

## ERC-4337 Bundler Service

BlockPI now provides Bundler Service for Account Abstraction users on **OP Mainnet**, **Base Mainnet,** **Polygon Mainnet and Taiko Hekla**. The BlockPI team integrated different open-source Bundler clients in the BlockPI network, providing users with the flexibility to choose their preferred client. The currently supported clients are from Etherspot, Candide, Stackup and Pimlico.

To customize it, go to the BlockPI [dashboard](https://dashboard.blockpi.io), click the endpoint which has the 'ERC-4337' mark. You will be directed to the subpage of the endpoint. (If you do not have any endpoint, please refer to the [Generate API Key](/basic-tutorials/api-key/generate-an-api-key) page to generate a private endpoint).&#x20;

<figure><img src="/files/dCY39mO5YTjj3oDlNrjH" alt=""><figcaption></figcaption></figure>

On the subpage of the endpoint, there is the 'AA Service' section, which presents you with five different options to choose.&#x20;

'Auto' is the best practice maintained by the BlockPI team. By selecting 'Auto,' BlockPI will automatically assign the most optimal bundler based on each connectivity condition.

<figure><img src="/files/HXAXSDYaXzPoteOBXekC" alt=""><figcaption></figcaption></figure>

The remaining four are Bundler clients by Stackup, Candide, Pimlico, and Etherspot. When you choose one of these clients, your requests will be processed exclusively by the selected Bundler client.&#x20;

Please check [this page](/build/api-reference/polygon) for Polygon Bundler RPC references.&#x20;

## MEV Protection & Global Cast

To provide users with a better experience in using BlockPI RPC, we have implemented MEV protection function on **BSC Mainnet, Ethereum Mainnet, Base Mainnet, and Polygon Mainnet**. Enabling MEV protection safeguards your transactions against **front-running** and **sandwich attacks**. And this feature does not increase RU consumption. We highly recommend enabling it. We employ the MEV-Boost protocol, which is currently the industry's most mature and stable MEV protection protocols. Additionally, we have implemented our own load balancing mechanism. If there is any congestion on the MEV network, we will immediately route user transaction requests to the public mempool. \
\
In contrast, Global Cast can send users' transactions to BlockPI's global network instead of just sending them to a specific node in the node pool, allowing their transactions to quickly fill the public mempool across the entire blockchain network. With this feature enabled, there are two improvements:

1. **Elimination of Performance Fluctuations**: It removes the performance and network fluctuations of individual RPC nodes, ensuring that users experience the fastest transaction sending from the node pool.
2. **Increased Transaction Success Rate**: It guarantees the success rate of user transactions, ensuring that transactions are effectively and quickly added to the mempool and reach the blockbuilder, especially during times of network congestion like airdrop claim events.

{% hint style="info" %}
This feature is mutually exclusive with the MEV functionality because MEV uses private mempool.
{% endhint %}

To use these functions, go to the Endpoint List of the user's dashboard, click the broadcast icon.

<figure><img src="/files/Zo4d7g7Con2jU42kd1nh" alt=""><figcaption></figcaption></figure>

You are able to switch it to Normal, MEV Protection or Global Cast. Only one of the three can be selected.<br>

<figure><img src="/files/WjY1p2QRDFd1gIUhd4wt" alt=""><figcaption></figcaption></figure>


# Wallet Set Up

You can add the RPC endpoint to your Web3 wallet. Here is the tutorial:

{% content-ref url="/pages/21AP4x917lCvl1bj49tJ" %}
[MetaMask Tutorial](/basic-tutorials/wallet-set-up/metamask-tutorial)
{% endcontent-ref %}

{% content-ref url="/pages/kCF1PQqsV25FPx9nr7ZK" %}
[Manually Add Network in MetaMask](/basic-tutorials/wallet-set-up/manually-add-network-in-metamask)
{% endcontent-ref %}

{% content-ref url="/pages/hKo9t7gtuxknr5ltuhdg" %}
[Manually Change LCD and RPC Endpoint in Keplr](/basic-tutorials/wallet-set-up/manually-change-lcd-and-rpc-endpoint-in-keplr)
{% endcontent-ref %}


# MetaMask Tutorial

BlockPI supports one-click to add the RPC endpoint to MetaMask.

{% stepper %}
{% step %}
Go to the dashboard page and hover on an API key, and click the MetaMask icon.&#x20;

<figure><img src="/files/y4JjLApSsRRkEobhuwp8" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Just approve it.

<figure><img src="/files/SUuLHxc889eJTQVzmqcw" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
Sometimes the endpoint URL won't be auto-added correctly. Users should change the network setting manually.
{% endhint %}

{% stepper %}
{% step %}
Click the upper-right icon.

<img src="/files/1lWoJvaB5TVykHVhR8b2" alt="" data-size="original">
{% endstep %}

{% step %}
Go to the Settings.

<figure><img src="/files/UvSq49hP5MgwJ0BXN0wE" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Go to the tab of Network.

<figure><img src="/files/MM20IcsM0ThAMaBINvmR" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Choose the network in which we want to change the RPC endpoint.

<figure><img src="/files/oNNUQDhk5W6O6kfiDpIk" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
If there is no such chain in the Network, we can [add a new one.](/basic-tutorials/wallet-set-up/manually-add-network-in-metamask)
{% endhint %}
{% endstep %}

{% step %}
Replace the URL with the one generated by your API key.

<figure><img src="/files/N5xD4LRbMPKRz8SYAOxN" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}


# Manually Add Network in MetaMask

Sometimes the MetaMask won't let you change the network settings like the Ethereum Mainnet. In this case you can add a new Ethereum Mainnet.

{% stepper %}
{% step %}
Follow the same steps to the Settings

<figure><img src="/files/UvSq49hP5MgwJ0BXN0wE" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Go to the tab of Network.

<figure><img src="/files/MM20IcsM0ThAMaBINvmR" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Click Add network.&#x20;

<figure><img src="/files/kmDB5Q9dZF2r7PuOYane" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Input the network info:

* Network Name: BlockPI Ethereum Mainnet
* Chain ID: 1
* New RPC URL: <https://ethereum.blockpi.network/v1/rpc/\\><your key>
* Currency symbol: ETH
* Block Explorer: [https://etherscan.io](https://etherscan.io/)

<figure><img src="/files/UCMkopr4cze7ufRLJrq1" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Metamask will automatically switch to this network afterward.&#x20;

BlockPI Ethereum Mainnet will be on the network list. When you switch to this network you are using the BlockPI RPC service.&#x20;
{% endstep %}
{% endstepper %}

### Network infos:

{% tabs %}
{% tab title="Abstract" %}
**Network Name**: BlockPI Abstract Mainnet

**Chain ID**: 2741

**New RPC URL**: <https://abstract.blockpi.network/v1/rpc/\\><your key>

**Currency symbol**: ETH

**Block Explorer**: <https://abscan.org/>
{% endtab %}

{% tab title="Arbitrum" %}

<table><thead><tr><th width="586.5">Specs</th><th>Network</th></tr></thead><tbody><tr><td><p><strong>Network Name</strong>: BlockPI Arbitrum One</p><p><strong>Chain ID</strong>: 42161</p><p><strong>New RPC URL</strong>: https://arbitrum.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: ETH</p><p><strong>Block Explorer</strong>: <a href="https://arbiscan.io/">https://arbiscan.io/</a></p></td><td>One</td></tr><tr><td><p><strong>Network Name</strong>: BlockPI Arbitrum Nova</p><p><strong>Chain ID</strong>: 42170</p><p><strong>New RPC URL</strong>: https://arbitrum-nova.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: ETH</p><p><strong>Block Explorer</strong>: <a href="https://nova.arbiscan.io/">https://nova.arbiscan.io/</a></p></td><td>Nova</td></tr><tr><td><p><strong>Network Name</strong>: BlockPI Arbitrum Sepolia</p><p><strong>Chain ID</strong>: 421614</p><p><strong>New RPC URL</strong>: https://arbitrum-sepolia.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: ETH</p><p><strong>Block Explorer</strong>: <a href="https://sepolia-explorer.arbitrum.io">https://sepolia-explorer.arbitrum.io</a></p></td><td>Sepolia</td></tr></tbody></table>
{% endtab %}

{% tab title="Arc" %}
**Network Name**: BlockPI Arc Testnet

**Chain ID**: 5042002

**New RPC URL**: <https://arc-testnet.blockpi.network/v1/rpc/\\><your key>

**Currency symbol:** USDC

**Block Explorer**: <https://www.arc.network/>
{% endtab %}

{% tab title="Avalanche" %}
**Network Name**: BlockPI Avalanche Mainnet

**Chain ID**: 43114

**New RPC URL**: <https://avalanche.blockpi.network/v1/rpc/\\><your key>

**Currency symbol:** AVAX

**Block Explorer**: [https://snowtrace.io](<https://snowtrace.io&#xD;&#xA;>)
{% endtab %}

{% tab title="Base" %}

<table><thead><tr><th width="569">Specs</th><th>Network</th></tr></thead><tbody><tr><td><p><strong>Network Name</strong>: BlockPI Base Mainnet</p><p><strong>Chain ID</strong>: 8453</p><p><strong>New RPC URL</strong>: https://base.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbo</strong>l: ETH</p><p><strong>Block Explorer</strong>: <a href="https://basescan.org/">https://basescan.org/</a> </p></td><td>Mainnet</td></tr><tr><td><p><strong>Network Name</strong>: BlockPI Base Sepolia</p><p><strong>Chain ID</strong>: 84532</p><p><strong>New RPC URL</strong>: https://base-sepolia.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbo</strong>l: ETH</p><p><strong>Block Explorer</strong>: <a href="https://base-sepolia.blockscout.com">https://base-sepolia.blockscout.com</a></p></td><td>Sepolia</td></tr></tbody></table>
{% endtab %}

{% tab title="Berachain" %}
**Network Name**: BlockPI Berachain Mainnet

**Chain ID**: 80094

**New RPC URL**: <https://berachain.blockpi.network/v1/rpc/\\><your key>

**Currency symbol**: BERA

**Block Explorer**: <https://berascan.com/>
{% endtab %}

{% tab title="Blast" %}

<table><thead><tr><th width="569">Specs</th><th>Network</th></tr></thead><tbody><tr><td><p><strong>Network Name</strong>: BlockPI Blast Mainnet</p><p><strong>Chain ID</strong>: 81457</p><p><strong>New RPC URL</strong>: https://blast.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: ETH</p><p><strong>Block Explorer</strong>: <a href="https://blastscan.io/">https://blastscan.io/</a></p></td><td>Mainnet</td></tr></tbody></table>
{% endtab %}

{% tab title="BSC" %}
**Network Name**: BlockPI BSC&#x20;

**Chain ID**: 56

**New RPC URL**: <https://bsc.blockpi.network/v1/rpc/\\><your key>

**Currency symbol**: BNB

**Block Explorer**: <https://bscscan.com/>
{% endtab %}

{% tab title="Celo" %}

<table><thead><tr><th width="570"></th><th></th></tr></thead><tbody><tr><td><p><strong>Network Name</strong>: BlockPI Celo Mainnet</p><p><strong>Chain ID</strong>: 42220</p><p><strong>New RPC URL</strong>: https://celo.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: CELO</p><p><strong>Block Explorer</strong>: <a href="https://celoscan.io
">https://celoscan.io</a></p></td><td>Mainent</td></tr><tr><td><p><strong>Network Name</strong>: BlockPI Celo Sepolia</p><p><strong>Chain ID</strong>: 11142220</p><p><strong>New RPC URL</strong>: https://celo-sepolia.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: CELO</p><p><strong>Block Explorer</strong>: <a href="https://sepolia.celoscan.io/">https://sepolia.celoscan.io/</a></p></td><td>Sepolia</td></tr></tbody></table>
{% endtab %}

{% tab title="Conflux" %}
**Network Name**: BlockPI Conflux eSpace&#x20;

**Chain ID**: 1030

**New RPC URL**: <https://conflux-espace.blockpi.network/v1/rpc/\\><your key>

**Currency symbol**: CFX

**Block Explorer**: evm.confluxscan.net
{% endtab %}

{% tab title="Cronos" %}
**Network Name**: BlockPI Cronos Mainnet

**Chain ID**: 25

**New RPC URL**: <https://cronos.blockpi.network/v1/rpc/\\><your key>

**Currency symbol**: CRO

**Block Explorer**: <https://cronoscan.com>
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Ethereum" %}

<table><thead><tr><th width="579">Specs</th><th width="97">Network</th></tr></thead><tbody><tr><td><p><strong>Network Name</strong>: BlockPI Ethereum Mainnet</p><p><strong>Chain ID</strong>: 1</p><p><strong>New RPC URL</strong>: https://ethereum.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbo</strong>l: ETH</p><p><strong>Block Explorer</strong>: <a href="https://etherscan.io/">https://etherscan.io/</a></p></td><td><p></p><p></p><p>Mainnet</p></td></tr><tr><td><p><strong>Network Name</strong>: BlockPI Ethereum Sepolia</p><p><strong>Chain ID</strong>: 11155111</p><p><strong>New RPC URL</strong>: https://ethereum-sepolia.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: SepoliaETH</p><p><strong>Block Explore</strong>r: <a href="https://sepolia.etherscan.io/">https://sepolia.etherscan.io/</a></p></td><td><p></p><p></p><p>Sepolia</p></td></tr><tr><td><p><strong>Network Name</strong>: BlockPI Ethereum Holesky</p><p><strong>Chain ID</strong>: 17000</p><p><strong>New RPC URL</strong>: https://ethereum-holesky.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: ETH</p><p><strong>Block Explore</strong>r: <a href="https://holesky.beaconcha.in">https://holesky.beaconcha.in</a></p></td><td>Holesky</td></tr><tr><td><p><strong>Network Name</strong>: BlockPI Ethereum Hoodi</p><p><strong>Chain ID</strong>: 560048</p><p><strong>New RPC URL</strong>: https://ethereum-hoodi.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: ETH</p><p><strong>Block Explore</strong>r: <a href="https://hoodi.beaconcha.in/">https://hoodi.beaconcha.in/</a></p></td><td>Hoodi</td></tr></tbody></table>
{% endtab %}

{% tab title="Etherlink" %}
**Network Name**: BlockPI Etherlink Mainnet

**Chain ID**: 42793

**New RPC URL**: <https://etherlink.blockpi.network/v1/rpc/\\><your key>

**Currency symbol**: XTZ

**Block Explorer**: <https://explorer.etherlink.com/>
{% endtab %}

{% tab title="Fantom" %}
**Network Name**: BlockPI Fantom Mainnet

**Chain ID**: 250

**New RPC URL**: <https://fantom.blockpi.network/v1/rpc/\\><your key>

**Currency symbol**: FTM

**Block Explorer**: [https://ftmscan.com](<https://ftmscan.com&#xD;&#xA;>)
{% endtab %}

{% tab title="Flow EVM" %}
**Network Name**: BlockPI Flow EVM Mainnet

**Chain ID**: 747

**New RPC URL**: <https://flow-evm.blockpi.network/v1/rpc/\\><your key>

**Currency symbol**: FLOW

**Block Explorer**: <https://evm.flowscan.io>
{% endtab %}

{% tab title="Gnosis" %}
**Network Name**: BlockPI Gnosis Mainnet

**Chain ID**: 100

**New RPC URL**: <https://gnosis.blockpi.network/v1/rpc/\\><your key>

**Currency symbol**: xDAI

**Block Explorer**: <https://gnosisscan.io/>
{% endtab %}

{% tab title="Hemi" %}
**Network Name**: BlockPI Hemi Mainnet

**Chain ID**: 43111

**New RPC URL**: https\:/hemi.blockpi.network/v1/rpc/\<your key>

**Currency symbol**: ETH

**Block Explorer**: <https://explorer.hemi.xyz/>
{% endtab %}

{% tab title="HyperEVM" %}
**Network Name**: BlockPI Hyperliquid EVM Mainnet

**Chain ID**: 999

**New RPC URL**: <https://hyperliquid.blockpi.network/v1/rpc/\\><your key>

**Currency symbol**: HYPE

**Block Explorer**: <https://purrsec.com/>
{% endtab %}

{% tab title="Kaia" %}

<table><thead><tr><th width="559">Specs</th><th>Network</th></tr></thead><tbody><tr><td><p><strong>Network Name</strong>: BlockPI Kaia Mainnet</p><p><strong>Chain ID</strong>: 8217</p><p><strong>New RPC URL</strong>: https://kaia.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbo</strong>l: KAIA</p><p><strong>Block Explorer</strong>: <a href="https://kaiascope.com">https://kaiascope.com</a></p></td><td><p></p><p></p><p>Mainnet</p></td></tr><tr><td><p><strong>Network Name</strong>: BlockPI Kaia Testnet-Kairos</p><p><strong>Chain ID</strong>: 1001</p><p><strong>New RPC URL</strong>: https://kaia-kairos.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbo</strong>l: KAIA</p><p><strong>Block Explorer</strong>: <a href="https://kairos.kaiascope.com/">https://kairos.kaiascope.com/</a></p></td><td><p></p><p></p><p>Kairos</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Linea" %}

<table><thead><tr><th width="559">Specs</th><th>Network</th></tr></thead><tbody><tr><td><p><strong>Network Name</strong>: BlockPI Linea Mainnet</p><p><strong>Chain ID</strong>: 59144</p><p><strong>New RPC URL</strong>: https://linea.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: ETH</p><p><strong>Block Explorer</strong>: <a href="https://lineascan.build">https://lineascan.build</a></p></td><td><p></p><p></p><p>Mainnet</p></td></tr><tr><td><p><strong>Network Name</strong>: BlockPI Linea Sepolia</p><p><strong>Chain ID</strong>: 59141</p><p><strong>New RPC URL</strong>: https://linea-sepolia.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: ETH</p><p><strong>Block Explorer</strong>: <a href="https://goerli.lineascan.build">https://sepolia.lineascan.build</a></p></td><td><p></p><p>Sepolia</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Mantle" %}
**Network Name**: BlockPI Mantle Mainnet

**Chain ID**: 5000

**New RPC URL**: <https://mantle.blockpi.network/v1/rpc/\\><your key>

**Currency symbol**: MNT

**Block Explorer**: <https://explorer.mantle.xyz>
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Meter" %}
**Network Name**: BlockPI Meter Mainnet

**Chain ID**: 82

**New RPC URL**: <https://meter.blockpi.network/v1/rpc/\\><your key>

**Currency symbol**: MTR

**Block Explorer**: <https://scan.meter.io/>
{% endtab %}

{% tab title="Monad" %}

<table><thead><tr><th width="556"></th><th></th></tr></thead><tbody><tr><td><p><strong>Network Name</strong>: BlockPI Monad Mainnet</p><p><strong>Chain ID</strong>: 143</p><p><strong>New RPC URL</strong>: https://monad.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: MON</p><p><strong>Block Explorer</strong>: <a href="http://monadexplorer.com/">http://monadexplorer.com/</a></p></td><td>Mainnet</td></tr><tr><td><p><strong>Network Name</strong>: BlockPI Monad testnet</p><p><strong>Chain ID</strong>: 10143</p><p><strong>New RPC URL</strong>: https://monad-testnet.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: MON</p><p><strong>Block Explorer</strong>: <a href="https://testnet.monadexplorer.com">https://testnet.monadexplorer.com</a></p></td><td>Testnet</td></tr></tbody></table>

**Network Name**: BlockPI Monad testnet

**Chain ID**: 10143

**New RPC URL**: <https://monad-testnet.blockpi.network/v1/rpc/\\><your key>

**Currency symbol**: MON

**Block Explorer**: <https://testnet.monadexplorer.com>
{% endtab %}

{% tab title="Merlin" %}

<table><thead><tr><th width="427">Specs</th><th>Network</th></tr></thead><tbody><tr><td><p><strong>Network Name</strong>: BlockPI Merlin Mainnet</p><p><strong>Chain ID</strong>: 4200</p><p><strong>New RPC URL</strong>: https://merlin.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: BTC</p><p><strong>Block Explorer</strong>: <a href="https://scan.merlinchain.io
">https://scan.merlinchain.io</a></p></td><td>Mainnet</td></tr><tr><td><p><strong>Network Name</strong>: BlockPI Merlin Testnet</p><p><strong>Chain ID</strong>: 686868</p><p><strong>New RPC URL</strong>: https://merlin-testnet.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: BTC</p><p><strong>Block Explorer</strong>: <a href="https://testnet-scan.merlinchain.io">https://testnet-scan.merlinchain.io</a><a href="https://scan.merlinchain.io
"></a></p></td><td>Testnet</td></tr></tbody></table>
{% endtab %}

{% tab title="Metis" %}
**Network Name**: BlockPI Metis Andromeda Mainnet

**Chain ID**: 1088

**New RPC URL**: <https://metis.blockpi.network/v1/rpc/\\><your key>

**Currency symbol**: METIS

**Block Explorer**: <https://andromeda-explorer.metis.io>
{% endtab %}

{% tab title="OP" %}

<table><thead><tr><th width="559">Specs</th><th>Network</th></tr></thead><tbody><tr><td><p><strong>Network Name</strong>: BlockPI OP Mainnet</p><p><strong>Chain ID</strong>: 10</p><p><strong>New RPC URL</strong>: https://optimism.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: ETH</p><p><strong>Block Explorer</strong>: <a href="https://optimistic.etherscan.io/">https://optimistic.etherscan.io/</a></p></td><td>Mainnet</td></tr><tr><td><p><strong>Network Name</strong>: BlockPI OP Sepolia</p><p><strong>Chain ID</strong>: 11155420</p><p><strong>New RPC URL</strong>: https://optimism-sepolia.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: ETH</p><p><strong>Block Explorer</strong>: <a href="https://optimism-sepolia.blockscout.com/">https://optimism-sepolia.blockscout.com/</a></p></td><td>Sepolia</td></tr></tbody></table>
{% endtab %}

{% tab title="Polygon" %}

<table><thead><tr><th width="577">Specs</th><th>Network</th></tr></thead><tbody><tr><td><p><strong>Network Name</strong>: BlockPI Polygon Mainnet</p><p><strong>Chain ID</strong>: 137</p><p><strong>New RPC URL</strong>: https://polygon.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbo</strong>l: MATIC</p><p><strong>Block Explorer</strong>: <a href="https://polygonscan.com/">https://polygonscan.com/</a></p></td><td><p></p><p></p><p>Mainnet</p></td></tr><tr><td><p><strong>Network Name</strong>: BlockPI Polygon Amoy</p><p><strong>Chain ID</strong>: 80002</p><p><strong>New RPC URL</strong>: https://polygon-amoy.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbo</strong>l: MATIC</p><p><strong>Block Explorer</strong>: <a href="https://www.oklink.com/amoy">https://www.oklink.com/amoy</a></p></td><td>Amoy</td></tr><tr><td><p><strong>Network Name</strong>: BlockPI Polygon zkEVM Mainnet</p><p><strong>Chain ID</strong>: 1101</p><p><strong>New RPC URL</strong>: https://polygon-zkevm.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbo</strong>l: ETH</p><p><strong>Block Explorer</strong>: <a href="https://zkevm.polygonscan.com/">https://zkevm.polygonscan.com/</a></p></td><td>zkEVM Mainnet</td></tr><tr><td><p><strong>Network Name</strong>: BlockPI Polygon zkEVM Cardona</p><p><strong>Chain ID</strong>: 2442</p><p><strong>New RPC URL</strong>: https://polygon-zkevm-cardona.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbo</strong>l: ETH</p><p><strong>Block Explorer</strong>: <a href="https://cardona-zkevm.polygonscan.com">https://cardona-zkevm.polygonscan.com</a></p></td><td>zkEVM<br>Cardona</td></tr></tbody></table>
{% endtab %}

{% tab title="Untitled" %}
**Network Name**: BlockPI Plasma Mainnnet

**Chain ID**: 9745

**New RPC URL**: <https://plasma.blockpi.network/v1/rpc/\\><your key>

**Currency symbol**: XPL

**Block Explorer**: <https://www.plasma.to>
{% endtab %}

{% tab title="Sei" %}

<table><thead><tr><th width="531">Specs</th><th>Network</th></tr></thead><tbody><tr><td><p><strong>Network Name</strong>: BlockPI Sei Network</p><p><strong>Chain ID</strong>: 1329</p><p><strong>New RPC URL</strong>: https://sei-evm.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbo</strong>l: SEI</p><p><strong>Block Explorer</strong>: <a href="https://seitrace.com">https://seitrace.com</a></p></td><td>Mainnet</td></tr><tr><td><p><strong>Network Name</strong>: BlockPI Sei Testnet</p><p><strong>Chain ID</strong>: 1328</p><p><strong>New RPC URL</strong>: https://sei-testnet-evm.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbo</strong>l: SEI</p><p><strong>Block Explorer</strong>: <a href="https://testnet.seistream.app/">https://testnet.seistream.app/</a></p></td><td>Testnet</td></tr></tbody></table>

{% endtab %}

{% tab title="Scroll" %}

<table><thead><tr><th width="476.5">Specs</th><th>Networks</th></tr></thead><tbody><tr><td><p><strong>Network Name</strong>: BlockPI Scroll Mainnet</p><p><strong>Chain ID</strong>: 534352</p><p><strong>New RPC URL</strong>: https://scroll.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: ETH</p><p><strong>Block Explorer</strong>: <a href="https://scrollscan.com/">https://scrollscan.com/</a></p></td><td>Scroll Mainnet</td></tr><tr><td><p><strong>Network Name</strong>: BlockPI Scroll Sepolia</p><p><strong>Chain ID</strong>: 534351</p><p><strong>New RPC URL</strong>: https://scroll-sepolia.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: ETH</p><p><strong>Block Explorer</strong>: <a href="https://sepolia-blockscout.scroll.io/">https://sepolia-blockscout.scroll.io/</a></p></td><td>Scroll Sepolia</td></tr></tbody></table>
{% endtab %}

{% tab title="Starknet" %}
**Network Name**: BlockPI Starknet Mainnet

**Chain ID**: 23448594291968334

**New RPC URL**: <https://starknet.blockpi.network/v1/rpc/\\><your key>

**Currency symbol**: ETH

**Block Explorer**: <https://starkscan.co>
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Story" %}
**Network Name**: BlockPI Story Mainnet

**Chain ID**: 1514

**New RPC URL**: <https://story.blockpi.network/v1/rpc/\\><your key>

**Currency symbol**: IP

**Block Explorer**: <https://mainnet.storyscan.xyz>
{% endtab %}

{% tab title="Stable" %}
**Network Name**: BlockPI Stable Mainnnet

**Chain ID**: 988

**New RPC URL**: <https://stable.blockpi.network/v1/rpc/\\><your key>

**Currency symbol**: gUSDT

**Block Explorer**: <https://stablescan.xyz>
{% endtab %}

{% tab title="SUI" %}
**Network Name**: BlockPI SUI Mainnet

**Chain ID**: 897796746

**New RPC URL**: <https://sui.blockpi.network/v1/rpc/\\><your key>

**Currency symbol**: SUI

**Block Explorer**: <https://suiscan.xyz/>
{% endtab %}

{% tab title="t3rn" %}
**Network Name**: BlockPI t3rn Mainnet

**Chain ID**: 819

**New RPC URL**: <https://t3rn.blockpi.network/v1/rpc/\\><your key>

**Currency symbol**: TRN

**Block Explorer**:&#x20;
{% endtab %}

{% tab title="Taiko" %}

<table><thead><tr><th width="545">Specs</th><th>Network</th></tr></thead><tbody><tr><td><p><strong>Network Name</strong>: BlockPI Taiko mainnet</p><p><strong>Chain ID</strong>: 167000</p><p><strong>New RPC URL</strong>: https://taiko.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbo</strong>l: ETH</p><p><strong>Block Explorer</strong>: <a href="https://taikoscan.io/">https://taikoscan.io/</a></p></td><td>Mainnet</td></tr></tbody></table>
{% endtab %}

{% tab title="Unichain" %}

<table><thead><tr><th width="545">Specs</th><th>Network</th></tr></thead><tbody><tr><td><p><strong>Network Name</strong>: BlockPI Unichain Mainnet</p><p><strong>Chain ID</strong>: 130</p><p><strong>New RPC URL</strong>: https://unichain.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: ETH</p><p><strong>Block Explorer</strong>: <a href="https://uniscan.xyz">https://uniscan.xyz</a></p></td><td>Mainnet</td></tr><tr><td><p><strong>Network Name</strong>: BlockPI Unichain Sepolia</p><p><strong>Chain ID</strong>: 1301</p><p><strong>New RPC URL</strong>: https://unichain-sepolia.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: ETH</p><p><strong>Block Explorer</strong>: <a href="https://sepolia.uniscan.xyz/">https://sepolia.uniscan.xyz/</a></p></td><td>Sepolia</td></tr></tbody></table>
{% endtab %}

{% tab title="Viction" %}
**Network Name**: BlockPI Viction Mainnet

**Chain ID**: 88

**New RPC URL**: <https://viction.blockpi.network/v1/rpc/\\><your key>

**Currency symbo**l: VIC

**Block Explorer**: [https://tomoscan.io/](<https://tomoscan.io/&#xD;&#xA;>)
{% endtab %}

{% tab title="X Layer" %}
**Network Name**: BlockPI X Layer mainnet

**Chain ID**: 196

**New RPC URL**: <https://xlayer.blockpi.network/v1/rpc/\\><your key>

**Currency symbo**l: OKB

**Block Explorer**: <https://www.okx.com/web3/explorer/xlayer>
{% endtab %}

{% tab title="Zetachain" %}

<table><thead><tr><th width="538">Specs</th><th>Networks</th></tr></thead><tbody><tr><td><p><strong>Network Name</strong>: BlockPI Zetachain mainnet</p><p><strong>Chain ID</strong>: 7000</p><p><strong>New RPC URL</strong>: https://zetachain-evm.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: ZETA</p><p><strong>Block Explorer</strong>: <a href="https://explorer.zetachain.com/">https://explorer.zetachain.com/</a></p></td><td>Mainnet</td></tr><tr><td><p><strong>Network Name</strong>: BlockPI Zetachain Testnet</p><p><strong>Chain ID</strong>: 7001</p><p><strong>New RPC URL</strong>: https://zetachain-athens-evm.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbol</strong>: aZETA</p><p><strong>Block Explorer</strong>: <a href="https://explorer.zetachain.com/">https://explorer.zetachain.com/</a></p></td><td>Athens</td></tr><tr><td></td><td></td></tr></tbody></table>
{% endtab %}

{% tab title="zkSync Era" %}

<table><thead><tr><th width="536">Specs</th><th>Network</th></tr></thead><tbody><tr><td><p><strong>Network Name</strong>: BlockPI zkSync Era Mainnet</p><p><strong>Chain ID</strong>: 324</p><p><strong>New RPC URL</strong>: https://zksync-era.blockpi.network/v1/rpc/&#x3C;your key></p><p><strong>Currency symbo</strong>l: ETH</p><p><strong>Block Explorer</strong>: <a href="https://goerli.explorer.zksync.io">https://goerli.explorer.zksync.io</a></p></td><td>Mainnet</td></tr><tr><td><strong>Network Name</strong>: BlockPI zkSync Era Sepolia<br><strong>Chain ID</strong>: 300<br><strong>New RPC URL</strong>: https://zksync-era-sepolia.blockpi.network/v1/rpc/&#x3C;your key><br><strong>Currency symbo</strong>l: ETH<br><strong>Block Explorer</strong>: <a href="https://sepolia.explorer.zksync.io/">https://sepolia.explorer.zksync.io/</a></td><td>Sepolia</td></tr></tbody></table>
{% endtab %}
{% endtabs %}


# Manually Change LCD and RPC Endpoint in Keplr

Below are the format of BlockPI Network Cosmos LCD and RPC endpoints. Make sure you create your own endpoints at <https://dashboard.blockpi.io/>

```
https://cosmos.blockpi.network/lcd/v1/{api_key}
https://cosmos.blockpi.network/rpc/v1/{api_key}
```

***

{% stepper %}
{% step %}
Click the top left bottom and go to Settings.

![](/files/r3DuhYaxkQ0Z9JeQXFc0)![](/files/Eyl7YLuhG3Eba5wnWOXe)

{% endstep %}

{% step %}
Go to the tab of Endpoints. And the endpoints are default.

![](/files/aYf0jWQBGgqYDlCj4YoO)![](/files/zrO7j0gOWu4dmffGr4B2)

{% endstep %}

{% step %}
Change both endpoints with your BlockPI Network Cosmos endpoints, and confirm.

<figure><img src="/files/HRoTbnWZPLmglK9UHAS8" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}


# Account Management

The page provides some useful information about account management.

{% content-ref url="/pages/1dDJVfp5NcX7hGtEA1xM" %}
[Deposit](/basic-tutorials/account-management/deposit)
{% endcontent-ref %}

{% content-ref url="/pages/xAcomiVViTYsW4U9lfJI" %}
[Purchase Packages](/basic-tutorials/account-management/purchase-packages)
{% endcontent-ref %}

{% content-ref url="/pages/I3WXIo5esw4iQWca9UA2" %}
[Set Auto-Renew](/basic-tutorials/account-management/set-auto-scaling)
{% endcontent-ref %}

{% content-ref url="/pages/bD9otkQrGprtxF8J6ADp" %}
[Email notifications setting](/basic-tutorials/account-management/email-notifications-setting)
{% endcontent-ref %}


# Deposit

BlockPI supports crypto payment and card payment.

{% hint style="warning" %}
Note that Funds are **NOT** refundable and users' deposit can only be credited to their own account. Please do not over-deposit.
{% endhint %}

***

## Go to the Billings page. Click 'deposit'.

<figure><img src="/files/U5oSTZnCSHJ7OrZdwuFN" alt=""><figcaption></figcaption></figure>

## Deposit Stablecoin

{% hint style="info" %}
BlockPI now accepts USDT/USDC on Ethereum, BNB Smart Chain, Polygon and Avalanche C-Chain.&#x20;
{% endhint %}

Choose "Crypto" tab, select the token and the blockchain. The deposit address is shown and you can deposit funds now. Once the funds are received, there will be a notification.

<figure><img src="/files/9Pu8utQKD3nJS7N7gvje" alt=""><figcaption></figcaption></figure>

## Deposit with credit card

{% hint style="info" %}
Note that the minimum amount is $49.
{% endhint %}

{% stepper %}
{% step %}
Choose "Card" tab, input the amount you'd like to deposit.

<figure><img src="/files/PmyaaRbrnewdNW1ZG8ks" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Click the "Go to payment" and you will be directed to the page to input card information.

<figure><img src="/files/ycnvxPFEdxjclGoYjpOI" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}


# Purchase Packages

{% hint style="info" %}
There are three packages:

* Free: subscription and delivered periodically.
* Elementary: purchasable.
* Premium: purchasable.
  {% endhint %}

#### Follow these steps to purchase a Elementary or Premium package.&#x20;

{% stepper %}
{% step %}
Go to the Endpoint page or Billings page. Click 'Buy Package'.

<figure><img src="/files/DZpMWgILUy53r4ttBLC8" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/yDD2sBcq063iACyTP73U" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Choose a package you want to purchase. And click 'purchase' to finish.

<figure><img src="/files/sfslC0FqxIYgOCCGKyQZ" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}


# Set Auto-Renew

The Auto-Renew setting is the following automatic purchase strategy when the current RU packages are fully consumed or expired. Go to Pricing & Rate Limit for more information.&#x20;

{% content-ref url="/pages/r8sFTU7ZIUDdJWSq8X2D" %}
[Pricing & Rate Limit](/pricing/pricing-and-rate-limit)
{% endcontent-ref %}

{% stepper %}
{% step %}
To set the strategy, go to the Endpoint page or Billings page. Click 'Auto-Renew'.

<figure><img src="/files/p1L5eW75zTMmoZ9Lvkg5" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/oPlMBUtzwVT7CONVM1uE" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Choose None,  the Pay As You Go, or an RU package and Confirm.

<figure><img src="/files/6Yrz6utXO7xzrNOinXKA" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}


# Payment Method

Currently, users are able to use either wallet balance or directly with a credit card for payment. Whether users are purchasing the package directly or setting up Auto-Renew, both options are available for payment.

<figure><img src="/files/nAuDbSUE26ruFMbo1Yke" alt=""><figcaption></figcaption></figure>

If choosing to pay with a credit card, users will be directed to a secondary page same to the "[Deposit with credit card](/basic-tutorials/account-management/deposit)" page.


# Email notifications setting

We support users in customizing some email notifications, including for Deposit, purchasing RU packages, insufficient RU, insufficient wallet balance, and their triggering thresholds.

## Personal email notifications

{% stepper %}
{% step %}
Go to the Personal and click Setting tab.

<figure><img src="/files/bIAzTDJgJz74hUNdxUBj" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Scroll down on the main page and you will find related settings.

<figure><img src="/files/wjbrVDqMaVwqHjkw8UpV" alt=""><figcaption></figcaption></figure>

{% endstep %}
{% endstepper %}

## Team email notifications

For a team account, the notification is more powerful. The owner of the team can set the emails of the notification, with a maximum of three recipients.

You are free to choose team members or external email addresses as you see fit.

<figure><img src="/files/CwbwUi47MfBOc3qrmQXq" alt=""><figcaption></figcaption></figure>


# Team Management

BlockPI offers powerful Team features, allowing any user to create a Team to share APIs and configure member permissions.

{% content-ref url="/pages/hziTGx4fsqjWAUSyamrh" %}
[Build your own Team](/basic-tutorials/team-management/build-your-own-team)
{% endcontent-ref %}


# Build your own Team

## Create a team

{% hint style="info" %}
Once a Team is established, your account will automatically become a Team account, and you can send invitations to UID or email addresses to become your team members. Your team members can view and use all of your endpoints.
{% endhint %}

<figure><img src="/files/P5vF1mUfEeHyqI76XFj5" alt=""><figcaption></figcaption></figure>

## Add member

Input BlockPI UID or an email address to invite your team member to join the team. <br>

<figure><img src="/files/wPUhhJ669AjKWPHddSGt" alt=""><figcaption></figcaption></figure>

Once an invitation is sent, there will be a pending member on the list. After the member accept the invitation in his email, the status will  be updated.&#x20;

<figure><img src="/files/tr7fkupJkONymzld95bW" alt=""><figcaption></figcaption></figure>

## Manage team

On the left, there will be a tab called 'Manage team.'

* &#x20;'Member info' allows you to view member information.
* &#x20;'Operation log' lets you see all members' operation records.
* The '+Add member' button adds team members.

<figure><img src="/files/J5XjG7bjuxIO7rIZwoVg" alt=""><figcaption></figcaption></figure>

At this point, in the Endpoint tab, you are viewing the team's endpoint list.&#x20;

Just like the team owner, you can see the newly added 'Manage team' tab on the left and use other team features. The only difference is that only the team owner can add or remove members, while team members can choose to leave the team.

<figure><img src="/files/4WvJfqdRLi7YSyAdAObR" alt=""><figcaption></figcaption></figure>

## Select login method

If you accept an team invitation, there will be multiple options at login. You can choose to log in to your personal account or the team.

<figure><img src="/files/kIcLr9cInBzeNbdW7jx1" alt=""><figcaption></figcaption></figure>


# Best Practices

## Success Rate Definition

We present users with a more stringent success rate measurement. Any request that does not receive the expected response is considered unsuccessful in our statistics. This includes, but is not limited to:

1. Any request that triggers BlockPI RPC restrictions, including rate limits, block range limitations, data size limitations, etc.
2. Any error directly returned from the node, such as non-existent methods, incorrect parameters, missing parameters, etc.
3. Others, such as timeout error.

{% hint style="info" %}
We recommend users to output **error logs** so that we can accurately analyze the specific reasons for the unsuccessful requests.
{% endhint %}

## Using Archive Mode

BlockPI Network RPC service allow users to set their endpoint to be with different features, such as Archive mode.&#x20;

When the archive mode is on for a specific endpoint, the requests sent to this endpoint will be routed to archive nodes. And it typically takes a longer time to process due to the huge amount of data.&#x20;

{% hint style="info" %}
In order to more accurately bill users for their requests, we will charge an additional 30% fee for those utilizing archive nodes while keeping the cost for regular requests low.
{% endhint %}

{% hint style="info" %}
As a user, if you wish for your RUs to be utilized efficiently, you may choose to send only those requests which require archive data for processing to the designated endpoint.
{% endhint %}

In this case, you would need to generate two endpoints:

1. one for handling regular requests.
2. another with Archive mode enabled exclusively for processing requests that require archive data. And send requests based on conditions.&#x20;

Here is an example:

{% code overflow="wrap" %}

```python
# Send requests for data that predates 128 blocks to the archive nodes
def request():
    # generate two keys, one is with archive mode enabled
    fullNodeUrl = "https://ethereum.blockpi.network/v1/rpc/<key-normal>"
    archiveNodeUrl = "https://ethereum.blockpi.network/v1/rpc/<key-with-archive-mode-on>"
    
    #target block number
    blockNum = "0x10336aa" 
    
    # get the latest block number
    payload = {"jsonrpc": "2.0", "method": "eth_blockNumber", "params": [], "id": 83} 
    headers = {"Content-Type": "application/json"}
    latestNum = requests.post(fullNodeUrl,headers=headers, data=json.dumps(payload)).json()['result']
    
    # Send the request to the desired endpoint.
    traceBlockPayload = {"jsonrpc":"2.0","method":"trace_block","params":[blockNum],"id":1}
    if int(latestNum,16) - int(blockNum,16) >= 128 :
        resp = requests.post(archiveNodeUrl,headers=headers, data=json.dumps(traceBlockPayload))
        print(resp.text)
    else:
        resp = requests.post(fullNodeUrl,headers=headers, data=json.dumps(traceBlockPayload))
        print(resp.text)
```

{% endcode %}

## Segment Block Range in eth\_getLogs

Here is another one with using the eth\_getLogs. As the method consumes decent sever resource.&#x20;

Our limit on eth\_getLogs block range are as follows: if no parameters are included, a single eth\_getLogs request is limited to 1024 blocks. If the request includes either the topic parameter or the address parameter, the limit is set to 5000.

&#x20;If users need to query a block range more than this limit, you can segment it to multiple requests with certain blocks each.

{% code overflow="wrap" %}

```python
import json
import requests

fullNodeUrl = "https://ethereum.blockpi.network/v1/rpc/<your-api-key>"
headers = {"Content-Type": "application/json"}
interval = 1000

def get_logs(from_block_number, to_block_number):
    logs = []
    while from_block_number <= to_block_number:
        end_block_number = min(to_block_number, from_block_number + interval)
        payload = {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "eth_getLogs",
            "params": [{
                "fromBlock": hex(from_block_number),
                "toBlock": hex(end_block_number)
            }]
        }
        response = requests.post(fullNodeUrl, headers=headers, data=json.dumps(payload))
        if response.status_code != 200:
            raise Exception("Failed to retrieve logs for block range:", from_block_number, end_block_number)
        result = response.json()["result"]
        logs.extend(result)
        from_block_number = end_block_number + 1
        print(response.json())
    return logs

def get_all_logs(from_block_number, to_block_number):
    logs = []
    current_block_number = from_block_number
    while current_block_number <= to_block_number:
        end_block_number = current_block_number + interval
        logs_in_range = get_logs(current_block_number, end_block_number)
        logs.extend(logs_in_range)
        print("Processed block range:", current_block_number, "-", end_block_number, ", total logs:", len(logs_in_range))
        current_block_number = end_block_number + 1
    return logs

from_block_number = 10962850
to_block_number = 10962950

logs = get_all_logs(from_block_number, to_block_number)
print("Total logs:", len(logs))
```

{% endcode %}

## Websocket Reconnection

To safeguard the system, each RPC provider sets a periodic disconnection (timeout) for WebSocket connections. In the case of BlockPI, the timeout is set to 30 minutes. Therefore, during development, users need to implement a mechanism to detect and handle reconnection when the connection is dropped. Here is a Python example:

{% code overflow="wrap" %}

```python
import asyncio
import json
import websockets
​
async def connect(url):
    while True:
        try:
            async with websockets.connect(url) as ws:
                print("websocket connection is established")
                request = {
                    "jsonrpc": "2.0",
                    "id": 2,
                    "method": "eth_subscribe",
                    "params": ["newHeads"]
                }
                await ws.send(json.dumps(request))
​
                while True:
                    message = await ws.recv()
                    print("message received:", message)
​
        except websockets.exceptions.ConnectionClosedError as e:
            if str(e) == 'no close frame received or sent':
                print("keepalive triggered，reconnecting...")
                await asyncio.sleep(5)
                continue
            else:
                print("websocket alive")
                return
        except Exception as e:
            print("Unknown error occurred:", e)
            await asyncio.sleep(5)
            continue
​
if __name__ == "__main__":
    url = "wss://polygon-mumbai.blockpi.network/v1/ws/d69ca19cf64365849ca8152b7f32f319bad9fc22"
    asyncio.run(connect(url))
```

{% endcode %}

{% hint style="warning" %}
Please note that this is just a sample code, and you may need to adapt it to your specific development environment and requirements.
{% endhint %}

## HTTP Batch Call

**What is a Batch Call?**\
A batch call is a JSON-RPC method that bundles multiple requests (like `eth_call` or `eth_getBalance`) into a single HTTP request to an endpoint. This significantly reduces network overhead and latency compared to sending requests individually. Noted that the limit of the batch number is 1000. Any request with more batch calls will be rejected.

**Key Considerations:**

1. **Order:** Responses are returned in the exact same order as the requests.
2. **Independent:** Requests execute separately; one failing doesn't stop the others. You must check each response for errors.
3. **Limits:** Nodes enforce limits on batch size and computational complexity. Exceeding these will cause errors.

## Restrictions for Different Endpoint Types

In order to better serve different types of users and ensure the healthy and efficient operation of BlockPI RPC service network, we have implemented different restrictions on various types of endpoints. If a user triggers any of these restrictions, the system will return an error. The following table outlines these limitations:

<table><thead><tr><th>Endpoint Type</th><th width="388.3333333333333">Restrictions </th><th>Error Code</th></tr></thead><tbody><tr><td>Public</td><td>Not support WS/WSS</td><td>N/A</td></tr><tr><td>Public</td><td>Not support Debug_* and Trace_*</td><td>-32000</td></tr><tr><td>Public</td><td>Maximum request rate: 10 qps</td><td>429</td></tr><tr><td>Public</td><td>Maximum response body size: 3 MB</td><td>-32000</td></tr><tr><td>Public</td><td>Maximum block range: 1024</td><td>-32602</td></tr><tr><td>Public</td><td>Maximum batch size: 10</td><td>-32000</td></tr><tr><td>Private</td><td>Maximum block range: 5000 with address input</td><td>-32602</td></tr><tr><td>Private</td><td>Only support “callTracer” and ”prestateTracer” for debug method</td><td>-32000</td></tr><tr><td>Private HTTPS</td><td>Maximum batch size: 1000</td><td>-32000</td></tr><tr><td>Private WSS</td><td>Do not support batch call</td><td>-32000</td></tr><tr><td>All HTTPS</td><td>Do not support subscribe and filter rpc method</td><td>-32000</td></tr></tbody></table>

## Using gRPC in SUI SDK

The following is a sample code demonstrating how to use a **gRPC Endpoint** with the SUI SDK. Please note that we **do not support gRPC-Web**, only **native gRPC**.

```
import * as grpc from '@grpc/grpc-js';
import { SuiGrpcClient } from '@mysten/sui/grpc';
//import { GrpcWebFetchTransport } from '@protobuf-ts/grpcweb-transport';
import { GrpcTransport } from '@protobuf-ts/grpc-transport';

const token = '...';

const metadata = new grpc.Metadata();
metadata.add('x-token', token);

const metadataGenerator = (options, callback) => {
  callback(null, metadata);
};

const callCredentials = grpc.credentials.createFromMetadataGenerator(metadataGenerator);


var creds = grpc.credentials.combineChannelCredentials(
          grpc.credentials.createSsl(),
          callCredentials,
);

const transport = new GrpcTransport({
        host: "sui.blockpi.network:443",
        channelCredentials: creds,
});



const grpcClient = new SuiGrpcClient({
        network: 'mainnet',
        transport,
});

// Get current epoch information
const { response: epochInfo } = await grpcClient.ledgerService.getEpoch({});
```


# Supported Networks and Advanced Features

This page shows the supported features of each network respectively.

BlockPI Network is now fully available on more than **70 chains** including Mainnet and Testnet.&#x20;

BlockPI provides users with ample flexibility to customize advanced features of their Endpoints, including Archive mode, MEV protection, ERC-4337 Bundler service, and more.\
\
The last column indicates that the RPC service of this network can only be used if the user account contains the RU package or a more advanced RU package.

{% hint style="info" %}
Please note that since the SUI archival service(only gRPC is supported) is separate from the full node(support both JSON-RPC and gRPC), users need to create a seperate endpoint when using the archival service, with the chain name set as SUI Mainnet Archive.
{% endhint %}

<table data-full-width="true"><thead><tr><th width="134">Network</th><th width="142" data-type="checkbox">Archive Mode</th><th width="94" data-type="checkbox">trace_*</th><th width="103" data-type="checkbox">debug_*</th><th width="136" data-type="checkbox">ERC-4337 Bundler Service</th><th width="137" data-type="checkbox">MEV Protection</th><th width="119" data-type="checkbox">Global Cast</th><th>Paywall<select><option value="eXuuVGzBUqNE" label="Free" color="blue"></option><option value="OQwckMnc2Mzf" label="Elementary" color="blue"></option><option value="aJQiyPcdPjIq" label="Premium" color="blue"></option></select></th></tr></thead><tbody><tr><td>Ethereum Mainnet</td><td>true</td><td>true</td><td>true</td><td>false</td><td>true</td><td>true</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Ethereum Beacon Chain</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Ethereum Sepolia</td><td>false</td><td>true</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="OQwckMnc2Mzf">Elementary</span></td></tr><tr><td>Sepolia Beacon Chain</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="OQwckMnc2Mzf">Elementary</span></td></tr><tr><td>Ethereum Hoodi</td><td>false</td><td>true</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td><p>Hoodi </p><p>Beacon Chain</p></td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Arbitrum One</td><td>true</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Arbitrum Nova</td><td>true</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Arbitrum Sepolia</td><td>true</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>OP Mainnet</td><td>true</td><td>false</td><td>true</td><td>true</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>OP Sepolia</td><td>true</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Polygon Mainnet</td><td>true</td><td>false</td><td>true</td><td>true</td><td>true</td><td>true</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Polygon Amoy</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Polygon zkEVM Mainnet</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Polygon zkEVM Cardona</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>BSC Mainnet</td><td>true</td><td>true</td><td>true</td><td>false</td><td>true</td><td>true</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>BSC Testnet</td><td>true</td><td>true</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Kaia Mainnet</td><td>true</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Kaia kairos</td><td>true</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>zkSync Era Mainnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>zkSync Era<br>Sepolia</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Scroll Mainnet</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Scroll Sepolia</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Zetachain Athens-EVM</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Zetachain Athens </td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Zetachain Mainnet-EVM</td><td>true</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Zetachain Mainnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Base Mainnet</td><td>true</td><td>false</td><td>true</td><td>true</td><td>true</td><td>true</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Base Sepolia</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Linea Mainnet</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Linea Sepolia</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Gnosis Mainnet</td><td>true</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Avalanche Standard EVM</td><td>true</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Avalanche Testnet</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Fantom Opera</td><td>true</td><td>true</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Cosmos Mainnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Cronos Mainnet</td><td>true</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Meter Mainnet</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Aptos Mainnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Viction Mainnet</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Taiko mainnnet</td><td>true</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Starknet Mainnet</td><td>true</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Blast Mainnet</td><td>true</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Conflux eSpace</td><td>true</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Merlin Mainnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Merlin Testnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>SUI Mainnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>SUI Mainnet Archive</td><td>true</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="OQwckMnc2Mzf">Elementary</span></td></tr><tr><td>Mantle Mainnet</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Near Mainnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Ton Mainnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="OQwckMnc2Mzf">Elementary</span></td></tr><tr><td>Celo Mainnet</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Celo Sepolia</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Unichain Mainnet</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="OQwckMnc2Mzf">Elementary</span></td></tr><tr><td>Unichain Sepolia</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Metis Mainnet</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Movement Mainnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Story <br>Mainnet</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Sonic Mainnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Ink Mainnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Abstract Mainnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="OQwckMnc2Mzf">Elementary</span></td></tr><tr><td>Berachain Mainnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Monad Mainnet</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="OQwckMnc2Mzf">Elementary</span></td></tr><tr><td>Monad<br>Testnet</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="OQwckMnc2Mzf">Elementary</span></td></tr><tr><td>Solana Mainnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="aJQiyPcdPjIq">Premium</span></td></tr><tr><td>t3rn<br>Mainnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Eclipse Mainnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="OQwckMnc2Mzf">Elementary</span></td></tr><tr><td>Sei Mainnet EVM</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="OQwckMnc2Mzf">Elementary</span></td></tr><tr><td>Sei Testnet EVM</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="OQwckMnc2Mzf">Elementary</span></td></tr><tr><td>X Layer Mainnet</td><td>false</td><td>false</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="OQwckMnc2Mzf">Elementary</span></td></tr><tr><td>Hyperliquid EVM Mainnet</td><td>true</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="OQwckMnc2Mzf">Elementary</span></td></tr><tr><td>Etherlink Mainnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="OQwckMnc2Mzf">Elementary</span></td></tr><tr><td>Bitcoin Mainnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Hemi Mainnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="OQwckMnc2Mzf">Elementary</span></td></tr><tr><td>Stable Mainnet</td><td>true</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="OQwckMnc2Mzf">Elementary</span></td></tr><tr><td>Plasma Mainnet</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr><tr><td>Arc Testnet</td><td>false</td><td>true</td><td>true</td><td>false</td><td>false</td><td>false</td><td><span data-option="eXuuVGzBUqNE">Free</span></td></tr></tbody></table>

For more info of Advanced Features setting, please refer to

{% content-ref url="/pages/Fr4XdpqWE3MUt1FoKtDa" %}
[Customize Endpoint Advanced Features](/basic-tutorials/api-key/customize-endpoint-advanced-features)
{% endcontent-ref %}


# API Reference

This page serves as API documentation index and lists the available JSON-RPC methods that BlockPI supports.

BlockPI Network is now fully available on more than **60 chains** including Mainnet and Testnet. BlockPI also provide `blockpi_` namespace to provide account information queries.

{% content-ref url="/pages/s6833eReKdYg3gmzofMP" %}
[BlockPI](/build/api-reference/blockpi)
{% endcontent-ref %}

BlockPI supports WebSocket and HTTPS. Note that the `eth_subscribe` method is only available for WebSocket.&#x20;

To safeguard the RPC node, every RPC provider sets a timeout for WebSocket connections to be disconnected periodically. In the case of BlockPI, the timeout is set to 30 minutes after each connection is established. Please check the code sample of our [Best Practices](/basic-tutorials/best-practices) page for instruction.

{% hint style="info" %}
If you send batch RPC requests in a single HTTPS request, cost would be based on the number of RPC requests. Note that there is limit time for a Https request. If too many RPC requests are sent with one Https request, there may be a timeout error. So the number is limited to 10 for public endpoints and 1000 for private endpoints.
{% endhint %}


# BlockPI

This page serves as an BlockPI API documentation index and lists the available JSON-RPC methods.

### Account

* [blockpi\_ruBalance](/build/api-reference/blockpi/blockpi_rubalance)
* [blockpi\_walletBalance](/build/api-reference/blockpi/blockpi_walletbalance)
* [blockpi\_ruConsumed](/build/api-reference/blockpi/blockpi_ruconsumed)
* [blockpi\_packageExpiration](/build/api-reference/blockpi/blockpi_packageexpiration)


# blockpi\_ruBalance

Using any existing key to query the currently RU balance of the account which owns the api key.

{% hint style="info" %}
This method is to use any existing key to check the RU balance of your account, no matter how many keys in the account. The key is the last 40 digits of an private endpoint.&#x20;
{% endhint %}

For example, a user created 4 private endpoints and his remaining RU is 99M .

> *1) <https://polygon-zkevm.blockpi.network/v1/rpc/**60794194a000ijb35af7e1180i311a26297a3b0w>\*\**
>
> *2) <https://arbitrum-nova.blockpi.network/v1/rpc/**1ee7d16c79ada6612ebf0q745fda72f57e593bd8>\*\**
>
> *3) <https://klaytn.blockpi.network/v1/rpc/**c338e93b14dc913700369e6c58d3184405ff7b1cb>\*\**
>
> *4) <https://polygon-zkevm.blockpi.network/v1/rpc/**4e322aee2acbba725782361y6fa64afc20706107>\*\**

Using ***4e322aee2acbba725782361y6fa64afc20706107*** or ***c338e93b14dc913700369e6c58d3184405ff7b1cb*** as the parameter will give the same response of the 99M remaining RU.&#x20;

***

#### **Parameters:**

**apikey** -- any API key that the users already created in their account.

#### **Returns:**

**balance** -- the remaining RU balance of the account.

#### Example:

{% code overflow="wrap" %}

```python
// Request
curl  https://api.blockpi.io/openapi/v1/rpc -X POST -H "Content-Type: application/json" 
--data '{
    "jsonrpc": "2.0",
    "method": "blockpi_ruBalance",
    "params": [
        {
            "apiKey": "60794194a000ijb35af7e1180i311a26297a3b0w" 
        }
    ],
    "id": 1
}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "balance": 0
    }
}
```

{% endcode %}


# blockpi\_walletBalance

Using any existing key to query the currently wallet balance of the account which owns the api key.

#### **Parameters:**

**apikey** -- any API key that the users already created in their account.

#### **Returns:**

**balance** -- the remaining wallet balance of the account in dollar.

#### Example:

{% code overflow="wrap" %}

```python
// Request
curl  https://api.blockpi.io/openapi/v1/rpc -X POST -H "Content-Type: application/json" 
--data '{
    "jsonrpc": "2.0",
    "method": "blockpi_walletBalance",
    "params": [
        {
            "apiKey": "60794194a000ijb35af7e1180i311a26297a3b0w" 
        }
    ],
    "id": 1
}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "balance": 0
    }
}
```

{% endcode %}


# blockpi\_ruConsumed

Using any existing key to query the consumed RUs within the time period for corresponding endpoint.

#### **Parameters:**

**apikey --** any API key that the users already created in their account.

**days --** "1", "3", or"7"

#### **Returns:**

**cost --** the consumed RUs within the time period for corresponding endpoint.

#### Example:

{% code overflow="wrap" %}

```python
// Request
curl  https://api.blockpi.io/openapi/v1/rpc -X POST -H "Content-Type: application/json" 
--data '{
    "jsonrpc": "2.0",
    "method": "blockpi_ruConsumed",
    "params": [
        {
            "apiKey": "0fea34a6584b71e1df7794c4b2b405a3dddeea8a",
            "days": "3" 
        }
    ],
    "id": 1
}'

// Result
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "cost": 0
    }
}
```

{% endcode %}


# blockpi\_packageExpiration

Using any existing key to query the consumed RUs within the time period for corresponding endpoint.

#### **Parameters:**

**apikey --** any API key that the users already created in their account.

#### **Returns:**

**Object** - A details object, or null:

* ruTotalAmoun&#x74;**: QUANTITY**  - Total RU amount of the RU package.
* ruLeftAmoun&#x74;**: QUANTITY** - Available RU amount left of the RU package.
* skuNam&#x65;**: DATA** - RU package name.
* expireTim&#x65;**: QUANTITY** - UTC number when the package expires.

#### Example:

{% code overflow="wrap" %}

```python
// Request
curl  https://api.blockpi.io/openapi/v1/rpc -X POST -H "Content-Type: application/json" 
--data '{
    "jsonrpc": "2.0",
    "method": "blockpi_packageExpiration",
    "params": [
        {
            "apiKey": "0fea34a6584b71e1df7794c4b2b405a3dddeea8a"
        }
    ],
    "id": 1
}'

// Result
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "details": [
            {
                "ruTotalAmount": 4000000000,
                "ruLeftAmount": 3687787426,
                "skuName": "Startup Premium",
                "expireTime": 1761451280832
            }
        ],
        "totalCount": 1
    }
}
```

{% endcode %}


# 0G

This page serves as a Etherlink API documentation index and lists the available JSON-RPC methods.

### eth <a href="#eth" id="eth"></a>

* [eth\_chainId](/build/api-reference/story/eth_chainid)
* [eth\_getBlockByNumber](/build/api-reference/story/eth_getblockbynumber)
* [eth\_getBlockByHash](/build/api-reference/story/eth_getblockbyhash)
* [eth\_blockNumber](/build/api-reference/story/eth_blocknumber)
* [eth\_gasPrice](/build/api-reference/story/eth_gasprice)
* [eth\_getBalance](/build/api-reference/story/eth_getbalance)
* [eth\_sendRawTransaction](/build/api-reference/story/eth_sendrawtransaction)
* [eth\_getTransactionByHash](/build/api-reference/story/eth_gettransactionbyhash)
* [eth\_getTransactionByBlockNumberAndIndex](/build/api-reference/story/eth_gettransactionbyblocknumberandindex)
* [eth\_getTransactionByBlockHashAndIndex](/build/api-reference/story/eth_gettransactionbyblockhashandindex)
* [eth\_getTransactionReceipt](/build/api-reference/story/eth_gettransactionreceipt)
* [eth\_getTransactionCount](/build/api-reference/story/eth_gettransactioncount)
* [eth\_getBlockTransactionCountByNumber](/build/api-reference/story/eth_getblocktransactioncountbynumber)
* [eth\_getLogs](/build/api-reference/story/eth_getlogs)
* [eth\_getCode](/build/api-reference/story/eth_getcode)
* [eth\_call](/build/api-reference/story/eth_call)
* [eth\_getStorageAt](/build/api-reference/story/eth_getstorageat)
* [eth\_estimateGas](/build/api-reference/story/eth_estimategas)
* [eth\_newFilter](/build/api-reference/story/eth_newfilter)
* [eth\_newBlockFilter](/build/api-reference/story/eth_newblockfilter)
* [eth\_newPendingTransactionFilter](/build/api-reference/story/eth_newpendingtransactionfilter)
* [eth\_getFilterChanges](/build/api-reference/story/eth_getfilterchanges)
* [eth\_uninstallFilter](/build/api-reference/story/eth_uninstallfilter)
* [eth\_subscribe](/build/api-reference/story/eth_subscribe)
* [eth\_unsubscribe](/build/api-reference/story/eth_unsubscribe)

### txpool

* [txpool\_content](/build/api-reference/story/txpool_content)
* [txpool\_inspect](/build/api-reference/story/txpool_inspect)
* [txpool\_status](/build/api-reference/story/txpool_status)

### net <a href="#eth_unsubscribe" id="eth_unsubscribe"></a>

* [net\_version](/build/api-reference/story/net_version)

### web3 <a href="#net_peercount" id="net_peercount"></a>

* [web3\_clientVersion](/build/api-reference/story/web3_clientversion)
* [web3\_sha3](/build/api-reference/story/web3_sha3)


# eth\_chainId

Returns the currently configured chain id, a value used in replay-protected transaction signing as introduced by EIP-155.

#### **Parameters:**

None

#### **Returns:**

**QUANTITY** - big integer of the current chain id.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl  https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0x40d9"
}
```

{% endcode %}


# eth\_getBlockByNumber

Returns block information by number.

#### **Parameters:**

**QUANTITY|TAG** - integer of a block number, or the string "latest"

**Boolean** - If true it returns the full transaction objects, if false only the hashes of the transactions.

#### **Returns:**

Object - A block object, or null when no block was found:

* **number: QUANTITY** - the block number.
* **hash: DATA, 32 Bytes** - hash of the block.
* **parentHash: DATA, 32 Bytes** - hash of the parent block.
* **nonce: DATA, 8 Bytes** - hash of the generated proof-of-work.
* **sha3Uncles: DATA, 32 Bytes** - SHA3 of the uncles data in the block.
* **logsBloom: DATA, 256 Bytes** - the bloom filter for the logs of the block.
* **transactionsRoot: DATA, 32 Bytes** - the root of the transaction trie of the block.
* **stateRoot: DATA, 32 Bytes** - the root of the final state trie of the block.
* **receiptsRoot: DATA, 32 Bytes** - the root of the receipts trie of the block.
* **miner: DATA, 20 Bytes** - the address of the beneficiary to whom the mining rewards were given.
* **difficulty: QUANTITY** - integer of the difficulty for this block.
* **totalDifficulty: QUANTITY** - integer of the total difficulty of the chain until this block.
* **extraData: DATA** - the “extra data” field of this block.
* **size: QUANTITY** - integer the size of this block in bytes.
* **gasLimit: QUANTITY** - the maximum gas allowed in this block.
* **gasUsed: QUANTITY** - the total used gas by all transactions in this block.
* **timestamp: QUANTITY** - the unix timestamp for when the block was collated.
* **transactions: Array** - Array of transaction objects, or 32 Bytes transaction hashes depending on the last given parameter.
* **uncles: Array** - Array of uncle hashes.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl  https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["latest", true],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {    }
}
```

{% endcode %}


# eth\_getBlockByHash

Returns block information by hash.

#### **Parameters:**

**DATA , 32 Bytes** - Hash of a block.

**Boolean** - If true it returns the full transaction objects, if false only the hashes of the transactions.

#### **Returns:**

Object - A block object, or null when no block was found:

* **number: QUANTITY** - the block number.
* **hash: DATA, 32 Bytes** - hash of the block.
* **parentHash: DATA, 32 Bytes** - hash of the parent block.
* **nonce: DATA, 8 Bytes** - hash of the generated proof-of-work.
* **sha3Uncles: DATA, 32 Bytes** - SHA3 of the uncles data in the block.
* **logsBloom: DATA, 256 Bytes** - the bloom filter for the logs of the block.
* **transactionsRoot: DATA, 32 Bytes** - the root of the transaction trie of the block.
* **stateRoot: DATA, 32 Bytes** - the root of the final state trie of the block.
* **receiptsRoot: DATA, 32 Bytes** - the root of the receipts trie of the block.
* **miner: DATA, 20 Bytes** - the address of the beneficiary to whom the mining rewards were given.
* **difficulty: QUANTITY** - integer of the difficulty for this block.
* **totalDifficulty: QUANTITY** - integer of the total difficulty of the chain until this block.
* **extraData: DATA** - the “extra data” field of this block.
* **size: QUANTITY** - integer the size of this block in bytes.
* **gasLimit: QUANTITY** - the maximum gas allowed in this block.
* **gasUsed: QUANTITY** - the total used gas by all transactions in this block.
* **timestamp: QUANTITY** - the unix timestamp for when the block was collated.
* **transactions: Array** - Array of transaction objects, or 32 Bytes transaction hashes depending on the last given parameter.
* **uncles: Array** - Array of uncle hashes.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0x45b780b0233fb7c8a1087dee362828be82a13e785df9b83b100b3944cc56b623",false],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {    }
}
```

{% endcode %}


# eth\_blockNumber

Returns the number of the most recent block.

#### **Parameters:**

None

#### **Returns:**

**QUANTITY** - integer of the current block number the client is on.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "result": "0x58dbb8",
    "id": 1
}
```

{% endcode %}


# eth\_gasPrice

Returns the current price of gas in wei. If minimum gas price is enforced by setting the --price-limit flag, this endpoint will return the value defined by this flag as minimum gas price.

#### **Parameters:**

None

#### **Returns:**

**QUANTITY** - integer of the current gas price in wei.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "result": "0xf4269",
    "id": 1
}
```

{% endcode %}


# eth\_getBalance

Returns the balance of the account of the given address.

#### **Parameters:**

**DATA, 20 Bytes** - address to check for balance.

**QUANTITY|TAG** - integer block number, or the string "latest"

#### **Returns:**

**QUANTITY** - integer of the current balance in wei.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0x0"
}
```

{% endcode %}


# eth\_sendRawTransaction

Creates new message call transaction or a contract creation for signed transactions.

#### **Parameters:**

**DATA** - The signed transaction data.

#### **Returns:**

**DATA, 32 Bytes** - the transaction hash, or the zero hash if the transaction is not yet available.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0xd46e8dd67c5d32be8d46e8dd67c......58bb8eb970870f072445675"],"id":1}'

// Result

```

{% endcode %}


# eth\_getTransactionByHash

Returns the information about a transaction requested by transaction hash.

#### **Parameters:**

**DATA, 32 Bytes** - hash of a transaction

#### **Returns:**

**Object** - A transaction object, or null when no transaction was found:

* **blockHash: DATA, 32 Bytes** - hash of the block where this transaction was in.
* **blockNumber: QUANTITY** - block number where this transaction was in.
* **from: DATA, 20 Bytes** - address of the sender.
* **gas: QUANTITY** - gas provided by the sender.
* **gasPrice: QUANTITY** - gas price provided by the sender in Wei.
* **hash: DATA, 32 Bytes** - hash of the transaction.
* **input: DATA** - the data send along with the transaction.
* **nonce: QUANTITY** - the number of transactions made by the sender prior to this one.
* **to: DATA, 20 Bytes** - address of the receiver. null when its a contract creation transaction.
* **transactionIndex: QUANTITY** - integer of the transactions index position in the block.
* **value: QUANTITY** - value transferred in Wei.
* **v: QUANTITY** - ECDSA recovery id
* **r: DATA, 32 Bytes** - ECDSA signature r
* **s: DATA, 32 Bytes** - ECDSA signature s

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0xb6e6c1d8fdd1a2b424213f6fbcb04f226acebc7597ec76d9f5a79e584916dca4"],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {    }
}
```

{% endcode %}


# eth\_getTransactionByBlockNumberAndIndex

Returns the information about a transaction requested by Block number and index.

#### **Parameters:**

**QUANTITY|TAG** - Integer block number encoded as a hexadecimal, or the string 'latest', 'earliest' or 'pending'.

**QUANTITY** - A hex of the integer representing the position in the block.

#### **Returns:**

**Object** - A transaction object, or null when no transaction was found:

* **blockHash: DATA, 32 Bytes** - hash of the block where this transaction was in.
* **blockNumber: QUANTITY** - block number where this transaction was in.
* **from: DATA, 20 Bytes** - address of the sender.
* **gas: QUANTITY** - gas provided by the sender.
* **gasPrice: QUANTITY** - gas price provided by the sender in Wei.
* **hash: DATA, 32 Bytes** - hash of the transaction.
* **input: DATA** - the data send along with the transaction.
* **nonce: QUANTITY** - the number of transactions made by the sender prior to this one.
* **to: DATA, 20 Bytes** - address of the receiver. null when its a contract creation transaction.
* **transactionIndex: QUANTITY** - integer of the transactions index position in the block.
* **value: QUANTITY** - value transferred in Wei.
* **v: QUANTITY** - ECDSA recovery id
* **r: DATA, 32 Bytes** - ECDSA signature r
* **s: DATA, 32 Bytes** - ECDSA signature s

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockNumberAndIndex","params":["latest", "0x0"],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {    }
}
```

{% endcode %}


# eth\_getTransactionByBlockHashAndIndex

Returns the information about a transaction requested by Block hash and index.

#### **Parameters:**

**DATA , 32 Bytes** - Hash of a block.

**QUANTITY** - A decimal of the integer representing the position in the block.

#### **Returns:**

**Object** - A transaction object, or null when no transaction was found:

* **blockHash: DATA, 32 Bytes** - hash of the block where this transaction was in.
* **blockNumber: QUANTITY** - block number where this transaction was in.
* **from: DATA, 20 Bytes** - address of the sender.
* **gas: QUANTITY** - gas provided by the sender.
* **gasPrice: QUANTITY** - gas price provided by the sender in Wei.
* **hash: DATA, 32 Bytes** - hash of the transaction.
* **input: DATA** - the data send along with the transaction.
* **nonce: QUANTITY** - the number of transactions made by the sender prior to this one.
* **to: DATA, 20 Bytes** - address of the receiver. null when its a contract creation transaction.
* **transactionIndex: QUANTITY** - integer of the transactions index position in the block.
* **value: QUANTITY** - value transferred in Wei.
* **v: QUANTITY** - ECDSA recovery id
* **r: DATA, 32 Bytes** - ECDSA signature r
* **s: DATA, 32 Bytes** - ECDSA signature s

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo..blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0xfefe6d2425eb1d237d017aec7c719a333247faa5d8faad6758b943520012f533", 0],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {    }
}
```

{% endcode %}


# eth\_getTransactionReceipt

Returns the receipt of a transaction by transaction hash. Note That the receipt is not available for pending transactions.

#### **Parameters:**

**DATA, 32 Bytes** - hash of a transaction

#### **Returns:**

**Object** - A transaction receipt object, or null when no receipt was found:

* **transactionHash : DATA, 32 Bytes** - hash of the transaction.
* **transactionIndex: QUANTITY** - integer of the transactions index position in the block.
* **blockHash: DATA, 32 Bytes** - hash of the block where this transaction was in.
* **blockNumber: QUANTITY** - block number where this transaction was in.
* **from: DATA, 20 Bytes** - address of the sender.
* **to: DATA, 20 Bytes** - address of the receiver. null when its a contract creation transaction.
* **cumulativeGasUsed : QUANTITY** - The total amount of gas used when this transaction was executed in the block.
* **gasUsed : QUANTITY** - The amount of gas used by this specific transaction alone.
* **contractAddress : DATA, 20 Bytes** - The contract address created, if the transaction was a contract creation, otherwise null.
* **logs: Array** - Array of log objects, which this transaction generated.
* **logsBloom: DATA, 256 Bytes** - Bloom filter for light clients to quickly retrieve related logs.

It also returns either :

* **root : DATA 32 bytes** - post-transaction stateroot (pre Byzantium)
* **status: QUANTITY** - either 1 (success) or 0 (failure)

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xb6e6c1d8fdd1a2b424213f6fbcb04f226acebc7597ec76d9f5a79e584916dca4"],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {    }
}
```

{% endcode %}


# eth\_getTransactionCount

Returns the number of transactions sent from an address.

#### **Parameters:**

**DATA, 20 Bytes** - address.

**QUANTITY|TAG** - integer block number, or the string "latest"

#### **Returns:**

**QUANTITY** - integer of the number of transactions send from this address.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0x30ccf7338f608f68d3d20ab878a1be5f902047df","latest"],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "result": "0x0",
    "id": 1
}
```

{% endcode %}


# eth\_getBlockTransactionCountByNumber

Returns the number of transactions in a block matching the given block number.

#### **Parameters:**

**QUANTITY|TAG** - integer of a block number, or the string "latest"

#### **Returns:**

**QUANTITY** - integer of the number of transactions in this block.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["latest"],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0x1c"
}
```

{% endcode %}


# eth\_getLogs

Returns an array of all logs matching a given filter object.

#### **Parameters:**

**Object** - The filter options:

* **fromBlock: QUANTITY|TAG** - (optional, default: "latest") Integer block number, or "latest" for the last mined block
* **toBlock: QUANTITY|TAG** - (optional, default: "latest") Integer block number, or "latest" for the last mined block
* **address: DATA|Array, 20 Bytes** - (optional) Contract address or a list of addresses from which logs should originate.
* **topics: Array of DATA** - (optional) Array of 32 Bytes DATA topics. Topics are order-dependent. Each topic can also be an array of DATA with “or” options.
* **blockhash: DATA, 32 Bytes** - (optional, future) With the addition of EIP-234, blockHash will be a new filter option which restricts the logs returned to the single block with the 32-byte hash blockHash. Using blockHash is equivalent to fromBlock = toBlock = the block number with hash blockHash. If blockHash is present in the filter criteria, then neither fromBlock nor toBlock is allowed.

{% hint style="info" %}
The block range of eth\_getLogs is limited to 1024 for public endpoints and 5000 for private endpoints. Requests with blocks over this range will get an error.
{% endhint %}

#### **Returns:**

**Array** - Array of log objects, or an empty array if nothing has changed since last poll.

* For filters created with eth\_newBlockFilter the return are block hashes (DATA, 32 Bytes), e.g. \["0x3454645634534..."].
* For filters created with eth\_newFilter logs are objects with the following params:
  * **removed: TAG** - true when the log was removed, due to a chain reorganization. false if its a valid log.
  * **logIndex: QUANTITY** - integer of the log index position in the block. null when its pending log.
  * **transactionIndex: QUANTITY** - integer of the transactions index position log was created from. null when its pending log.
  * **transactionHash: DATA, 32 Bytes** - hash of the transactions this log was created from. null when its pending log.
  * **blockHash: DATA, 32 Bytes** - hash of the block where this log was in. null when its pending log.
  * **blockNumber: QUANTITY** - the block number where this log was in. null when its pending log.
  * **address: DATA, 20 Bytes** - address from which this log originated.
  * **data: DATA** - contains one or more 32 Bytes non-indexed arguments of the log.
  * **topics: Array of DATA** - Array of 0 to 4 32 Bytes DATA of indexed log arguments. (In solidity: The first topic is the hash of the signature of the event (e.g. Deposit(address,bytes32,uint256)), except you declared the event with the anonymous specifier.)

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getLogs","params":[{"topics": ["0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b"]}],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": [ ]
}
```

{% endcode %}


# eth\_getCode

Returns code at a given address.

#### **Parameters:**

**DATA, 20 Bytes** - address

**QUANTITY|TAG** - integer block number, or the string "latest"

#### **Returns:**

**DATA** - the code from the given address.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", "latest"],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0x"
}
```

{% endcode %}


# eth\_call

Executes a new message call immediately without creating a transaction on the blockchain.

#### **Parameters:**

**Object** - The transaction call object

* **from: DATA, 20 Bytes** - (optional) The address the transaction is sent from.
* **to: DATA, 20 Bytes** - The address the transaction is directed to.
* **gas: QUANTITY** - (optional) Integer of the gas provided for the transaction execution. eth\_call consumes zero gas, but this parameter may be needed by some executions.
* **gasPrice: QUANTITY** - (optional) Integer of the gasPrice used for each paid gas
* **value: QUANTITY** - (optional) Integer of the value sent with this transaction
* **data: DATA** - (optional) Hash of the method signature and encoded parameters. Data size is limited to 20KB. For details see Ethereum Contract ABI in the Solidity documentation
* **QUANTITY|TAG** - integer block number, or the string "latest", see the default block paramete

#### **Returns:**

**DATA** - the return value of executed contract.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_call","params":[{see above}],"id":1}'

// Result

```

{% endcode %}


# eth\_getStorageAt

Returns the value from a storage position at a given address.

#### **Parameters:**

**DATA, 20 Bytes** - address of the storage.

**QUANTITY** - integer of the position in the storage.

**QUANTITY|TAG** - integer block number, or the string "latest"

#### **Returns:**

**DATA** - the value at this storage position.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getStorageAt","params":["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x0", "latest"],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
```

{% endcode %}


# eth\_estimateGas

Generates and returns an estimate of how much gas is necessary to allow the transaction to complete. The transaction will not be added to the blockchain.

#### **Parameters:**

Expect that all properties are optional.

**Object** - The transaction call object

* **from: DATA, 20 Bytes** - The address the transaction is sent from.
* **to: DATA, 20 Bytes** - The address the transaction is directed to.
* **gas: QUANTITY** - Integer of the gas provided for the transaction execution. eth\_call consumes zero gas, but this parameter may be needed by some executions.
* **gasPrice: QUANTITY** - Integer of the gasPrice used for each paid gas
* **value: QUANTITY** - Integer of the value sent with this transaction
* **data: DATA** - Hash of the method signature and encoded parameters. For details see Ethereum Contract ABI in the Solidity documentation
* **QUANTITY|TAG** - integer block number, or the string "latest", see the default block paramete

#### **Returns:**

**QUANTITY** - the amount of gas used.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_estimateGas","params":[{see above}],"id":1}'

// Result

```

{% endcode %}


# eth\_newFilter

Creates a filter object, based on filter options. To get all matching logs for specific filter, call eth\_getFilterLogs. To check if the state has changed, call eth\_getFilterChanges.

#### **Parameters:**

**Object** - The filter options:

* **fromBlock: QUANTITY|TAG** - (optional, default: "latest") Integer block number, or "latest" for the last mined block
* **toBlock: QUANTITY|TAG** - (optional, default: "latest") Integer block number, or "latest" for the last mined block
* **address: DATA|Array, 20 Bytes** - (optional) Contract address or a list of addresses from which logs should originate.
* **topics: Array of DATA** - (optional) Array of 32 Bytes DATA topics. Topics are order-dependent. Each topic can also be an array of DATA with “or” options.

#### **Returns:**

**QUANTITY** - A filter id.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_newFilter","params":[{"topics":["0x1234123412341234123412341111111111111111111111111111111111111111"]}],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0xa91fd9570ac139bf7e58f4562c82885c"
}
```

{% endcode %}


# eth\_newBlockFilter

Creates a filter in the node, to notify when a new block arrives. To check if the state has changed, call eth\_getFilterChanges.

#### **Parameters:**

None

#### **Returns:**

**QUANTITY** - A filter id.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_newBlockFilter","params":[],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0xcb13319001066be7c166d2b6327b0932"
}
```

{% endcode %}


# eth\_newPendingTransactionFilter

Creates a filter in the node, to notify when new pending transactions arrive. To check if the state has changed, call eth\_getFilterChanges.

#### **Parameters:**

None

#### **Returns:**

**QUANTITY** - A filter id.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_newPendingTransactionFilter","params":[],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0xfbde6160d6641f29f0f3d3bb94ac6059"
}
```

{% endcode %}


# eth\_getFilterChanges

Polling method for a filter, which returns an array of logs that occurred since the last poll.

#### **Parameters:**

**QUANTITY** - the filter id.

#### **Returns:**

**Array** - Array of log objects, or an empty array if nothing has changed since last poll.

* For filters created with eth\_newBlockFilter the return are block hashes (DATA, 32 Bytes), e.g. \["0x3454645634534..."].
* For filters created with eth\_newFilter logs are objects with the following params:
  * **removed: TAG** - true when the log was removed, due to a chain reorganization. false if its a valid log.
  * **logIndex: QUANTITY** - integer of the log index position in the block. null when its pending log.
  * **transactionIndex: QUANTITY** - integer of the transactions index position log was created from. null when its pending log.
  * **transactionHash: DATA, 32 Bytes** - hash of the transactions this log was created from. null when its pending log.
  * **blockHash: DATA, 32 Bytes** - hash of the block where this log was in. null when its pending log.
  * **blockNumber: QUANTITY** - the block number where this log was in. null when its pending log.
  * **address: DATA, 20 Bytes** - address from which this log originated.
  * **data: DATA** - contains one or more 32 Bytes non-indexed arguments of the log.
  * **topics: Array of DATA** - Array of 0 to 4 32 Bytes DATA of indexed log arguments. (In solidity: The first topic is the hash of the signature of the event (e.g. Deposit(address,bytes32,uint256)), except you declared the event with the anonymous specifier.)

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getFilterChanges","params":["0xfbde6160d6641f29f0f3d3bb94ac6059"],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": []
}
```

{% endcode %}


# eth\_uninstallFilter

Uninstalls a filter with a given id. Should always be called when a watch is no longer needed. Additionally, filters timeout when they aren’t requested with eth\_getFilterChanges for some time.

#### **Parameters:**

**QUANTITY** - the filter id.

#### **Returns:**

**Boolean** - true if the filter was successfully uninstalled, otherwise false.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_uninstallFilter","params":["0x8d394290681fcb2ec58fcc21224163c067aa1b6ba20c98a42786b364065380b3"],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": true
}
```

{% endcode %}


# eth\_subscribe

Subscribe to different Ethereum event types like newHeads, logs, pendingTransactions, and minedTransactions using WebSockets.

#### **Parameters:**

* **Event types**- specifies the type of event to listen to (ex: new pending transactions, logs, etc.)
* **Optional params** - optional parameters to include to describe the type of event to listen to (ex: `address`)

#### **Returns:**

While the subscription is active, you will receive events formatted as an object described below:

* Event Object:
  * `jsonrpc`: Always "2.0"
  * `method`: Always "eth\_subscription"
  * `params`: An object with the following fields:
    * `subscription`: The subscription ID returned by the `eth_subscribe` call which created this subscription. This ID will be attached to all received events and can also be used to cancel the subscription using `eth_unsubscribe`
    * `result`: An object whose contents vary depending on the event type.

#### Example:

{% code overflow="wrap" %}

```json
// initiate websocket stream 
wscat -c wss://0g-galileo.blockpi.network/v1/ws/<your-api-key>

//create an event
{"jsonrpc":"2.0","id": 2, "method": "eth_subscribe", "params": ["newHeads"]}

// Result
{...}
```

{% endcode %}


# eth\_unsubscribe

Subscriptions are cancelled with a regular RPC call with eth\_unsubscribe as a method and the subscription id as the first parameter. It returns a bool indicating if the subscription was cancelled.

#### **Parameters:**

**SUBSCRIPTION ID**

#### **Returns:**

**UNSUBSCRIBED FLAG** - true if the subscription was canceled successfully.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_unsubscribe","params":["0x9cef478923ff08bf67fde6c64013158d"],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": ture
}
```

{% endcode %}


# txpool\_content

list the exact details of all the transactions currently pending for inclusion in the next block(s), as well as the ones that are being scheduled for future execution only.

#### **Parameters:**

None

#### Returns:

**array** - list of pending and queued transations, with each having the following fields:

**pending** - Array of transaction objects, with following fields:

* **blockHash** - Hash of the block where this transaction was in, null here.
* **blockNumber** - Block number where this transaction was added encoded as a hexadecimal, null here.
* **from** - Address of the sender.
* **gas** - The total amount of gas units used in the transaction.
* **gasPrice** - The total amount in wei the sender is willing to pay for the transaction.
* **hash** - Hash of the transaction.
* **input** - Encoded transaction input data.
* **nonce** - Number of transactions the sender has sent till now.
* **r** - ECDSA signature r.
* **s** - ECDSA signature s.
* **to** - Address of the receiver. null when its a contract creation transaction.
* **transactionIndex** - Integer of the transactions index position in the block encoded as a hexadecimal.
* **type** - A number between 0 and 0x7f, for a total of 128 possible transaction types.
* **v** - ECDSA recovery id encoded as a hexadecimal.
* **value** - Value transferred in Wei encoded as a hexadecimal.

**queued** - Array of transaction objects, with following fields:

* **accesslist** - A list of addresses and storage keys that the transaction plans to access, introduced in EIP-2929.
* **blockHash** - Hash of the block where this transaction was in, null here.
* **blockNumber** - Block number where this transaction was added encoded as a hexadecimal, null here.
* **chainId** - The current network/chain ID, used to sign repplay-protected transaction introduced in EIP-155.
* **from** - Address of the sender.
* **gas**- The total amount of gas units used in the transaction.
* **gasPrice** - The total amount in wei the sender is willing to pay for the transaction.
* **hash** - Hash of the transaction.
* **input** - Encoded transaction input data.
* **maxFeePerGas** - The maximum amount of gas willing to be paid for the transaction.
* **maxPriorityFeePerGas** - The maximum amount of gas to be included as a tip to the miner.
* **nonce** - Number of transactions the sender has sent till now.
* **r** - ECDSA signature r.
* **s** - ECDSA signature s.
* **to** - Address of the receiver. null when its a contract creation transaction.
* **transactionIndex** - Integer of the transactions index position in the block encoded as a hexadecimal.
* **type** - A number between 0 and 0x7f, for a total of 128 possible transaction types.
* **v** - ECDSA recovery id encoded as a hexadecimal.
* **value** - Value transferred in Wei encoded as a hexadecimal.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"txpool_content","params":[],"id":1}'

// Result
{
   
}
```

{% endcode %}


# txpool\_inspect

Returns a list with a textual summary of all the transactions currently pending for inclusion in the next block(s), as well as the ones that are being scheduled for future execution only.

#### **Parameters:**

None

### Returns:

**array** - list of pending and queued transations, with each having the following fields:&#x20;

* **pending** - Array of transaction objects, with textual data.
* **queued** - Array of transaction objects, with textual data.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"txpool_inspect","params":[],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {as described above}
}
```

{% endcode %}


# txpool\_status

Returns the number of transactions currently pending for inclusion in the next block(s), as well as the ones that are being scheduled for future execution only.

#### **Parameters:**

None

#### Returns:

**object** - with following fields:

* **pending** - Total number of pending transactions in the txpool, represented in hexadecimal format.
* **queued** - Total number of queued transactions in the txpool, represented in hexadecimal format.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"txpool_status","params":[],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "pending": "0x65",
        "queued": "0xff"
    }
}
```

{% endcode %}


# net\_version

Returns the current network id.

#### **Parameters:**

None

#### **Returns:**

**String** - The current network id.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"net_version","params":[],"id":83}'

// Result
{
    "jsonrpc": "2.0",
    "result": "16601",
    "id": 1
}
```

{% endcode %}


# web3\_clientVersion

Returns the current client version.

#### **Parameters:**

None

#### **Returns:**

**String** - The current client version

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://etherlink.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "result": "Geth/v1.15.11-stable-c92ce38b/linux-amd64/go1.23.5",
    "id": 1
}
```

{% endcode %}


# web3\_sha3

Returns Keccak-256 (not the standardized SHA3-256) of the given data.

#### **Parameters:**

**DATA** - the data to convert into a SHA3 hash

#### **Returns:**

**DATA** - The SHA3 result of the given string.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://0g-galileo.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c64"],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0x47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad"
}
```

{% endcode %}


# Aptos

This page serves as an Aptos API documentation index and lists the available API methods.

## Accounts <a href="#accounts" id="accounts"></a>

* [Get account](/build/api-reference/aptos/get-account)
* [Get account resources](/build/api-reference/aptos/get-account-resources)
* [Get account balance​](/build/api-reference/aptos/get-account-resources-1)
* [Get account modules](/build/api-reference/aptos/get-account-modules)
* [Get account resource](/build/api-reference/aptos/get-account-resource)
* [Get account module](/build/api-reference/aptos/get-account-module)

## Blocks <a href="#eth_unsubscribe" id="eth_unsubscribe"></a>

* [Get blocks by height](/build/api-reference/aptos/get-blocks-by-height)
* [Get blocks by version](/build/api-reference/aptos/get-blocks-by-version)

## Events <a href="#net_peercount" id="net_peercount"></a>

* [Get events by creation number](/build/api-reference/aptos/get-events-by-creation-number)
* [Get events by event handle](/build/api-reference/aptos/get-events-by-event-handle)

## General <a href="#web3_sha3" id="web3_sha3"></a>

* [Show OpenAPI explorer](/build/api-reference/aptos/show-openapi-explorer)
* [Show some basic info of the node](/build/api-reference/aptos/check-basic-node-health)
* [Check basic node health](/build/api-reference/aptos/check-basic-node-health-1)
* [Get ledger info](/build/api-reference/aptos/get-ledger-info)

## Tables <a href="#web3_sha3-1" id="web3_sha3-1"></a>

* [Get table item](/build/api-reference/aptos/get-table-item)

## **Transaction** <a href="#transaction" id="transaction"></a>

* [Get transactions](/build/api-reference/aptos/get-transactions)
* [Submit transaction](/build/api-reference/aptos/submit-transaction)
* [Get transaction by hash](/build/api-reference/aptos/get-transaction-by-hash)
* [Wait for transaction by hash​](/build/api-reference/aptos/get-transaction-by-hash-1)
* [Get transaction by version​](/build/api-reference/aptos/get-transaction-by-hash-2)
* [Get account transactions](/build/api-reference/aptos/get-account-transactions)
* [Submit batch transactions](/build/api-reference/aptos/submit-batch-transactions)
* [Simulate transaction](/build/api-reference/aptos/simulate-transaction)
* [Encode submission](/build/api-reference/aptos/encode-submission)
* [Estimate gas price](/build/api-reference/aptos/estimate-gas-price)

{% hint style="info" %}
Due to the official documentation, the structure of the request url should end with the Aptos version and the method like "/v1/\<method>". This is different from EVM chains.
{% endhint %}


# Get account

Return the authentication key and the sequence number for an account address.

#### **Path Parameters:**

**address  string** \<hex> required

Address of account with or without a `0x` prefix

#### Query Parameters：

**ledger\_version string**\<uint64>

Ledger version to get state of account. If not provided, it will be the latest version

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

Account data

A simplified version of the onchain Account resource

**sequence\_number** string\<uint64>

A string containing a 64-bit unsigned integer.

**authentication\_key** string

All bytes (Vec) data is represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X GET -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/accounts/0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6

// Result
{
    "sequence_number": "45294",
    "authentication_key": "0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6"
}
```

{% endcode %}


# Get account resources

Retrieves all account resources for a given account and a specific ledger version.

The Aptos nodes prune account state history, via a configurable time window. If the requested ledger version has been pruned, the server responds with a 410.

#### **Path Parameters:**

**address**  string \<hex> required

Address of account with or without a `0x` prefix

#### Query Parameters：

**ledger\_version** string\<uint64>

Ledger version to get state of account. If not provided, it will be the latest version

**limit integer**

Max number of account resources to retrieve. If not provided, defaults to default page size

**start string**

Cursor specifying where to start for pagination. This cursor cannot be derived manually client-side. Instead, you must call this endpoint once without this query parameter specified, and then use the cursor returned in the X-Aptos-Cursor header in the response.

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

**array of:**

**type** string

String representation of a MoveStructTag (on-chain Move struct type). This exists so you can specify MoveStructTags as path/query parameters, e.g. for get\_events\_by\_event\_handle.

**data** object

This is a JSON representation of some data within an account resource. More specifically, it is a map of strings to arbitrary JSON values/objects, where the keys are top level fields within the given resource.

To clarify, you might query for 0x1::account::Account and see the example data.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X GET -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/accounts/0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6/resources

// Result
[
    {
        "type": "0x1::code::PackageRegistry",
        "data": {
            "packages": [
                {
                    "deps": [
                        {
                            "account": "0x1",
                            "package_name": "AptosFramework"
                        },
                        {
                            "account": "0x1",
                            "package_name": "AptosStdlib"
                        },
                        {
                            "account": "0x1",
                            "package_name": "MoveStdlib"
                        }
                    ],
                    "extension": {
                        "vec": []
                    },
                    "manifest": "0x1f8b08000000000002ff3d4e4d6bc3300cbdfb5784dc97da314deac30e63b0eb762f65c892524c13cbd85db731f6df1b435bd0417a4fef639f004f70e4838ab070f3dcb4ef1faf1262ab2e9c4b905821d3e94eb7ea2b1d33107f269903fe56026549700e7ee656a93d10652e85cb4149c2caeb9f81786b4630bb496b3bf45b1e270fce3bc2de796bf4d4b3d5fde03d7be3dce82d103862c316197734545fe2c4913862a8d62fe92ce52daf6dbf259fd694bf661684b9e675dd661da81f4f28996feb2217de4c77c90d7cdc6df3afaefe587b6d07010000",
                    "modules": [
                        {
                            "extension": {
                                "vec": []
                            },
                            "name": "opc",
                            "source": "0x",
                            "source_map": "0x"
                        }
                    ],
                    "name": "OPCoin",
                    "source_digest": "3F53E41C4FD27343491C4D308FBFA64902B48C1817221724DA72BBA9B622292C",
                    "upgrade_number": "0",
                    "upgrade_policy": {
                        "policy": 1
                    }
                }
            ]
        }
    },
    {
        "type": "0x1::coin::CoinInfo<0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6::opc::OPC>",
        "data": {
            "decimals": 6,
            "name": "Ocean Park Coin",
            "supply": {
                "vec": [
                    {
                        "aggregator": {
                            "vec": []
                        },
                        "integer": {
                            "vec": [
                                {
                                    "limit": "340282366920938463463374607431768211455",
                                    "value": "318775339200000"
                                }
                            ]
                        }
                    }
                ]
            },
            "symbol": "OPC"
        }
    },
    {
        "type": "0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>",
        "data": {
            "coin": {
                "value": "2720669100"
            },
            "deposit_events": {
                "counter": "5",
                "guid": {
                    "id": {
                        "addr": "0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6",
                        "creation_num": "2"
                    }
                }
            },
            "frozen": false,
            "withdraw_events": {
                "counter": "13663",
                "guid": {
                    "id": {
                        "addr": "0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6",
                        "creation_num": "3"
                    }
                }
            }
        }
    },
    {
        "type": "0x1::coin::CoinStore<0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6::opc::OPC>",
        "data": {
            "coin": {
                "value": "17887445100000"
            },
            "deposit_events": {
                "counter": "7",
                "guid": {
                    "id": {
                        "addr": "0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6",
                        "creation_num": "4"
                    }
                }
            },
            "frozen": false,
            "withdraw_events": {
                "counter": "31090",
                "guid": {
                    "id": {
                        "addr": "0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6",
                        "creation_num": "5"
                    }
                }
            }
        }
    },
    {
        "type": "0x1::account::Account",
        "data": {
            "authentication_key": "0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6",
            "coin_register_events": {
                "counter": "2",
                "guid": {
                    "id": {
                        "addr": "0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6",
                        "creation_num": "0"
                    }
                }
            },
            "guid_creation_num": "6",
            "key_rotation_events": {
                "counter": "0",
                "guid": {
                    "id": {
                        "addr": "0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6",
                        "creation_num": "1"
                    }
                }
            },
            "rotation_capability_offer": {
                "for": {
                    "vec": []
                }
            },
            "sequence_number": "45399",
            "signer_capability_offer": {
                "for": {
                    "vec": []
                }
            }
        }
    },
    {
        "type": "0x1::managed_coin::Capabilities<0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6::opc::OPC>",
        "data": {
            "burn_cap": {
                "dummy_field": false
            },
            "freeze_cap": {
                "dummy_field": false
            },
            "mint_cap": {
                "dummy_field": false
            }
        }
    }
]
```

{% endcode %}


# Get account balance​

Retrieves account balance for coins / fungible asset (only for primary fungible asset store) for a given account, asset type and a specific ledger version.

The Aptos nodes prune account state history, via a configurable time window. If the requested ledger version has been pruned, the server responds with a 410.

#### **Path Parameters:**

**address**  string \<hex> required

Address of account with or without a `0x` prefix

**asset\_type** string \<hex> required

A hex encoded 32 byte Aptos account address or a struct tag.

This is represented in a string as a 64 character hex string, sometimes shortened by stripping leading 0s, and adding a 0x or Format: `{address}::{module name}::{struct name}`

#### Query Parameters：

**ledger\_version** string\<uint64>

Ledger version to get state of account. If not provided, it will be the latest version

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

integer uint64

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X GET -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/accounts/0x21746fce17b3a44156107bdc483bfeabb0bc4a37b8ceabaff93ed454bdea9653/balance/0x1::aptos_coin::AptosCoin

// Result
1817122
```

{% endcode %}


# Get account modules

Retrieves all account modules' bytecode for a given account at a specific ledger version.

The Aptos nodes prune account state history, via a configurable time window. If the requested ledger version has been pruned, the server responds with a 410.

#### **Path Parameters:**

**address**  string \<hex> required

Address of account with or without a `0x` prefix

#### Query Parameters：

**ledger\_version** string\<uint64>

Ledger version to get state of account. If not provided, it will be the latest version

**limit integer**

Max number of account resources to retrieve. If not provided, defaults to default page size

**start string**

Cursor specifying where to start for pagination. This cursor cannot be derived manually client-side. Instead, you must call this endpoint once without this query parameter specified, and then use the cursor returned in the X-Aptos-Cursor header in the response.

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

**array of:**

**bytecode** string\<hex>&#x20;

All bytes (Vec) data is represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte.

**abi** object

A Move module

&#x20;   **address** string\<hex>

&#x20;   A hex encoded 32 byte Aptos account address.

&#x20;   **name** string&#x20;

&#x20;   **friends** array\[string]

&#x20;   Friends of the module

&#x20;   **exposed\_functions** array\[object]

&#x20;   Public functions of the module

&#x20;   **structs** array\[object]

&#x20;   Structs of the module

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X GET -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/accounts/0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6/modules

// Result
[
    {
        "bytecode": "0xa11ceb0b050000000b01000c020c0a03167304890114059d013107ce01eb0108b9034006f90324109d045e0afb04050c80058f0100000101010201030104010500060000041507010000000700010000080203000009000300000a040500000b060300000c000300000d030700000e060300000f0603000511000400021204010100030802030100031309030100021404050100030b06030100020c000301000216030a010004170b05010004180b0c0100020e06030100010e0603000a080b080c080d080e080f08100811071207130801060c010302060c03000105010103060c0503010401080005060c0a020a020201010b01010401060b0101090001060900036f70630d6170746f735f6163636f756e7404636f696e0c6d616e616765645f636f696e066f7074696f6e067369676e6572034f50430962616c616e63654f66046275726e0b696e69745f6d6f64756c650d69735f72656769737465726564046d696e740872656769737465720b746f74616c537570706c79087472616e736665720b7472616e736665724150540b64756d6d795f6669656c640a616464726573735f6f660762616c616e63650a696e697469616c697a651569735f6163636f756e745f72656769737465726564064f7074696f6e06737570706c790769735f736f6d6506626f72726f776de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d60000000000000000000000000000000000000000000000000000000000000001030801000000000000000a02100f4f6365616e205061726b20436f696e0a0204034f5043126170746f733a3a6d657461646174615f76304a01010000000000000010454e4f5f4341504142494c49544945532f4163636f756e7420686173206e6f206361706162696c697469657320286275726e2f6d696e742f667265657a65292e00020110010001000003040b0011093800020101040003040b000b013801020200000003070b00070107023106083802020301000003030b003803020401040003050b000b010b023804020501040003030b00380502060100000a0b38060c000e0038070307060100000000000000270e00380814020701040003050b000b010b023809020801040003050b000b010b0211140200",
        "abi": {
            "address": "0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6",
            "name": "opc",
            "friends": [],
            "exposed_functions": [
                {
                    "name": "balanceOf",
                    "visibility": "public",
                    "is_entry": false,
                    "generic_type_params": [],
                    "params": [
                        "&signer"
                    ],
                    "return": [
                        "u64"
                    ]
                },
                {
                    "name": "burn",
                    "visibility": "public",
                    "is_entry": true,
                    "generic_type_params": [],
                    "params": [
                        "&signer",
                        "u64"
                    ],
                    "return": []
                },
                {
                    "name": "is_registered",
                    "visibility": "public",
                    "is_entry": false,
                    "generic_type_params": [],
                    "params": [
                        "address"
                    ],
                    "return": [
                        "bool"
                    ]
                },
                {
                    "name": "mint",
                    "visibility": "public",
                    "is_entry": true,
                    "generic_type_params": [],
                    "params": [
                        "&signer",
                        "address",
                        "u64"
                    ],
                    "return": []
                },
                {
                    "name": "register",
                    "visibility": "public",
                    "is_entry": true,
                    "generic_type_params": [],
                    "params": [
                        "&signer"
                    ],
                    "return": []
                },
                {
                    "name": "totalSupply",
                    "visibility": "public",
                    "is_entry": false,
                    "generic_type_params": [],
                    "params": [],
                    "return": [
                        "u128"
                    ]
                },
                {
                    "name": "transfer",
                    "visibility": "public",
                    "is_entry": true,
                    "generic_type_params": [],
                    "params": [
                        "&signer",
                        "address",
                        "u64"
                    ],
                    "return": []
                },
                {
                    "name": "transferAPT",
                    "visibility": "public",
                    "is_entry": true,
                    "generic_type_params": [],
                    "params": [
                        "&signer",
                        "address",
                        "u64"
                    ],
                    "return": []
                }
            ],
            "structs": [
                {
                    "name": "OPC",
                    "is_native": false,
                    "abilities": [],
                    "generic_type_params": [],
                    "fields": [
                        {
                            "name": "dummy_field",
                            "type": "bool"
                        }
                    ]
                }
            ]
        }
    }
]
```

{% endcode %}


# Get account resource

Retrieves an individual resource from a given account and at a specific ledger version.

The Aptos nodes prune account state history, via a configurable time window. If the requested ledger version has been pruned, the server responds with a 410.

#### **Path Parameters:**

**address**  string \<hex> required

Address of account with or without a `0x` prefix

**resource\_type** string

Name of struct to retrieve e.g. `0x1::account::Account`

#### Query Parameters：

**ledger\_version** string\<uint64>

Ledger version to get state of account. If not provided, it will be the latest version

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

A parsed Move resource

**type** string

String representation of a MoveStructTag (on-chain Move struct type). This exists so you can specify MoveStructTags as path/query parameters, e.g. for get\_events\_by\_event\_handle.

**data** object

This is a JSON representation of some data within an account resource. More specifically, it is a map of strings to arbitrary JSON values/objects, where the keys are top level fields within the given resource.

To clarify, you might query for 0x1::account::Account and see the example data.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X GET -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/accounts/0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6/resource/0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>

// Result
{
    "type": "0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>",
    "data": {
        "coin": {
            "value": "2708570300"
        },
        "deposit_events": {
            "counter": "5",
            "guid": {
                "id": {
                    "addr": "0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6",
                    "creation_num": "2"
                }
            }
        },
        "frozen": false,
        "withdraw_events": {
            "counter": "13691",
            "guid": {
                "id": {
                    "addr": "0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6",
                    "creation_num": "3"
                }
            }
        }
    }
}
```

{% endcode %}


# Get account module

Retrieves an individual module from a given account and at a specific ledger version.

The Aptos nodes prune account state history, via a configurable time window. If the requested ledger version has been pruned, the server responds with a 410.

#### **Path Parameters:**

**address**  string \<hex> required

Address of account with or without a `0x` prefix

**module\_name** string required

Name of module to retrieve e.g. `coin`

#### Query Parameters：

**ledger\_version** string\<uint64>

Ledger version to get state of account. If not provided, it will be the latest version

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

Move module bytecode along with it's ABI

**bytecode** string\<hex>&#x20;

All bytes (Vec) data is represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte.

**abi** object

A Move module

&#x20;   **address** string\<hex>

&#x20;   A hex encoded 32 byte Aptos account address.

&#x20;   **name** string&#x20;

&#x20;   **friends** array\[string]

&#x20;   Friends of the module

&#x20;   **exposed\_functions** array\[object]

&#x20;   Public functions of the module

&#x20;   **structs** array\[object]

&#x20;   Structs of the module

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X GET -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/accounts/0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6/module/opc

// Result
[
    {
        "bytecode": "0xa11ceb0b050000000b01000c020c0a03167304890114059d013107ce01eb0108b9034006f90324109d045e0afb04050c80058f0100000101010201030104010500060000041507010000000700010000080203000009000300000a040500000b060300000c000300000d030700000e060300000f0603000511000400021204010100030802030100031309030100021404050100030b06030100020c000301000216030a010004170b05010004180b0c0100020e06030100010e0603000a080b080c080d080e080f08100811071207130801060c010302060c03000105010103060c0503010401080005060c0a020a020201010b01010401060b0101090001060900036f70630d6170746f735f6163636f756e7404636f696e0c6d616e616765645f636f696e066f7074696f6e067369676e6572034f50430962616c616e63654f66046275726e0b696e69745f6d6f64756c650d69735f72656769737465726564046d696e740872656769737465720b746f74616c537570706c79087472616e736665720b7472616e736665724150540b64756d6d795f6669656c640a616464726573735f6f660762616c616e63650a696e697469616c697a651569735f6163636f756e745f72656769737465726564064f7074696f6e06737570706c790769735f736f6d6506626f72726f776de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d60000000000000000000000000000000000000000000000000000000000000001030801000000000000000a02100f4f6365616e205061726b20436f696e0a0204034f5043126170746f733a3a6d657461646174615f76304a01010000000000000010454e4f5f4341504142494c49544945532f4163636f756e7420686173206e6f206361706162696c697469657320286275726e2f6d696e742f667265657a65292e00020110010001000003040b0011093800020101040003040b000b013801020200000003070b00070107023106083802020301000003030b003803020401040003050b000b010b023804020501040003030b00380502060100000a0b38060c000e0038070307060100000000000000270e00380814020701040003050b000b010b023809020801040003050b000b010b0211140200",
        "abi": {
            "address": "0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6",
            "name": "opc",
            "friends": [],
            "exposed_functions": [
                {
                    "name": "balanceOf",
                    "visibility": "public",
                    "is_entry": false,
                    "generic_type_params": [],
                    "params": [
                        "&signer"
                    ],
                    "return": [
                        "u64"
                    ]
                },
                {
                    "name": "burn",
                    "visibility": "public",
                    "is_entry": true,
                    "generic_type_params": [],
                    "params": [
                        "&signer",
                        "u64"
                    ],
                    "return": []
                },
                {
                    "name": "is_registered",
                    "visibility": "public",
                    "is_entry": false,
                    "generic_type_params": [],
                    "params": [
                        "address"
                    ],
                    "return": [
                        "bool"
                    ]
                },
                {
                    "name": "mint",
                    "visibility": "public",
                    "is_entry": true,
                    "generic_type_params": [],
                    "params": [
                        "&signer",
                        "address",
                        "u64"
                    ],
                    "return": []
                },
                {
                    "name": "register",
                    "visibility": "public",
                    "is_entry": true,
                    "generic_type_params": [],
                    "params": [
                        "&signer"
                    ],
                    "return": []
                },
                {
                    "name": "totalSupply",
                    "visibility": "public",
                    "is_entry": false,
                    "generic_type_params": [],
                    "params": [],
                    "return": [
                        "u128"
                    ]
                },
                {
                    "name": "transfer",
                    "visibility": "public",
                    "is_entry": true,
                    "generic_type_params": [],
                    "params": [
                        "&signer",
                        "address",
                        "u64"
                    ],
                    "return": []
                },
                {
                    "name": "transferAPT",
                    "visibility": "public",
                    "is_entry": true,
                    "generic_type_params": [],
                    "params": [
                        "&signer",
                        "address",
                        "u64"
                    ],
                    "return": []
                }
            ],
            "structs": [
                {
                    "name": "OPC",
                    "is_native": false,
                    "abilities": [],
                    "generic_type_params": [],
                    "fields": [
                        {
                            "name": "dummy_field",
                            "type": "bool"
                        }
                    ]
                }
            ]
        }
    }
]
```

{% endcode %}


# Get blocks by height

This endpoint allows you to get the transactions in a block and the corresponding block information.

Transactions are limited by max default transactions size. If not all transactions are present, the user will need to query for the rest of the transactions via the get transactions API.

If the block is pruned, it will return a 410.

#### **Path Parameters:**

**block\_height** integer required

Block height to lookup. Starts at 0

#### Query Parameters：

**with\_transactions** boolean

If set to true, include all transactions in the block. If not provided, no transactions will be retrieved

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

A Block with or without transactions

**block\_height** string\<uint64>

A string containing a 64-bit unsigned integer.

**block\_hash** string&#x20;

**block\_timestamp** string\<uint64>

A string containing a 64-bit unsigned integer.

**first\_version** string\<uint64>

A string containing a 64-bit unsigned integer.

**last\_version** string\<uint64>

A string containing a 64-bit unsigned integer.

**transactions** array

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X GET -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/blocks/by_height/3617300?with_transactions=true

// Result
{
    "block_height": "3617300",
    "block_hash": "0x476a4ef5f0860e246cc11be465a2af1abac579feecaa9b6577d89b86a087bf8c",
    "block_timestamp": "1666770485746778",
    "first_version": "13287613",
    "last_version": "13287614",
    "transactions": [<array of transactions>]
}
```

{% endcode %}


# Get blocks by version

This endpoint allows you to get the transactions in a block and the corresponding block information given a version in the block.

Transactions are limited by max default transactions size. If not all transactions are present, the user will need to query for the rest of the transactions via the get transactions API.

If the block is pruned, it will return a 410.

#### **Path Parameters:**

**version** integer required

Ledger version to lookup block information for

#### Query Parameters：

**with\_transactions** boolean

If set to true, include all transactions in the block. If not provided, no transactions will be retrieved

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

A Block with or without transactions

**block\_height** string\<uint64>

A string containing a 64-bit unsigned integer.

**block\_hash** string&#x20;

**block\_timestamp** string\<uint64>

A string containing a 64-bit unsigned integer.

**first\_version** string\<uint64>

A string containing a 64-bit unsigned integer.

**last\_version** string\<uint64>

A string containing a 64-bit unsigned integer.

**transactions** array&#x20;

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X GET -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/blocks/by_version/1

// Result
{
    "block_height": "11631405",
    "block_hash": "0xee76aa9f24a008390e98d73739adaa311f1ad05b8d75ad0a6b1213dcc5ceebbc",
    "block_timestamp": "1669084548326324",
    "first_version": "36173262",
    "last_version": "36173265",
    "transactions": [<array of transactions>]
}
```

{% endcode %}


# Get events by creation number

Event types are globally identifiable by an account `address` and monotonically increasing `creation_number`, one per event type emitted to the given account. This API returns events corresponding to that that event type.

#### **Path Parameters:**

**address** string required

Hex-encoded 32 byte Aptos account, with or without a `0x` prefix, for which events are queried. This refers to the account that events were emitted to, not the account hosting the move module that emits that event type.

**creation\_number** string\<uint64> required

Creation number corresponding to the event stream originating from the given account.

#### Query Parameters：

**limit** integer

Max number of events to retrieve. If unspecified, defaults to default page size.

**start** string\<uint64>

Starting sequence number of events. If unspecified, by default will retrieve the most recent events

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

array of:

**version** string\<uint64>

A string containing a 64-bit unsigned integer.

**guid** object&#x20;

&#x20;   **creation\_number** string\<uint64>

&#x20;   A string containing a 64-bit unsigned integer.Show all...

&#x20;   **account\_address** string\<hex>

&#x20;   A hex encoded 32 byte Aptos account address.Show all...

**sequence\_number** string\<uint64>

A string containing a 64-bit unsigned integer.

**type** string

String representation of an on-chain Move type tag that is exposed in transaction payload. Values: - bool - u8 - u64 - u128 - address - signer - vector: `vector<{non-reference MoveTypeId}>` - struct: `{address}::{module_name}::{struct_name}::<{generic types}>`...

**data**

The JSON representation of the event

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X GET -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/accounts/0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6/events/0

// Result
[
    {
        "version": "26258912",
        "guid": {
            "creation_number": "0",
            "account_address": "0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6"
        },
        "sequence_number": "0",
        "type": "0x1::account::CoinRegisterEvent",
        "data": {
            "type_info": {
                "account_address": "0x1",
                "module_name": "0x6170746f735f636f696e",
                "struct_name": "0x4170746f73436f696e"
            }
        }
    },
    {
        "version": "26288123",
        "guid": {
            "creation_number": "0",
            "account_address": "0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6"
        },
        "sequence_number": "1",
        "type": "0x1::account::CoinRegisterEvent",
        "data": {
            "type_info": {
                "account_address": "0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6",
                "module_name": "0x6f7063",
                "struct_name": "0x4f5043"
            }
        }
    }
]
```

{% endcode %}


# Get events by event handle

This API uses the given account `address`, `eventHandle`, and `fieldName` to build a key that can globally identify an event types. It then uses this key to return events emitted to the given account matching that event type.

#### **Path Parameters:**

**address** string required

Hex-encoded 32 byte Aptos account, with or without a `0x` prefix, for which events are queried. This refers to the account that events were emitted to, not the account hosting the move module that emits that event type.

**event\_handle** string\<uint64> required

Name of struct to lookup event handle e.g. `0x1::account::Account`

**field\_name** string required

Name of field to lookup event handle e.g. `withdraw_events`

#### Query Parameters：

**limit** integer

Max number of events to retrieve. If unspecified, defaults to default page size.

**start** string\<uint64>

Starting sequence number of events. If unspecified, by default will retrieve the most recent events

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

array of:

**version** string\<uint64>

A string containing a 64-bit unsigned integer.

**guid** object&#x20;

&#x20;   **creation\_number** string\<uint64>

&#x20;   A string containing a 64-bit unsigned integer.Show all...

&#x20;   **account\_address** string\<hex>

&#x20;   A hex encoded 32 byte Aptos account address.Show all...

**sequence\_number** string\<uint64>

A string containing a 64-bit unsigned integer.

**type** string

String representation of an on-chain Move type tag that is exposed in transaction payload. Values: - bool - u8 - u64 - u128 - address - signer - vector: `vector<{non-reference MoveTypeId}>` - struct: `{address}::{module_name}::{struct_name}::<{generic types}>`...

**data**

The JSON representation of the event

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X GET -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/accounts/0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6/events//0x1%3A%3Acoin%3A%3ACoinStore%3C0x1%3A%3Aaptos_coin%3A%3AAptosCoin%3E/withdraw_events

// Result
[
    {
        "version": "36173260",
        "guid": {
            "creation_number": "3",
            "account_address": "0x1deca4ed8fe4c606db4af334621e97f5c23a7aec1a262d0d15e513aba830daee"
        },
        "sequence_number": "0",
        "type": "0x1::coin::WithdrawEvent",
        "data": {
            "amount": "1188990000"
        }
    }
]
```

{% endcode %}


# Show OpenAPI explorer

Provides a UI that you can use to explore the API. You can also retrieve the API directly at /spec.yaml and /spec.json.

#### **Path Parameters:**

None

#### Query Parameters：

None

#### **Response Header:**

None

#### **Response Body:**

Text/html

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X GET -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/spec

// Result
<!doctype html>
<html lang="en">

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
	<meta http-equiv="cache-control" content="no-cache">
	<title>Aptos REST API</title>
	<!-- Embed elements Elements via Web Component -->
	<script src="https://unpkg.com/@stoplight/elements/web-components.min.js"></script>
	<link rel="stylesheet" href="https://unpkg.com/@stoplight/elements/styles.min.css">
</head>

<body>
	<elements-api apiDescriptionUrl="spec.yaml" router="hash" layout="sidebar" hideInternal="true" />
</body>

</html>
```

{% endcode %}


# Show some basic info of the node

<br>

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X GET -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/info

// Result
{
    "new_storage_format": false,
    "continuous_syncing_mode": "ExecuteTransactionsOrApplyOutputs",
    "bootstrapping_mode": "DownloadLatestStates",
    "internal_indexer_config": {
        "enable_transaction": false,
        "enable_event": false,
        "enable_event_v2_translation": false,
        "event_v2_translation_ignores_below_version": 0,
        "enable_statekeys": false,
        "batch_size": 10000
    }
}
```

{% endcode %}


# Check basic node health

By default this endpoint just checks that it can get the latest ledger info and then returns 200.

If the duration\_secs param is provided, this endpoint will return a 200 if the following condition is true:

`server_latest_ledger_info_timestamp >= server_current_time_timestamp - duration_secs`

#### **Path Parameters:**

None

#### Query Parameters：

**duration\_secs** integer

Threshold in seconds that the server can be behind to be considered healthy

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

Representation of a successful healthcheck

**message** string<br>

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X GET -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/-/healthy

// Result
{
    "message": "aptos-node:ok"
}
```

{% endcode %}


# Get ledger info

Get the latest ledger information, including data such as chain ID, role type, ledger versions, epoch, etc.

If the duration\_secs param is provided, this endpoint will return a 200 if the following condition is true:

`server_latest_ledger_info_timestamp >= server_current_time_timestamp - duration_secs`

#### **Path Parameters:**

None

#### Query Parameters：

None

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

The struct holding all data returned to the client by the index endpoint (i.e., GET "/"). Only for responding in JSON

**chain\_id** integer&#x20;

Chain ID of the current chain

**epoch** string\<uint64>

A string containing a 64-bit unsigned integer.

**ledger\_version** string\<uint64>

A string containing a 64-bit unsigned integer.

**oldest\_ledger\_version** string\<uint64>

A string containing a 64-bit unsigned integer.

**ledger\_timestamp** string\<uint64>

A string containing a 64-bit unsigned integer.

**node\_role** string&#x20;

Allowed values: validator full\_node

**oldest\_block\_height** string\<uint64>

A string containing a 64-bit unsigned integer.

**block\_height** string\<uint64>

A string containing a 64-bit unsigned integer.

**git\_hash** string<br>

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X GET -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/

// Result
{
    "chain_id": 1,
    "epoch": "487",
    "ledger_version": "36258508",
    "oldest_ledger_version": "0",
    "ledger_timestamp": "1669096800308226",
    "node_role": "full_node",
    "oldest_block_height": "0",
    "block_height": "11667199",
    "git_hash": "3b12b747b53a0dc610b0ea960459bb834a940852"
}
```

{% endcode %}


# Get table item

Get a table item at a specific ledger version from the table identified by {table\_handle} in the path and the "key" (TableItemRequest) provided in the request body.

If the duration\_secs param is provided, this endpoint will return a 200 if the following condition is true:

`server_latest_ledger_info_timestamp >= server_current_time_timestamp - duration_secs`

#### **Path Parameters:**

**table\_handle** string required

Table handle hex encoded 32-byte string

#### Query Parameters：

**ledger\_version** string\<uint64>

Ledger version to get state of account. If not provided, it will be the latest version

#### Request Body

Table Item request for the GetTableItem API

**key\_type** string&#x20;

String representation of an on-chain Move type tag that is exposed in transaction payload. Values: - bool - u8 - u64 - u128 - address - signer - vector: `vector<{non-reference MoveTypeId}>` - struct: `{address}::{module_name}::{struct_name}::<{generic types}>`

**value\_type** string

String representation of an on-chain Move type tag that is exposed in transaction payload. Values: - bool - u8 - u64 - u128 - address - signer - vector: `vector<{non-reference MoveTypeId}>` - struct: `{address}::{module_name}::{struct_name}::<{generic types}>`

**key**&#x20;

The value of the table item's key

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

**object**

An enum of the possible Move value types

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X POST -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/tables/table_handle/item
--data
{
  "key_type": "string",
  "value_type": "string",
  "key": "string"
}

// Result
{
    
}
```

{% endcode %}


# Get transactions

Retrieve on-chain committed transactions. The page size and start ledger version can be provided to get a specific sequence of transactions.

If the version has been pruned, then a 410 will be returned.

To retrieve a pending transaction, use /transactions/by\_hash.

#### Query Parameters：

**limit** integer

Max number of transactions to retrieve. If not provided, defaults to default page size

**start** string\<uint64>

Ledger version to start list of transactions. If not provided, defaults to showing the latest transactions

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

array

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X GET -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/transactions?limit=1

// Result
[
    {
        "version": "37014771",
        "hash": "0x02cfe618218dbd461b3847b04c746ca5bc49e83edd206b22b5f123ae0f91b5a7",
        "state_change_hash": "0xafb6e14fe47d850fd0a7395bcfb997ffacf4715e0f895cc162c218e4a7564bc6",
        "event_root_hash": "0x414343554d554c41544f525f504c414345484f4c4445525f4841534800000000",
        "state_checkpoint_hash": "0x28a5ddd36b777ce722d203fe4fa4e20258a345984653a7d844f320dc44e665b8",
        "gas_used": "0",
        "success": true,
        "vm_status": "Executed successfully",
        "accumulator_root_hash": "0xe2e1419971779b4a17ba82fc1897c9818465998820d7d9b9184a83e2cdd846ff",
        "changes": [],
        "timestamp": "1669191797859229",
        "type": "state_checkpoint_transaction"
    }
]
```

{% endcode %}


# Submit transaction

Retrieve on-chain committed transactions. The page size and start ledger version can be provided to get a specific sequence of transactions.

This endpoint accepts transaction submissions in two formats.

To submit a transaction as JSON, you must submit a SubmitTransactionRequest. To build this request, do the following:

1. Encode the transaction as BCS. If you are using a language that has

native BCS support, make sure of that library. If not, you may take advantage of /transactions/encode\_submission. When using this endpoint, make sure you trust the node you're talking to, as it is possible they could manipulate your request. 2. Sign the encoded transaction and use it to create a TransactionSignature. 3. Submit the request. Make sure to use the "application/json" Content-Type.

To submit a transaction as BCS, you must submit a SignedTransaction encoded as BCS. See SignedTransaction in types/src/transaction/mod.rs. Make sure to use the `application/x.aptos.signed_transaction+bcs` Content-Type.

#### Request body：

A request to submit a transaction

**sender** string\<hex> required

A hex encoded 32 byte Aptos account address.

**sequence\_number** string\<uint64> required

A string containing a 64-bit unsigned integer.

**max\_gas\_amount** string\<uint64> required

A string containing a 64-bit unsigned integer.

**gas\_unit\_price** string\<uint64> required

A string containing a 64-bit unsigned integer.

**expiration\_timestamp\_secs** string\<uint64> required

A string containing a 64-bit unsigned integer.

**payload** object required

Payload which runs a single entry function, or

Payload which runs a script that can run multiple functions, or

An enum of the possible transaction payloads

**signature** object required

A single Ed25519 signature, or

A Ed25519 multi-sig signature, or

Multi agent signature for multi agent transactions

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

A transaction waiting in mempool

**hash** string

**sender** string\<hex> required

A hex encoded 32 byte Aptos account address.

**sequence\_number** string\<uint64> required

A string containing a 64-bit unsigned integer.

**max\_gas\_amount** string\<uint64> required

A string containing a 64-bit unsigned integer.

**gas\_unit\_price** string\<uint64> required

A string containing a 64-bit unsigned integer.

**expiration\_timestamp\_secs** string\<uint64> required

A string containing a 64-bit unsigned integer.

**payload** object required

Payload which runs a single entry function, or

Payload which runs a script that can run multiple functions, or

An enum of the possible transaction payloads

**signature** object required

A single Ed25519 signature, or

A Ed25519 multi-sig signature, or

Multi agent signature for multi agent transactions

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X POST -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/transactions
--data
{
  "sender": "0x88fbd33f54e1126269769780feb24480428179f552e2313fbe571b72e62a1ca1 ",
  "sequence_number": "32425224034",
  "max_gas_amount": "32425224034",
  "gas_unit_price": "32425224034",
  "expiration_timestamp_secs": "32425224034",
  "payload": {
    "type": "entry_function_payload",
    "function": "0x1::aptos_coin::transfer",
    "type_arguments": [
      "string"
    ],
    "arguments": [
      null
    ]
  },
  "signature": {
    "type": "ed25519_signature",
    "public_key": "0x88fbd33f54e1126269769780feb24480428179f552e2313fbe571b72e62a1ca1 ",
    "signature": "0x88fbd33f54e1126269769780feb24480428179f552e2313fbe571b72e62a1ca1 "
  }
}

// Result
{

}
```

{% endcode %}


# Get transaction by hash

Look up a transaction by its hash. This is the same hash that is returned by the API when submitting a transaction

When given a transaction hash, the server first looks for the transaction in storage (on-chain, committed). If no on-chain transaction is found, it looks the transaction up by hash in the mempool (pending, not yet committed).

To create a transaction hash by yourself, do the following:

1. Hash message bytes: "RawTransaction" bytes + BCS bytes of Transaction.
2. Apply hash algorithm `SHA3-256` to the hash message bytes.
3. Hex-encode the hash bytes with `0x` prefix.

#### Path Parameters：：

**txn\_hash** string required

Hash of transaction to retrieve

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

object

**Type** string

**Hash**  string

**sender** string\<hex> required

A hex encoded 32 byte Aptos account address.

**sequence\_number** string\<uint64> required

A string containing a 64-bit unsigned integer.

**max\_gas\_amount** string\<uint64> required

A string containing a 64-bit unsigned integer.

**gas\_unit\_price** string\<uint64> required

A string containing a 64-bit unsigned integer.

**expiration\_timestamp\_secs** string\<uint64> required

A string containing a 64-bit unsigned integer.

**payload** object required

Payload which runs a single entry function, or

Payload which runs a script that can run multiple functions, or

An enum of the possible transaction payloads

**signature** object required

A single Ed25519 signature, or

A Ed25519 multi-sig signature, or

Multi agent signature for multi agent transactions

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X GET -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/transactions/by_hash/0xe4cc358f3c1184cb1787b41fc52dfcfc25a2609ada71b8aa6fc9b3e4428d9475


// Result
{
    "version": "36173264",
    "hash": "0xe4cc358f3c1184cb1787b41fc52dfcfc25a2609ada71b8aa6fc9b3e4428d9475",
    "state_change_hash": "0x733e205fd66281683722f1a9446aa18a66b67ad7cdb2b01c8f947eda91f20b16",
    "event_root_hash": "0x8aa679c968e4450352db938fad90be53fb8fc3b18c97cebc39b396bea173ae22",
    "state_checkpoint_hash": null,
    "gas_used": "994",
    "success": true,
    "vm_status": "Executed successfully",
    "accumulator_root_hash": "0x87aa62641c889446f6c20673354eefd2a568e6730f5e19fe12ad12fc33ac0e32",
    "changes": [
        {
            "address": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
            "state_key_hash": "0xb59d2fe490a2aaa6aa8907958508e7e9aab8a6ca0371466b0d58beabe9cdc15a",
            "data": {
                "type": "0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>",
                "data": {
                    "coin": {
                        "value": "600"
                    },
                    "deposit_events": {
                        "counter": "1",
                        "guid": {
                            "id": {
                                "addr": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
                                "creation_num": "2"
                            }
                        }
                    },
                    "frozen": false,
                    "withdraw_events": {
                        "counter": "0",
                        "guid": {
                            "id": {
                                "addr": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
                                "creation_num": "3"
                            }
                        }
                    }
                }
            },
            "type": "write_resource"
        },
        {
            "address": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
            "state_key_hash": "0x27900227132855a653e08f2e0d992df3362b0c099b58ce8992c1d9bf744e0984",
            "data": {
                "type": "0x1::coin::CoinStore<0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6::opc::OPC>",
                "data": {
                    "coin": {
                        "value": "0"
                    },
                    "deposit_events": {
                        "counter": "0",
                        "guid": {
                            "id": {
                                "addr": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
                                "creation_num": "4"
                            }
                        }
                    },
                    "frozen": false,
                    "withdraw_events": {
                        "counter": "0",
                        "guid": {
                            "id": {
                                "addr": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
                                "creation_num": "5"
                            }
                        }
                    }
                }
            },
            "type": "write_resource"
        },
        {
            "address": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
            "state_key_hash": "0x1a41b2d0196e13823ddf1eccc83624522dee831a483250394b838c57cb148fe5",
            "data": {
                "type": "0x1::account::Account",
                "data": {
                    "authentication_key": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
                    "coin_register_events": {
                        "counter": "2",
                        "guid": {
                            "id": {
                                "addr": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
                                "creation_num": "0"
                            }
                        }
                    },
                    "guid_creation_num": "6",
                    "key_rotation_events": {
                        "counter": "0",
                        "guid": {
                            "id": {
                                "addr": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
                                "creation_num": "1"
                            }
                        }
                    },
                    "rotation_capability_offer": {
                        "for": {
                            "vec": []
                        }
                    },
                    "sequence_number": "1",
                    "signer_capability_offer": {
                        "for": {
                            "vec": []
                        }
                    }
                }
            },
            "type": "write_resource"
        },
        {
            "state_key_hash": "0x6e4b28d40f98a106a65163530924c0dcb40c1349d3aa915d108b4d6cfc1ddb19",
            "handle": "0x1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca",
            "key": "0x0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935",
            "value": "0xf64ca977878065010000000000000000",
            "data": null,
            "type": "write_table_item"
        }
    ],
    "sender": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
    "sequence_number": "0",
    "max_gas_amount": "1000",
    "gas_unit_price": "100",
    "expiration_timestamp_secs": "1669084567",
    "payload": {
        "function": "0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6::opc::register",
        "type_arguments": [],
        "arguments": [],
        "type": "entry_function_payload"
    },
    "signature": {
        "public_key": "0x67bb99480a4b9aa7f83ba56570a6fe939b5a80286b1456cb0e52972f3af44698",
        "signature": "0x2b47a221992fba90f8a11efef9a1b6cd82c9a3a17cf684fb80419ba5deada52dc52e77d8b01c780141126ac319df4256db7521ed0cf1930a347e70de04f8cd0a",
        "type": "ed25519_signature"
    },
    "events": [
        {
            "guid": {
                "creation_number": "0",
                "account_address": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2"
            },
            "sequence_number": "1",
            "type": "0x1::account::CoinRegisterEvent",
            "data": {
                "type_info": {
                    "account_address": "0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6",
                    "module_name": "0x6f7063",
                    "struct_name": "0x4f5043"
                }
            }
        }
    ],
    "timestamp": "1669084548326324",
    "type": "user_transaction"
}
```

{% endcode %}


# Wait for transaction by hash​

Same as /transactions/by\_hash, but will wait for a pending transaction to be committed.

To be used as a long poll optimization by clients, to reduce latency caused by polling. The "long" poll is generally a second or less but dictated by the server; the client must deal with the result as if the request was a normal /transactions/by\_hash request, e.g., by retrying if the transaction is pending.

#### Path Parameters：：

**txn\_hash** string required

Hash of transaction to retrieve

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

object

**Type** string

**Hash**  string

**sender** string\<hex> required

A hex encoded 32 byte Aptos account address.

**sequence\_number** string\<uint64> required

A string containing a 64-bit unsigned integer.

**max\_gas\_amount** string\<uint64> required

A string containing a 64-bit unsigned integer.

**gas\_unit\_price** string\<uint64> required

A string containing a 64-bit unsigned integer.

**expiration\_timestamp\_secs** string\<uint64> required

A string containing a 64-bit unsigned integer.

**payload** object required

Payload which runs a single entry function, or

Payload which runs a script that can run multiple functions, or

An enum of the possible transaction payloads

**signature** object required

A single Ed25519 signature, or

A Ed25519 multi-sig signature, or

Multi agent signature for multi agent transactions

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X GET -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/transactions/wait_by_hash/0x6fe169a36817e5b4225a1d878f6a8680f9a032cce180d1b8f4ddef9f0f045b6c

// Result

```

{% endcode %}


# Get transaction by version​

Retrieves a transaction by a given version. If the version has been pruned, a 410 will be returned.

#### Path Parameters：：

**txn\_version** string required

Version of transaction to retrieve

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

object

**Type** string

**Hash**  string

**sender** string\<hex> required

A hex encoded 32 byte Aptos account address.

**sequence\_number** string\<uint64> required

A string containing a 64-bit unsigned integer.

**max\_gas\_amount** string\<uint64> required

A string containing a 64-bit unsigned integer.

**gas\_unit\_price** string\<uint64> required

A string containing a 64-bit unsigned integer.

**expiration\_timestamp\_secs** string\<uint64> required

A string containing a 64-bit unsigned integer.

**payload** object required

Payload which runs a single entry function, or

Payload which runs a script that can run multiple functions, or

An enum of the possible transaction payloads

**signature** object required

A single Ed25519 signature, or

A Ed25519 multi-sig signature, or

Multi agent signature for multi agent transactions

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X GET -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/transactions/by_version/2490640503


// Result

```

{% endcode %}


# Get account transactions

Retrieves transactions from an account. If the start version is too far in the past a 410 will be returned.  If no start version is given, it will start at 0

#### Path Parameters：

**address** string required

Address of account with or without a `0x` prefix

#### Query Parameters:

**limit** integer

Max number of transactions to retrieve. If not provided, defaults to default page size

**start** string\<uint64>

Ledger version to start list of transactions. If not provided, defaults to showing the latest transactions

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

array

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X GET -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/accounts/0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2/transactions


// Result
[
    {
        "version": "36173264",
        "hash": "0xe4cc358f3c1184cb1787b41fc52dfcfc25a2609ada71b8aa6fc9b3e4428d9475",
        "state_change_hash": "0x733e205fd66281683722f1a9446aa18a66b67ad7cdb2b01c8f947eda91f20b16",
        "event_root_hash": "0x8aa679c968e4450352db938fad90be53fb8fc3b18c97cebc39b396bea173ae22",
        "state_checkpoint_hash": null,
        "gas_used": "994",
        "success": true,
        "vm_status": "Executed successfully",
        "accumulator_root_hash": "0x87aa62641c889446f6c20673354eefd2a568e6730f5e19fe12ad12fc33ac0e32",
        "changes": [
            {
                "address": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
                "state_key_hash": "0xb59d2fe490a2aaa6aa8907958508e7e9aab8a6ca0371466b0d58beabe9cdc15a",
                "data": {
                    "type": "0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>",
                    "data": {
                        "coin": {
                            "value": "600"
                        },
                        "deposit_events": {
                            "counter": "1",
                            "guid": {
                                "id": {
                                    "addr": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
                                    "creation_num": "2"
                                }
                            }
                        },
                        "frozen": false,
                        "withdraw_events": {
                            "counter": "0",
                            "guid": {
                                "id": {
                                    "addr": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
                                    "creation_num": "3"
                                }
                            }
                        }
                    }
                },
                "type": "write_resource"
            },
            {
                "address": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
                "state_key_hash": "0x27900227132855a653e08f2e0d992df3362b0c099b58ce8992c1d9bf744e0984",
                "data": {
                    "type": "0x1::coin::CoinStore<0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6::opc::OPC>",
                    "data": {
                        "coin": {
                            "value": "0"
                        },
                        "deposit_events": {
                            "counter": "0",
                            "guid": {
                                "id": {
                                    "addr": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
                                    "creation_num": "4"
                                }
                            }
                        },
                        "frozen": false,
                        "withdraw_events": {
                            "counter": "0",
                            "guid": {
                                "id": {
                                    "addr": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
                                    "creation_num": "5"
                                }
                            }
                        }
                    }
                },
                "type": "write_resource"
            },
            {
                "address": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
                "state_key_hash": "0x1a41b2d0196e13823ddf1eccc83624522dee831a483250394b838c57cb148fe5",
                "data": {
                    "type": "0x1::account::Account",
                    "data": {
                        "authentication_key": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
                        "coin_register_events": {
                            "counter": "2",
                            "guid": {
                                "id": {
                                    "addr": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
                                    "creation_num": "0"
                                }
                            }
                        },
                        "guid_creation_num": "6",
                        "key_rotation_events": {
                            "counter": "0",
                            "guid": {
                                "id": {
                                    "addr": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
                                    "creation_num": "1"
                                }
                            }
                        },
                        "rotation_capability_offer": {
                            "for": {
                                "vec": []
                            }
                        },
                        "sequence_number": "1",
                        "signer_capability_offer": {
                            "for": {
                                "vec": []
                            }
                        }
                    }
                },
                "type": "write_resource"
            },
            {
                "state_key_hash": "0x6e4b28d40f98a106a65163530924c0dcb40c1349d3aa915d108b4d6cfc1ddb19",
                "handle": "0x1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca",
                "key": "0x0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935",
                "value": "0xf64ca977878065010000000000000000",
                "data": null,
                "type": "write_table_item"
            }
        ],
        "sender": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2",
        "sequence_number": "0",
        "max_gas_amount": "1000",
        "gas_unit_price": "100",
        "expiration_timestamp_secs": "1669084567",
        "payload": {
            "function": "0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6::opc::register",
            "type_arguments": [],
            "arguments": [],
            "type": "entry_function_payload"
        },
        "signature": {
            "public_key": "0x67bb99480a4b9aa7f83ba56570a6fe939b5a80286b1456cb0e52972f3af44698",
            "signature": "0x2b47a221992fba90f8a11efef9a1b6cd82c9a3a17cf684fb80419ba5deada52dc52e77d8b01c780141126ac319df4256db7521ed0cf1930a347e70de04f8cd0a",
            "type": "ed25519_signature"
        },
        "events": [
            {
                "guid": {
                    "creation_number": "0",
                    "account_address": "0x9e5cf6e900fecbb716eb64781d40a5b1db9652caa6b61c188184b28c41687db2"
                },
                "sequence_number": "1",
                "type": "0x1::account::CoinRegisterEvent",
                "data": {
                    "type_info": {
                        "account_address": "0x6de517a18f003625e7fba9b9dc29b310f2e3026bbeb1997b3ada9de1e3cec8d6",
                        "module_name": "0x6f7063",
                        "struct_name": "0x4f5043"
                    }
                }
            }
        ],
        "timestamp": "1669084548326324",
        "type": "user_transaction"
    }
]
```

{% endcode %}


# Submit batch transactions

####

This allows you to submit multiple transactions. The response has three outcomes:

1. All transactions succeed, and it will return a 202
2. Some transactions succeed, and it will return the failed transactions and a 206
3. No transactions succeed, and it will also return the failed transactions and a 206

To submit a transaction as JSON, you must submit a SubmitTransactionRequest. To build this request, do the following:

1. Encode the transaction as BCS. If you are using a language that has

native BCS support, make sure to use that library. If not, you may take advantage of /transactions/encode\_submission. When using this endpoint, make sure you trust the node you're talking to, as it is possible they could manipulate your request. 2. Sign the encoded transaction and use it to create a TransactionSignature. 3. Submit the request. Make sure to use the "application/json" Content-Type.

To submit a transaction as BCS, you must submit a SignedTransaction encoded as BCS. See SignedTransaction in types/src/transaction/mod.rs. Make sure to use the `application/x.aptos.signed_transaction+bcs` Content-Type.

#### Request Body：

array of

**sender** string\<hex> required

A hex encoded 32 byte Aptos account address.

**sequence\_number** string\<uint64> required

A string containing a 64-bit unsigned integer.

**max\_gas\_amount** string\<uint64> required

A string containing a 64-bit unsigned integer.

**gas\_unit\_price** string\<uint64> required

A string containing a 64-bit unsigned integer.

**expiration\_timestamp\_secs** string\<uint64> required

A string containing a 64-bit unsigned integer.

**payload** object required

Payload which runs a single entry function, or

Payload which runs a script that can run multiple functions, or

An enum of the possible transaction payloads

**signature** object required

A single Ed25519 signature, or

A Ed25519 multi-sig signature, or

Multi agent signature for multi agent transactions

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

Batch transaction submission result

Tells which transactions failed

**transaction\_failures** array\[object] required

Summary of the failed transactions

**error** object required

This is the generic struct we use for all API errors, it contains a string message and an Aptos API specific error code.

**transaction\_index** integer required

The index of which transaction failed, same as submission order

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X POST -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/transactions/batch
--data
'[
  {
    "sender": "0x88fbd33f54e1126269769780feb24480428179f552e2313fbe571b72e62a1ca1 ",
    "sequence_number": "32425224034",
    "max_gas_amount": "32425224034",
    "gas_unit_price": "32425224034",
    "expiration_timestamp_secs": "32425224034",
    "payload": {
      "type": "entry_function_payload",
      "function": "0x1::aptos_coin::transfer",
      "type_arguments": [
        "string"
      ],
      "arguments": [
        null
      ]
    },
    "signature": {
      "type": "ed25519_signature",
      "public_key": "0x88fbd33f54e1126269769780feb24480428179f552e2313fbe571b72e62a1ca1 ",
      "signature": "0x88fbd33f54e1126269769780feb24480428179f552e2313fbe571b72e62a1ca1 "
    }
  }
]'

// Result
{

}
```

{% endcode %}


# Simulate transaction

The output of the transaction will have the exact transaction outputs and events that running an actual signed transaction would have. However, it will not have the associated state hashes, as they are not updated in storage. This can be used to estimate the maximum gas units for a submitted transaction.

To use this, you must:

* Create a SignedTransaction with a zero-padded signature.
* Submit a SubmitTransactionRequest containing a UserTransactionRequest containing that signature.

To use this endpoint with BCS, you must submit a SignedTransaction encoded as BCS. See SignedTransaction in types/src/transaction/mod.rs.

#### Query Parameters：：

**estimate\_gas\_unit\_price** boolean

If set to true, the gas unit price in the transaction will be ignored and the estimated value will be used

**estimate\_max\_gas\_amount** boolean

If set to true, the max gas value in the transaction will be ignored and the maximum possible gas will be used

**estimate\_prioritized\_gas\_unit\_price**  boolean

If set to true, the transaction will use a higher price than the original estimate.

#### Request body：

A request to submit a transaction

**sender** string\<hex> required

A hex encoded 32 byte Aptos account address.

**sequence\_number** string\<uint64> required

A string containing a 64-bit unsigned integer.

**max\_gas\_amount** string\<uint64> required

A string containing a 64-bit unsigned integer.

**gas\_unit\_price** string\<uint64> required

A string containing a 64-bit unsigned integer.

**expiration\_timestamp\_secs** string\<uint64> required

A string containing a 64-bit unsigned integer.

**payload** object required

Payload which runs a single entry function, or

Payload which runs a script that can run multiple functions, or

An enum of the possible transaction payloads

**signature** object required

A single Ed25519 signature, or

A Ed25519 multi-sig signature, or

Multi agent signature for multi agent transactions

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

Array

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X POST -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/transactions/simulate
--data
{
  "sender": "0x88fbd33f54e1126269769780feb24480428179f552e2313fbe571b72e62a1ca1 ",
  "sequence_number": "32425224034",
  "max_gas_amount": "32425224034",
  "gas_unit_price": "32425224034",
  "expiration_timestamp_secs": "32425224034",
  "payload": {
    "type": "entry_function_payload",
    "function": "0x1::aptos_coin::transfer",
    "type_arguments": [
      "string"
    ],
    "arguments": [
      null
    ]
  },
  "signature": {
    "type": "ed25519_signature",
    "public_key": "0x88fbd33f54e1126269769780feb24480428179f552e2313fbe571b72e62a1ca1 ",
    "signature": "0x88fbd33f54e1126269769780feb24480428179f552e2313fbe571b72e62a1ca1 "
  }
}

// Result
{

}
```

{% endcode %}


# Encode submission

This endpoint accepts an EncodeSubmissionRequest, which internally is a UserTransactionRequestInner (and optionally secondary signers) encoded as JSON, validates the request format, and then returns that request encoded in BCS. The client can then use this to create a transaction signature to be used in a SubmitTransactionRequest, which it then passes to the /transactions POST endpoint.

To be clear, this endpoint makes it possible to submit transaction requests to the API from languages that do not have library support for BCS. If you are using an SDK that has BCS support, such as the official Rust, TypeScript, or Python SDKs, you do not need to use this endpoint.

To sign a message using the response from this endpoint:

* Decode the hex encoded string in the response to bytes.
* Sign the bytes to create the signature.
* Use that as the signature field in something like Ed25519Signature, which you then use to build a TransactionSignature.

#### Request body：

Request to encode a submission

**sender** string\<hex> required

A hex encoded 32 byte Aptos account address.

**sequence\_number** string\<uint64> required

A string containing a 64-bit unsigned integer.

**max\_gas\_amount** string\<uint64> required

A string containing a 64-bit unsigned integer.

**gas\_unit\_price** string\<uint64> required

A string containing a 64-bit unsigned integer.

**expiration\_timestamp\_secs** string\<uint64> required

A string containing a 64-bit unsigned integer.

**payload** object required

Payload which runs a single entry function, or

Payload which runs a script that can run multiple functions, or

An enum of the possible transaction payloads

**secondary\_signers**  array\[string]

Secondary signer accounts of the request for Multi-agent

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

string\<hex>

All bytes (Vec) data is represented as hex-encoded string prefixed with `0x` and fulfilled with two hex digits per byte.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl -X POST -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/transactions/encode_submission
--data
'{
  "sender": "0x88fbd33f54e1126269769780feb24480428179f552e2313fbe571b72e62a1ca1 ",
  "sequence_number": "32425224034",
  "max_gas_amount": "32425224034",
  "gas_unit_price": "32425224034",
  "expiration_timestamp_secs": "32425224034",
  "payload": {
    "type": "entry_function_payload",
    "function": "0x1::aptos_coin::transfer",
    "type_arguments": [
      "string"
    ],
    "arguments": [
      null
    ]
  },
  "secondary_signers": [
    "0x88fbd33f54e1126269769780feb24480428179f552e2313fbe571b72e62a1ca1 "
  ]
}'

// Result
{

}
```

{% endcode %}


# Estimate gas price

Currently, the gas estimation is handled by taking the median of the last 100,000 transactions If a user wants to prioritize their transaction and is willing to pay, they can pay more than the gas price. If they're willing to wait longer, they can pay less. Note that the gas price moves with the fee market, and should only increase when demand outweighs supply.

If there have been no transactions in the last 100,000 transactions, the price will be 1.

#### **Response Header:**

**X-APTOS-BLOCK-HEIGHT** integer&#x20;

Current block height of the chain

**X-APTOS-CHAIN-ID** integer&#x20;

Chain ID of the current chain

**X-APTOS-EPOCH** integer&#x20;

Current epoch of the chain

**X-APTOS-LEDGER-OLDEST-VERSION** integer&#x20;

Oldest non-pruned ledger version of the chain

**X-APTOS-LEDGER-TIMESTAMPUSEC** integer&#x20;

Current timestamp of the chain

**X-APTOS-LEDGER-VERSION** integer&#x20;

Current ledger version of the chain

**X-APTOS-OLDEST-BLOCK-HEIGHT** integer&#x20;

Oldest non-pruned block height of the chain

#### **Response Body:**

Struct holding the outputs of the estimate gas API

**deprioritized\_gas\_estimate** integer

The deprioritized estimate for the gas unit price

**gas\_estimate** integer required

The current estimate for the gas unit price

**prioritized\_gas\_estimate** integer

The prioritized estimate for the gas unit price

#### Example:

<pre class="language-json" data-overflow="wrap"><code class="lang-json">// Request
curl -X GET -H 'Content-Type: application/json' https://aptos.blockpi.network/aptos/v1/your_api_key/v1/estimate_gas_price 
<strong>
</strong>
// Result
{
    "deprioritized_gas_estimate": 100,
    "gas_estimate": 100,
    "prioritized_gas_estimate": 150
}
</code></pre>


# Arbitrum

This page serves as an Arbitrum API documentation index and lists the available JSON-RPC methods.

{% hint style="info" %}
Please note that due to historical hard forks, data prior to block 22207817 is not supported.
{% endhint %}

## eth <a href="#eth" id="eth"></a>

* [eth\_chainId](/build/api-reference/arbitrum/eth_chainid)
* [eth\_syncing](/build/api-reference/arbitrum/eth_syncing)
* [eth\_getBlockByNumber](/build/api-reference/arbitrum/eth_getblockbynumber)
* [eth\_getBlockByHash](/build/api-reference/arbitrum/eth_getblockbyhash)
* [eth\_blockNumber](/build/api-reference/arbitrum/eth_blocknumber)
* [eth\_gasPrice](/build/api-reference/arbitrum/eth_gasprice)
* [eth\_getBalance](/build/api-reference/arbitrum/eth_getbalance)
* [eth\_sendRawTransaction](/build/api-reference/arbitrum/eth_sendrawtransaction)
* [eth\_getTransactionByHash](/build/api-reference/arbitrum/eth_gettransactionbyhash)
* [eth\_getTransactionByBlockHashAndIndex](/build/api-reference/arbitrum/eth_gettransactionbyblockhashandindex)
* [eth\_getTransactionByBlockNumberAndIndex](/build/api-reference/arbitrum/eth_gettransactionbyblocknumberandindex)
* [eth\_getTransactionReceipt](/build/api-reference/arbitrum/eth_gettransactionreceipt)
* [eth\_getTransactionCount](/build/api-reference/arbitrum/eth_gettransactioncount)
* [eth\_getBlockTransactionCountByNumber](/build/api-reference/arbitrum/eth_getblocktransactioncountbynumber)
* [eth\_getBlockTransactionCountByHash](/build/api-reference/arbitrum/eth_getblocktransactioncountbyhash)
* [eth\_getLogs](/build/api-reference/arbitrum/eth_getlogs)
* [eth\_getCode](/build/api-reference/arbitrum/eth_getcode)
* [eth\_call](/build/api-reference/arbitrum/eth_call)
* [eth\_accounts](/build/api-reference/arbitrum/eth_accounts)
* [eth\_getStorageAt](/build/api-reference/arbitrum/eth_getstorageat)
* [eth\_estimateGas](/build/api-reference/arbitrum/eth_estimategas)
* [eth\_newFilter](/build/api-reference/arbitrum/eth_newfilter)
* [eth\_newBlockFilter](/build/api-reference/arbitrum/eth_newblockfilter)
* [eth\_newPendingTransactionFilter](/build/api-reference/arbitrum/eth_newpendingtransactionfilter)
* [eth\_getFilterLogs](/build/api-reference/arbitrum/eth_getfilterlogs)
* [eth\_getFilterChanges](/build/api-reference/arbitrum/eth_getfilterchanges)
* [eth\_uninstallFilter](/build/api-reference/arbitrum/eth_uninstallfilter)
* [eth\_subscribe](/build/api-reference/arbitrum/eth_subscribe)
* [eth\_unsubscribe](/build/api-reference/arbitrum/eth_unsubscribe)

## net <a href="#net" id="net"></a>

* [net\_version](/build/api-reference/arbitrum/net_version)

## web3 <a href="#web3" id="web3"></a>

* [web3\_clientVersion](/build/api-reference/arbitrum/web3_clientversion)
* [web3\_sha3](/build/api-reference/arbitrum/web3_sha3)

## txpool <a href="#txpool" id="txpool"></a>

* [txpool\_content](/build/api-reference/arbitrum/txpool_content)

## debug <a href="#debug" id="debug"></a>

* [debug\_traceCall](/build/api-reference/arbitrum/debug_tracecall)
* [debug\_traceBlockByHash](/build/api-reference/arbitrum/debug_traceblockbyhash)
* [debug\_traceBlockByNumber](/build/api-reference/arbitrum/debug_traceblockbynumber)
* [debug\_traceTransaction](/build/api-reference/arbitrum/debug_tracetransaction)


# eth\_chainId

Returns the currently configured chain id, a value used in replay-protected transaction signing as introduced by EIP-155.

#### **Parameters:**

None

#### **Returns:**

**QUANTITY** - big integer of the current chain id.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl  https://arbitrum.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'

// Result
{
  "jsonrpc":"2.0",
  "id":1,
  "result":"0xa4b1"
}
```

{% endcode %}


# eth\_syncing

Returns information about the sync status of the node

#### **Parameters:**

None

#### **Returns:**

**Boolean (FALSE)** - if the node isn't syncing (which means it has fully synced)

**Object** - an object with sync status data if the node is syncing

* **startingBlock: QUANTITY** - The block at which the import started (will only be reset, after the sync reached his head)
* **currentBlock: QUANTITY** - The current block, same as eth\_blockNumber
* **highestBlock: QUANTITY** - The estimated highest block

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl  https://arbitrum.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": false
}
```

{% endcode %}


# eth\_getBlockByNumber

Returns block information by number.

#### **Parameters:**

**QUANTITY|TAG** - integer of a block number, or the string "latest"

**Boolean** - If true it returns the full transaction objects, if false only the hashes of the transactions.

#### **Returns:**

Object - A block object, or null when no block was found:

* **number: QUANTITY** - the block number.
* **hash: DATA, 32 Bytes** - hash of the block.
* **parentHash: DATA, 32 Bytes** - hash of the parent block.
* **nonce: DATA, 8 Bytes** - hash of the generated proof-of-work.
* **sha3Uncles: DATA, 32 Bytes** - SHA3 of the uncles data in the block.
* **logsBloom: DATA, 256 Bytes** - the bloom filter for the logs of the block.
* **transactionsRoot: DATA, 32 Bytes** - the root of the transaction trie of the block.
* **stateRoot: DATA, 32 Bytes** - the root of the final state trie of the block.
* **receiptsRoot: DATA, 32 Bytes** - the root of the receipts trie of the block.
* **miner: DATA, 20 Bytes** - the address of the beneficiary to whom the mining rewards were given.
* **difficulty: QUANTITY** - integer of the difficulty for this block.
* **totalDifficulty: QUANTITY** - integer of the total difficulty of the chain until this block.
* **extraData: DATA** - the “extra data” field of this block.
* **size: QUANTITY** - integer the size of this block in bytes.
* **gasLimit: QUANTITY** - the maximum gas allowed in this block.
* **gasUsed: QUANTITY** - the total used gas by all transactions in this block.
* **timestamp: QUANTITY** - the unix timestamp for when the block was collated.
* **transactions: Array** - Array of transaction objects, or 32 Bytes transaction hashes depending on the last given parameter.
* **uncles: Array** - Array of uncle hashes.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl  https://arbitrum.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["latest", true],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {described as above}
}
```

{% endcode %}


# eth\_getBlockByHash

Returns block information by hash.

#### **Parameters:**

**DATA , 32 Bytes** - Hash of a block.

**Boolean** - If true it returns the full transaction objects, if false only the hashes of the transactions.

#### **Returns:**

Object - A block object, or null when no block was found:

* **number: QUANTITY** - the block number.
* **hash: DATA, 32 Bytes** - hash of the block.
* **parentHash: DATA, 32 Bytes** - hash of the parent block.
* **nonce: DATA, 8 Bytes** - hash of the generated proof-of-work.
* **sha3Uncles: DATA, 32 Bytes** - SHA3 of the uncles data in the block.
* **logsBloom: DATA, 256 Bytes** - the bloom filter for the logs of the block.
* **transactionsRoot: DATA, 32 Bytes** - the root of the transaction trie of the block.
* **stateRoot: DATA, 32 Bytes** - the root of the final state trie of the block.
* **receiptsRoot: DATA, 32 Bytes** - the root of the receipts trie of the block.
* **miner: DATA, 20 Bytes** - the address of the beneficiary to whom the mining rewards were given.
* **difficulty: QUANTITY** - integer of the difficulty for this block.
* **totalDifficulty: QUANTITY** - integer of the total difficulty of the chain until this block.
* **extraData: DATA** - the “extra data” field of this block.
* **size: QUANTITY** - integer the size of this block in bytes.
* **gasLimit: QUANTITY** - the maximum gas allowed in this block.
* **gasUsed: QUANTITY** - the total used gas by all transactions in this block.
* **timestamp: QUANTITY** - the unix timestamp for when the block was collated.
* **transactions: Array** - Array of transaction objects, or 32 Bytes transaction hashes depending on the last given parameter.
* **uncles: Array** - Array of uncle hashes.

#### Example:

<pre class="language-json" data-overflow="wrap"><code class="lang-json">// Request
<strong>curl https://arbitrum.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0x3b32dd164f1eb2b1f925c214e7180bf35280cf233a01f7e3a5d70203912e6808",false],"id":1}'
</strong>
// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {described as above}
}
</code></pre>


# eth\_blockNumber

Returns the number of the most recent block.

#### **Parameters:**

None

#### **Returns:**

**QUANTITY** - integer of the current block number the client is on.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://arbitrum.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0x27db97a"
}
```

{% endcode %}


# eth\_gasPrice

Returns the current price of gas in wei. If minimum gas price is enforced by setting the --price-limit flag, this endpoint will return the value defined by this flag as minimum gas price.

#### **Parameters:**

None

#### **Returns:**

**QUANTITY** - integer of the current gas price in wei.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://arbitrum.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0x5f5e100"
}
```

{% endcode %}


# eth\_getBalance

Returns the balance of the account of the given address.

#### **Parameters:**

**DATA, 20 Bytes** - address to check for balance.

**QUANTITY|TAG** - integer block number, or the string "latest"

#### **Returns:**

**QUANTITY** - integer of the current balance in wei.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://arbitrum.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0x0"
}
```

{% endcode %}


# eth\_sendRawTransaction

Creates new message call transaction or a contract creation for signed transactions.

#### **Parameters:**

**DATA** - The signed transaction data.

#### **Returns:**

**DATA, 32 Bytes** - the transaction hash, or the zero hash if the transaction is not yet available.

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://arbitrum.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"],"id":1}'

// Result

```

{% endcode %}


# eth\_getTransactionByHash

Returns the information about a transaction requested by transaction hash.

#### **Parameters:**

**DATA, 32 Bytes** - hash of a transaction

#### **Returns:**

**Object** - A transaction object, or null when no transaction was found:

* **blockHash: DATA, 32 Bytes** - hash of the block where this transaction was in.
* **blockNumber: QUANTITY** - block number where this transaction was in.
* **from: DATA, 20 Bytes** - address of the sender.
* **gas: QUANTITY** - gas provided by the sender.
* **gasPrice: QUANTITY** - gas price provided by the sender in Wei.
* **hash: DATA, 32 Bytes** - hash of the transaction.
* **input: DATA** - the data send along with the transaction.
* **nonce: QUANTITY** - the number of transactions made by the sender prior to this one.
* **to: DATA, 20 Bytes** - address of the receiver. null when its a contract creation transaction.
* **transactionIndex: QUANTITY** - integer of the transactions index position in the block.
* **value: QUANTITY** - value transferred in Wei.
* **v: QUANTITY** - ECDSA recovery id
* **r: DATA, 32 Bytes** - ECDSA signature r
* **s: DATA, 32 Bytes** - ECDSA signature s

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://arbitrum.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0xa006663075e2d95719083211d31c1c8cca5b9780833538473a2b86fb5e5c8131"],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "blockHash": "0x3b32dd164f1eb2b1f925c214e7180bf35280cf233a01f7e3a5d70203912e6808",
        "blockNumber": "0x27db5e2",
        "hash": "0xa006663075e2d95719083211d31c1c8cca5b9780833538473a2b86fb5e5c8131",
        "accessList": [],
        "chainId": "0xa4b1",
        "from": "0x33259ed1f5e3cd4d740709eec9a55fbd641288a8",
        "gas": "0x329af",
        "gasPrice": "0x5f5e100",
        "input": "0x095ea7b3000000000000000000000000663dc15d3c1ac63ff12e45ab68fea3f0a883c2510000000000000000000000000000000000000000000000000000000000000000",
        "maxFeePerGas": "0x80befc0",
        "maxPriorityFeePerGas": "0x0",
        "nonce": "0xf0",
        "r": "0xfed2dbf20fd4f5d195aa7012bc971592abc5b3b892b2267c14a2b68a7d226555",
        "s": "0xf53f58c6c797eab41c434a097d8fe7dfc921a3297c1c869484058618aa23ac4",
        "to": "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8",
        "transactionIndex": "0x1",
        "type": "0x2",
        "v": "0x1",
        "value": "0x0"
    }
}
```

{% endcode %}


# eth\_getTransactionByBlockHashAndIndex

Returns the information about a transaction requested by Block hash and index.

#### **Parameters:**

**DATA , 32 Bytes** - Hash of a block.

**QUANTITY** - A hex of the integer representing the position in the block.

#### **Returns:**

**Object** - A transaction object, or null when no transaction was found:

* **blockHash: DATA, 32 Bytes** - hash of the block where this transaction was in.
* **blockNumber: QUANTITY** - block number where this transaction was in.
* **from: DATA, 20 Bytes** - address of the sender.
* **gas: QUANTITY** - gas provided by the sender.
* **gasPrice: QUANTITY** - gas price provided by the sender in Wei.
* **hash: DATA, 32 Bytes** - hash of the transaction.
* **input: DATA** - the data send along with the transaction.
* **nonce: QUANTITY** - the number of transactions made by the sender prior to this one.
* **to: DATA, 20 Bytes** - address of the receiver. null when its a contract creation transaction.
* **transactionIndex: QUANTITY** - integer of the transactions index position in the block.
* **value: QUANTITY** - value transferred in Wei.
* **v: QUANTITY** - ECDSA recovery id
* **r: DATA, 32 Bytes** - ECDSA signature r
* **s: DATA, 32 Bytes** - ECDSA signature s

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://arbitrum.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0x3b32dd164f1eb2b1f925c214e7180bf35280cf233a01f7e3a5d70203912e6808", "0x0"],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "blockHash": "0x3b32dd164f1eb2b1f925c214e7180bf35280cf233a01f7e3a5d70203912e6808",
        "blockNumber": "0x27db5e2",
        "from": "0x00000000000000000000000000000000000a4b05",
        "gas": "0x0",
        "gasPrice": "0x0",
        "hash": "0xf27c44d8b561a3088a60d691f6a10a3cd2a2222ced41ec1716a8f376d025775e",
        "input": "0x6bf6a42d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f526c600000000000000000000000000000000000000000000000000000000027db5e20000000000000000000000000000000000000000000000000000000000000001",
        "nonce": "0x0",
        "to": "0x00000000000000000000000000000000000a4b05",
        "transactionIndex": "0x0",
        "value": "0x0",
        "type": "0x6a",
        "chainId": "0xa4b1",
        "v": "0x0",
        "r": "0x0",
        "s": "0x0"
    }
}
```

{% endcode %}


# eth\_getTransactionByBlockNumberAndIndex

Returns the information about a transaction requested by Block number and index.

#### **Parameters:**

**QUANTITY|TAG** - Integer block number encoded as a hexadecimal, or the string 'latest', 'earliest' or 'pending'.

**QUANTITY** - A hex of the integer representing the position in the block.

#### **Returns:**

**Object** - A transaction object, or null when no transaction was found:

* **blockHash: DATA, 32 Bytes** - hash of the block where this transaction was in.
* **blockNumber: QUANTITY** - block number where this transaction was in.
* **from: DATA, 20 Bytes** - address of the sender.
* **gas: QUANTITY** - gas provided by the sender.
* **gasPrice: QUANTITY** - gas price provided by the sender in Wei.
* **hash: DATA, 32 Bytes** - hash of the transaction.
* **input: DATA** - the data send along with the transaction.
* **nonce: QUANTITY** - the number of transactions made by the sender prior to this one.
* **to: DATA, 20 Bytes** - address of the receiver. null when its a contract creation transaction.
* **transactionIndex: QUANTITY** - integer of the transactions index position in the block.
* **value: QUANTITY** - value transferred in Wei.
* **v: QUANTITY** - ECDSA recovery id
* **r: DATA, 32 Bytes** - ECDSA signature r
* **s: DATA, 32 Bytes** - ECDSA signature s

#### Example:

{% code overflow="wrap" %}

```json
// Request
curl https://arbitrum.blockpi.network/v1/rpc/your-rpc-key -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockNumberAndIndex","params":["27DB5E2", "0x0"],"id":1}'

// Result
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "blockHash": "0x3b32dd164f1eb2b1f925c214e7180bf35280cf233a01f7e3a5d70203912e6808",
        "blockNumber": "0x27db5e2",
        "from": "0x00000000000000000000000000000000000a4b05",
        "gas": "0x0",
        "gasPrice": "0x0",
        "hash": "0xf27c44d8b561a3088a60d691f6a10a3cd2a2222ced41ec1716a8f376d025775e",
        "input": "0x6bf6a42d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f526c600000000000000000000000000000000000000000000000000000000027db5e20000000000000000000000000000000000000000000000000000000000000001",
        "nonce": "0x0",
        "to": "0x00000000000000000000000000000000000a4b05",
        "transactionIndex": "0x0",
        "value": "0x0",
        "type": "0x6a",
        "chainId": "0xa4b1",
        "v": "0x0",
        "r": "0x0",
        "s": "0x0"
    }
}
```

{% endcode %}




---

[Next Page](/llms-full.txt/1)

