Solaris AISolaris AI FlowDocs
Node ReferenceData

GMGN

Solana meme token data covering trending, K-line, holders, smart money, and wallet analytics.

View as Markdown

The GMGN node queries the GMGN OpenAPI for Solana meme token data: real-time trending rankings, K-line candles, security and pool details, top holders/traders, wallet activity, trenches (new launches), token signals, KOL/smart-money trades, and dev-created tokens. GMGN's value over generic chain explorers is its meme-trading lens: smart-money counts, KOL holdings, rat-trader ratios, and bundler exposure are first-class fields rather than derived metrics. GMGN's API also covers BSC, Base, and Ethereum, but this node is scoped to Solana to match the rest of the Solaris AI stack.

The node exposes read-only data operations. Trading (swap, strategy orders, cooking create-token) requires GMGN's signed-auth mode (Ed25519 request signing) and is intentionally not wired in yet. When it lands it ships as a separate v2.

Prerequisites

A GMGN API key is required. A public demo key (gmgn_solbscbaseethmonadtron) exists for testing only; ship workflows with your own key.

How to get an API key

GMGN issues API keys against an Ed25519 public key you upload. The Credentials page can generate that keypair for you in the browser, or you can bring your own (openssl genpkey -algorithm ed25519).

  1. Open Credentials in Solaris AI, click Add credential, pick platform GMGN, then click Generate keypair. The page derives the Ed25519 keypair locally and shows the public half.
  2. Log in at gmgn.ai/ai.
  3. Open the API Management tab directly: gmgn.ai/ai?chain=sol&tab=api_management.
  4. Click Create API Key, paste the public key from step 1 into Upload Public Key, give it a label, and confirm. Read access is enough for this node. For swaps, use the Jupiter node.
  5. Copy the returned API key and paste it into the Solaris AI API Key field. Save the credential.

Walkthrough video (starts from the API Management page after login):

Private key custody: The keypair is generated in your browser via Web Crypto and never leaves the device. Solaris AI does not store this private key and cannot recover it. V1 read-only GMGN data does not use the private key after API key creation, so for this node the primary path is: generate the public key, upload it to GMGN, then paste the returned API key here. Save the private key only if you plan to use future signed GMGN trading features. The keygen helper is a convenience, you can also generate the keypair yourself with openssl and upload to GMGN directly.

Operations

All operations run against Solana (chain=sol). The field is fixed and omitted from the config UI. Token and market operations take a token mint; portfolio operations take a wallet address.

Token

getTokenInfo: fundamentals for a token (name, symbol, market cap, holder count, price, 24h volume, social links). Use this as the first step of any "research a token" workflow before deciding whether to query pool or holder breakdowns.

getTokenSecurity: security audit signal (is the contract open source, is mint authority renounced, honeypot detection, wash-trade flag, rug ratio score 0 to 1). Pair with getTokenInfo for a buy/skip gate before any trade workflow.

getTokenPoolInfo: liquidity pool details (which DEX/launchpad the token trades on, pool liquidity, bonding curve status via is_on_curve which indicates whether the token has graduated from a launchpad to open DEX trading).

getTokenTopHolders: paginated list of holders sorted by balance. Useful for concentration analysis (does the top wallet hold >20%? is one wallet about to dump?). limit clamps to 1 to 100.

getTokenTopTraders: wallets that have traded the token most by volume/PnL. Distinct from holders since a top trader may have already exited. Useful for finding KOL-style accounts to follow.

Market

getTrendingSwaps: chain-wide trending tokens over an interval. Returns the same ranking the GMGN web app shows. Interval enum: 1m, 5m, 1h, 6h, 24h. The 1-minute window is GMGN's headline differentiator vs. competitors who only refresh hourly. Sort by volume, swaps, price, change1h, marketcap, or holder_count. Optional preset filters (not_risk, not_honeypot) drop unsafe tokens before they reach the response.

getTokenKline: OHLCV candles for a single token. Resolutions: 1m, 5m, 15m, 1h, 4h, 1d. timeFrom and timeTo are Unix seconds (the executor converts to ms for the API). Each side defaults independently: omitted timeFrom becomes now - 24h, omitted timeTo becomes now.

getTrenches: new-launch feed grouped into new_creation, near_completion, and completed categories (all three by default). Filter by launchpad platform (Pump.fun, letsbonk, bonkers, ...) and apply an optional advanced filter object (e.g. {"min_holder_count": 100, "max_rug_ratio": 0.2}). limit clamps to 1 to 80 per category.

getTokenSignalV2: pull tokens that just tripped one or more GMGN signals (price spikes, large buys, smart-money entries, etc.). Configure via a JSON array of groups: each group can set signal_type (number array), mc_min/mc_max, trigger_mc_min/trigger_mc_max, total_fee_min/total_fee_max, and min_create_or_open_ts/max_create_or_open_ts (Unix seconds strings).

Track

getKol: KOL (key-opinion-leader) trade records. limit clamps to 1 to 200. Returns a feed of recent trades by GMGN-tagged KOL wallets so workflows can mirror or alert on tape they care about.

