Skip to main content

Connection

Connect to CoreTracker’s WebSocket endpoint for real-time data streaming:
wss://api.corebot.app/ws/v1/stream

Authentication

Two methods to authenticate your WebSocket connection:

Method 1: Query Parameter

const ws = new WebSocket('wss://api.corebot.app/ws/v1/stream?apiKey=ct_live_xxxxx');

Method 2: Authentication Message

const ws = new WebSocket('wss://api.corebot.app/ws/v1/stream');

ws.onopen = () => {
  ws.send(JSON.stringify({
    type: 'auth',
    api_key: 'ct_live_xxxxx'
  }));
};
You have 5 seconds to authenticate after connecting or the connection will close.

Connection Lifecycle

1. Connect & Authenticate

// Connect and receive confirmation
ws.onmessage = (event) => {
  const msg = JSON.parse(event.data);
  if (msg.type === 'connected') {
    console.log('Connected!', msg.connection_id);
    // Now you can subscribe to streams
  }
};

2. Subscribe to Data

ws.send(JSON.stringify({
  type: 'subscribe',
  subscription_type: 'user_timeline',
  params: {
    username: 'elonmusk'
  }
}));

3. Receive Data

ws.onmessage = (event) => {
  const msg = JSON.parse(event.data);
  if (msg.type === 'data') {
    console.log('New tweet:', msg.data);
  }
};

Message Types

Client → Server

TypeDescription
authAuthenticate with API key
subscribeSubscribe to a data stream
unsubscribeCancel a subscription
pingKeep connection alive

Server → Client

TypeDescription
connectedConnection established
dataStream data update
errorError occurred
pongResponse to ping
subscription_confirmedSubscription created
subscription_cancelledSubscription removed
heartbeatPeriodic keep-alive signal
historical_completeHistorical data loading finished
user_infoUser details on subscription
warningNon-fatal warning message

Rate Limits

LimitValueDescription
Messages/second50Per connection
Connections50Per API key
Subscriptions20Per connection
Message size1MBMaximum message size

Quick Start Example

const apiKey = 'ct_live_xxxxx';
const ws = new WebSocket(`wss://api.corebot.app/ws/v1/stream?apiKey=${apiKey}`);

ws.onopen = () => {
  console.log('WebSocket connected');
  
  // Subscribe to Elon Musk's timeline
  ws.send(JSON.stringify({
    type: 'subscribe',
    subscription_type: 'user_timeline',
    params: { username: 'elonmusk' }
  }));
};

ws.onmessage = (event) => {
  const message = JSON.parse(event.data);
  
  switch(message.type) {
    case 'connected':
      console.log('Connection ID:', message.connection_id);
      break;
    case 'subscription_confirmed':
      console.log('Subscription active:', message.subscription_id);
      break;
    case 'data':
      console.log('New tweet:', message.data.text);
      break;
    case 'error':
      console.error('Error:', message.message);
      break;
  }
};

ws.onerror = (error) => {
  console.error('WebSocket error:', error);
};

ws.onclose = (event) => {
  console.log('Connection closed:', event.code, event.reason);
};

Next Steps