--- 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 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 ```javascript 1import { Core } from '@quicknode/sdk'2 3const core = new Core({4 endpointUrl: 'https://{your-endpoint-name}.quiknode.pro/{your-token}/',5})6 7core.client.getBlockNumber()8 ``` ```javascript 1import { Core } from '@quicknode/sdk'2 3const core = new Core({4 endpointUrl: 'https://{your-endpoint-name}.quiknode.pro/{your-token}/',5})6 7core.client.getBlockNumber()8 ``` ```bash 1curl https://{your-endpoint-name}.quiknode.pro/{your-token}/ \2 -X POST \3 -H "Content-Type: application/json" \4 --data '{"method":"eth_blockNumber","params":[],"id":1,"jsonrpc":"2.0"}'5 ``` ```bash 1curl https://{your-endpoint-name}.quiknode.pro/{your-token}/ \2 -X POST \3 -H "Content-Type: application/json" \4 --data '{"method":"eth_blockNumber","params":[],"id":1,"jsonrpc":"2.0"}'5 ``` ```javascript 1const ethers = require("ethers");2(async () => {3 const provider = new ethers.providers.JsonRpcProvider("https://{your-endpoint-name}.quiknode.pro/{your-token}/");4 const blockNum = await provider.getBlockNumber();5 console.log(blockNum);6})();7 ``` ```javascript 1const ethers = require("ethers");2(async () => {3 const provider = new ethers.providers.JsonRpcProvider("https://{your-endpoint-name}.quiknode.pro/{your-token}/");4 const blockNum = await provider.getBlockNumber();5 console.log(blockNum);6})();7 ``` ```javascript 1var myHeaders = new Headers();2myHeaders.append("Content-Type", "application/json");3 4var raw = JSON.stringify({5 "method": "eth_blockNumber",6 "params": [],7 "id": 1,8 "jsonrpc": "2.0"9});10 11var requestOptions = {12 method: 'POST',13 headers: myHeaders,14 body: raw,15 redirect: 'follow'16};17 18fetch("https://{your-endpoint-name}.quiknode.pro/{your-token}/", requestOptions)19 .then(response => response.text())20 .then(result => console.log(result))21 .catch(error => console.log('error', error));22 ``` ```javascript 1var myHeaders = new Headers();2myHeaders.append("Content-Type", "application/json");3 4var raw = JSON.stringify({5 "method": "eth_blockNumber",6 "params": [],7 "id": 1,8 "jsonrpc": "2.0"9});10 11var requestOptions = {12 method: 'POST',13 headers: myHeaders,14 body: raw,15 redirect: 'follow'16};17 18fetch("https://{your-endpoint-name}.quiknode.pro/{your-token}/", requestOptions)19 .then(response => response.text())20 .then(result => console.log(result))21 .catch(error => console.log('error', error));22 ``` ```python 1import requests2import json3 4url = "https://{your-endpoint-name}.quiknode.pro/{your-token}/"5 6payload = json.dumps({7 "method": "eth_blockNumber",8 "params": [],9 "id": 1,10 "jsonrpc": "2.0"11})12 13headers = {14 'Content-Type': 'application/json'15}16 17response = requests.request("POST", url, headers=headers, data=payload)18 19print(response.text)20 ``` ```python 1import requests2import json3 4url = "https://{your-endpoint-name}.quiknode.pro/{your-token}/"5 6payload = json.dumps({7 "method": "eth_blockNumber",8 "params": [],9 "id": 1,10 "jsonrpc": "2.0"11})12 13headers = {14 'Content-Type': 'application/json'15}16 17response = requests.request("POST", url, headers=headers, data=payload)18 19print(response.text)20 ``` ```ruby 1require "uri"2require "json"3require "net/http"4 5url = URI("https://{your-endpoint-name}.quiknode.pro/{your-token}/")6 7https = Net::HTTP.new(url.host, url.port)8https.use_ssl = true9 10request = Net::HTTP::Post.new(url)11request["Content-Type"] = "application/json"12request.body = JSON.dump({13 "method": "eth_blockNumber",14 "params": [],15 "id": 1,16 "jsonrpc": "2.0"17})18 19response = https.request(request)20puts response.read_body21 ``` ```ruby 1require "uri"2require "json"3require "net/http"4 5url = URI("https://{your-endpoint-name}.quiknode.pro/{your-token}/")6 7https = Net::HTTP.new(url.host, url.port)8https.use_ssl = true9 10request = Net::HTTP::Post.new(url)11request["Content-Type"] = "application/json"12request.body = JSON.dump({13 "method": "eth_blockNumber",14 "params": [],15 "id": 1,16 "jsonrpc": "2.0"17})18 19response = https.request(request)20puts response.read_body21 ``` ```python 1from web3 import Web3, HTTPProvider2w3 = Web3(HTTPProvider('https://{your-endpoint-name}.quiknode.pro/{your-token}/'))3print (w3.eth.blockNumber)4 ``` ```python 1from web3 import Web3, HTTPProvider2w3 = Web3(HTTPProvider('https://{your-endpoint-name}.quiknode.pro/{your-token}/'))3print (w3.eth.blockNumber)4 ``` ```ruby 1require 'eth'2 3client = Eth::Client.create 'https://{your-endpoint-name}.quiknode.pro/{your-token}/'4payload = {5 "jsonrpc": "2.0",6 "method": "eth_blockNumber",7 "params": [],8 "id": "1"9}10 11response = client.send(payload.to_json)12puts response13 ``` ```ruby 1require 'eth'2 3client = Eth::Client.create 'https://{your-endpoint-name}.quiknode.pro/{your-token}/'4payload = {5 "jsonrpc": "2.0",6 "method": "eth_blockNumber",7 "params": [],8 "id": "1"9}10 11response = client.send(payload.to_json)12puts response13 ``` [ ### Core API Use the quickest and most reliable blockchain API with unparalleled latency, reliability, and scalability across all major blockchains. ](/docs/ethereum)[ ### Webhooks Leverage a fully customizeable real-time blockchain data feed and advanced alerting, and include real-time blockchain event driven logic into your workflows. ](/docs/webhooks)[ ### Streams Leverage a custom real-time blockchain data feed, advanced alerting, and include real-time blockchain event driven logic into your workflows. ](/docs/streams)[ ### Marketplace 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. ](/docs/marketplace-addons)[ ### IPFS Use Quicknode to upload, store, manage, and retrieve data on the IPFS network through our pinning services and dedicated gateways. ](/docs/ipfs)[ ### 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. ](/docs/custom-rpc-options)[ ### 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. ](/docs/key-value-store)[ ### 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. ](/docs/quicknode-sdk) ## QuickStart Resources #### 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)