spot.tokens and spot.trades take the same filter language. Each channel page lists its keys. This page holds the rules both share.
How keys combine
{}keeps everything: every token, or every trade, on every chain. Each key you add narrows the set.- An item must pass every key.
- In a list, one matching value is enough.
- For an OR across keys, open a second subscription.
excludedrops an item that matches any of its values, even when every other key keeps it.
Ranges
A range is{ "min": …, "max": … }. Both ends are inclusive, and either end can be left out.
- Money and percentages are decimal strings, such as
"100000". Stream keys end inPct. - Counts, basis points and milliseconds are integers, such as
3600000. - A percentage uses the 0–100 scale the payload uses.
- Every
…Usdkey has a…Nativetwin, in the chain’s gas asset. - A
minabovemaxis refused.
{ "max": "5000000" } does not keep a token with no market cap.
Names and addresses
- An EVM address matches in any letter case. A Solana address matches exactly.
- A launchpad, DEX or platform name matches in any letter case. An unknown name is accepted and matches nothing, so a misspelled venue fails silently.
- An unknown chain, flag, stage, anchor, annotation, social or funding kind is refused.
- A top-level
tokens,walletsorpoolsaddress must belong to a chain thatchainskeeps. An absentchainskeeps every chain, so one EVM address follows every EVM chain. - A list holds at most 100 values.
tokensonspot.tokenstakes 1 to 100.tokens,walletsandpoolsonspot.tradeshave no cap of their own; the address budget bounds them.
The address budget
One API key holds 20 subscriptions across all its connections. Those subscriptions share one budget of 2,000 addresses.
Other address keys cost nothing:
devAddresses, fundingAddresses, every exclude list, and the lists inside a trade filter’s token key.
Each subscription pays for its own addresses, so two subscriptions that name one address spend two units.
A subscribe over either cap gets a VALIDATION_ERROR. Its message names the cap that ran out. When closing subscriptions would free room, it also says how much the key holds.
Errors
A refused filter gets anerror frame, and the connection stays open.
The error’s
details[].field is the key’s path, such as stats.5m.buys, exclude.wallets or flags[0]. A refusal from the subscription cap names channel, and one from the address budget names filters.