The test app
OBSClient.TestApp is a Windows application (WinUI 3, Fluent 2) to try every request and event of the library by hand, against your
own OBS Studio. It is made for human testing and trials: it lets you see what a request does and what the client makes of the answer
before you write any code. It is not part of the NuGet package.

The screenshots on this page come from the app's automated smoke test, which runs against a simulated OBS Studio.
Get it
Every release has the app as a download, from 4.0.0-beta1 on: under Assets, take
OBSClient.TestApp-<version>-win-x64.zip, unzip it, and start OBSClient.TestApp.exe. The app is self-contained, so nothing else
has to be installed. It is built for Windows 10 version 1809 and later, and the download is for x64.
Note
The app is not code signed, so Windows may warn that the publisher is unknown. The notes of each release list the SHA-256 of the zip, so that you can check what you downloaded.
The newest build of the main branch is also published as the artifact OBSClient.TestApp-win-x64 of the
Build and Test workflow: open the newest successful run on main, and
download the artifact (GitHub asks you to sign in to download artifacts, and keeps them for two weeks).
To build and run it from the source you need Windows and the .NET 10 SDK:
dotnet run --project OBSClient.TestApp -p:Platform=x64
The pages
| Page | What it does |
|---|---|
| Connection | Host, port, password and the events to receive. A Reidentify applies a change while connected. Shows the version of OBS Studio and the traffic of the session. |
| Explorer | Every request of the protocol (and the hand-written ones and the shortcuts), grouped like the protocol documentation, with an editor for each parameter that suits its type: the scenes and inputs of your OBS Studio are offered, by name or by UUID. The result is shown three ways, see below. A request can also be put in the batch. |
| Batch | The requests that you put in the batch, in the order in which they will run. Choose how OBS Studio runs them (serial in real time, serial per frame, parallel) and whether it stops at the first failure, send the batch, and see the response of each request the same three ways. |
| Events | Every event as the client raises it, with the message of OBS Studio next to it. |
| Log | Every message that went over the wire, and everything else the client reports. Export it as JSON lines, and export the observed shapes: which members were seen in each response and event, and what kind of value each was. |
Three views of every result

- Client is what the client returned: the typed response, as JSON.
- OBS Studio is the message that OBS Studio sent.
- Comparison lists what OBS Studio sent and the client does not return (a nested member that the client does not know, for example), what the client returns and OBS Studio did not send, and members that are another kind of value.
If you find a difference, that is a gap in the library: please open an issue with the member and the request.

Good to know
- What the app shows is a sample: a member that was not seen may still exist, and a feature that depends on your hardware (the virtual camera, the replay buffer, a streaming service) only answers when your OBS Studio has it.
- Exports go to
Documents\OBSClient Test App. Passwords and stream keys are hidden in them unless you say otherwise, but check a file before you share it: it holds the names of your scenes and inputs. - The requests and events of the app are generated from the protocol definition, like the library is, so a new request of a new protocol version shows up in the app by itself.
- The captures of a real OBS Studio that the library's tests use are made with a script, see Contributing.