getSupply
Returns information about the current supply of SOL, including total supply, circulating supply, and non-circulating supply. It can also optionally return the list of non-circulating accounts. This data is important for tokenomics analysis, market cap calculations, supply dashboards, and understanding how much SOL is locked vs. freely tradeable.
Parameters
| # | Type | Required | Description |
|---|---|---|---|
| 1 | object | No | Configuration object |
Configuration object fields:
| Field | Type | Description |
|---|---|---|
commitment | string | Commitment level: processed, confirmed, or finalized |
excludeNonCirculatingAccountsList | bool | Exclude the list of non-circulating accounts from the response |
Response
Returns an RpcResponse object:
| Field | Type | Description |
|---|---|---|
context.slot | u64 | The slot at which the value was read |
value.total | u64 | Total supply in lamports |
value.circulating | u64 | Circulating supply in lamports |
value.nonCirculating | u64 | Non-circulating supply in lamports |
value.nonCirculatingAccounts | array[string] | List of non-circulating account addresses |
Code Examples
cURL
1curl http://[IP_ADDRESS]:[PORT] -X POST -H "Content-Type: application/json" -d '{
2 "jsonrpc": "2.0",
3 "id": 1,
4 "method": "getSupply",
5 "params": [
6 { "excludeNonCirculatingAccountsList": true }
7 ]
8}'TypeScript
1const response = await fetch("http://[IP_ADDRESS]:[PORT]", {
2 method: "POST",
3 headers: { "Content-Type": "application/json" },
4 body: JSON.stringify({
5 jsonrpc: "2.0",
6 id: 1,
7 method: "getSupply",
8 params: [
9 { excludeNonCirculatingAccountsList: true }
10 ]
11 }),
12});
13const { result } = await response.json();
14console.log("Total:", result.value.total / 1e9, "SOL");Python
1import requests
2
3response = requests.post("http://[IP_ADDRESS]:[PORT]", json={
4 "jsonrpc": "2.0",
5 "id": 1,
6 "method": "getSupply",
7 "params": [
8 {"excludeNonCirculatingAccountsList": True}
9 ]
10})
11result = response.json()["result"]
12print(f"Total: {result['value']['total'] / 1e9} SOL")Rust
1use reqwest::Client;
2use serde_json::json;
3
4#[tokio::main]
5async fn main() -> Result<(), Box<dyn std::error::Error>> {
6 let client = Client::new();
7 let res = client.post("http://[IP_ADDRESS]:[PORT]")
8 .json(&json!({
9 "jsonrpc": "2.0",
10 "id": 1,
11 "method": "getSupply",
12 "params": [
13 {"excludeNonCirculatingAccountsList": true}
14 ]
15 }))
16 .send().await?
17 .text().await?;
18 println!("{}", res);
19 Ok(())
20}Example Response
1{
2 "jsonrpc": "2.0",
3 "result": {
4 "context": { "slot": 166974442 },
5 "value": {
6 "total": 570145524542311600,
7 "circulating": 419145524542311600,
8 "nonCirculating": 151000000000000000,
9 "nonCirculatingAccounts": []
10 }
11 },
12 "id": 1
13}