---
title: Welcome
description: Quicknode documentation and reference material for for RPC and REST API, NFT API, Token API and QuickAlerts.
---

// RPC-REST-GRPC

# API Documentation  

> For the complete documentation index, see [llms.txt](/docs/llms.txt)

for Web3

Interact with RPC, REST, and gRPC endpoints across 77+ blockchains using ready-to-run examples in JavaScript, Python, Go, and more. Learn to leverage Quicknode products like Streams, Webhooks, and IPFS to build, monitor, and scale blockchain applications from one unified platform.

[GET STARTED](/docs/ethereum)

Send your first request

```bash
curl  https://{your-endpoint-name}.quiknode.pro/{your-token}/ \
  -X POST \
  -H "Content-Type: application/json" \
  --data '{"method":"eth_blockNumber","params":[],"id":1,"jsonrpc":"2.0"}'
```

```bash
curl  https://{your-endpoint-name}.quiknode.pro/{your-token}/ \
  -X POST \
  -H "Content-Type: application/json" \
  --data '{"method":"eth_blockNumber","params":[],"id":1,"jsonrpc":"2.0"}'
```

```javascript
const ethers = require("ethers");
(async () => {
  const provider = new ethers.providers.JsonRpcProvider("https://{your-endpoint-name}.quiknode.pro/{your-token}/");
  const blockNum = await provider.getBlockNumber();
  console.log(blockNum);
})();
```

```javascript
const ethers = require("ethers");
(async () => {
  const provider = new ethers.providers.JsonRpcProvider("https://{your-endpoint-name}.quiknode.pro/{your-token}/");
  const blockNum = await provider.getBlockNumber();
  console.log(blockNum);
})();
```

```javascript
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");


var raw = JSON.stringify({
  "method": "eth_blockNumber",
  "params": [],
  "id": 1,
  "jsonrpc": "2.0"
});


var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};


fetch("https://{your-endpoint-name}.quiknode.pro/{your-token}/", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
```

```javascript
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");


var raw = JSON.stringify({
  "method": "eth_blockNumber",
  "params": [],
  "id": 1,
  "jsonrpc": "2.0"
});


var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};


fetch("https://{your-endpoint-name}.quiknode.pro/{your-token}/", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
```

```python
import requests
import json


url = "https://{your-endpoint-name}.quiknode.pro/{your-token}/"


payload = json.dumps({
  "method": "eth_blockNumber",
  "params": [],
  "id": 1,
  "jsonrpc": "2.0"
})


headers = {
  'Content-Type': 'application/json'
}


response = requests.request("POST", url, headers=headers, data=payload)


print(response.text)
```

```python
import requests
import json


url = "https://{your-endpoint-name}.quiknode.pro/{your-token}/"


payload = json.dumps({
  "method": "eth_blockNumber",
  "params": [],
  "id": 1,
  "jsonrpc": "2.0"
})


headers = {
  'Content-Type': 'application/json'
}


response = requests.request("POST", url, headers=headers, data=payload)


print(response.text)
```

```ruby
require "uri"
require "json"
require "net/http"


url = URI("https://{your-endpoint-name}.quiknode.pro/{your-token}/")


https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true


request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request.body = JSON.dump({
  "method": "eth_blockNumber",
  "params": [],
  "id": 1,
  "jsonrpc": "2.0"
})


response = https.request(request)
puts response.read_body
```

```ruby
require "uri"
require "json"
require "net/http"


url = URI("https://{your-endpoint-name}.quiknode.pro/{your-token}/")


https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true


request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request.body = JSON.dump({
  "method": "eth_blockNumber",
  "params": [],
  "id": 1,
  "jsonrpc": "2.0"
})


response = https.request(request)
puts response.read_body
```

```python
from web3 import Web3, HTTPProvider
w3 = Web3(HTTPProvider('https://{your-endpoint-name}.quiknode.pro/{your-token}/'))
print (w3.eth.blockNumber)
```

