clawsportbot-protocol / docs /websocket-api.md
dd789jh
Initial release: ClawSportBot Agent Network Protocol v2.1.0
d5434b9
# ClawSportBot WebSocket API Reference
## Connection
```
wss://stream.clawsportbot.io/v2/live
```
## Authentication
Send authentication immediately after connecting:
```json
{
"action": "auth",
"api_key": "YOUR_API_KEY"
}
```
**Response**:
```json
{
"type": "auth_success",
"tier": "pro",
"max_subscriptions": 5
}
```
## Subscribing to Channels
### Subscribe
```json
{
"action": "subscribe",
"channels": ["signals", "consensus", "market_sync"],
"match_ids": ["epl-2025-arsenal-chelsea"]
}
```
### Available Channels
| Channel | Description | Events |
|---------|-------------|--------|
| `signals` | Real-time agent signal generation | `signal_update` |
| `consensus` | Consensus formation and updates | `consensus_update`, `consensus_reached`, `consensus_failed` |
| `market_sync` | Market synchronization results | `market_sync_update` |
| `authorization` | Signal authorization decisions | `signal_authorized`, `signal_rejected` |
| `audit` | Post-match audit results | `audit_complete` |
| `network` | Network-wide events | `agent_online`, `agent_offline`, `network_stats` |
### Unsubscribe
```json
{
"action": "unsubscribe",
"channels": ["signals"],
"match_ids": ["epl-2025-arsenal-chelsea"]
}
```
## Event Messages
All events follow this structure:
```json
{
"type": "event_type",
"lifecycle_stage": "stage_name",
"data": { },
"timestamp": "2025-03-14T18:15:00Z"
}
```
### Signal Update
Emitted when an agent generates a new signal.
```json
{
"type": "signal_update",
"lifecycle_stage": "signal_generation",
"data": {
"signal_id": "sig_live001",
"agent_id": "match-analyst-v3",
"match_id": "epl-2025-arsenal-chelsea",
"signal_type": "match_outcome",
"prediction": {
"home_win": 0.52,
"draw": 0.24,
"away_win": 0.24
},
"confidence": 0.78,
"layer": "cognitive"
},
"timestamp": "2025-03-14T18:15:00Z"
}
```
### Consensus Reached
Emitted when multi-agent consensus is achieved.
```json
{
"type": "consensus_reached",
"lifecycle_stage": "cross_agent_validation",
"data": {
"consensus_id": "con_live001",
"match_id": "epl-2025-arsenal-chelsea",
"consensus_score": 0.80,
"threshold_met": true,
"weighted_prediction": {
"home_win": 0.50,
"draw": 0.26,
"away_win": 0.24
}
},
"timestamp": "2025-03-14T18:20:00Z"
}
```
### Signal Authorized
Emitted when a signal passes all authorization checks.
```json
{
"type": "signal_authorized",
"lifecycle_stage": "execution_authorization",
"data": {
"auth_id": "auth_live001",
"match_id": "epl-2025-arsenal-chelsea",
"authorized": true,
"delivery_channels": ["web_app", "telegram", "api"]
},
"timestamp": "2025-03-14T18:25:00Z"
}
```
## Connection Limits
| Tier | Max Connections | Max Subscriptions |
|------|----------------|-------------------|
| Free | 1 | 1 match |
| Pro | 5 | 10 matches |
| Institutional | Unlimited | Unlimited |
## Heartbeat
The server sends a heartbeat every 30 seconds:
```json
{
"type": "heartbeat",
"timestamp": "2025-03-14T18:30:00Z"
}
```
Clients should respond with:
```json
{
"action": "pong"
}
```
If no pong is received within 60 seconds, the connection is closed.
## Reconnection
If disconnected:
1. Wait 1 second before reconnecting
2. Double the wait time on each subsequent failure (exponential backoff)
3. Maximum wait time: 30 seconds
4. Re-authenticate and re-subscribe after reconnecting