Widget Events API
Push custom events to all widgets in an overlay via HTTP POST.Endpoint
Request
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
event | string | Yes | Event name (must start with custom:) |
data | object | No | Arbitrary JSON payload |
Event Name Rules
- Must start with
custom:prefix - Max length: 64 characters
- Allowed characters:
a-z,0-9,:,_,- - Examples:
custom:confetti,custom:score_update,custom:poll:start
Response
delivered_to — number of overlay instances that received the event. Returns 0 if the overlay is offline.
Delivery Behavior
- Events are delivered in real-time via WebSocket
- If the overlay is disconnected, events are dropped (not queued)
- Delivery is best-effort — no retry mechanism
Receiving in Widgets
Use Cases
| Integration | Event Example |
|---|---|
| Stream deck button | custom:confetti |
| Chatbot command | custom:poll:start |
| Scoreboard app | custom:score_update |
| Webhook relay | custom:donation:goal |
Error Codes
| Status | Code | Description |
|---|---|---|
| 401 | unauthorized | Invalid or missing Bearer token |
| 404 | not_found | Channel ID doesn’t exist |
| 422 | validation_error | Missing event field or invalid format |
| 429 | rate_limit_exceeded | More than 60 requests per minute |