Protocol
Program ids, the 20 configs, fee claimer, lookup table, and how terminals tag justi coins.
Programs
| What | Address |
|---|---|
| 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 metadata | C747Jd9YiXcgYBYWWy1qp7K1f93UuFtNCzf11WVTSkiP |
| Address lookup table | 9cgfQxwFmsz7KPMqToSxagmhtvDWNF9cTUkPvnrA9jkx |
| DAMM v2 migration config | Hv8Lmzmnju6m7kcokVKvwqz7QPmdX9XfKjJsXz8RXcjp |
| $JUSTI mint | soon |
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
configis 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 inJUST(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}
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
| Field | Type | About |
|---|---|---|
| namerequired | string | |
| siterequired | string | |
| apirequired | string | |
| dbcProgramrequired | address | |
| dammV2Programrequired | address | |
| quoteMintrequired | address | |
| configsrequired | object[] | |
| tierrequired | string | Tier key, e.g. creator-100, holders, split-50. |
| moderequired | "creator" | "holders" | "split" | Who earns the fee: the creator, holders, or both. |
| totalPctrequired | number | Total pool fee after the opening window, percent of the SOL side. |
| creatorPctrequired | number | |
| holdersPctrequired | number | |
| platformPctrequired | number | Pad share. 75% of it buys and burns $JUSTI, 25% goes to the dev wallet. |
| meteoraPctrequired | number | Meteora protocol share (20% of the pool fee). |
| creatorOnchainPercentrequired | integer | creatorTradingFeePercentage on the DBC config. |
| poolFeeNumeratorrequired | u64 string | Pool fee numerator over 1e9 after the window. |
| addressrequired | address | null | |
| creatorBpsrequired | integer | |
| holderBpsrequired | integer | |
| feeClaimerrequired | address | null | |
| partnerMetadatarequired | address | null | |
| lookupTablerequired | address | null | |
| justiMintrequired | address | null | |
| metadatarequired | object | |
| createdOnrequired | string | |
| uriPatternrequired | string | |
| imagePatternrequired | string | |
| vanitySuffixrequired | string | |
| coinUrlPatternrequired | string | |
| dammMigrationConfigrequired | address | |
| howToTagrequired | string |
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
| Field | Type | About |
|---|---|---|
| launchesEnabledrequired | boolean | |
| tiersrequired | object[] | |
| tierrequired | string | Tier key, e.g. creator-100, holders, split-50. |
| moderequired | "creator" | "holders" | "split" | Who earns the fee: the creator, holders, or both. |
| totalPctrequired | number | Total pool fee after the opening window, percent of the SOL side. |
| creatorPctrequired | number | |
| holdersPctrequired | number | |
| platformPctrequired | number | Pad share. 75% of it buys and burns $JUSTI, 25% goes to the dev wallet. |
| meteoraPctrequired | number | Meteora protocol share (20% of the pool fee). |
| creatorOnchainPercentrequired | integer | creatorTradingFeePercentage on the DBC config. |
| poolFeeNumeratorrequired | u64 string | Pool fee numerator over 1e9 after the window. |
| creatorBpsrequired | integer | |
| holderBpsrequired | integer | |
| configrequired | address | null | |
| liverequired | boolean | |
| maxDevBuyLamportsrequired | u64 string | Unsigned integer as a decimal string (may exceed 2^53). |
| sniperWindowrequired | SniperWindow | |
| platformSplitrequired | object | |
| burnJustiPctrequired | number | |
| devWalletPctrequired | number | |
| meteoraSharePctrequired | number | |
| sniperWindowrequired | object | |
| secondsrequired | integer | |
| startPctrequired | number | |
| extraSplitrequired | object | |
| devBuyMaxPctOfSupplyrequired | number | |
| copyWindowHoursrequired | number | |
| holderRoundSecrequired | integer | |
| minPayoutLamportsrequired | u64 string | Unsigned integer as a decimal string (may exceed 2^53). |
| totalSupplyrequired | u64 string | Unsigned integer as a decimal string (may exceed 2^53). |
| decimalsrequired | integer | |
| graduationQuoteLamportsrequired | u64 string | Unsigned integer as a decimal string (may exceed 2^53). |
| graduationrequired | object | |
| venuerequired | string | |
| lpLockedPctrequired | number | |
| lpSplitrequired | object | |
| jitoTipLamportsrequired | u64 string | Unsigned integer as a decimal string (may exceed 2^53). |
| justiMintrequired | address | null | |
| nowrequired | integer | Unix 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
| Field | Type | About |
|---|---|---|
| okrequired | boolean | |
| launchesEnabledrequired | boolean | |
| tradingEnabledrequired | boolean | |
| webhooksEnabledrequired | boolean | |
| ingestrequired | object | |
| connectedrequired | boolean | |
| poolsrequired | integer | |
| streamsrequired | object | |
| websocketClientsrequired | integer | |
| nowrequired | integer | Unix 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"