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.
excluderemoves 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 inPct. - Counts, basis points and milliseconds are integers, such as
3600000. - Percentages use the same 0–100 scale as the payload.
- Every
…Usdkey has a…Nativecounterpart, denominated in the chain’s gas asset. - A
mingreater thanmaxis rejected.
{ "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,sendersorrecipientslist must belong to a chain included inchains. Whenchainsis omitted, every chain is included, so a single EVM address matches on every EVM chain. - A list can contain at most 100 values, and
tokensonspot.tokenstakes 1 to 100. The top-level address lists onspot.trades,spot.transfersandspot.candleshave 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 anerror 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.