# API Documentation

The MuteDeck software has an open API that you can use to get the status of each button (mute, video, etc.) and control the buttons as well. This RESTful API is the way to integrate with MuteDeck and built something cool that reacts to or controls your meeting status. When the MuteDeck software is running, it runs a local web server where the API lives.


You can find the API endpoints and built-in documentation, here: http://localhost:3491/. There's also a built-in Swagger UI (opens new window) that can be used to test API calls and has the full API documentation.

The list of API endpoints on that page tells you the URLs to approach and what HTTP method to use. To retrieve the status, use a GET. And to change the mute, video, or another status, use a POST method. For example, reading out the status can have this output:

GET http://localhost:3491/v1/status
  "control": "system",
  "mute": "inactive",
  "record": "disabled",
  "share": "disabled",
  "status": 200,
  "video": "disabled"

This output tells you that mute is controlled by the system (so no Zoom call) and that mute is inactive, i.e. you are audible.

Let's look at an example where there is a Zoom call active:

GET http://localhost:3491/v1/status
  "call": "active",
  "control": "zoom",
  "mute": "active",
  "record": "inactive",
  "share": "inactive",
  "status": 200,
  "video": "active"

Here we see that the control is with zoom, mute is active (people can't hear you) and the video is active.

Please let me know (opens new window) when you build something with the API, as I'd love to know what awesome creations are out there.

# API Server listen on all IPs

By default, MuteDeck only activates the API server on all IPs on your computer. Meaning you'll be able to integrate a home automation system. It is possible to turn this off, and only let MuteDeck listen on your local computer. It's also possible that when you've upgraded from an older MuteDeck version to the latest, the setting is off and you need to follow the below instructions to enable listening on all IPs.

Exit MuteDeck and do the following:

# Windows

Open the registry editor and browse toward this path: HKEY_CURRENT_USER\Software\MuteDeck\MuteDeck

In the window with the settings (like keep_on_top, start_at_login) listed, right-click and create a new String Value. Name it as api_listen_on_all_ips and modify its value to true. If you're turning it off, modify the value to false.


# macOS

Open a Terminal.app window and run these commands:

defaults write ~/Library/Preferences/com.mutedeck.MuteDeck.plist "api_listen_on_all_ips" 1
defaults read ~/Library/Preferences/com.mutedeck.MuteDeck.plist "api_listen_on_all_ips"

The last command reads the settings file and shows the value, which should be 1. To disable listening on all IPs, run the same commands only with a 0 instead of 1.

After the setting is set, start MuteDeck again, and it will listen on the external network.