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
| Type | Description |
|---|
auth | Authenticate with API key |
subscribe | Subscribe to a data stream |
unsubscribe | Cancel a subscription |
ping | Keep connection alive |
Server → Client
| Type | Description |
|---|
connected | Connection established |
data | Stream data update |
error | Error occurred |
pong | Response to ping |
subscription_confirmed | Subscription created |
subscription_cancelled | Subscription removed |
heartbeat | Periodic keep-alive signal |
historical_complete | Historical data loading finished |
user_info | User details on subscription |
warning | Non-fatal warning message |
Rate Limits
| Limit | Value | Description |
|---|
| Messages/second | 50 | Per connection |
| Connections | 50 | Per API key |
| Subscriptions | 20 | Per connection |
| Message size | 1MB | Maximum 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