◇ /LANDING/WEBSOCKET

Every mutation.
Live.

A single WebSocket connection streams every DNS change, monitor alert, certificate event, and incident update the instant it happens. No polling. No webhooks to manage.

wss://Resume tokensZone-scopedType-scoped30s heartbeat
01 · CONNECT

One URL.
Every event.

Connect with a standard WebSocket client. Pass your API key as a query parameter or in the first authentication frame. TLS 1.3 required.

wss://stream.relays.one
02 · HANDSHAKE

Authenticate once.
Stream forever.

Send an auth frame after connecting. The server responds with your resolved scopes and session expiry. Re-auth in-band without disconnecting.

▸ CLIENT
{ "type": "auth", "token": "rk_live_2WzF4x..." }
◂ SERVER
{ "type": "auth_ok", "account_id": "acc_cheetah", "scopes": ["dns:read", "monitor:read", "incident:read"], "expires_in": 3600 }
03 · STREAM

JSON frames.
Sequenced.

Every frame includes a monotonic sequence number scoped to your connection. Use it for gap detection, ordering, and resume.

stream · example.com · live
04 · FILTERS

Subscribe to
exactly what you need.

Filter by zone, event type, or both. Change subscriptions mid-stream without reconnecting. Glob patterns supported.

◆ subscribe frame
// Subscribe to DNS events for two zones
▸ {
    "type": "subscribe",
    "zones": ["example.com", "acme-ai.run"],
    "events": ["dns.*"]
  }

// Add monitor events without unsubscribing
▸ {
    "type": "subscribe",
    "events": ["monitor.down", "monitor.up"],
    "merge": true
  }

// Unsubscribe from a zone
▸ {
    "type": "unsubscribe",
    "zones": ["acme-ai.run"]
  }
05 · RESUME

Disconnect-proof.
Zero gaps.

Every heartbeat carries a resume token. On reconnect, pass it back and the server replays every event you missed. 15-minute replay window.

stream · reconnection

Open a socket.
See everything.