justi.fun
§07 · API

Data API

Coins, trades, candles, holders, burns, rewards, payouts, creators and platform totals.

Conventions

WhatHow
AmountsLamports for SOL, raw units for tokens (6 decimals). Values that can pass 2^53 are decimal strings like "1532805100615". Prices (priceSol, SOL per whole token) and percentages are numbers.
TimesUnix seconds.
PagesList endpoints return nextCursor (null at the end); pass it back as ?cursor=. Trades use a keyset cursor, stable while new trades arrive. Candles page with before=nextBefore.
CoinsPublic paths call coins tokens: /v1/tokens/.... status is curve, graduating or graduated.
FreshnessTrades are indexed from the chain within seconds. Holders are a snapshot every 10 minutes. Creator claimable fees are read live from the pools.
CORSEvery public route answers Access-Control-Allow-Origin: *.

Reference

Coins and trades

#Coins, with filters, sort, search and pagination

GET/v1/tokens
Key optionalRate class readlistTokens

Parameters

NameTypeAbout
statusquery"all" | "curve" | "graduating" | "graduated"default "all"
creatorqueryaddressOnly coins created by this wallet.
qquerystringSearch ticker or name (contains), or an exact mint. max 64 chars
sortquery"new" | "marketcap" | "volume24h" | "lastTrade" | "progress" | "trades"default "new"
limitqueryintegerPage size, 1 to 100. default 50
cursorquerystringnextCursor from the previous page. max 400 chars
Response TokenPage
FieldTypeAbout
tokensrequiredTokenSummary[]
mintrequiredaddress
namerequiredstring
tickerrequiredstring
descriptionrequiredstring
imagerequiredstring | nullImage URL (served by this API).
bannerrequiredstring | null3:1 banner URL, site only, not on chain.
metadataUrirequiredstring | nullThe on-chain metadata URI (Metaplex JSON).
creatorrequiredaddress
createdAtrequiredintegerPool activation time.
statusrequired"curve" | "graduating" | "graduated"curve: trading on the bonding curve. graduating: curve full, migration pending. graduated: trading on DAMM v2.
curvePoolrequiredaddressMeteora DBC virtual pool.
configrequiredaddressDBC config (fee tier).
dammPoolrequiredaddress | nullMeteora DAMM v2 pool after graduation.
feesrequiredFeeSplit
curveProgressPctrequirednumberShare of the graduation threshold raised, 0 to 100.
priceSolrequirednumberSOL per whole token, from the pool's sqrt price.
marketCapSolrequirednumberpriceSol x 1,000,000,000 supply.
holderCountrequiredinteger
tradesrequiredinteger
volume24hLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
lastTradeAtrequiredinteger | nullUnix time in seconds.
dexPaidrequiredbooleanApproved DEX Screener Enhanced Token Info order.
socialrequiredobject
totalrequiredinteger
nextCursorrequiredstring | null
Errors400 invalid_params401 unauthorized429 rate_limited500 internal
curl "https://api.justi.fun/v1/tokens?sort=volume24h&limit=20"

#Every coin in one list (for terminals)

GET/v1/tokenlist
Key optionalRate class readgetTokenList

Mint, pools, config, creator, createdAt and status for every coin, newest first. Cached 30s.

Response TokenList
FieldTypeAbout
namerequiredstring
timestamprequiredintegerUnix time in seconds.
countrequiredinteger
tokensrequiredobject[]
chainIdrequiredinteger
addressrequiredaddress
namerequiredstring
symbolrequiredstring
decimalsrequiredinteger
logoURIrequiredstring | null
metadataUrirequiredstring | null
curvePoolrequiredaddress
dammPoolrequiredaddress | null
configrequiredaddress
creatorrequiredaddress
createdAtrequiredintegerUnix time in seconds.
statusrequired"curve" | "graduating" | "graduated"curve: trading on the bonding curve. graduating: curve full, migration pending. graduated: trading on DAMM v2.
Errors400 invalid_params401 unauthorized429 rate_limited500 internal
curl "https://api.justi.fun/v1/tokenlist"

#Coin detail: metadata, safety facts, curve, graduation, sniper window, totals

GET/v1/tokens/{mint}
Key optionalRate class readgetToken

Parameters

