getSupply
Returns information about the current supply.
Common use cases
| Economic dashboard displays | Display total SOL supply, circulating vs. locked amounts, and inflation metrics on blockchain explorers or analytics platforms. Use circulating supply for accurate market cap calculations (price × circulating supply). |
| Monitor inflation and supply growth | Track changes in total and circulating supply over time to analyze network inflation rate, staking participation, and treasury/foundation holdings. Compare against inflation schedule for validation. |
| Verify non-circulating account lists | Audit which accounts hold non-circulating SOL (foundation, team allocations, staking contracts) by examining the nonCirculatingAccounts array. Cross-reference with known reserve addresses for transparency reporting. |
Parameters
config (object, optional)
Configuration object containing the following fields:
Fields:
commitment(string): The commitment describes how finalized a block is at that point in time. See Configuring State Commitment.excludeNonCirculatingAccountsList(bool): Exclude non circulating accounts list from response
Request
- cURL
- JavaScript
- Python
curl https://solana-mainnet.api.syndica.io/api-key/YOUR_API_KEY \
-X POST \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getSupply",
"params": [
{
"commitment": "finalized"
}
]
}'
// Using fetch
const response = await fetch('https://solana-mainnet.api.syndica.io/api-key/YOUR_API_KEY', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
"jsonrpc": "2.0",
"id": 1,
"method": "getSupply",
"params": [
{
"commitment": "finalized"
}
]
})
});
const data = await response.json();
console.log(data);
import requests
import json
url = 'https://solana-mainnet.api.syndica.io/api-key/YOUR_API_KEY'
headers = {'Content-Type': 'application/json'}
data = {
"jsonrpc": "2.0",
"id": 1,
"method": "getSupply",
"params": [
{
"commitment": "finalized"
}
]
}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())
Replace mainnet with devnet in the URL to query devnet instead.
Response
{
"jsonrpc": "2.0",
"result": {
"context": { "slot": 1114 },
"value": {
"total": 1016000,
"circulating": 16000,
"nonCirculating": 1000000,
"nonCirculatingAccounts": [
"FEy8pTbP5fEoqMV1GdTz83byuA8EKByqYat1PKDgVAq5",
"9huDUZfxoJ7wGMTffUE7vh1xePqef7gyrLJu9NApncqA",
"3mi1GmwEE3zo2jmfDuzvjSX9ovRXsDUKHvsntpkhuLJ9",
"BYxEJTDerkaRWBem3XgnVcdhppktBXa2HbkHPKj2Ui4Z"
]
}
},
"id": 1
}
Response Fields
circulating (u64)
Circulating supply in lamports
nonCirculating (u64)
Non-circulating supply in lamports
nonCirculatingAccounts (array)
An array of account addresses of non-circulating accounts, as strings. If excludeNonCirculatingAccountsList is enabled, the returned array will be empty.
total (u64)
Total supply in lamports
FAQ and Troubleshooting
What's the difference between getSupply and getTokenSupply?
getSupply returns SOL (native token) supply information. getTokenSupply is for SPL tokens - pass the token mint address to get SPL token supply. Use getSupply for SOL economic data, getTokenSupply for any SPL token.
What does "circulating supply" mean?
Circulating supply is liquid SOL that can participate in the economy (trading, staking, transactions). Non-circulating includes locked team/foundation allocations, treasury reserves, and certain staking accounts. Total = circulating + non-circulating.
How do I calculate market cap from getSupply?
Get circulating supply from response.value.circulating (in lamports), convert to SOL (÷ 1,000,000,000), then multiply by current SOL price. Use circulating supply, not total, as locked tokens shouldn't count toward market cap.
Can I exclude the nonCirculatingAccounts list to reduce response size?
Yes, pass "excludeNonCirculatingAccountsList": true in the params object. The response will still include total/circulating/nonCirculating amounts, just omit the account array. Useful when you only need aggregate numbers.
Related Methods
getTokenSupply
Returns supply information for SPL tokens (mint address required). getSupply is for native SOL only; use getTokenSupply for any SPL token supply data.
getLargestAccounts
Returns top 20 accounts by lamport balance. Combine with getSupply to identify what percentage of total supply is concentrated in top holders.
getBalance
Returns SOL balance for a specific account. Use getSupply for network-wide supply metrics, getBalance for individual account balances.
getInflationRate
Returns current inflation rate percentage. Use with getSupply to calculate expected supply growth over time based on inflation schedule.