> ## Documentation Index
> Fetch the complete documentation index at: https://docs.codex.io/llms.txt
> Use this file to discover all available pages before exploring further.

# categoryTokens

> Returns the tokens assigned to a category (including its subcategories), with optional `filterTokens`-style filters and rankings applied.

Returns the tokens in a category, with the same `filters` and `rankings` as [`filterTokens`](https://docs.codex.io/api-reference/queries/filtertokens). Results are [`TokenFilterResult`](https://docs.codex.io/api-reference/types/tokenfilterresult) objects, so a category page can reuse the exact rendering you already have for token screener rows.

This is a convenience wrapper for scoping token discovery to one category. If you need to combine multiple categories (`anyOf`, `allOf`, `noneOf`) or mix category constraints with other boolean logic, use [`filterTokens`](https://docs.codex.io/api-reference/queries/filtertokens) with the `categories` filter ([`TokenCategoryFilter`](https://docs.codex.io/api-reference/input-objects/tokencategoryfilter)) instead.

## GraphQL

```
type Query {
  categoryTokens(
    slug: String!
    filters: TokenFilters
    rankings: [TokenRanking]
    limit: Int
    offset: Int
  ): CategoryTokenConnection
}

type SocialLinks {
  bitcointalk: String
  blog: String
  coingecko: String
  coinmarketcap: String
  discord: String
  email: String
  facebook: String
  github: String
  instagram: String
  linkedin: String
  reddit: String
  slack: String
  telegram: String
  twitch: String
  twitter: String
  website: String
  wechat: String
  whitepaper: String
  youtube: String
  tiktok: String
}

type TokenInfo {
  id: String!
  address: String!
  circulatingSupply: String
  cmcId: Int
  gridAssetId: String
  bluechipRating: String
  isScam: Boolean
  name: String
  networkId: Int!
  symbol: String!
  totalSupply: String
  imageThumbHash: String
  imageThumbUrl: String
  imageSmallUrl: String
  imageLargeUrl: String
  imageBannerUrl: String
  videoExternalUrl: String
  description: String
}

type OrganizationUrl {
  url: String!
  type: String
}

type OrganizationSocial {
  url: String!
  type: String
}

type AssetDeployment {
  id: String!
  networkId: Int!
  address: String!
  standard: String
  assetId: String!
  rootId: String!
  token: EnhancedToken
}

type Asset {
  id: String!
  name: String
  description: String
  ticker: String
  type: String
  status: String
  icon: String
  rootId: String!
  assetDeployments: [AssetDeployment!]!
}

type Organization {
  name: String!
  foundingDate: String
  descriptionShort: String
  descriptionLong: String
  tagLine: String
  type: String
  sector: String
  urls: [OrganizationUrl!]!
  socials: [OrganizationSocial!]!
  logo: String
  icon: String
  header: String
  rootId: String!
  assets: [Asset!]!
}

type ExplorerTokenData {
  id: String!
  blueCheckmark: Boolean
  description: String
  divisor: String
  tokenPriceUSD: String
  tokenType: String
}

type Exchange {
  id: String!
  address: String!
  color: String
  name: String
  exchangeVersion: String
  iconUrl: String
  networkId: Int!
  tradeUrl: String
}

enum WalletCategory {
  NORMIE
  TOKEN_CREATOR
  EXCHANGE
  DEFI_EXCHANGE
  PAIR
  PAIR_TOKEN_HOLDER
  POOL_AUTHORITY
  STAKING_VAULT
  NOTORIOUS
  BURN
  LOCKER
}

type WalletFunding {
  fundedByAddress: String!
  fundedByLabel: String
  fundedAt: Int!
  tokenAddress: String!
  networkId: Int!
  amount: String!
  transactionHash: String!
}

type WalletPolymarketProfile {
  proxyWallet: String!
  xUsername: String
  displayName: String
  pseudonym: String
  profileImageUrl: String
  verifiedBadge: Boolean
  displayUsernamePublic: Boolean
  fetchedAt: Int!
}

type Wallet {
  address: String!
  category: WalletCategory
  firstSeenTimestamp: Int
  firstFunding: WalletFunding
  identityLabels: [String!]
  avatarUrl: String
  displayName: String
  twitterId: String
  twitterUsername: String
  telegramId: String
  telegramUsername: String
  website: String
  discordId: String
  discordUsername: String
  githubId: String
  githubUsername: String
  farcasterId: String
  farcasterUsername: String
  description: String
  ethosScore: Int
  ethosLevel: String
  ethosVerified: Boolean
  tradeSourceIds: [String!]
  identitySource: String
  identityUpdatedAt: Int
  polymarket: WalletPolymarketProfile
  tokensCreatedCount: Int
  tokensMigratedCount: Int
}

enum FeeMode {
  CREATOR_FEE
  CASHBACK
  HOLDER_REWARDS
}

type LaunchpadData {
  launchpadName: String
  graduationPercent: Float
  poolAddress: String
  completedAt: Int
  completed: Boolean
  completedSlot: Int
  migratedSlot: Int
  migratedAt: Int
  migrated: Boolean
  migratedPoolAddress: String
  launchpadProtocol: String
  launchpadIconUrl: String
  feeModes: [FeeMode!]
  holderRewardFeeBps: Int
  holderRewardQuoteMint: String
  category: String
}

type TokenExtrema {
  id: String!
  address: String!
  networkId: Int!
  athPrice: String!
  athPriceTimestamp: Int!
  atlPrice: String!
  atlPriceTimestamp: Int!
  athFdv: String!
  athFdvTimestamp: Int!
  atlFdv: String!
  atlFdvTimestamp: Int!
  athCircMc: String!
  athCircMcTimestamp: Int!
  atlCircMc: String!
  atlCircMcTimestamp: Int!
}

type CoinCommunity {
  id: String!
  createdAt: Int!
  postCount: Int!
  memberCount: Int!
  likeCount: Int!
  lastPostAt: Int
}

type Token2022ScaledUiAmountConfig {
  authority: String
  multiplier: Float!
  newMultiplierEffectiveTimestamp: String
  newMultiplier: Float
}

type Token2022TransferFee {
  epoch: String!
  transferFeeBasisPoints: Int!
  maximumFee: String!
}

type Token2022TransferFeeConfig {
  transferFeeConfigAuthority: String
  olderTransferFee: Token2022TransferFee!
  newerTransferFee: Token2022TransferFee!
}

type Token2022Extensions {
  scaledUiAmountConfig: Token2022ScaledUiAmountConfig
  transferFeeConfig: Token2022TransferFeeConfig
}

type B20Extensions {
  multiplier: String
  multiplierObservedAt: String
  pausedTransfer: Boolean
  pausedMint: Boolean
  pausedBurn: Boolean
  supplyCap: String
}

type RobinhoodStockTokenExtensions {
  uid: String!
  multiplier: String
  multiplierObservedAt: String
  newMultiplier: String
  newMultiplierEffectiveAt: String
  oraclePaused: Boolean
}

type XStockTokenExtensions {
  multiplier: String
  multiplierObservedAt: String
  newMultiplier: String
  newMultiplierEffectiveAt: String
}

type TokenExtensions {
  token2022: Token2022Extensions
  b20: B20Extensions
  robinhoodStockToken: RobinhoodStockTokenExtensions
  xStock: XStockTokenExtensions
}

type Erc7572CustomInfo {
  type: String!
  featuredImage: String
  collaborators: [String!]
}

enum CategoryType {
  CANONICAL
  NARRATIVE
}

enum CategoryStatus {
  DRAFT
  ACTIVE
  ARCHIVED
}

type Category {
  id: String!
  name: String!
  shortName: String
  slug: String!
  description: String
  type: CategoryType!
  status: CategoryStatus!
  parentId: String
  memberCount: Int
}

enum RiskVerdict {
  SCAM
  HIGH_RISK
  CAUTION
  NEUTRAL
  VERIFIED
  VERIFIED_CONTESTED
}

enum RiskAnalysisCoverage {
  NOT_ANALYZED
  INCONCLUSIVE
  ANALYZED
  STALE
}

enum RiskReasonCode {
  PROOF_HONEYPOT_SIM
  PROOF_NON_TRANSFERABLE
  PROOF_TRANSFER_FEE_100
  PROOF_DEFAULT_FROZEN
  PROOF_POOL_TRAP_SIM
  AUTH_MINT
  AUTH_FREEZE
  AUTH_PERMANENT_DELEGATE
  AUTH_TRANSFER_HOOK
  AUTH_PAUSABLE
  AUTH_OWNER_NOT_RENOUNCED
  AUTH_CAN_TRANSFER_OWNERSHIP
  TAX_BUY_HIGH
  TAX_SELL_HIGH
  TAX_HONEYPOT_UNCONFIRMED
  TAX_PAUSED
  TAX_POOL_TRAP
  TAX_POOL_TRAP_HOOK_SHARED
  LIQ_MINIMAL
  LIQ_UNKNOWN
  LIQ_RUG_CLIFF
  LIQ_UNLOCKED
  LIQ_DRAINING
  HOLD_TOP10_CONCENTRATED
  HOLD_DEV_HEAVY
  HOLD_SNIPER_HEAVY
  HOLD_BUNDLER_HEAVY
  HOLD_INSIDER_HEAVY
  HOLD_INSIDER_DUMPED
  FLOW_ONE_WAY
  FLOW_WALLET_FARM
  FLOW_WASH_DOMINATED
  FLOW_BUNDLED_LAUNCH
  FLOW_MECHANICAL_TRADING
  FLOW_RING_DOMINATED
  REP_SERIAL_RUGGER
  REP_RISKY_CREATOR
  REP_SCAMMER_FUNDED
  REP_IMITATOR_SYMBOL
  REP_IMITATOR_NAME
  REP_IMITATOR_IMAGE
  LABEL_MANUAL_SCAM
  LABEL_VERIFIED
}

type TokenRisk {
  verdict: RiskVerdict
  score: Float
  flaggedAt: Int
  analyzedAt: Int
  coverage: RiskAnalysisCoverage
  reasons: [RiskReasonCode!]
  buyTax: Float
  sellTax: Float
}

type TokenIssuer {
  id: String!
  displayName: String
}

type EnhancedToken {
  id: String!
  address: String!
  cmcId: Int
  decimals: Int!
  isScam: Boolean
  name: String
  networkId: Int!
  symbol: String
  socialLinks: SocialLinks
  info: TokenInfo
  gridAssetId: String
  bluechipRating: String
  organization: Organization
  asset: Asset
  exchanges: [Exchange!]
  creatorAddress: String
  creator: Wallet
  creatorBalanceNBT: String
  createBlockNumber: Int
  createTransactionHash: String
  createdAt: Int
  mintable: String
  freezable: String
  isFreezableValid: Boolean
  isMintableValid: Boolean
  launchpad: LaunchpadData
  top10HoldersPercent: Float
  profanity: Boolean
  extrema: TokenExtrema
  coinCommunity: CoinCommunity
  extensions: TokenExtensions
  tokenStandardCustomData: Erc7572CustomInfo
  categories: [Category!]
  risk: TokenRisk
  issuer: TokenIssuer
}

type PooledTokenValues {
  token0: String
  token1: String
  invalidReserves: Boolean!
}

type CurrencyUnits {
  currency0: String!
  currency1: String!
  decimals0: Int!
  decimals1: Int!
}

type UniswapV4Data {
  uniswapV4HookAddress: String
  isToken0NetworkToken: Boolean
  isDynamicFee: Boolean
  currencyUnits: CurrencyUnits
  type: String!
}

type ArenaTradeData {
  tokenId: String
  type: String!
}

type PumpData {
  creator: String
  type: String!
}

union ProtocolData = UniswapV4Data | ArenaTradeData | PumpData

type PairProtocolCustomData {
  uniswapV4HookAddress: String
}

type Pair {
  address: String!
  exchangeHash: String!
  fee: Int
  id: String!
  networkId: Int!
  protocol: String
  tickSpacing: Int
  token0: String!
  token1: String!
  createdAt: Int
  token0Data: EnhancedToken
  token1Data: EnhancedToken
  pooled: PooledTokenValues
  virtualPooled: PooledTokenValues
  currencyUnits: CurrencyUnits
  protocolData: ProtocolData
}

enum PotentialScamReason {
  MinimumLiquidity
  LiquidityUnknown
  LiquidityRugPull
  SuspiciousWalletActivity
  AbnormalBuyerRatio
  DevConcentration
  SniperConcentration
  BundledLaunch
  ForeignVenueLaunch
  SellerHub
}

type TokenFilterResult {
  token: EnhancedToken
  createdAt: Int
  lastTransaction: Int
  buyCount5m: Int
  buyCount1: Int
  buyCount12: Int
  buyCount24: Int
  buyCount4: Int
  change5m: String
  change1: String
  change12: String
  change24: String
  change4: String
  volumeChange5m: String
  volumeChange1: String
  volumeChange4: String
  volumeChange12: String
  volumeChange24: String
  exchanges: [Exchange]
  high5m: String
  high1: String
  high12: String
  high24: String
  high4: String
  liquidity: String
  totalLiquidityUsd: String
  quoteToken: String
  low5m: String
  low1: String
  low12: String
  low24: String
  low4: String
  marketCap: String
  circulatingMarketCap: String
  pair: Pair
  liquidPair: Pair
  liquidPairLiquidity: String
  liquidPairPriceUSD: String
  priceUSD: String
  trendingScore: Float
  sellCount5m: Int
  sellCount1: Int
  sellCount12: Int
  sellCount24: Int
  sellCount4: Int
  txnCount5m: Int
  txnCount1: Int
  txnCount12: Int
  txnCount24: Int
  txnCount4: Int
  uniqueBuys5m: Int
  uniqueBuys1: Int
  uniqueBuys12: Int
  uniqueBuys24: Int
  uniqueBuys4: Int
  uniqueSells5m: Int
  uniqueSells1: Int
  uniqueSells12: Int
  uniqueSells24: Int
  uniqueSells4: Int
  uniqueTransactions5m: Int
  uniqueTransactions1: Int
  uniqueTransactions12: Int
  uniqueTransactions24: Int
  uniqueTransactions4: Int
  volume1: String
  volume5m: String
  volume12: String
  volume24: String
  volume4: String
  buyVolume1: String
  buyVolume12: String
  buyVolume24: String
  buyVolume4: String
  buyVolume5m: String
  sellVolume1: String
  sellVolume12: String
  sellVolume24: String
  sellVolume4: String
  sellVolume5m: String
  poolFees5m: String
  poolFees1: String
  poolFees4: String
  poolFees12: String
  poolFees24: String
  baseFees5m: String
  baseFees1: String
  baseFees4: String
  baseFees12: String
  baseFees24: String
  priorityFees5m: String
  priorityFees1: String
  priorityFees4: String
  priorityFees12: String
  priorityFees24: String
  builderTips5m: String
  builderTips1: String
  builderTips4: String
  builderTips12: String
  builderTips24: String
  l1DataFees5m: String
  l1DataFees1: String
  l1DataFees4: String
  l1DataFees12: String
  l1DataFees24: String
  totalFees5m: String
  totalFees1: String
  totalFees4: String
  totalFees12: String
  totalFees24: String
  feeToVolumeRatio5m: String
  feeToVolumeRatio1: String
  feeToVolumeRatio4: String
  feeToVolumeRatio12: String
  feeToVolumeRatio24: String
  isScam: Boolean
  holders: Int
  walletAgeAvg: String
  walletAgeStd: String
  swapPct1dOldWallet: String
  swapPct7dOldWallet: String
  sniperCount: Int
  sniperHeldPercentage: Float
  bundlerCount: Int
  bundlerHeldPercentage: Float
  insiderCount: Int
  insiderHeldPercentage: Float
  suspiciousCount: Int
  suspiciousHeldPercentage: Float
  devHeldPercentage: Float
  top10HoldersPercent: Float
  potentialScamReasons: [PotentialScamReason]
  athPrice: String
  athPriceTimestamp: Int
  atlPrice: String
  atlPriceTimestamp: Int
  athFdv: String
  athFdvTimestamp: Int
  atlFdv: String
  atlFdvTimestamp: Int
  athCircMc: String
  athCircMcTimestamp: Int
  atlCircMc: String
  atlCircMcTimestamp: Int
}

type CategoryTokenConnection {
  results: [TokenFilterResult]
  count: Int
  page: Int
}

input TokenBoolFilter {
  and: [TokenFilters!]
  or: [TokenFilters!]
  not: TokenFilters
}

input TokenCategoryFilter {
  anyOf: [String!]
  allOf: [String!]
  noneOf: [String!]
  hasCategory: Boolean
}

enum TokenSocialLink {
  BITCOINTALK
  BLOG
  COINGECKO
  COINMARKETCAP
  DISCORD
  EMAIL
  FACEBOOK
  GITHUB
  INSTAGRAM
  LINKEDIN
  REDDIT
  SLACK
  TELEGRAM
  TIKTOK
  TWITCH
  TWITTER
  WEBSITE
  WECHAT
  WHITEPAPER
  YOUTUBE
}

input TokenSocialFilter {
  anyOf: [TokenSocialLink!]
  allOf: [TokenSocialLink!]
  noneOf: [TokenSocialLink!]
  hasAny: Boolean
}

enum TokenMediaType {
  LOGO
  BANNER
  VIDEO
}

input TokenMediaFilter {
  anyOf: [TokenMediaType!]
  allOf: [TokenMediaType!]
  noneOf: [TokenMediaType!]
  hasAny: Boolean
}

input NumberFilter {
  gte: Float
  gt: Float
  lte: Float
  lt: Float
}

input TokenFilters {
  boolFilter: TokenBoolFilter
  categories: TokenCategoryFilter
  socials: TokenSocialFilter
  media: TokenMediaFilter
  createdAt: NumberFilter
  tokenCreatedAt: NumberFilter
  lastTransaction: NumberFilter
  buyCount5m: NumberFilter
  buyCount1: NumberFilter
  buyCount12: NumberFilter
  buyCount24: NumberFilter
  buyCount4: NumberFilter
  change5m: NumberFilter
  change1: NumberFilter
  change12: NumberFilter
  change24: NumberFilter
  change4: NumberFilter
  volumeChange5m: NumberFilter
  volumeChange1: NumberFilter
  volumeChange4: NumberFilter
  volumeChange12: NumberFilter
  volumeChange24: NumberFilter
  exchangeId: [String]
  exchangeAddress: [String]
  high5m: NumberFilter
  high1: NumberFilter
  high12: NumberFilter
  high24: NumberFilter
  high4: NumberFilter
  liquidity: NumberFilter
  totalLiquidityUsd: NumberFilter
  low1: NumberFilter
  low5m: NumberFilter
  low12: NumberFilter
  low24: NumberFilter
  low4: NumberFilter
  marketCap: NumberFilter
  circulatingMarketCap: NumberFilter
  network: [Int]
  holders: NumberFilter
  priceUSD: NumberFilter
  sellCount1: NumberFilter
  sellCount5m: NumberFilter
  sellCount12: NumberFilter
  sellCount24: NumberFilter
  sellCount4: NumberFilter
  txnCount5m: NumberFilter
  txnCount1: NumberFilter
  txnCount12: NumberFilter
  txnCount24: NumberFilter
  txnCount4: NumberFilter
  uniqueBuys1: NumberFilter
  uniqueBuys5m: NumberFilter
  uniqueBuys12: NumberFilter
  uniqueBuys24: NumberFilter
  uniqueBuys4: NumberFilter
  uniqueSells5m: NumberFilter
  uniqueSells1: NumberFilter
  uniqueSells12: NumberFilter
  uniqueSells24: NumberFilter
  uniqueSells4: NumberFilter
  uniqueTransactions1: NumberFilter
  uniqueTransactions5m: NumberFilter
  uniqueTransactions12: NumberFilter
  uniqueTransactions24: NumberFilter
  uniqueTransactions4: NumberFilter
  volume1: NumberFilter
  volume12: NumberFilter
  volume24: NumberFilter
  volume4: NumberFilter
  volume5m: NumberFilter
  buyVolume1: NumberFilter
  buyVolume12: NumberFilter
  buyVolume24: NumberFilter
  buyVolume4: NumberFilter
  buyVolume5m: NumberFilter
  sellVolume1: NumberFilter
  sellVolume12: NumberFilter
  sellVolume24: NumberFilter
  sellVolume4: NumberFilter
  sellVolume5m: NumberFilter
  includeScams: Boolean
  isTestnet: Boolean
  isVerified: Boolean
  potentialScam: Boolean
  trendingIgnored: Boolean
  creatorAddresses: [String!]
  launchpadProtocol: [String!]
  launchpadName: [String!]
  feeModes: [FeeMode!]
  launchpadCompleted: Boolean
  launchpadMigrated: Boolean
  launchpadGraduationPercent: NumberFilter
  launchpadCompletedAt: NumberFilter
  launchpadMigratedAt: NumberFilter
  freezable: Boolean
  mintable: Boolean
  profanity: Boolean
  walletAgeAvg: NumberFilter
  walletAgeStd: NumberFilter
  swapPct1dOldWallet: NumberFilter
  swapPct7dOldWallet: NumberFilter
  totalFees5m: NumberFilter
  totalFees1: NumberFilter
  totalFees4: NumberFilter
  totalFees12: NumberFilter
  totalFees24: NumberFilter
  poolFees24: NumberFilter
  feeToVolumeRatio24: NumberFilter
  sniperCount: NumberFilter
  sniperHeldPercentage: NumberFilter
  bundlerCount: NumberFilter
  bundlerHeldPercentage: NumberFilter
  insiderCount: NumberFilter
  insiderHeldPercentage: NumberFilter
  suspiciousCount: NumberFilter
  suspiciousHeldPercentage: NumberFilter
  devHeldPercentage: NumberFilter
  top10HoldersPercent: NumberFilter
  coinCommunityPostCount: NumberFilter
  coinCommunityMemberCount: NumberFilter
  coinCommunityLikeCount: NumberFilter
  coinCommunityLastPostAt: NumberFilter
  hasGridData: Boolean
  bluechipRatings: [String!]
  riskVerdicts: [RiskVerdict!]
  riskCoverages: [RiskAnalysisCoverage!]
  riskReasons: [RiskReasonCode!]
  riskScore: NumberFilter
  riskFlaggedAt: NumberFilter
  athPrice: NumberFilter
  atlPrice: NumberFilter
  athFdv: NumberFilter
  atlFdv: NumberFilter
  athCircMc: NumberFilter
  atlCircMc: NumberFilter
}

enum TokenRankingAttribute {
  riskScore
  riskFlaggedAt
  createdAt
  tokenCreatedAt
  lastTransaction
  buyCount5m
  buyCount1
  buyCount4
  buyCount12
  buyCount24
  change5m
  change1
  change4
  change12
  change24
  volumeChange5m
  volumeChange1
  volumeChange4
  volumeChange12
  volumeChange24
  high5m
  high1
  high4
  high12
  high24
  holders
  notableHolderCount
  liquidity
  totalLiquidityUsd
  low5m
  low1
  low4
  low12
  low24
  marketCap
  circulatingMarketCap
  priceUSD
  sellCount5m
  sellCount1
  sellCount4
  sellCount12
  sellCount24
  trendingScore
  trendingScore5m
  trendingScore1
  trendingScore4
  trendingScore12
  trendingScore24
  txnCount5m
  txnCount1
  txnCount4
  txnCount12
  txnCount24
  uniqueBuys5m
  uniqueBuys1
  uniqueBuys4
  uniqueBuys12
  uniqueBuys24
  uniqueSells5m
  uniqueSells1
  uniqueSells4
  uniqueSells12
  uniqueSells24
  uniqueTransactions5m
  uniqueTransactions1
  uniqueTransactions4
  uniqueTransactions12
  uniqueTransactions24
  volume5m
  volume1
  volume4
  volume12
  volume24
  buyVolume5m
  buyVolume1
  buyVolume4
  buyVolume12
  buyVolume24
  sellVolume5m
  sellVolume1
  sellVolume4
  sellVolume12
  sellVolume24
  poolFees5m
  poolFees1
  poolFees4
  poolFees12
  poolFees24
  baseFees5m
  baseFees1
  baseFees4
  baseFees12
  baseFees24
  priorityFees5m
  priorityFees1
  priorityFees4
  priorityFees12
  priorityFees24
  builderTips5m
  builderTips1
  builderTips4
  builderTips12
  builderTips24
  l1DataFees5m
  l1DataFees1
  l1DataFees4
  l1DataFees12
  l1DataFees24
  totalFees5m
  totalFees1
  totalFees4
  totalFees12
  totalFees24
  feeToVolumeRatio5m
  feeToVolumeRatio1
  feeToVolumeRatio4
  feeToVolumeRatio12
  feeToVolumeRatio24
  launchpadCompletedAt
  launchpadMigratedAt
  graduationPercent
  walletAgeAvg
  walletAgeStd
  swapPct1dOldWallet
  swapPct7dOldWallet
  sniperHeldPercentage
  bundlerHeldPercentage
  insiderHeldPercentage
  suspiciousHeldPercentage
  sniperCount
  bundlerCount
  insiderCount
  suspiciousCount
  devHeldPercentage
  top10HoldersPercent
  coinCommunityPostCount
  coinCommunityMemberCount
  coinCommunityLikeCount
  coinCommunityLastPostAt
}

enum RankingDirection {
  ASC
  DESC
}

input TokenRanking {
  attribute: TokenRankingAttribute
  direction: RankingDirection
}
```

### Example

[Test this query in the Explorer →](https://docs.codex.io/explore.md)

```graphql theme={null}
{
  categoryTokens(
    slug: "artificial-intelligence"
    filters: {liquidity: {gt: 100000}}
    rankings: [{attribute: volume24, direction: DESC}]
    limit: 25
  ) {
    results {
      token {
        address
        networkId
        name
        symbol
      }
      priceUSD
      liquidity
      marketCap
      volume24
      change24
      holders
    }
    count
    page
  }
}
```

### Usage Guidelines

* Apply quality filters such as liquidity and volume minimums to avoid low quality tokens, just as you would with `filterTokens`.
* Use `count` and `page` from the previous response to request the next page of results.
* Response limit: 200 tokens per request.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.