NameTypeAbout
mintrequiredpathaddress
Response TokenDetail
FieldTypeAbout
mintrequiredaddress
namerequiredstring
tickerrequiredstring
descriptionrequiredstring
imagerequiredstring | nullImage URL (served by this API).
bannerrequiredstring | null3:1 banner URL, site only, not on chain.
metadataUrirequiredstring | nullThe on-chain metadata URI (Metaplex JSON).
creatorrequiredaddress
createdAtrequiredintegerPool activation time.
statusrequired"curve" | "graduating" | "graduated"curve: trading on the bonding curve. graduating: curve full, migration pending. graduated: trading on DAMM v2.
curvePoolrequiredaddressMeteora DBC virtual pool.
configrequiredaddressDBC config (fee tier).
dammPoolrequiredaddress | nullMeteora DAMM v2 pool after graduation.
feesrequiredFeeSplit
tierrequiredstringTier key, e.g. creator-100, holders, split-50.
moderequired"creator" | "holders" | "split"Who earns the fee: the creator, holders, or both.
totalPctrequirednumberTotal pool fee after the opening window, percent of the SOL side.
creatorPctrequirednumber
holdersPctrequirednumber
platformPctrequirednumberPad share. 75% of it buys and burns $JUSTI, 25% goes to the dev wallet.
meteoraPctrequirednumberMeteora protocol share (20% of the pool fee).
creatorOnchainPercentrequiredintegercreatorTradingFeePercentage on the DBC config.
poolFeeNumeratorrequiredu64 stringPool fee numerator over 1e9 after the window.
curveProgressPctrequirednumberShare of the graduation threshold raised, 0 to 100.
priceSolrequirednumberSOL per whole token, from the pool's sqrt price.
marketCapSolrequirednumberpriceSol x 1,000,000,000 supply.
holderCountrequiredinteger
tradesrequiredinteger
volume24hLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
lastTradeAtrequiredinteger | nullUnix time in seconds.
dexPaidrequiredbooleanApproved DEX Screener Enhanced Token Info order.
socialrequiredobject
xrequiredstring | null
telegramrequiredstring | null
websiterequiredstring | null
metadatarequiredTokenMetadata | nullMetaplex-standard token metadata JSON we host (the on-chain uri).
namerequiredstring
symbolrequiredstring
descriptionrequiredstring
imagerequiredstring
showNamerequiredboolean
createdOnrequiredstring
twitterstring
telegramstring
websitestring
bannerstring
createSignaturerequiredstring
safetyrequiredSafety
fixedSupplyrequiredboolean | null
mintAuthorityRevokedrequiredboolean | null
freezeAuthorityRevokedrequiredboolean | null
metadataImmutablerequiredboolean | null
lpLockedPctrequirednumberShare of graduation LP that is permanently locked (100 on every justi config).
devBuyPctrequirednumberDev buy in the create transaction, percent of supply.
devHoldsPctrequirednumberCreator wallet's balance at the last holder snapshot, percent of supply.
top10PctrequirednumberTop 10 wallet holders, percent of supply, at the last snapshot.
holdersAtrequiredinteger | nullUnix time in seconds.
curverequiredobject
quoteReserveLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
graduationQuoteLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
progressPctrequirednumber
graduationrequiredobject
graduatedrequiredboolean
dammPoolrequiredaddress | null
migratedAtrequiredinteger | nullUnix time in seconds.
migrationSignaturerequiredstring | null
sniperWindowrequiredobject
secondsrequiredintegerLength of the opening window.
startPctrequirednumberFee at second 0.
schedulerequiredobject[]Fee for each second of the window for this tier; after the last entry the tier fee applies.
extraSplitrequiredobjectHow the pad's share of the fee above the normal rate is split.
endsAtrequiredintegerUnix time in seconds.
feeNowPctrequirednumber
buyersrequiredinteger
boughtPctOfSupplyrequirednumber
extraFeeLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
totalsrequiredobject
volumeLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
holderRewardsLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
holderRoundsrequiredinteger
holderWalletsrequiredinteger
burnedTokensrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
creatorClaimedLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
creatorUnclaimedLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
dexrequiredobject
paidrequiredboolean
checkedAtrequiredinteger | nullUnix time in seconds.
urlrequiredstring
urlrequiredstring
Errors400 invalid_params401 unauthorized404 not_found429 rate_limited500 internal
curl "https://api.justi.fun/v1/tokens/<mint>"

#Metaplex metadata JSON for a coin