```python
from web3 import Web3, HTTPProvider
w3 = Web3(HTTPProvider('https://{your-endpoint-name}.quiknode.pro/{your-token}/'))
print (w3.eth.blockNumber)
```

```ruby
require 'eth'


client = Eth::Client.create 'https://{your-endpoint-name}.quiknode.pro/{your-token}/'
payload = {
    "jsonrpc": "2.0",
    "method": "eth_blockNumber",
    "params": [],
    "id": "1"
}


response = client.send(payload.to_json)
puts response
```

```ruby
require 'eth'


client = Eth::Client.create 'https://{your-endpoint-name}.quiknode.pro/{your-token}/'
payload = {
    "jsonrpc": "2.0",
    "method": "eth_blockNumber",
    "params": [],
    "id": "1"
}


response = client.send(payload.to_json)
puts response
```

-   [Core API](/docs/ethereum): Use the quickest and most reliable blockchain API with unparalleled latency, reliability, and scalability across all major blockchains.
-   [Webhooks](/docs/webhooks): Leverage a fully customizeable real-time blockchain data feed and advanced alerting, and include real-time blockchain event driven logic into your workflows.
-   [Streams](/docs/streams): Leverage a custom real-time blockchain data feed, advanced alerting, and include real-time blockchain event driven logic into your workflows.
-   [Marketplace](/docs/marketplace-addons): Create and publish custom add-ons that extend Quicknode's services. These add-ons allow developers to integrate additional tools, APIs, and features can be built on top of Quicknode's core offering, helping others build better blockchain tools.
-   [IPFS](/docs/ipfs): Use Quicknode to upload, store, manage, and retrieve data on the IPFS network through our pinning services and dedicated gateways.
-   [Custom RPC Options](/docs/custom-rpc-options): High-level enterprise solutions including Fully Dedicated Setup and Hybrid Dedicated gRPC (Solana) options, offering unmatched performance, isolation, and scalability for latency-sensitive and workload-intensive projects.
-   [Key-Value Store](/docs/key-value-store): Manage and access large-scale datasets like wallet addresses through a robust storage solution. Update and utilize your data on-demand via REST API or integrate seamlessly with Streams filters.
-   [Quicknode SDK](/docs/quicknode-sdk): A powerful JavaScript and TypeScript SDK designed to facilitate interaction with Quicknode infrastructure. Framework-agnostic library with comprehensive support for Core and add-on RPC functions.

## QuickStart Resources