getSmartMoney: same shape as getKol, but the wallet cohort is GMGN's smart-money classification (high win-rate, profitable, repeat-bidder wallets) rather than KOL accounts.

getCreatedTokens: tokens created by a developer wallet, optionally sorted by market_cap or token_ath_mc with asc/desc direction, and filtered to only migrated or non_migrated tokens. Useful for dev-history due diligence ("has this dev shipped anything that lasted?").

Portfolio

getWalletActivity: recent on-chain trade activity for a wallet. Pair with templating to feed a wallet's last N trades into an AI summary node.

getWalletStats: aggregate stats (PnL, win rate, trade style) for one or more wallets over a period window (1d, 7d, 30d, all). Supports multi-wallet comparison: fill Wallet Address or Additional Wallets (comma-separated), or both, as long as at least one wallet is present.

getWalletTokenBalance: single-token balance for a wallet. Useful as a precondition check (does this wallet still hold X before we trigger a sell condition?).

Account and network meta

getUserInfo: account info bound to the GMGN API key. Takes no parameters. Use as a credential health check.

getGasPrice: GMGN's recommended Solana priority-fee tier (fast/standard/safe). The Solana scheduler is fee-driven, so workflows that broadcast transactions can read this and feed it into a pump.fun / Phoenix / Raydium node's priorityFee field.

getCookingStatistics: aggregate read-side metrics for GMGN's cooking (auto-buy + auto-exit) strategy engine. The signed-auth side of cooking (creating tokens) is parked for v2; this read-only stats endpoint is exposed today.

Configuration

FieldTypeRequiredDescription
addressstringToken ops + getTokenKlineToken mint address
walletAddressstringWallet ops + getCreatedTokensSingle wallet to query
walletAddressesstringOptional, getWalletStatsAdditional comma-separated wallets
tokenAddressstringgetWalletTokenBalanceMint to check the balance of
intervalstringgetTrendingSwaps1m | 5m | 1h | 6h | 24h
resolutionstringgetTokenKline1m | 5m | 15m | 1h | 4h | 1d
timeFromnumberNoKline window start, Unix seconds
timeTonumberNoKline window end, Unix seconds
periodstringgetWalletStats1d | 7d | 30d | all
orderBystringNoTrending sort or getCreatedTokens sort (market_cap | token_ath_mc)
directionstringNogetCreatedTokens sort direction (asc | desc)
migrateStatestringNogetCreatedTokens filter (migrated | non_migrated)
filtersstring[]NoTrending presets: not_risk, not_honeypot
typesstring[]NogetTrenches categories (new_creation, near_completion, completed); empty = all
platformsstring[]NogetTrenches launchpads (Pump.fun, letsbonk, ...); empty = all
filtersJsonstringNogetTrenches advanced filters, JSON object of {key: number|string}
groupsJsonstringgetTokenSignalV2JSON array of signal-group objects (see Market)
limitnumberNoClamped per op: trenches 1 to 80, kol/smartmoney 1 to 200, others 1 to 100

Output

Most operations return the standard envelope:

{
  "success": true,
  "operation": "getTokenInfo",
  "chain": "sol",
  "address": "So11111111111111111111111111111111111111112",
  "data": { /* raw GMGN response */ }
}

The upstream payload is always under .data. Reference fields downstream with the response name (default gmgnResponse), for example {gmgnResponse.data.price} after getTokenInfo or {gmgnResponse.data[0].symbol} after getTrendingSwaps.

Two ops do not accept a chain parameter upstream, so the envelope omits the chain echo for them: getUserInfo and getCookingStatistics. Their shape is {success, operation, data}.

Common use cases

  • Pre-trade due diligence: chain getTokenInfo, then getTokenSecurity, then AI summarize, then conditional execute.
  • Trending scanner: poll getTrendingSwaps on a cron, filter for not_risk + not_honeypot, route the top result to a Telegram alert.
  • Launch radar: cron getTrenches for near_completion on selected launchpads, AI-rank by smart-money count, alert on the top hit.
  • Signal mirror: getTokenSignalV2 with smart-money signal types, then route into a Phoenix or pump.fun buy with an upstream wallet cap.
  • Wallet copy-trade research: getWalletStats over 30d plus getKol / getSmartMoney feeds, AI-rank by win rate, persist the top wallets to a dataset.
  • Dev background check: getCreatedTokens against a candidate dev wallet, filter migrated, summarize ATH and survival.
  • Fee-aware broadcast: getGasPrice before signing, feed the fast tier into the trading node's priorityFee field.
  • Position monitoring: schedule getWalletTokenBalance for held positions, branch on balance drops via the Condition node.

Notes and limits

  • Rate limits: GMGN returns 429 with an x-ratelimit-reset header on burst. The node surfaces the reset time in the error message; back off in a Delay node before retrying.
  • Solana-only. EVM chains aren't wired up; the executor rejects any non-sol chain value (e.g. from an imported workflow) with a clear error.

On this page