GET/v1/tokens/{mint}/metadata
Key optionalRate class readgetTokenMetadata

Parameters

NameTypeAbout
mintrequiredpathaddress
Response TokenMetadata
FieldTypeAbout
namerequiredstring
symbolrequiredstring
descriptionrequiredstring
imagerequiredstring
showNamerequiredboolean
createdOnrequiredstring
twitterstring
telegramstring
websitestring
bannerstring
Errors400 invalid_params401 unauthorized404 not_found429 rate_limited500 internal
curl "https://api.justi.fun/v1/tokens/<mint>/metadata"

#Trades, newest first, cursor paginated (curve and DAMM v2)

GET/v1/tokens/{mint}/trades
Key optionalRate class readlistTrades

Parameters

NameTypeAbout
mintrequiredpathaddress
limitqueryintegerPage size, 1 to 200. default 50
cursorquerystringnextCursor from the previous page. max 400 chars
walletqueryaddress
sidequery"buy" | "sell"buy: SOL in, coin out. sell: coin in, SOL out.
venuequery"curve" | "damm"curve: the Meteora DBC bonding curve. damm: the Meteora DAMM v2 pool after graduation.
Response TradePage
FieldTypeAbout
tradesrequiredTrade[]
signaturerequiredsignatureBase58 transaction signature.
ixrequiredstringInstruction position in the transaction. With signature it is unique.
venuerequired"curve" | "damm"curve: the Meteora DBC bonding curve. damm: the Meteora DAMM v2 pool after graduation.
siderequired"buy" | "sell"buy: SOL in, coin out. sell: coin in, SOL out.
walletrequiredaddress
solLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
tokenAmountrequiredu64 stringRaw token units (6 decimals).
priceSolrequirednumber | nullPool price right after the trade, SOL per whole token.
tsrequiredintegerUnix time in seconds.
slotrequiredinteger
inWindowrequiredbooleanInside the opening sniper window.
nextCursorrequiredstring | null
Errors400 invalid_params401 unauthorized404 not_found429 rate_limited500 internal
curl "https://api.justi.fun/v1/tokens/<mint>/trades?limit=20"

#OHLCV candles from indexed trades

GET/v1/tokens/{mint}/candles
Key optionalRate class readgetCandles

Each candle opens at the previous close. Prices are SOL per whole token, volume in SOL. Page back with before=nextBefore.

Parameters

NameTypeAbout
mintrequiredpathaddress
tfquery"1s" | "15s" | "1m" | "5m" | "15m" | "1h"default "1m"
limitqueryinteger10 to 1500, default 500
beforequeryintegerUnix time; candles strictly before it.
Response Candles
FieldTypeAbout
mintrequiredaddress
timeframerequiredstring
secondsrequiredinteger
activationTsrequiredintegerUnix time in seconds.
windowEndsTsrequiredintegerUnix time in seconds.
candlesrequiredobject[]
trequiredintegerUnix time in seconds.
openrequirednumber
highrequirednumber
lowrequirednumber
closerequirednumber
volumeSolrequirednumber
tradesrequiredinteger
hasMorerequiredboolean
nextBeforerequiredinteger | nullUnix time in seconds.
Errors400 invalid_params401 unauthorized404 not_found429 rate_limited500 internal
curl "https://api.justi.fun/v1/tokens/<mint>/candles?limit=20"

#Holders from the latest snapshot (every 10 minutes)

GET/v1/tokens/{mint}/holders
Key optionalRate class readlistHolders

Parameters

NameTypeAbout
mintrequiredpathaddress
limitqueryintegerPage size, 1 to 500. default 100
cursorquerystringnextCursor from the previous page. max 400 chars
Response HolderPage
FieldTypeAbout
mintrequiredaddress
snapshotAtrequiredinteger | nullUnix time in seconds.
holderCountrequiredinteger
holdersrequiredobject[]
rankrequiredinteger
ownerrequiredaddress
amountrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
pctOfSupplyrequirednumber
isWalletrequiredbooleanfalse for pools and other program accounts
isCreatorrequiredboolean
nextCursorrequiredstring | null
Errors400 invalid_params401 unauthorized404 not_found429 rate_limited500 internal
curl "https://api.justi.fun/v1/tokens/<mint>/holders?limit=20"

#Buybacks and burns of one coin, with signatures

