guides

Reconnect one platform's chat

Read GET /v1/studios/{studioId}/chat/connectors with chat:read to see the studio's current platform states and latest reconnect attempts. This read does not reconnect anything. Connector status describes attachment, not a guarantee that every future message will arrive.

To reconnect a desired platform, send a bodyless POST /v1/studios/{studioId}/chat/connectors/kick/reconnect with studios:write and studio edit permission. Replace kick with the selected platform key from the snapshot. Only that platform is cycled; messages on it may pause briefly. An ineligible platform returns 409 with safe guidance. Reconnecting cannot replace an OAuth consent step when the account needs to be relinked.

202 acknowledges the operation. Keep showing progress while reconnectState is reconnecting; show success only when the matching attempt becomes succeeded. For failed, show reconnectError and allow a deliberate retry. Do not turn a platform green merely because the HTTP request succeeded.

The existing studio SSE endpoint, GET /v1/studios/{studioId}/events, carries the same fields in chatConnector events and snapshot chatConnectors rows:

{
  "platform": "kick",
  "desired": true,
  "requiresLiveBroadcast": false,
  "state": "connecting",
  "error": "",
  "reconnectAttemptId": "example-attempt",
  "reconnectState": "reconnecting",
  "reconnectError": "",
  "reconnectUpdatedAt": "2026-09-06T06:30:00.123456789Z"
}

Match both the platform and attempt ID. An update for Twitch does not finish a pending Kick operation. Reject older update timestamps, preserving their fractional precision, and replace the complete row, including empty error fields. The event stream retains its documented scopes: stream:read, sources:read, and destinations:read. Receiving chat connector snapshot rows and chatConnector/chatConnectorRemoved events also requires chat:read; otherwise they are omitted while authorized base events continue. The stream carries connector metadata, not chat message contents.

Concurrent requests share an active attempt. A new request after completion starts another attempt, so a timed-out request must not be retried blindly: read the connector snapshot first. Reconnect SSE with Last-Event-ID when available. Replay is bounded; an expired ID receives a fresh snapshot, which also reconciles a completion event the client missed. This is not a durable event-delivery guarantee.

See the API reference for the complete request, response, authentication, and error contracts.