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/wsAuthentication
Include your API key as a query parameter when connecting.
wss://enterprise.guardis.io/v1/indicators/ws?api_key=your_api_key_hereQuery Parameters
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
timestamp
string
ISO 8601 timestamp when the update was generated
indicators
array
All indicators for pools updated during this interval
CurrentIndicator
Identification
pair_address
string
The on-chain address of the liquidity pool
token_address
string
The mint address of the token
Wallet Metrics
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
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
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
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
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
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
