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 nameHeader value
Sec-WebSocket-Protocoltoken.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

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.
NameDescription
min_priceThe minimum current USD price of a token to be included.
max_priceThe maximum current USD price of a token to be included
min_price_chg_1mThe minimum current USD price change of a token in the last minute to be included.
max_price_chg_1mThe maximum current USD price change of a token in the last minute to be included
min_price_chg_5mThe minimum current USD price change of a token in the last 5 minutes to be included
max_price_chg_1mThe maximum current USD price change of a token in the last 5 minutes to be include
min_abs_price_chg_1mThe minimum current absolute USD price change (positive or negative) of a token in the last minute to be included.
max_abs_price_chg_1mThe maximum current absolute USD price change (positive or negative) of a token in the last minute to be included.
min_abs_price_chg_5mThe minimum current absolute USD price change (positive or negative) of a token in the last 5 minutes to be included.
max_abs_price_chg_5mThe maximum current absolute USD price change (positive or negative) of a token in the last 5 minutes to be included
min_vol_5mThe minimum volume traded over the past 5 minutes for a token to be included.
max_vol_5mThe maximum volume traded over the past 5 minutes for a token to be included
min_liquidity_usdThe minimum liquidity (in USD) of a token to be included.
max_liquidity_usdThe maximum liquidity (in USD) of a token to be included
min_supplyThe minimum available supply of a token to be included.
max_supplyThe maximum available supply of a token to be included
min_scoreThe minimum Vybe score (of our signature calculated metric) for a token to reach for it to be included.
age_bucketThe 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 ASC or DESC.
  • 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 n along that sort.
NameDescription
vol_5mThe volume of this token traded in the past 5 minutes.
liquidity_usdThe amount of tradeable liquidity of this token, in USD.
age_sThe age of a token.
price_chg_5mThe variance in price of this token in the past 5 minutes.
scoreThe 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_updates
  • ts: The time of emission.
  • seq: A deprecated value that can and should be ignored.
  • updates: A list of tokens that should be considered in the top n. If this is the first response, this should have the same number of rows as limit (unless the filters were too strict). On any future message, a token in updates will 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 n that has updated.
  • deletes: A list of mints that are no longer in the top n that were in the top n before 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:

NameDescription
idThe mint address of the token in question.
priceThe price in USD of the token at this time stamp..
price_chg_1mThe variance in the USD price of the token in the past 1 minute.
price_chg_5mThe variance in the USD price of the token in the past 5 minute.
vol_5mThe volume of the token traded in the past 5 minutes.
vol_1hThe volume of the token traded in the past 60 minutes.
liquidity_usdThe liquidity of the token in usd.
scoreThe calculated Vybe score (our signature metric) of tradeability of this token
age_sThe age of the token, in seconds.
first_seen_tsThe timestamp this token was first seen by our aggregator (within our aggregators buffer- this will always be a relatively recent value).
tsThe timestamp of the update.
seqA deprecated value to be ignored.
symbolThe symbol of the token.
nameThe name of the token.
supplyThe total supply of the token available.
logo_urlThe url pointing to the logo of the token.