Core
Built-in handlers and triggers — audio, delays, variables, collections, schedules, hotkeys, queues, HTTP requests, webhooks, and logging.
Core
Core is always enabled. It provides the building blocks every action uses: utility handlers (delay, if, log), variables, collections, schedules, hotkeys, queue control, audio playback, scripts, HTTP requests, webhooks, and process events.
Settings
Open Plugins → Core → Settings:
| Setting | Description |
|---|---|
| Process Watcher | When enabled, keeps background polling for process start/stop triggers. Process triggers also start the watcher automatically when needed. |
Features
| Area | What you get |
|---|---|
| Input | Global hotkey triggers and Fire Hotkey handler |
| Utility | Delay, If/Else, Run script (Monaco + external editor), Play sound, Log |
| Variables | Set / get global, user, and action variables |
| Collections | Create and mutate key-value stores |
| Queues | Pause, resume, toggle queues from handlers |
| Schedule | Cron and one-shot scheduled triggers |
| Process | Process started / stopped triggers (optional watcher) |
| Queue status | Triggers when jobs enqueue, start, complete, or queue pauses |
| HTTP | Webhooks page, Webhook trigger, HTTP request and Respond to webhook handlers |
HTTP and webhooks
HTTP request
Calls any REST API: Home Assistant, n8n, vMix, ProPresenter, or your own server. Pick the method, enter the URL, and optionally add headers and a body. All fields accept {variables}.
The handler sets these variables for the handlers after it:
| Variable | Value |
|---|---|
httpStatus | Status code, for example 200 |
httpOk | true for a 2xx status, otherwise false |
httpBody | Response body as text |
httpHeaders | Response headers as JSON |
An error status (such as 404 or 500) doesn't stop the action, so you can branch on {httpStatus} with If. A network error (host unreachable, timeout) shows a notification and stops the action.
Webhooks page
Webhooks let other apps and devices start actions by sending an HTTP request to Stream Kit. They use the API server, so enable it first under Settings → API Server.
Create webhooks under Core → Webhooks:
| Field | Description |
|---|---|
| Name | Shown in the trigger and handler selects |
| Path | scene/next listens on http://127.0.0.1:7892/webhook/scene/next. Filled in from the name until you change it |
| Secret | Generated for you. Callers send it as Authorization: Bearer <secret>, X-Webhook-Secret or ?secret=. Regenerate it if it leaks |
| Response | Respond right away answers 202 Accepted and runs actions in the background. Wait for Respond to webhook keeps the caller waiting for your own answer |
| Response timeout (seconds) | Only when waiting. After this the caller gets 504. Default 10, max 30 |
The page shows each webhook's full URL once the API server runs.
Webhook trigger
Runs an action when a request arrives on the selected webhook.
| Condition | Description |
|---|---|
| Webhook | Required. The webhook to listen on |
| Method | Only run for this HTTP method. Empty means any method |
| JSON field | Only run when a field in the JSON body matches, for example data.event equals follow |
Variables: webhookId, webhookName, webhookMethod, webhookPath, webhookQuery (JSON), webhookHeaders (JSON), webhookBody and webhookRemoteAddress.
Respond to webhook
Sends your own status, headers, and body to a caller of a webhook set to Wait for Respond to webhook, for example {httpBody} from an earlier HTTP request. Select the webhook to answer:
- In an action started by that webhook, it answers the request that started the action.
- In any other action, it answers the oldest request still waiting on that webhook. This way, for example, an OBS event can send the answer.
If no request is waiting, the handler does nothing.
Dashboard widgets
- Collections — edit collection data
- Log entries — view Log handler output
See Dashboard.
Triggers and handlers
Full lists with stable IDs:
Example IDs
| Item | ID |
|---|---|
| Hotkey | core:core:input:hotkey |
| Set variable | core:core:variable:set-variable |
| Queue paused | core:core:queue:paused |
| If | core:core:utility:if |
| Webhook | core:core:http:webhook |
| HTTP request | core:core:http:http-request |