Live Token Aggregator
You can get real-time token updates for all tokens supported by our dexes. If the price changes, liquidity changes, etc., an update gets pushed.
What's different?
The live token aggregator stream provides a different type of result to the other streams- such as candles and trades- that supply updates as they arrive in the blockchain.
The live token aggregator provides a list of the top n tokens sorted along a field as desired.
On initialization, you will receive a list of those top n tokens. On an update (with a frequency 2/s), you will receive updates to tokens within that top n , as well as any tokens that should be added or removed from that list (allowing you to locally maintain a list of the top n tokens following certain conditions).
For example, you might want to maintain a list of the top 5 priced tokens that have a minimum liquidity of 5. You will receive all 5 at the start, followed by any updates to those 5 tokens, or any that should be added ore removed to maintain this top 5.
Get Started
Subprotocol headers
Unlike our other websockets, the live token aggregator updates requires a subprotocol to be set due to the high frequency and different functionality.
You need to set the following headers to your connection request:
| Header name | Header value |
|---|---|
Sec-WebSocket-Protocol | token.updates.v1 |
Configuration struct
The live token aggregator WS also uses a different configuration structure. Instead of the one sent to other WS streams, send a structure like the following:
{
"type": "configure",
"filters": {
"age_bucket": "ESTABLISHED",
"min_price_chg_5m": 10,
"min_liquidity_usd": 1,
"min_supply": 1
},
sort: {
by: "price_change_5m",
dir: "desc"
},
limit: 200
}- type: this is always `configure
- filters: You can provide a list of desired filters of tokens to show from the list below.
- sort: Pick a sorting option from the list below.
- limit: The top limit tokens results along the sort provided will be returned.
- This can be up to a maximum of
1000
- This can be up to a maximum of
Filters
Things to keep in mind:
- If you use this connection without a filter you will receive data for ALL candles. This can result in excessive credit usage
- Currently, there is only one filter-
baseMintAddress.- Currently, this WS provides and receives results in
snake_case. This is subject to change.- To get trades for native Solana you must use
11111111111111111111111111111111as the token mint.
| Name | Description |
|---|---|
| min_price | The minimum current USD price of a token to be included. |
| max_price | The maximum current USD price of a token to be included |
| min_price_chg_1m | The minimum current USD price change of a token in the last minute to be included. |
| max_price_chg_1m | The maximum current USD price change of a token in the last minute to be included |
| min_price_chg_5m | The minimum current USD price change of a token in the last 5 minutes to be included |
| max_price_chg_1m | The maximum current USD price change of a token in the last 5 minutes to be include |
| min_abs_price_chg_1m | The minimum current absolute USD price change (positive or negative) of a token in the last minute to be included. |
| max_abs_price_chg_1m | The maximum current absolute USD price change (positive or negative) of a token in the last minute to be included. |
| min_abs_price_chg_5m | The minimum current absolute USD price change (positive or negative) of a token in the last 5 minutes to be included. |
| max_abs_price_chg_5m | The maximum current absolute USD price change (positive or negative) of a token in the last 5 minutes to be included |
| min_vol_5m | The minimum volume traded over the past 5 minutes for a token to be included. |
| max_vol_5m | The maximum volume traded over the past 5 minutes for a token to be included |
| min_liquidity_usd | The minimum liquidity (in USD) of a token to be included. |
| max_liquidity_usd | The maximum liquidity (in USD) of a token to be included |
| min_supply | The minimum available supply of a token to be included. |
| max_supply | The maximum available supply of a token to be included |
| min_score | The minimum Vybe score (of our signature calculated metric) for a token to reach for it to be included. |
| age_bucket | The age of the token based on when it was created. This is one of several buckets:NEW (< 10 minutes), FRESH (10m-60m), RIPE (>10 minutes), ESTABLISHED (> 1hr), or ALL |
Sorts
Things to keep in mind:
- You can sort on any of these with
ASCorDESC.- Despite the sort being provided, the returned tokens are not guaranteed to be sorted in the response provided. However, the tokens provided are restricted to the
top nalong that sort.
| Name | Description |
|---|---|
| vol_5m | The volume of this token traded in the past 5 minutes. |
| liquidity_usd | The amount of tradeable liquidity of this token, in USD. |
| age_s | The age of a token. |
| price_chg_5m | The variance in price of this token in the past 5 minutes. |
| score | The calculated Vybe score (our signature metric) of tradeability of this token. |
Response
The token aggregator stream provides a result at a rate of approximately 2/s.
It has the following values:
type:token_updatests: The time of emission.seq: A deprecated value that can and should be ignored.updates: A list of tokens that should be considered in thetop n. If this is the first response, this should have the same number of rows aslimit(unless the filters were too strict). On any future message, a token inupdateswill be either:- A token that is newly part of that
top n(for example, if it increased along the sort metric, or a higher token decreased along that metric). - A token that is already in the
top nthat has updated.
- A token that is newly part of that
deletes: A list of mints that are no longer in thetop nthat were in thetop nbefore this message, and should no longer be considered.
{
"type": "token_updates",
"ts": 1764973511,
"seq": 0,
"updates": [
{
"id": "6hx3xLi9ugcvs7edwz6xR1vkpLBd4TPZhwPrVeHxpump",
"changed": {
"id": "6hx3xLi9ugcvs7edwz6xR1vkpLBd4TPZhwPrVeHxpump",
"price": 4.045410948064409e-6,
"price_chg_1m": 0.0,
"price_chg_5m": 0.0,
"vol_5m": -0.0,
"vol_1h": 784.5660724005918,
"liquidity_usd": 0.0,
"score": 0.0,
"age_s": 1950,
"first_seen_ts": 1764971521000,
"ts": 1764973471024,
"seq": 121309535,
"symbol": "BigHuman",
"name": "BigHuman",
"supply": "1000000000",
"logo_url": "https://ipfs.io/ipfs/bafkreias3k5vhdatqavtguzl5z4omu4wqwrn75w3iidng3ipqmeltpko2y"
},
"ts": 1764973471024
}
],
"deletes": ["AUsWjcbztrrxy3r9yNuAhvEvevgZWH9rBanb229pump"]
}Overview of the token update structure in updates:
| Name | Description |
|---|---|
| id | The mint address of the token in question. |
| price | The price in USD of the token at this time stamp.. |
| price_chg_1m | The variance in the USD price of the token in the past 1 minute. |
| price_chg_5m | The variance in the USD price of the token in the past 5 minute. |
| vol_5m | The volume of the token traded in the past 5 minutes. |
| vol_1h | The volume of the token traded in the past 60 minutes. |
| liquidity_usd | The liquidity of the token in usd. |
| score | The calculated Vybe score (our signature metric) of tradeability of this token |
| age_s | The age of the token, in seconds. |
| first_seen_ts | The timestamp this token was first seen by our aggregator (within our aggregators buffer- this will always be a relatively recent value). |
| ts | The timestamp of the update. |
| seq | A deprecated value to be ignored. |
| symbol | The symbol of the token. |
| name | The name of the token. |
| supply | The total supply of the token available. |
| logo_url | The url pointing to the logo of the token. |
Updated about 5 hours ago