Automating the Elgato Key Light

Automating the Elgato Key Light


2 min read

As video conference calls are now part of my daily life, I decided to investigate how I can look better in front of my webcam. After some research, I bought an Elgato Key Light Air to help illuminate my face better.

So far, I'm delighted with the purchase. The key light has definitely improved how I look on video calls. But having to turn it on every time I have a video call and then turn it off when the call ends is a pain.

I considered leaving the light on throughout the work day, but the light can be quite searing to my eyes when it's shining at me for an extended period of time.

I then put on my software engineering hat and wondered, "Can I automate this inconvenience away?". As it turns out, I can.

Elgato Key Light REST API

The Elgato Key Light and Key Light Air devices actually have a web server (listening on port 9123) built in. The web server exposes a REST API:

GET /elgato/lights

This endpoint returns the status of the key light.

Sample Response

    "numberOfLights": 1,
    "lights": [
            "on": 1,
            "brightness": 9,
            "temperature": 262

For updating the key light, there's a PUT action endpoint:

PUT /elgato/lights

Content-Type: 'application/json'
--data-raw '{
  "Lights": [
      "Temperature": 344,
      "Brightness": 100,
      "On": 1

This endpoint allows you to set the attributes of the key light. You can set the brightness and temperature, including turning it on or off.

This means that I can turn the Elgato Key Light off and on by interfacing with its REST API endpoints.

A Node.js script

I created a Node.js script that toggles on and off the Elgato Key Light. I then bound the execution of the script to a keyboard macro. So now, I can tap a key to turn the Key Light on and off. :D


It is relatively easy for one to interface with an Elgato Key Light or Key Light Air using its built-in REST API. You can even integrate it into your smart home via something like Homebridge .