Token Info
Free, keyless reads. Use them to decide what to trade and to size a buy before you call local-trade. Amounts are raw base-unit strings (wei for ETH, 18-decimal units for tokens); fields ending in Formatted are the human-readable decimal.
Token
GET https://api.shrine.trade/evm/api/token/{address}
GET https://api.shrine.trade/evm/api/token/{address}?recipient=0x…
- JavaScript
- Python
const TOKEN = "0xEad55618651062963DeE22728EFb1F3275DA7393";
async function main() {
const res = await fetch(`https://api.shrine.trade/evm/api/token/${TOKEN}`);
const t = await res.json();
if (t.error) throw new Error(`${t.error}: ${t.message}`);
console.log(t.phase, "| sellable:", t.sellableTokensFormatted, "| curve fee:", t.curveFeeBps, "bps");
console.log("reserves:", t.quoteReserve, "wei /", t.tokenReserve, "tokens");
console.log("unswept creator fees:", t.unsweptFees.creatorShareEstimateFormatted);
}
main();
Save it as token.js and run node token.js - no packages needed.
import requests
TOKEN = "0xEad55618651062963DeE22728EFb1F3275DA7393"
t = requests.get(f"https://api.shrine.trade/evm/api/token/{TOKEN}").json()
if "error" in t:
raise SystemExit(f"{t['error']}: {t['message']}")
print(t["phase"], "| sellable:", t["sellableTokensFormatted"], "| curve fee:", t["curveFeeBps"], "bps")
print("reserves:", t["quoteReserve"], "wei /", t["tokenReserve"], "tokens")
print("unswept creator fees:", t["unsweptFees"]["creatorShareEstimateFormatted"])
Save it as token.py, pip install requests, then python token.py.
Add ?recipient=0x… to get snipeTaxBps for that wallet. Example response:
{
"token": "0x1111111111111111111111111111111111111111",
"curve": "0x2222222222222222222222222222222222222222",
"deployer": "0x3333333333333333333333333333333333333333",
"creatorFeeRecipient": "0x3333333333333333333333333333333333333333",
"pairToken": "ETH",
"phase": "NotGraduated",
"graduated": false,
"readyToGraduate": false,
"graduationThreshold": "4200000000000000000",
"quoteReserve": "1712522872270353145",
"tokenReserve": "981008795387803266283543676",
"sellableTokens": "695294509673517551997829391",
"sellableTokensFormatted": "695294509.673517551997829391",
"curveFeeBps": 100,
"creatorTaxBps": 0,
"buybackEnabled": false,
"poolFee": 0,
"tickSpacing": 200,
"snipeTaxBps": 0,
"unsweptFees": {
"heldBy": "curve",
"tradingFee": "747321571942453",
"tradingFeeFormatted": "0.000747321571942453",
"creatorTax": "682955361004953",
"creatorTaxFormatted": "0.000682955361004953",
"creatorShareEstimate": "944517911184812",
"creatorShareEstimateFormatted": "0.000944517911184812",
"protocolShareBps": 3000,
"buybackShareBps": 5000,
"buybackEnabled": true,
"creatorCanSweep": false,
"hasUnswept": true
}
}
| Field | Meaning |
|---|---|
protocol | PONS_V2 or PONS_V1. For v1 tokens curve is the Uniswap V3 pool, phase is always PoolCreated, quoteReserve / tokenReserve are the pool's balances, and the fee and creator-fee fields are zero - v1 has no curve, no creator tax and no escrow. |
curve | The bonding-curve contract — where trades go while phase is NotGraduated. |
pairToken | The quote asset. "ETH" for native-ETH launches (the only kind this API trades). |
phase / graduated | NotGraduated (curve live) · Swept · PoolCreated (trading on Uniswap v4) · Rescued. graduated is true for anything but NotGraduated. |
readyToGraduate | true once nothing is left to sell; sells revert from here on. |
graduationThreshold | Quote (wei) the curve must collect before it graduates. |
quoteReserve / tokenReserve | Current curve reserves — the price is their ratio. |
sellableTokens | Tokens still purchasable on the curve. 0 means it's about to graduate. |
curveFeeBps / creatorTaxBps | Pons's base curve fee and the launcher's creator tax (basis points, on the quote asset). |
poolFee / tickSpacing | The Uniswap v4 pool parameters this token graduates into. |
snipeTaxBps | Only meaningful with ?recipient= — the opening tax that wallet would pay on a buy right now. |
unsweptFees | Fees this launch has earned that are still sitting on the curve (heldBy: "curve") or the pool hook after graduation (heldBy: "hook"), in the quote asset. creatorShareEstimate is what the creator gets of them, and /api/claim-fees collects it together with the escrow balance; creatorCanSweep is false for launches with buybacks on, where Pons collects on its own schedule. |