-   [Building a Polymarket Copy Trading Bot](https://www.quicknode.com/guides/defi/polymarket-copy-trading-bot): Build a Polymarket trading bot that tracks a target wallet, logs trades in real time, and adds position tracking and risk caps.
-   [What is MEV (Maximum Extractable Value) and How to Protect Your Transactions with Quicknode](https://www.quicknode.com/guides/ethereum-development/MEV/what-is-mev): In this guide, we delve into Maximal Extractable Value (MEV), its risks, importance, and how it plays a role in blockchains today.
-   [How to Mint an NFT Across Different Blockchains using Chainlink CCIP](https://www.quicknode.com/guides/cross-chain/CCIP/cross-chain-nft): In this guide, users learn how to mint an NFT on one blockchain from another using the Chainlink Cross-Chain Interoperability Protocol (CCIP).
-   [How to Use Jupiter API to Create a Solana Trading Bot](https://www.quicknode.com/guides/solana-development/3rd-party-integrations/jupiter-api-trading-bot): In this guide, we will walk through how to use Quicknode's Metis add-on which hosts Jupiter's onchain routing engine to create a simple Solana trading bot.
-   [Create an ERC20 Token in 3 Steps and Deploy It](https://www.quicknode.com/guides/ethereum-development/smart-contracts/how-to-create-and-deploy-an-erc20-token): Learn how to create and deploy an ERC20 token on Ethereum and other EVM chains in just 3 steps. Follow this streamlined guide with code, tools, and tips.
-   [How to Access Ethereum Mempool](https://www.quicknode.com/guides/ethereum-development/transactions/how-to-access-ethereum-mempool): This guide will describe what the Ethereum Mempool is and demonstrate how to access and query it with Quicknode.

#### Start building in minutes  
\- no infra setup needed

Get instant access to high-performance RPC endpoints.

[TRY FREE](https://www.quicknode.com/signup?utm_source=internal&utm_campaign=docs&utm_content=welcome)

## API Documentation for Web3

Interact with RPC, REST, and gRPC endpoints across 80+ blockchains using ready-to-run examples in JavaScript, Python, Go, and more. Use Quicknode products like Streams, Webhooks, and IPFS to build and run blockchain applications from one platform.

## Send Your First Request

Make a JSON-RPC call to get the latest block number on Ethereum:

```
curl https://docs-demo.quiknode.pro/ \
  -X POST \
  -H "Content-Type: application/json" \
  --data '{"method":"eth_blockNumber","params":[],"id":1,"jsonrpc":"2.0"}'
```

## Developer Tools

-   **[Core API](/docs/ethereum/)**: Blockchain API endpoints across 80+ chains with low latency and high availability.
-   **[Streams](/docs/streams)**: Custom real-time blockchain data pipelines with filtering and transformation logic.
-   **[Webhooks](/docs/webhooks)**: Real-time blockchain data feed and alerting for on-chain events.
-   **[Marketplace Add-Ons](/docs/marketplace-addons)**: Third-party add-ons that extend Quicknode with extra capabilities.
-   **[IPFS](/docs/ipfs)**: Upload and retrieve data on IPFS through the Quicknode gateway.
-   **[Key-Value Store](/docs/key-value-store)**: Large-scale dataset storage accessible through a REST API on your Quicknode endpoint.
-   **[Custom RPC Options](/docs/custom-rpc-options)**: Dedicated infrastructure for enterprise workloads.
-   **[Quicknode SDK](/docs/quicknode-sdk)**: JavaScript and TypeScript SDK for interacting with Quicknode services programmatically.

## API Documentation for Web3

Interact with RPC, REST, and gRPC endpoints across 80+ blockchains using ready-to-run examples in JavaScript, Python, Go, and more. Use Quicknode products like Streams, Webhooks, and IPFS to build and run blockchain applications from one platform.

## Send Your First Request

Make a JSON-RPC call to get the latest block number on Ethereum:

```bash
curl https://docs-demo.quiknode.pro/ \
  -X POST \
  -H "Content-Type: application/json" \
  --data '{"method":"eth_blockNumber","params":[],"id":1,"jsonrpc":"2.0"}'
```

```javascript
const response = await fetch('https://docs-demo.quiknode.pro/', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    method: 'eth_blockNumber',
    params: [],
    id: 1,
    jsonrpc: '2.0',
  }),
});
const data = await response.json();
console.log(data.result);
```

```python
import requests

url = "https://docs-demo.quiknode.pro/"
payload = {"method": "eth_blockNumber", "params": [], "id": 1, "jsonrpc": "2.0"}
response = requests.post(url, json=payload)
print(response.json()["result"])
```

## Developer Tools

- **[Core API](/docs/ethereum/)**: Blockchain API endpoints across 80+ chains with low latency and high availability.
- **[Streams](/docs/streams)**: Custom real-time blockchain data pipelines with filtering and transformation logic.
- **[Webhooks](/docs/webhooks)**: Real-time blockchain data feed and alerting for on-chain events.
- **[Marketplace Add-Ons](/docs/marketplace-addons)**: Third-party add-ons that extend Quicknode with extra capabilities.
- **[IPFS](/docs/ipfs)**: Upload and retrieve data on IPFS through the Quicknode gateway.
- **[Key-Value Store](/docs/key-value-store)**: Large-scale dataset storage accessible through a REST API on your Quicknode endpoint.
- **[Custom RPC Options](/docs/custom-rpc-options)**: Dedicated infrastructure for enterprise workloads.
- **[Quicknode SDK](/docs/quicknode-sdk)**: JavaScript and TypeScript SDK for interacting with Quicknode services programmatically.
