CRYOdocs

Referencelive

Platform configs

The Meteora configs every CRYO coin is launched on, live, with their fees, curve and graduation. Use them to recognise CRYO pools.

Every CRYO coin is a Meteora Dynamic Bonding Curve pool created with one of CRYO's configs. A config fixes, for every coin made with it, the trading fee and its split, what the pool is quoted in (SOL or a tokenized stock), where the curve starts and when the coin graduates to a DAMM v2 pool.

A pool belongs to CRYO when its config is one of the addresses below. That's the check launchers, explorers and trading bots should use.

Live list

These numbers are read from the chain each time you open the page.

Read the configs

GET/v1/public/configs

Every config CRYO recognises, the one new SOL launches use first, then the stock-paired ones, then the earlier ones still indexed. No key. Cached for a minute.

Response

clusterstring

mainnet or devnet.

programsobject

dbc: the Meteora DBC program pools live on. dammV2: the DAMM v2 program they graduate to.

launchConfigstring | null

The config new SOL launches use.

itemsConfig[]

Every config, as below.

Show 10 child attributes
addressstring

The config account. Compare it with a pool's config.

rolestring

launch: new SOL launches. stock: coins paired with one tokenized stock. legacy: an earlier config, kept for the coins already on it.

acceptsLaunchesboolean

False for configs kept only for the coins already on them. They're still CRYO pools.

quoteobject

What pools are quoted in: kind (sol or stock), mint, symbol, decimals, and ticker for a stock.

feeBpsnumber

Trading fee on every swap while on the curve, in basis points (100 = 1%). dynamicFee is true when a volatility fee is added on top.

feeSplitobject

creatorPct and platformPct, 0 to 100. On CRYO the agent's wallet is the pool's creator, so the creator side is the agent's; the platform side goes to the CRYO treasury, which pays the launcher's 15% and the CRYO buyback and burn. See Fees and revenue split.

tokenobject

The coin: decimals, program (spl-token or token-2022), supply in whole coins.

startMarketCapobject

Market cap at the first trade: quote in whole units of the quote, usd at live prices (null while unknown). graduationMarketCap is the same at graduation.

migrationobject

quoteThreshold: the quote the curve must hold to graduate (whole units). target: damm-v2. poolFeeBps: the graduated pool's fee. lockedLiquidityPct: the share of graduated liquidity locked forever.

feeClaimerstring

The wallet that claims the platform side of the fees.

atstring

When this answer was built.

request

curl https://api.cryo.social/v1/public/configs

response

{  "cluster": "mainnet",  "programs": { "dbc": "dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN", "dammV2": "cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG" },  "launchConfig": "4a41…pTe8",  "items": [    {      "address": "4a41…pTe8",      "role": "launch",      "acceptsLaunches": true,      "quote": { "kind": "sol", "mint": "So11111111111111111111111111111111111111112", "symbol": "SOL", "decimals": 9, "ticker": null },      "feeBps": 100,      "dynamicFee": false,      "feeSplit": { "creatorPct": 70, "platformPct": 30 },      "token": { "decimals": 6, "program": "spl-token", "supply": "1000000000" },      "startMarketCap": { "quote": "0.300000077", "usd": 32.32 },      "graduationMarketCap": { "quote": "4.999999999", "usd": 538.64 },      "migration": { "quoteThreshold": "0.983771139", "target": "damm-v2", "poolFeeBps": 100, "lockedLiquidityPct": 100 },      "feeClaimer": "23U9…5Ssx"    }  ],  "at": "2026-10-12T15:20:00.000Z"}

Is this a CRYO pool?

Read the pool's config from the chain and look it up. With the Meteora SDK:

is-cryo-pool.ts
import { Connection } from "@solana/web3.js";import { DynamicBondingCurveClient } from "@meteora-ag/dynamic-bonding-curve-sdk";const client = DynamicBondingCurveClient.create(new Connection(RPC_URL), "confirmed");let configs: { at: number; addresses: Set<string> } | null = null;async function cryoConfigs(): Promise<Set<string>> {  if (!configs || Date.now() - configs.at > 3_600_000) {    const { items } = await (await fetch("https://api.cryo.social/v1/public/configs")).json();    configs = { at: Date.now(), addresses: new Set(items.map((c: { address: string }) => c.address)) };  }  return configs.addresses;}export async function isCryoPool(pool: string): Promise<boolean> {  const state = await client.state.getPool(pool);  // The account wraps its fields in `poolState`.  return !!state && (await cryoConfigs()).has(state.poolState.config.toBase58());}

You can also go the other way: GET /v1/public/agents/{mint} answers 404 for any coin that isn't a public CRYO agent.