justi.fun
§11 · Reference

Protocol

Program ids, the 20 configs, fee claimer, lookup table, and how terminals tag justi coins.

Programs

WhatAddress
Meteora Dynamic Bonding Curve (launch and curve)dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN
Meteora DAMM v2 (after graduation)cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG
Quote mint (wrapped SOL)So11111111111111111111111111111111111111112
Fee claimer (shared by every config)2Nz8GEPRSZAc8UeyGT7kBNAjxnttfJCHnSosZ5MJUSTi
Partner metadataC747Jd9YiXcgYBYWWy1qp7K1f93UuFtNCzf11WVTSkiP
Address lookup table9cgfQxwFmsz7KPMqToSxagmhtvDWNF9cTUkPvnrA9jkx
DAMM v2 migration configHv8Lmzmnju6m7kcokVKvwqz7QPmdX9XfKjJsXz8RXcjp
$JUSTI mintsoon

Configs

One DBC config per fee option. All 20 share the fee claimer above.

Tag justi coins

A coin is on justi.fun when its DBC pool's config is one of configs[].address (all share feeClaimer), or its metadata JSON has createdOn = metadata.createdOn.

  • On chain: read the DBC virtual pool of a mint; if its config is in the list above, it is a justi.fun coin.
  • Off chain: the metadata JSON has createdOn: "https://justi.fun", and mints from the server pool end in JUST (custom mints may not).
  • Or fetch GET /v1/tokenlist: every coin with its pools, config and creator, in one list.
  • Link to a coin: https://justi.fun/coin/{mint}
Tag by config
const { configs } = await fetch("https://api.justi.fun/v1/protocol").then((r) => r.json());
const justiConfigs = new Set(configs.map((c) => c.address));
// pool: a decoded DBC VirtualPool account
const isJusti = justiConfigs.has(pool.config.toBase58());

Metadata

The on-chain uri is https://api.justi.fun/v1/meta/{launchId} and the image https://api.justi.fun/v1/image/{launchId}. Metadata is locked at create.

Reference

#What a terminal needs to tag justi.fun coins

GET/v1/protocol
Key optionalRate class readgetProtocol

DBC program, the 20 config addresses with their fee tiers, fee claimer, lookup table, metadata createdOn and URL patterns.

Response Protocol
FieldTypeAbout
namerequiredstring
siterequiredstring
apirequiredstring
dbcProgramrequiredaddress
dammV2Programrequiredaddress
quoteMintrequiredaddress
configsrequiredobject[]
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.
addressrequiredaddress | null
creatorBpsrequiredinteger
holderBpsrequiredinteger
feeClaimerrequiredaddress | null
partnerMetadatarequiredaddress | null
lookupTablerequiredaddress | null
justiMintrequiredaddress | null
metadatarequiredobject
createdOnrequiredstring
uriPatternrequiredstring
imagePatternrequiredstring
vanitySuffixrequiredstring
coinUrlPatternrequiredstring
dammMigrationConfigrequiredaddress
howToTagrequiredstring
Errors400 invalid_params401 unauthorized429 rate_limited500 internal
curl "https://api.justi.fun/v1/protocol"

#Pad config, fee tiers, fee splits and the sniper window schedule

GET/v1/pad
Key optionalRate class readgetPad
Response Pad
FieldTypeAbout
launchesEnabledrequiredboolean
tiersrequiredobject[]
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.
creatorBpsrequiredinteger
holderBpsrequiredinteger
configrequiredaddress | null
liverequiredboolean
maxDevBuyLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
sniperWindowrequiredSniperWindow
platformSplitrequiredobject
burnJustiPctrequirednumber
devWalletPctrequirednumber
meteoraSharePctrequirednumber
sniperWindowrequiredobject
secondsrequiredinteger
startPctrequirednumber
extraSplitrequiredobject
devBuyMaxPctOfSupplyrequirednumber
copyWindowHoursrequirednumber
holderRoundSecrequiredinteger
minPayoutLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
totalSupplyrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
decimalsrequiredinteger
graduationQuoteLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
graduationrequiredobject
venuerequiredstring
lpLockedPctrequirednumber
lpSplitrequiredobject
jitoTipLamportsrequiredu64 stringUnsigned integer as a decimal string (may exceed 2^53).
justiMintrequiredaddress | null
nowrequiredintegerUnix time in seconds.
Errors400 invalid_params401 unauthorized429 rate_limited500 internal
curl "https://api.justi.fun/v1/pad"

#Service status: switches and live ingest

GET/v1/status
Key optionalRate class readgetStatus
Response Status
FieldTypeAbout
okrequiredboolean
launchesEnabledrequiredboolean
tradingEnabledrequiredboolean
webhooksEnabledrequiredboolean
ingestrequiredobject
connectedrequiredboolean
poolsrequiredinteger
streamsrequiredobject
websocketClientsrequiredinteger
nowrequiredintegerUnix time in seconds.
Errors400 invalid_params401 unauthorized429 rate_limited500 internal
curl "https://api.justi.fun/v1/status"

#This OpenAPI 3.1 document

GET/v1/openapi.json
No keyRate class readgetOpenApi

Response: application/json

Errors400 invalid_params429 rate_limited500 internal
curl "https://api.justi.fun/v1/openapi.json"