vMix + Tevyr
vMix is the live production software broadcasters and streamers use when they need a control surface that can do everything OBS does plus replay, multi-camera switching, and instant graphics. Tevyr fits vMix the same way it fits OBS — as a browser-source overlay or a webhook-driven cue partner — with a few vMix-specific shortcuts that make wiring even faster.
vMix is paid commercial production software for Windows. It's the standard tool for live sports broadcasts, high-end streams, and any production with multiple inputs and instant replay. Get it from vmix.com.
What you can do
Tevyr as a vMix Web Browser input
vMix's built-in Web Browser input renders any URL as a video source. Drop a Tevyr output URL in and you get a frame-perfect timer overlay you can switch to like any other input.
Shortcut button → Tevyr action
vMix's Shortcuts feature can fire URLs. Bind a keyboard shortcut, MIDI key, or vMix Web Controller button to a Tevyr API call — driving Tevyr from your existing vMix shortcut list.
vMix Title overlay + Tevyr text
For broadcast-style lower thirds with synced timer text, fire vMix Title input macros from Tevyr webhooks. The 'time remaining' field updates in vMix automatically.
Recording / streaming control
Tevyr session start → vMix StartRecording. Tevyr session end → vMix StopRecording. Same pattern for Stream Start/Stop. Producer never touches the vMix recording panel.
Pattern 1 — Tevyr as a vMix Web Browser input
The fastest setup. vMix has a native Web Browser input type that renders any URL.
Setup
- In vMix, click Add Input → Web Browser
- In the URL field, paste your Tevyr output URL
- Set:
- Width:
1920for full-frame, smaller for corner overlays - Height:
1080(full-frame) or fit to your overlay design - Frame Rate:
30(Tevyr doesn't update faster than that)
- Width:
- Tick Audio if you want Tevyr's audio chimes routed through vMix
- Click OK
The Tevyr browser input now appears in your input list. Use vMix's standard switching, transitions, and overlay channels (1-4) to bring it on/off air.
For overlay use, set the Tevyr input as Overlay 1 in vMix. Pin it on top of any active scene. Toggle it on/off with vMix's Overlay 1 button or shortcut — the timer floats over your camera feed without changing the underlying scene.
Transparent background
Add ?bg=transparent to your Tevyr output URL so the timer floats over your live video without a black box behind it:
https://tevyr.com/output/YOUR_OUTPUT_ID?sig=...&bg=transparent
Pattern 2 — vMix Shortcut → Tevyr API call
vMix's Shortcuts feature can fire URLs via the WebControllerSendString function — though for our purposes the simplest path is the OpenURL function plus a small loopback trick, or routing through Companion.
Easiest approach: route through Companion
- Set up Bitfocus Companion as your control hub
- In vMix, bind the keyboard shortcut you want (e.g.,
F5) to a Companion button - Companion fires the Tevyr API call
This sounds indirect but it's actually how most production-grade rooms wire it — Companion sits between every control surface and every target, so swapping any piece is a one-line change.
Direct approach (no Companion)
Use vMix's WebControllerSendString function to fire a custom URL:
- Settings → Shortcuts → Add
- Function:
WebControllerSendString - Value: the full Tevyr API URL with
room_idandapi_key - Trigger: keyboard shortcut, MIDI note, or any vMix trigger source
vMix fires the URL when the shortcut triggers. Tevyr responds. Done.
Pattern 3 — vMix Title text driven by Tevyr
This is the broadcast-style lower-third pattern: a vMix Title input shows "Speaking now: [Name] · [Time remaining]" with the time field updating live from Tevyr.
Setup
- In vMix, create a Title input with text fields for
Speaker.TextandTimeRemaining.Text - Use a small bridge (Companion is easiest) to:
- Listen for Tevyr's
session.startedwebhook → call vMix'sSetTextfunction onSpeaker.Text - Poll Tevyr's
/v1/event/playback_statusonce per second → updateTimeRemaining.Text
- Listen for Tevyr's
The result: when Tevyr advances to a new session, vMix's lower third updates with the new speaker name. As the timer counts down, the time field tracks live.
This is significantly more work than browser-source overlay. Only worth it if you need true broadcast-grade typography and animations from vMix's title engine.
Pattern 4 — Tevyr cues vMix recording
Have Tevyr start and stop the vMix recording so files are perfectly trimmed.
Setup
- In Companion, add a vMix connection (uses vMix's TCP/HTTP API)
- Add a trigger: on Tevyr webhook
event=session.started AND session.title="Show Start"→ vMix action StartRecording - Add another: on Tevyr webhook
event=session.completed AND session.title="Show End"→ vMix action StopRecording
The producer programs the show flow once. The recording bookends itself.
Pattern 5 — Drive vMix from a Tevyr macro (vMix HTTP integration)
The newest path: a first-class vMix (HTTP API) integration template in Tevyr's Settings → Integrations. Tevyr stores the vMix Web Controller URL as an encrypted connection; macros call vMix functions directly via flow.http_request. No Companion bridge, no per-shortcut URL setup, no extra middleware.
Use this when:
- You want Tevyr macros (not vMix shortcuts) to be the source of truth for show automation
- You're building branching logic (run a recording cue only if a session label matches; cut to a specific input based on prior step output)
- You already have Tevyr managing the rundown and want vMix to follow
vMix's Web Controller listens on the LAN (default port 8088). Tevyr runs in the cloud — you must expose it via a Cloudflare Tunnel, Tailscale Funnel, or your firewall's reverse proxy. Plain LAN-only setups will not work; the vMix API URL you paste below must resolve from any internet host.
Setup
- In vMix, Settings → Web Controller → Enable (default port 8088)
- If you want basic auth, set the username/password in vMix's Web Controller settings — Tevyr supports inline basic auth
- Expose your vMix machine publicly via a tunnel (e.g.
https://vmix.example.com:8088) - In Tevyr, Settings → Integrations → Add new → vMix (HTTP API)
- Paste the URL. If you set basic auth, embed it inline:
https://user:pass@vmix.example.com:8088 - Name the connection, click Save, then Test — Tevyr calls
/api/?Function=Versionand shows a green toast with the vMix version on success
Use the connection in a macro
Drag flow.http_request, pick your vMix connection. Available actions:
- Cut to input —
/api/?Function=Cut&Input={{fields.input}}(input number or input name) - Quick play input —
/api/?Function=QuickPlay&Input={{fields.input}} - Start recording —
/api/?Function=StartRecording - Stop recording —
/api/?Function=StopRecording - Start streaming —
/api/?Function=StartStreaming
Recipes
Recipe — Cut to input 3 on session start
Trigger: lifecycle event on_session_start. Action: Cut to input. Input: 3.
Recipe — Auto-record around the show
Two macros wired to event-lifecycle triggers:
| Trigger | Action |
|---|---|
on_event_start | Start recording |
on_event_end | Stop recording (with flow.wait_ms 5s prior to capture closing applause) |
Recipe — QuickPlay a sting on a hotkey macro
Bind a Tevyr keyboard shortcut macro to a flow.http_request → QuickPlay step with the input set to your sting input. Press the hotkey, the sting plays through vMix without you switching apps.
Troubleshooting
401 Unauthorized — basic auth wrong. Re-check the inline credentials in your connection URL; remember the format is https://user:pass@host:port.
502 Bad Gateway — tunnel down. Hit https://your-vmix.example.com/api/?Function=Version from a non-LAN device to confirm the tunnel works before re-testing.
Function not found — typo in the input name or function. vMix matches input names case-insensitively but spaces matter. Use input numbers (1, 2, 3) when in doubt.
Web Controller is enabled but the URL returns 404 — vMix needs to be running (not just installed) for the Web Controller to respond. Confirm via https://your-vmix.example.com/api/?Function=Version in a browser first.
Recipes (browser-source overlay)
Replace YOUR_OUTPUT_ID and sig with your actual output URL parameters.
Full-frame Tevyr screen as a vMix input
https://tevyr.com/output/YOUR_OUTPUT_ID?sig=...
vMix Web Browser input: 1920×1080, 30fps. Use as a regular input, switch to it for full-screen sponsor walls, agendas, and break screens.
Transparent timer overlay
https://tevyr.com/output/YOUR_OUTPUT_ID?sig=...&bg=transparent
vMix Web Browser input: 1920×1080. Set as Overlay 1. Toggle on/off with vMix's Overlay 1 button.
Compact corner timer
https://tevyr.com/output/YOUR_OUTPUT_ID?sig=...&bg=transparent&size=small
vMix Web Browser input: 400×120. Position via vMix's Position panel; pin top-right or bottom-right.
Troubleshooting
"vMix Web Browser input is laggy"
- vMix's web rendering is CPU-bound. Each browser input uses a Chromium instance; expect 5-10% CPU per 1080p source on a modern PC
- Lower the input resolution if a full HD source isn't required
- vMix has built-in browser-source frame buffering — increase the buffer if you see micro-stutters
"Tevyr audio doesn't reach my stream"
- Confirm the Audio tickbox is enabled on the Web Browser input
- vMix's audio mixer treats the input like any other; check it's not muted in the M (mute) column
- Audio is only emitted when audio alerts are configured on that Tevyr output
"Shortcut fires but vMix shows an error"
- vMix's
WebControllerSendStringneeds the full URL withhttps://— http-only URLs are silently rejected - The URL must be URL-encoded in the shortcut value field. Spaces become
+or%20, ampersands stay as&(but special characters in message text need encoding)
"I want to control multiple Tevyr events from one vMix"
vMix shortcuts each target a single URL. The cleanest pattern is to define separate shortcut lists per event, with each shortcut hitting its event-specific room_id and api_key.
Context variables
vMix HTTP function-call paths (e.g. ?Function=SetText&Input=1&Value=...) support {{ctx.*}} interpolation — set a vMix overlay's text from {{ctx.session.title}} or {{ctx.session.speaker_name}} at fire time. See the full context-variable reference in the Macros guide. Common ones: {{ctx.event.title}}, {{ctx.session.title}}, {{ctx.session.speaker_name}}, {{ctx.timer.remaining_seconds}}, {{ctx.now.iso}}.
Triggered by webhook events
vMix can be fired automatically from any webhook event — session.started → Cut to that session's input, timer.warning → flash a "wrap" overlay. When creating a webhook, pick Integration mode and select your vMix connection.
Related
- Macros — chain vMix scene changes with timer + display effects in one cue
- API reference — every endpoint vMix can hit via Web Controller or Companion
- Webhooks — Tevyr → vMix scene changes, recording control
- Bitfocus Companion — the easiest bridge to vMix's TCP/HTTP API
- OBS integration — same patterns for OBS users
- Use case: Video Productions — full broadcast workflow with vMix