Agent Websocket API
The Fractrade platform provides websocket endpoints for real-time data and action streaming for every agent.
Action Websocket
The Action websocket allows you to receive real-time actions from your agents.
Endpoint
wss://api.fractrade.xyz/ws/actions/{agent_id}
Authentication
Authentication is required to connect to the websocket. You can authenticate using your API key and secret:
wss://api.fractrade.xyz/ws/actions/{agent_id}?api_key={api_key}&api_secret={api_secret}
Message Format
Messages are sent in JSON format. Each message contains an action object:
{
"action_id": "action-uuid",
"action_type": "EXECUTE_HYPERLIQUID_PERP_TRADE",
"agent_id": "agent-uuid",
"config": {
"position": {
"asset": "BTC",
"size": 0.1,
"side": "LONG",
"leverage": 10,
"exchange": "hyperliquid"
}
},
"created_at": "2023-01-01T00:00:00Z",
"status": "PENDING"
}
Action Types
The following action types are published to the websocket:
EXECUTE_HYPERLIQUID_PERP_TRADE
Execute a trade on Hyperliquid
SET_HYPERLIQUID_PERP_STOP_LOSS
Set a stop loss on Hyperliquid
SET_HYPERLIQUID_PERP_TAKE_PROFIT
Set a take profit on Hyperliquid
Note: SEND_TELEGRAM
actions are not published to the websocket as they are only used internally for sending notifications to Telegram.
Example: Connecting with Python
import websocket
import json
import threading
import rel
def on_message(ws, message):
action = json.loads(message)
print(f"Received action: {action}")
# Process the action
action_type = action['action_type']
config = action['config']
if action_type == 'EXECUTE_HYPERLIQUID_PERP_TRADE':
# Handle trade execution
position = config['position']
print(f"Trade signal: {position}")
# Execute the trade using your own logic
# ...
def on_error(ws, error):
print(f"Error: {error}")
def on_close(ws, close_status_code, close_msg):
print(f"Connection closed: {close_msg}")
def on_open(ws):
print("Connection opened")
if __name__ == "__main__":
# Replace with your actual values
agent_id = "your-agent-id"
api_key = "your-api-key"
api_secret = "your-api-secret"
# Create websocket connection
ws_url = f"wss://api.fractrade.xyz/ws/actions/{agent_id}?api_key={api_key}&api_secret={api_secret}"
ws = websocket.WebSocketApp(
ws_url,
on_open=on_open,
on_message=on_message,
on_error=on_error,
on_close=on_close
)
# Set dispatcher to automatic reconnection
ws.run_forever(dispatcher=rel)
rel.signal(2, rel.abort) # Keyboard Interrupt
rel.dispatch()
Example: Connecting with JavaScript
const WebSocket = require('ws');
// Replace with your actual values
const agentId = 'your-agent-id';
const apiKey = 'your-api-key';
const apiSecret = 'your-api-secret';
// Create websocket connection
const wsUrl = `wss://api.fractrade.xyz/ws/actions/${agentId}?api_key=${apiKey}&api_secret=${apiSecret}`;
const ws = new WebSocket(wsUrl);
ws.on('open', function open() {
console.log('Connection opened');
});
ws.on('message', function incoming(data) {
const action = JSON.parse(data);
console.log('Received action:', action);
// Process the action
const actionType = action.action_type;
const config = action.config;
if (actionType === 'EXECUTE_HYPERLIQUID_PERP_TRADE') {
// Handle trade execution
const position = config.position;
console.log('Trade signal:', position);
// Execute the trade using your own logic
// ...
}
});
ws.on('error', function error(err) {
console.log('Error:', err);
});
ws.on('close', function close() {
console.log('Connection closed');
});
User Channel Websocket
For users who want to receive actions from all their agents, you can connect to the user channel websocket:
wss://api.fractrade.xyz/ws/user/{user_id}
This endpoint requires user authentication and will stream all actions from all agents owned by the user.
Rate Limits
Maximum 10 concurrent connections per user
Maximum 100 messages per minute per connection
Error Codes
1000
Normal closure
1001
Going away
1002
Protocol error
1003
Unsupported data
1008
Policy violation
1011
Internal server error
Last updated