Websocket

Stream real-time trading signals as they are generated by Guardis. Signals are dispatched immediately upon detection, giving you the fastest possible access to actionable opportunities.

Endpoint

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

Authentication

Include your API key as a query parameter when connecting.

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

Query Parameters

Parameter
Type
Required
Description

api_key

string

Yes

Your Guardis API key

model_name

string

No

Filter signals by model name. If omitted, signals from all models are streamed

Example connection with filter:

wss://enterprise.guardis.io/v1/signals/ws?api_key=your_api_key_here&model_name=influx_high_on_dip

Response Format

Each message contains a single signal object dispatched the moment it's detected:

{
  "row_id": 284,
  "token_address": "5GTRGGnmbMCjCUnc3xMweCgVqDEtSDxTdvVdwutcpump",
  "pair_address": "GRQB4P9MmorUwut8kb43RyHKJWo3Ce1EAvENPmNUbAhN",
  "image": "https://static.guardis.dev/5GTRGGnmbMCjCUnc3xMweCgVqDEtSDxTdvVdwutcpump.png",
  "name": "predictionXBT",
  "symbol": "PREDICT",
  "signal_market_cap": "27257.412229931748286176100000",
  "liquidity_usd": "17477.80574674832758436675120",
  "ath_market_cap_usd": "73825.3034958005000000000",
  "roi_percentage": "170.84487284795104068293606087",
  "max_drawdown_percentage": "1.391816058888317383346729900",
  "max_drawdown_market_cap": "26878.03918927817000000000",
  "version": 2,
  "model_name": "influx_high_on_dip",
  "created_at": "2025-12-07T07:11:03"
}

Field Reference

Signal

Field
Type
Description

row_id

integer

Unique identifier for this signal

token_address

string

The mint address of the token

pair_address

string

The on-chain address of the liquidity pool

image

string

URL to the token image

name

string

Token name

symbol

string

Token ticker symbol

signal_market_cap

string

Market cap at the time of signal generation (USD)

liquidity_usd

string

Pool liquidity at signal time (USD)

ath_market_cap_usd

string

All-time high market cap achieved after signal (USD)

roi_percentage

string

Maximum ROI percentage from signal to ATH

max_drawdown_percentage

string

Maximum drawdown percentage before reaching ATH

max_drawdown_market_cap

string

Market cap at the point of maximum drawdown (USD)

version

integer

Signal model version

model_name

string

Name of the model that generated this signal

created_at

string

ISO 8601 timestamp when the signal was generated

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


Example Usage

JavaScript:

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

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

socket.onmessage = (event) => {
  const signal = JSON.parse(event.data);
  
  console.log(`🚀 New Signal: ${signal.name} (${signal.symbol})`);
  console.log(`   Token: ${signal.token_address}`);
  console.log(`   Market Cap: $${parseFloat(signal.signal_market_cap).toLocaleString()}`);
  console.log(`   Model: ${signal.model_name}`);
  console.log(`   Historical ROI: ${parseFloat(signal.roi_percentage).toFixed(2)}%`);
  
  // Execute your trading logic here
};

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

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

Python:

import asyncio
import websockets
import json

async def stream_signals():
    uri = "wss://enterprise.guardis.io/v1/signals/ws?api_key=your_api_key_here"
    
    async with websockets.connect(uri) as socket:
        print("Connected to signals stream")
        
        async for message in socket:
            signal = json.loads(message)
            
            print(f"🚀 New Signal: {signal['name']} ({signal['symbol']})")
            print(f"   Token: {signal['token_address']}")
            print(f"   Market Cap: ${float(signal['signal_market_cap']):,.2f}")
            print(f"   Model: {signal['model_name']}")
            print(f"   Historical ROI: {float(signal['roi_percentage']):.2f}%")
            
            # Execute your trading logic here

asyncio.run(stream_signals())

Connection Best Practices

  • Act quickly — Signals are time-sensitive; process them immediately upon receipt

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

  • Handle heartbeats — Keep your connection alive by responding to ping frames if required by your WebSocket client

  • Log signals — Maintain a local record of received signals for analysis and debugging

Last updated