Skip to main content
spot.tokens, spot.trades, spot.transfers and spot.candles use the same filter language. This page describes the rules these channels share; each channel page lists its own keys.

Combining filters

  • {} matches everything: every token, trade, transfer or candle bucket, on every chain. Each key you add narrows the set.
  • An item must match every key, but within a list, one matching value is enough.
  • To combine keys with OR, open a second subscription.
  • exclude removes an item that matches any of its values, even when every other key matches it.

Ranges

A range is { "min": …, "max": … }. Both bounds are inclusive, and you can omit either one.
  • Money values and percentages are decimal strings, such as "100000". Percentage keys on streams end in Pct.
  • Counts, basis points and milliseconds are integers, such as 3600000.
  • Percentages use the same 0–100 scale as the payload.
  • Every …Usd key has a …Native counterpart, denominated in the chain’s gas asset.
  • A min greater than max is rejected.
An unknown value never matches a range. A price, market cap, liquidity, supply or holder count of zero means the value has not been measured yet, so it does not match any range. For example, a filter of { "max": "5000000" } does not match a token with no market cap.

Names and addresses

  • EVM addresses are case-insensitive. Solana addresses must match exactly.
  • Launchpad, DEX and platform names are case-insensitive. An unknown name is accepted but matches nothing, so a misspelled venue produces no updates and no error.
  • An unknown chain, flag, stage, anchor, annotation, social or funding kind is rejected.
  • Each address in a top-level tokens, wallets, pools, senders or recipients list must belong to a chain included in chains. When chains is omitted, every chain is included, so a single EVM address matches on every EVM chain.
  • A list can contain at most 100 values, and tokens on spot.tokens takes 1 to 100. The top-level address lists on spot.trades, spot.transfers and spot.candles have no limit of their own; only the address limit applies.

Address limits

Each API key can hold 20 subscriptions across all of its connections. Those subscriptions share a single limit of 2,000 addresses. Other address keys do not count against the limit: devAddresses, fundingAddresses, every exclude list, and the lists inside a token key. Each subscription counts its own addresses, so two subscriptions that name the same address use two units. A subscribe request that exceeds either limit returns a VALIDATION_ERROR whose message identifies the limit. When closing subscriptions would free capacity, the message also reports the key’s current usage.

Errors

A rejected filter returns an error frame, and the connection stays open. The error’s details[].field is the path of the failing key, such as stats.5m.buys, exclude.wallets or flags[0]. An error from the subscription limit has the field channel, and an error from the address limit has the field filters.