GET/v1/tokens/{mint}/burns
Key optionalRate class readlistTokenBurns

Parameters

NameTypeAbout
mintrequiredpathaddress
limitqueryintegerPage size, 1 to 200. default 50
cursorquerystringnextCursor from the previous page. max 400 chars
Response BuybackPage
FieldTypeAbout
totalsrequiredobject
burnsrequiredinteger
lamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
tokensBurnedrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
buybacksrequiredBuyback[]
idrequiredstring
mintrequiredaddress
tickerrequiredstring | null
kindrequired"justi" | "coin"justi: $JUSTI buyback. coin: sniper-window burn of this coin.
statusrequired"planned" | "swapped" | "burned" | "held"
lamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
tokensBoughtrequiredu64 string | nullUnsigned integer as a decimal string (may exceed 2^53).
routerequiredstring | null
swapSignaturerequiredstring | null
burnSignaturerequiredstring | null
createdAtrequiredintegerUnix time in seconds.
burnedAtrequiredinteger | nullUnix time in seconds.
nextCursorrequiredstring | null
Errors400 invalid_params401 unauthorized429 rate_limited500 internal
curl "https://api.justi.fun/v1/tokens/<mint>/burns?limit=20"

Rewards and creators

#Holder reward rounds of one coin

GET/v1/tokens/{mint}/rewards
Key optionalRate class readgetTokenRewards

Parameters

NameTypeAbout
mintrequiredpathaddress
limitqueryintegerPage size, 1 to 200. default 50
Response TokenRewards
FieldTypeAbout
mintrequiredaddress
holdersPctrequirednumber
roundSecrequiredinteger
nextRoundAtrequiredinteger | nullUnix time in seconds.
totalsrequiredobject
creditedLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
roundsrequiredinteger
walletsrequiredinteger
roundsrequiredobject[]
idrequiredstring
poolLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
creditedLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
walletsrequiredinteger
atrequiredintegerUnix time in seconds.
Errors400 invalid_params401 unauthorized404 not_found429 rate_limited500 internal
curl "https://api.justi.fun/v1/tokens/<mint>/rewards?limit=20"

#What a wallet earned from holding, and its payouts with signatures

GET/v1/wallets/{address}/rewards
Key optionalRate class readgetWalletRewards

Parameters

NameTypeAbout
addressrequiredpathaddress
limitqueryintegerPage size, 1 to 200. default 100
Response WalletRewards
FieldTypeAbout
walletrequiredaddress
totalsrequiredobject
earnedLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
paidLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
owedLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
minPayoutLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
coinsrequiredobject[]
mintrequiredaddress
tickerrequiredstring
earnedLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
roundsrequiredinteger
lastRoundAtrequiredintegerUnix time in seconds.
payoutsrequiredobject[]
idrequiredstring
lamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
statusrequired"planned" | "sent" | "confirmed"
signaturerequiredstring | null
createdAtrequiredintegerUnix time in seconds.
confirmedAtrequiredinteger | nullUnix time in seconds.
Errors400 invalid_params401 unauthorized429 rate_limited500 internal
curl "https://api.justi.fun/v1/wallets/<wallet>/rewards?limit=20"

#Confirmed holder payouts, newest first

GET/v1/payouts
Key optionalRate class readlistPayouts

Parameters

NameTypeAbout
limitqueryintegerPage size, 1 to 200. default 50
cursorquerystringnextCursor from the previous page. max 400 chars
Response PayoutPage
FieldTypeAbout
payoutsrequiredobject[]
idrequiredstring
walletrequiredaddress
lamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
signaturerequiredstring
confirmedAtrequiredintegerUnix time in seconds.
nextCursorrequiredstring | null
Errors400 invalid_params401 unauthorized429 rate_limited500 internal
curl "https://api.justi.fun/v1/payouts?limit=20"

#Creator stats: coins, fees earned and claimable (read live from the pools)

GET/v1/creators/{wallet}
Key optionalRate class readgetCreator

Parameters

