{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/getchord-xyz/json-schema/getchord-xyz-sol-token-row-schema.json",
  "title": "SolTokenRow",
  "description": "One Solana token with its 24-hour tape.",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/getchord-xyz-openapi.json#/components/schemas/SolTokenRow",
  "type": "object",
  "properties": {
    "token": {
      "type": "string",
      "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
      "description": "Solana address, base58, case-sensitive. Never lower-case it."
    },
    "symbol": {
      "type": [
        "string",
        "null"
      ],
      "description": "Creator-chosen; null until the metadata worker has read it."
    },
    "name": {
      "type": [
        "string",
        "null"
      ],
      "description": "Creator-chosen."
    },
    "image": {
      "type": [
        "string",
        "null"
      ],
      "description": "Image URL from the token's metadata, as published by its creator."
    },
    "decimals": {
      "type": [
        "integer",
        "null"
      ],
      "description": ""
    },
    "priceUsd": {
      "type": [
        "number",
        "null"
      ],
      "description": "Last price on the token's main pool (traded in the last hour first, then the deepest)."
    },
    "change24hPct": {
      "type": [
        "number",
        "null"
      ],
      "description": "Price now against the main pool's close 24 hours ago."
    },
    "volume24hUsd": {
      "type": "number",
      "description": "USD over the 24-hour window, every pool the tape reads."
    },
    "trades24h": {
      "type": "integer",
      "description": ""
    },
    "buys24h": {
      "type": "integer",
      "description": ""
    },
    "buyVolume24hUsd": {
      "type": "number",
      "description": ""
    },
    "liquidityUsd": {
      "type": [
        "number",
        "null"
      ],
      "description": "Main pool: twice its quote-side reserve in USD, from the last swap whose event carried the reserve. An estimate; null when unknown."
    },
    "marketCapUsd": {
      "type": [
        "number",
        "null"
      ],
      "description": "Price × supply: fully diluted."
    },
    "pool": {
      "type": [
        "string",
        "null"
      ],
      "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
      "description": "Solana address, base58, case-sensitive. Never lower-case it."
    },
    "dex": {
      "type": [
        "string",
        "null"
      ],
      "description": "Venue id: `pumpswap` · `pumpfun` (bonding curve) · `meteora_dbc` · `meteora_damm_v2` · `meteora_dlmm` · `meteora_pools` (dynamic AMM v1) · `raydium_clmm` · `raydium_cpmm` · `raydium_v4` · `raydium_launchlab` · `orca` (Whirlpool)."
    },
    "firstSeen": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Unix time, seconds, UTC."
    },
    "oneWayPct": {
      "type": [
        "number",
        "null"
      ],
      "description": "Percent of the 24-hour dollar volume traded by wallets that went one way: each wallet's smaller side (bought or sold, in USD) under half its larger side. The rest is wallets buying and selling about the same amounts back and forth: arbitrage, market making or wash trading. Null when not measured."
    },
    "screen": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "volume bot",
        "impostor"
      ],
      "description": "Why the boards leave this token out, or null. `volume bot`: under 10 % of its 24-hour volume came from one-way wallets and it is not a deep market (at least $250k of SOL / stable liquidity turned over at most 10× in the window). `impostor`: the ticker of SOL, USDC or USDT, look-alike letters included, on another mint."
    }
  }
}