Docs
Everything you need to go live. Three steps, no special software.
Create an account, then add Twitch, YouTube, Kick, or any custom RTMP endpoint from the dashboard. Paste each platform's stream key once. You can switch destinations on and off whenever you like, even mid-stream.
Your dashboard shows your ingest URL and your PSiStream stream key. In OBS (or Streamlabs, or any encoder) open Settings → Stream, set Service to Custom, paste the URL as Server and the key as Stream Key.
Hit Start Streaming. PSiStream relays your stream to every enabled destination at once, and the dashboard shows each destination's health in real time.
Your destinations stay live through a reconnect grace window. Get back online within it and viewers see a brief hiccup, not an ended stream.
Your unified Twitch, YouTube, and Kick chat lives at psistream.com/chat. To put it inside OBS: click Copy OBS dock linkon the dashboard's Chat card, then in OBS open View → Docks → Custom Browser Docks and paste the link. No sign-in needed. Treat the link like a password; copying a new one (or hitting Revoke) disables the old link.
Want it translucent? The whole page is styled through CSS variables, so paste this into the dock's Custom CSS box and tune the last number in each rgba() (0 = glass, 1 = solid):
:root {
--bg: rgba(9, 9, 11, 0.35);
--surface: rgba(24, 24, 27, 0.35);
--border: rgba(39, 39, 42, 0.5);
}
body { background: transparent !important; }
body::before { display: none; } /* dot grid */
nav { display: none; } /* optional: hide the header */Each destination runs in isolation. If one platform drops the relay, the others and your ingest keep going. Failed destinations retry automatically and are flagged on the dashboard. Live network health is on the status page.
Skip this unless you're building your own integration. Custom webhooks (configured on the Notifications page) receive a POST with Content-Type: application/json for the events you subscribe to: stream.started, stream.ended, and destination.failed.
{
"event": "stream.started",
"timestamp": "2026-06-06T22:00:00.000Z",
"data": {
"streamId": "...",
"destinations": [
{ "id": "...", "label": "Twitch", "platform": "twitch" }
]
}
}Two headers ship with every delivery: X-Webhook-Event (the event name) and X-Webhook-Signature (an HMAC-SHA256 hex digest of the raw body, keyed with your signing secret). To verify authenticity, compute HMAC-SHA256(secret, body) on your side and compare it to the signature header before trusting the payload.