---
title: "Page Overlay Chat"
method: GET
path: "/overlay/chat/{token}"
---

# Page Overlay Chat

`GET /overlay/chat/{token}`

## Request

- Base URL: `https://sleipnir.tv` (the document declares no server; this is the origin it was published from)
- URL: `https://sleipnir.tv/overlay/chat/{token}`
- Auth: none declared

Public OBS chat-overlay page. No auth: the token in the path gates
the DATA (/api/overlay/{token}/messages), not this page. An invalid
token renders an empty transparent overlay. The token is read client
side from the URL path; this handler serves the template plus an optional
theme.

Theme: query params (?bg=...&accent=...&font=...) are run through
overlay_theme.validate_theme on EVERY request (so a hand-edited URL is
validated exactly like a preset/AI one) and injected as a :root override.
validate_theme is the security boundary: only allowlisted/clamped values
reach the CSS, so nothing here can break out of the style block.

## Path parameters

- `token` string, required

## Response `200`

Successful Response

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/sleipnir/apis/relay-control-plane.md) · [All operations](https://skmtc.dev/sleipnir/apis/relay-control-plane/llms.txt) · [OpenAPI document](https://skmtc.dev/sleipnir/apis/relay-control-plane/revisions/79829f6945a4?raw)
