Skip to main content

Connection

On connect, the server sends:

Subscribe to a Channel

Send a JSON message:
Server confirms:

Receive Events

When data changes, the server pushes an event. Only changed fields are included — no event is sent if nothing changed. Example — tweet gets 2 new views:

Unsubscribe

Server confirms:

Available Channels

Event Data Formats

user:tweets

New tweets from a specific user.

user:mentions

New tweets mentioning a user.

user:followers

Follower count changes. Reports the new count, previous count, and delta.

tweet:engagement

Live engagement metrics. Only changed fields are included, each with its delta.

search:tweets

New tweets matching a search query.

Error Events

Sent when polling fails (e.g. rate limit, account issues):
Error codes: INVALID_JSON, INVALID_CHANNEL, SUBSCRIBE_FAILED, POLL_ERROR, UNKNOWN_TYPE

Keepalive

Send periodic pings to keep the connection alive:
The server also sends WebSocket-level pings every 30 seconds. Unresponsive clients are disconnected after 10 seconds.

Full JavaScript Example

Full Python Example

Behavior Details

  • Deduplication: Multiple clients on the same resource share one poll
  • First poll: Captures initial snapshot without emitting events (avoids flood)
  • Auto-cleanup: Polling stops when all clients unsubscribe from a resource
  • Max subscriptions: 100 total across all connected clients
  • Snapshot cap: 500 IDs per subscription to prevent memory growth
  • Error backoff: After 5 consecutive poll failures, an error event is sent to all subscribers