NameTypeAbout
walletrequiredpathaddress
Response CreatorStats
FieldTypeAbout
walletrequiredaddress
totalsrequiredobject
coinsrequiredinteger
earnedLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
claimableLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
holderRewardsLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
coinsrequiredobject[]
mintrequiredaddress
namerequiredstring
tickerrequiredstring
imagerequiredstring | null
moderequired"creator" | "holders" | "split"Who earns the fee: the creator, holders, or both.
creatorPctrequirednumber
holdersPctrequirednumber
createdAtrequiredintegerUnix time in seconds.
graduatedrequiredboolean
curveProgressPctrequirednumber
marketCapSolrequirednumber
holderCountrequiredinteger
tradesrequiredinteger
earnedLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
claimableLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
claimedLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
holderRewardsLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
Errors400 invalid_params401 unauthorized429 rate_limited500 internal
curl "https://api.justi.fun/v1/creators/<wallet>"

Platform

#All buybacks and burns ($JUSTI and sniper-window coin burns)

GET/v1/buybacks
Key optionalRate class readlistBuybacks

Parameters

NameTypeAbout
kindquery"justi" | "coin"
statusquery"planned" | "swapped" | "burned" | "held"
limitqueryintegerPage size, 1 to 200. default 50
cursorquerystringnextCursor from the previous page. max 400 chars
Response BuybackPage
FieldTypeAbout
totalsrequiredobject
burnsrequiredinteger
lamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
tokensBurnedrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
buybacksrequiredBuyback[]
idrequiredstring
mintrequiredaddress
tickerrequiredstring | null
kindrequired"justi" | "coin"justi: $JUSTI buyback. coin: sniper-window burn of this coin.
statusrequired"planned" | "swapped" | "burned" | "held"
lamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
tokensBoughtrequiredu64 string | nullUnsigned integer as a decimal string (may exceed 2^53).
routerequiredstring | null
swapSignaturerequiredstring | null
burnSignaturerequiredstring | null
createdAtrequiredintegerUnix time in seconds.
burnedAtrequiredinteger | nullUnix time in seconds.
nextCursorrequiredstring | null
Errors400 invalid_params401 unauthorized429 rate_limited500 internal
curl "https://api.justi.fun/v1/buybacks?limit=20"

#Platform totals

GET/v1/platform/stats
Key optionalRate class readgetPlatformStats
Response PlatformStats
FieldTypeAbout
coinsrequiredinteger
graduatedrequiredinteger
coinsLast24hrequiredinteger
tradesrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
volumeLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
volume24hLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
traders24hrequiredinteger
padClaimedLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
holderPaidLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
holderPaidWalletsrequiredinteger
justiBurnrequiredobject
lamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
tokensrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
coinBurnLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
creatorClaimedLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
nowrequiredintegerUnix time in seconds.
Errors400 invalid_params401 unauthorized429 rate_limited500 internal
curl "https://api.justi.fun/v1/platform/stats"

#Vanity (...JUST) mint pool status

GET/v1/mint-pool
Key optionalRate class readgetMintPool
Response MintPool
FieldTypeAbout
suffixrequiredstring
availablerequiredinteger
readyrequiredboolean
fallbackrequiredstring
Errors400 invalid_params401 unauthorized429 rate_limited500 internal
curl "https://api.justi.fun/v1/mint-pool"

Metadata and images

#Metadata JSON by launch id (the uri stored on chain)

GET/v1/meta/{id}
No keyRate class assetgetLaunchMetadata

Parameters

NameTypeAbout
idrequiredpathstringUUID.
Response TokenMetadata
FieldTypeAbout
namerequiredstring
symbolrequiredstring
descriptionrequiredstring
imagerequiredstring
showNamerequiredboolean
createdOnrequiredstring
twitterstring
telegramstring
websitestring
bannerstring
Errors400 invalid_params404 not_found429 rate_limited500 internal
curl "https://api.justi.fun/v1/meta/<id>"

#Coin image by launch id

GET/v1/image/{id}
No keyRate class assetgetLaunchImage

Parameters

NameTypeAbout
idrequiredpathstringUUID.

Response: image/*

Errors400 invalid_params404 not_found429 rate_limited500 internal
curl "https://api.justi.fun/v1/image/<id>" -o out

#3:1 banner by coin mint (or by launch id before it goes live)

GET/v1/banner/{key}
No keyRate class assetgetBanner

Parameters

NameTypeAbout
keyrequiredpathstringmax 64 chars
vquerystringVersion from the banner URL; a matching v is cached for a year. max 32 chars

Response: image/*

Errors400 invalid_params404 not_found429 rate_limited500 internal
curl "https://api.justi.fun/v1/banner/<mint or launchId>" -o out