Websocket

Stream proprietary trading indicators for liquidity pools. Indicators are calculated and delivered every 1 minute for pools that have been updated in our system.

Endpoint

wss://enterprise.guardis.io/v1/indicators/ws

Authentication

Include your API key as a query parameter when connecting.

wss://enterprise.guardis.io/v1/indicators/ws?api_key=your_api_key_here

Query Parameters

Parameter
Type
Required
Description

api_key

string

Yes

Your Guardis API key


Response Format

Once connected, you'll receive an IndicatorUpdate message every minute containing indicators for all pools that were updated during that interval.

IndicatorUpdate

{
  "timestamp": "2025-01-15T14:32:00.000Z",
  "indicators": [
    {
      "pair_address": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
      "token_address": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
      "total_wallets": 4827,
      "organic_wallets": 3241,
      "organic_profitable_wallets": 1847,
      "organic_to_total_wallets_ratio": "0.6714",
      "bot_to_total_wallets_ratio": "0.3286",
      "profitable_organic_to_total_organic_ratio": "0.5699",
      "total_volume_usd": "1284729.47",
      "organic_volume_usd": "847293.82",
      "bot_volume_ratio": "0.3404",
      "organic_volume_ratio": "0.6596",
      "organic_mean_hold_seconds": "3847.25",
      "organic_mean_trade_frequency_seconds": "892.50",
      "smart_money_score": "72.45",
      "price_usd": "0.000346289",
      "social_sentiment_score": "0.847",
      "social_blast_radius_score": 284729,
      "status": "active",
      "attempts": 1,
      "created_at": "2025-01-15T10:32:08.000Z",
      "updated_at": "2025-01-15T14:32:00.000Z",
      "smart_money_influx_10min": "48293.47",
      "smart_money_outflux_10min": "12847.82",
      "raw_smart_money_score": "68.92",
      "raw_smart_money_influx": "52847.29",
      "raw_smart_money_outflux": "14293.47",
      "smart_holders": 847,
      "raw_holders": 3241,
      "smart_to_raw_holders_ratio": "0.2613",
      "profitable_volume": "629472.18",
      "profitable_volume_total_volume_ratio": "0.4899"
    }
  ]
}

Field Reference

IndicatorUpdate

Field
Type
Description

timestamp

string

ISO 8601 timestamp when the update was generated

indicators

array

All indicators for pools updated during this interval

CurrentIndicator

Identification

Field
Type
Description

pair_address

string

The on-chain address of the liquidity pool

token_address

string

The mint address of the token

Wallet Metrics

Field
Type
Description

total_wallets

integer

Total number of unique wallets that have traded this token

organic_wallets

integer

Number of wallets classified as organic (non-bot) traders

organic_profitable_wallets

integer

Number of organic wallets currently in profit

organic_to_total_wallets_ratio

string

Ratio of organic wallets to total wallets (0-1)

bot_to_total_wallets_ratio

string

Ratio of bot wallets to total wallets (0-1)

profitable_organic_to_total_organic_ratio

string

Ratio of profitable organic wallets to total organic wallets (0-1)

Volume Metrics

Field
Type
Description

total_volume_usd

string

Total trading volume in USD

organic_volume_usd

string

Trading volume from organic wallets in USD

bot_volume_ratio

string

Ratio of bot volume to total volume (0-1)

organic_volume_ratio

string

Ratio of organic volume to total volume (0-1)

profitable_volume

string

Volume from profitable trades in USD

profitable_volume_total_volume_ratio

string

Ratio of profitable volume to total volume (0-1)

Behavioral Metrics

Field
Type
Description

organic_mean_hold_seconds

string

Average hold time for organic wallets in seconds

organic_mean_trade_frequency_seconds

string

Average time between trades for organic wallets in seconds

Smart Money Metrics

Field
Type
Description

smart_money_score

string

Proprietary score indicating smart money activity (0-100)

raw_smart_money_score

string

Unadjusted smart money score before normalization

smart_money_influx_10min

string

Smart money inflow over the last 10 minutes in USD

smart_money_outflux_10min

string

Smart money outflow over the last 10 minutes in USD

raw_smart_money_influx

string

Unadjusted smart money inflow in USD

raw_smart_money_outflux

string

Unadjusted smart money outflow in USD

smart_holders

integer

Number of wallets classified as smart money

raw_holders

integer

Total number of current holders

smart_to_raw_holders_ratio

string

Ratio of smart money holders to total holders (0-1)

Social Metrics

Field
Type
Description

social_sentiment_score

string

Sentiment score derived from social signals (-1 to 1)

social_blast_radius_score

integer

Estimated social reach/exposure metric

Price & Status

Field
Type
Description

price_usd

string

Current token price in USD

status

string

Processing status of the indicator

attempts

integer

Number of calculation attempts

created_at

string

ISO 8601 timestamp when the indicator was first created

updated_at

string

ISO 8601 timestamp when the indicator was last updated

Note: Decimal values are returned as strings to preserve precision.


Example Usage

JavaScript:

const socket = new WebSocket(
  "wss://enterprise.guardis.io/v1/indicators/ws?api_key=your_api_key_here"
);

socket.onopen = () => {
  console.log("Connected to Guardis indicators stream");
};

socket.onmessage = (event) => {
  const update = JSON.parse(event.data);
  console.log(`Update at ${update.timestamp}: ${update.indicators.length} pools`);
  
  for (const indicator of update.indicators) {
    console.log(`${indicator.token_address}:`);
    console.log(`  Smart Money Score: ${indicator.smart_money_score}`);
    console.log(`  Organic Ratio: ${(parseFloat(indicator.organic_to_total_wallets_ratio) * 100).toFixed(1)}%`);
    console.log(`  10min Influx: $${indicator.smart_money_influx_10min}`);
  }
};

socket.onerror = (error) => {
  console.error("WebSocket error:", error);
};

socket.onclose = () => {
  console.log("Connection closed");
};

Python:

import asyncio
import websockets
import json

async def stream_indicators():
    uri = "wss://enterprise.guardis.io/v1/indicators/ws?api_key=your_api_key_here"
    
    async with websockets.connect(uri) as socket:
        print("Connected to Guardis indicators stream")
        
        async for message in socket:
            update = json.loads(message)
            print(f"Update at {update['timestamp']}: {len(update['indicators'])} pools")
            
            for indicator in update["indicators"]:
                print(f"{indicator['token_address']}:")
                print(f"  Smart Money Score: {indicator['smart_money_score']}")
                print(f"  Organic Ratio: {float(indicator['organic_to_total_wallets_ratio']) * 100:.1f}%")
                print(f"  10min Influx: ${indicator['smart_money_influx_10min']}")

asyncio.run(stream_indicators())

Connection Best Practices

  • Expect updates every minute — Plan your processing around this cadence

  • Implement reconnection logic — Network interruptions happen; automatically reconnect with exponential backoff

  • Process messages asynchronously — Don't block on message processing; queue updates if needed

Last updated