GET /api/supply
curl --request GET \
--url https://api.example.com/api/supply/:mintAddressimport requests
url = "https://api.example.com/api/supply/:mintAddress"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/supply/:mintAddress', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/supply/:mintAddress",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/supply/:mintAddress"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/supply/:mintAddress")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/supply/:mintAddress")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"result": "<string>",
"data": {
"mint": "<string>",
"totalSupply": "<string>",
"circulatingSupply": "<string>",
"teamPerformancePackage": "<string>",
"futarchyAmmLiquidity": "<string>",
"meteoraLpLiquidity": "<string>",
"decimals": 123,
"rawTotalSupply": "<string>"
}
}API Reference
GET /api/supply
Retrieve complete token supply breakdown with allocation details
GET
/
api
/
supply
/
:mintAddress
GET /api/supply
curl --request GET \
--url https://api.example.com/api/supply/:mintAddressimport requests
url = "https://api.example.com/api/supply/:mintAddress"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/supply/:mintAddress', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/supply/:mintAddress",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/supply/:mintAddress"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/supply/:mintAddress")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/supply/:mintAddress")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"result": "<string>",
"data": {
"mint": "<string>",
"totalSupply": "<string>",
"circulatingSupply": "<string>",
"teamPerformancePackage": "<string>",
"futarchyAmmLiquidity": "<string>",
"meteoraLpLiquidity": "<string>",
"decimals": 123,
"rawTotalSupply": "<string>"
}
}Overview
The supply endpoints provide complete supply breakdown for launchpad tokens, including detailed allocation information for circulating supply, team performance packages, and liquidity positions.For launchpad tokens, circulating supply excludes the team performance package but includes all liquidity (both FutarchyAMM and Meteora DAMM).
Supply Breakdown
For launchpad tokens, supply is broken down into the following categories:| Category | Description | Circulating? |
|---|---|---|
| Circulating Supply | Total supply minus team performance package | ✅ Yes |
| Team Performance Package | Locked tokens allocated to the team (price-based unlock) | ❌ No |
| FutarchyAMM Liquidity | Tokens in the internal FutarchyAMM for spot trading | ✅ Yes |
| Meteora LP Liquidity | Tokens in the external Meteora DAMM pool (POL) | ✅ Yes |
Liquidity tokens (both FutarchyAMM and Meteora) are counted as circulating supply since they can be traded.
Endpoints
| Endpoint | Description |
|---|---|
GET /api/supply/:mintAddress | Returns complete supply breakdown with allocation details |
GET /api/supply/:mintAddress/total | Returns total supply only |
GET /api/supply/:mintAddress/circulating | Returns circulating supply (excludes team performance package) |
Full Supply Information
Endpoint:GET /api/supply/:mintAddress
Returns complete supply information for a token.
Path Parameters
string
required
The SPL token mint address (Solana PublicKey)Example:
METAwkXcqyXKy1AtsSgJ8JiUHwGCafnZL38n3vYmetaResponse
string
required
The formatted total supply as a string
object
required
Complete supply data object with allocation breakdown
Show data properties
Show data properties
string
The token mint address
string
Total token supply (formatted with decimals)
string
Circulating token supply - excludes team performance package (formatted with decimals)
string
Locked tokens allocated to the team with price-based unlock - NOT circulating
string
Tokens in the internal FutarchyAMM for spot trading - IS circulating
string
Tokens in the external Meteora DAMM pool (POL) - IS circulating
number
Token decimal places
string
Raw total supply without decimal formatting
Example Request
curl https://market-api.metadao.fi/api/supply/METAwkXcqyXKy1AtsSgJ8JiUHwGCafnZL38n3vYmeta
const mintAddress = 'METAwkXcqyXKy1AtsSgJ8JiUHwGCafnZL38n3vYmeta';
const response = await fetch(`https://market-api.metadao.fi/api/supply/${mintAddress}`);
const data = await response.json();
console.log(data);
import requests
mint_address = 'METAwkXcqyXKy1AtsSgJ8JiUHwGCafnZL38n3vYmeta'
response = requests.get(f'https://market-api.metadao.fi/api/supply/{mint_address}')
data = response.json()
print(data)
Example Response
{
"result": "1000000.0",
"data": {
"mint": "METAwkXcqyXKy1AtsSgJ8JiUHwGCafnZL38n3vYmeta",
"totalSupply": "1000000.0",
"circulatingSupply": "850000.0",
"teamPerformancePackage": "150000.0",
"futarchyAmmLiquidity": "200000.0",
"meteoraLpLiquidity": "100000.0",
"decimals": 9,
"rawTotalSupply": "1000000000000000"
}
}
Total Supply Only
Endpoint:GET /api/supply/:mintAddress/total
Returns just the total supply value as a plain string. Useful for integrations that only need the total supply number.
Example Request
curl https://market-api.metadao.fi/api/supply/METAwkXcqyXKy1AtsSgJ8JiUHwGCafnZL38n3vYmeta/total
Example Response
1000000.0
This endpoint returns a plain text response, not JSON, for easy integration with tools expecting a simple number.
Circulating Supply Only
Endpoint:GET /api/supply/:mintAddress/circulating
Returns just the circulating supply value as a plain string. This value excludes the team performance package but includes all liquidity positions.
Circulating = Total Supply - Team Performance PackageBoth FutarchyAMM liquidity and Meteora LP liquidity are included in circulating supply since these tokens are actively tradeable.
Example Request
curl https://market-api.metadao.fi/api/supply/METAwkXcqyXKy1AtsSgJ8JiUHwGCafnZL38n3vYmeta/circulating
Example Response
850000.0
This endpoint returns a plain text response, not JSON, for easy integration with price aggregators like CoinGecko and CoinMarketCap.
Use Cases
Price Aggregators
CoinGecko and CoinMarketCap require supply endpoints for market cap calculations
Token Dashboards
Display real-time supply metrics on token information pages
Analytics
Track supply changes over time for tokenomics analysis
DeFi Integrations
Calculate fully diluted valuations and token metrics
Error Handling
Invalid Mint Address
{
"error": "Invalid mint address"
}
Mint Not Found
{
"error": "Token mint not found"
}
Related Documentation
Tickers API
Get pricing and volume data for all DAOs
Volume Aggregate
Get aggregate volume with daily breakdown
API Overview
Learn about the API architecture
Error Handling
Handle API errors properly
⌘I
