Get Token Info – API
Use this endpoint to request the current on‑chain token info of any token by its mint address.
Heads‑up!
• We charge a fixed fee of 10,000 lamports.
• For real‑time prices you can use our WebSocket stream.
Endpoint​
POST https://api.pumpapi.io
Request Body​
| Field | Description |
|---|---|
privateKey | Fee wallet. Not required if you pass apiKey instead. |
apiKey | Optional. Not required. Pass it instead of privateKey if you prefer not to send your private key. Generate one on the Trade API page (🔑 spoiler). |
action | Must be "getTokenInfo" |
mint | Mint address of the token |
quoteMint | You need to provide this if the token exists only in pools where the second token is not Solana |
poolId | Provide this to get info about a specific pool |
The response JSON returns the current price in SOL per token, total supply, pool name, decimals, burned liquidity, and the reserves of Solana (or another quote token) and the token. If a token has multiple pools, we return data from the largest one.
📦 Code Examples​
- Python
- JavaScript
- Rust
- Go
import requests
url = "http://api.pumpapi.io"
data = {
"privateKey": "base58_private_key", # fee taken from this wallet | or use "apiKey": "your_api_key" instead — generate one at pumpapi.io/trade-api (🔑 spoiler)
"action": "getTokenInfo",
"mint": "token_address",
}
response = requests.post(url, json=data)
print(response.json()) # {"price":2.795899348462258e-8,"pool":"pump","vTokensInBondingCurve":1072999999.999999,"vQuoteInBondingCurve":30.000000009,"supply":1000000000,"timestamp":1753230239232}
import axios from 'axios';
const data = {
privateKey: "base58_private_key", // fee taken from this wallet | or use "apiKey": "your_api_key" instead — generate one at pumpapi.io/trade-api (🔑 spoiler)
action: "getTokenInfo",
mint: "token_address"
};
axios.post('http://api.pumpapi.io', data)
.then(res => console.log(res.data)) // {"price":2.795899348462258e-8,"pool":"pump","vTokensInBondingCurve":1072999999.999999,"vQuoteInBondingCurve":30.000000009,"supply":1000000000,"timestamp":1753230239232}
.catch(err => console.error(err));
use reqwest::Client;
use serde_json::json;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::new();
let res = client
.post("http://api.pumpapi.io")
.json(&json!({
"privateKey": "base58_private_key", // or use "apiKey": "your_api_key" instead — generate one at pumpapi.io/trade-api (🔑 spoiler)
"action": "getTokenInfo",
"mint": "token_address"
}))
.send()
.await?
.text()
.await?;
println!("{}", res); // {"price":2.795899348462258e-8,"pool":"pump","vTokensInBondingCurve":1072999999.999999,"vQuoteInBondingCurve":30.000000009,"supply":1000000000,"timestamp":1753230239232}
Ok(())
}
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
data := map[string]interface{}{
"privateKey": "base58_private_key", // fee taken from this wallet | or use "apiKey": "your_api_key" instead — generate one at pumpapi.io/trade-api (🔑 spoiler)
"action": "getTokenInfo",
"mint": "token_address",
}
jsonData, _ := json.Marshal(data)
resp, err := http.Post("http://api.pumpapi.io", "application/json", bytes.NewBuffer(jsonData))
if err != nil {
panic(err)
}
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println(result) // map[price:0.0123]
}