vMix & OBS integration
Send Kalamo live translation captions into your livestream or onto a screen. Three ways: a vMix title data source, a transparent browser overlay for vMix and OBS, and a full-screen HDMI output for a TV in the room.
How it works
In Kalamo, a room is "one person speaks, many people read". A host captures the speaker's audio once. Kalamo translates it into each of the room's languages and fans the captions out to everyone listening. The same caption stream that reaches phones can also reach your broadcast software or a screen.
There are three output surfaces, all reading from that one live stream:
- Browser overlay: a transparent web page that vMix or OBS load as a source. Updates in real time, no plugins.
- vMix data source: an XML or CSV feed vMix polls and binds to one of its own title designs.
- Screen / HDMI: the host's "Present on screen" mode, a full-screen display for a TV in the room.
The integration is read-only and needs nothing installed: vMix and OBS reach a normal https://kalamo.ai URL.
Before you start
You need three things:
- A room. Create one from Kalamo for organizations (the host
console is at
/room/host). - The room's code, for example
ABC123. - The language you want on screen, spelled exactly as the room offers it (for
example
English,Polish,German).
Throughout this guide, replace ABC123 with your room code and English with
your language.
Transparent overlay (vMix + OBS)
The overlay is a styled lower-third on a transparent background. It updates in real time and works the same in both tools. The URL is:
https://kalamo.ai/room/ABC123/overlay?lang=English In OBS
- In Sources, click + and add a Browser source.
- Paste the URL above.
- Set Width 1920 and Height 1080.
- Click OK. The captions appear over your scene with a transparent background.
In vMix
- Click Add Input, then More, then Web Browser.
- Paste the URL and set the resolution to 1920x1080.
- Add the input to your scene. It alpha-keys over the program automatically.
Tune the look with query parameters:
?lang=English&pos=bottom&size=1.4&staleAfter=8 See the parameters reference for all options. pos sets the
vertical position, size scales the font, and staleAfter clears the caption
after a pause.
vMix title data source
Prefer to use your own vMix Title design? Kalamo also serves the latest caption as an XML (or CSV) feed that vMix polls and binds to a title field. This option is vMix only; OBS has no equivalent.
https://kalamo.ai/api/room/ABC123/vmix?lang=English Set it up
- Open Settings, then Data Sources, then Add, then XML.
- Tick Use URL and paste the URL above.
- Set the refresh interval to 1 second.
- Add or open a Title input, then bind a text field to the data source, column
text, row 1.
The feed returns a single row with these fields:
| Field | Meaning |
|---|---|
text | The current translated line. |
prev | The previous line. |
lang | The target language. |
source | The spoken (source) language. |
updated | Timestamp of the current line. |
Example XML response:
<captions>
<row>
<text>Welcome to the conference</text>
<prev>Thank you all for coming</prev>
<lang>English</lang>
<source>Lithuanian</source>
<updated>2026-06-12T10:00:00Z</updated>
</row>
</captions> Add &format=csv for a CSV feed instead. The endpoint never errors: before the first
caption (or for an unknown room) it returns a blank row, so vMix keeps polling cleanly.
Big screen over HDMI
To put the captions on a TV in the room (not in a livestream), use the host console's stage display. This is a normal full-screen output, so it works over any HDMI connection.
- Start a room at
/room/hostand begin speaking so captions flow. - Connect the device to your TV by HDMI (mirror or extend the display).
- Click Present on screen.
- Show the big QR code so the audience can join, then toggle it off to leave the live translation with a small join code in the corner.
- Use the on-screen language tabs to switch which language the screen shows.
Transparency, HDMI, NDI & chroma key
A common question: can you get a transparent caption feed over HDMI? No. HDMI (and SDI) carry opaque video with no alpha channel. The browser overlay looks transparent because vMix and OBS load the page themselves and keep the alpha internally. Nothing is sent as a video signal.
If your captions must come from a physically separate machine, you have two options:
- NDI: NDI can carry alpha over the network. Output the overlay page as an NDI source (for example via OBS) and add it in vMix. Clean transparency, no cable.
- Chroma key: render the captions on a solid green background, send that over HDMI through a capture card, and key out the green in your switcher. This is the classic fallback when alpha cannot travel a cable.
Parameters reference
All parameters are optional query-string values appended to the URL.
| Parameter | Applies to | Values | Default |
|---|---|---|---|
lang | both | An exact target language, e.g. English | required |
staleAfter | both | Seconds before a caption clears during silence; 0 keeps it | 8 |
pos | overlay | bottom, top, center | bottom |
size | overlay | Font scale, e.g. 1.4 (0.5 to 3) | 1 |
format | data source | xml or csv | xml |
Which method should I use?
| Goal | Use |
|---|---|
| Captions in an OBS livestream | Overlay (Browser source) |
| Captions in vMix, simplest | Overlay (Web Browser input) |
| Captions inside your own vMix title design | Data source (XML/CSV) |
| Captions on a TV for the room audience | Screen / HDMI (Present mode) |
| Captions from a separate machine, transparent | NDI, or chroma key over HDMI |
FAQ
Does the transparent overlay work in both vMix and OBS?
Yes. The overlay is a normal web page with a transparent background. Both vMix (Web Browser input) and OBS (Browser source) render it with alpha, so the captions composite over your program with no extra keying.
Can I send transparent captions over HDMI?
No. HDMI carries opaque video only, with no alpha channel. The transparent overlay works because vMix or OBS load the URL directly and keep the transparency internally. If captions must travel from a separate machine, use NDI (which carries alpha) or put the captions on a green background and chroma-key them.
How much delay is there?
The translation pipeline runs on roughly 6-second audio chunks. The overlay updates in real time over a WebSocket. The vMix data source adds up to about 1 second of polling on top. If you need captions to line up with delayed program audio, add a matching program delay in your switcher.
Do I need an account?
You need a room, which requires a Kalamo for organizations subscription. Once a room is live you have its code and the languages it offers, which is all the integration needs.
What do I put for the language?
The exact language name the room is translating into, for example English, Polish, or German. It must match one of the room’s configured target languages. Add one input per language for multiple on-screen languages.