Build Status npm badge npm dependencies npm devDependencies NPM Downloads MIT badge Commitizen badge

Huddly Software Development Kit (SDK)


Huddly SDK supportes the following node versions: (Needs to support NAPI v3 )

  • 8.11.2
  • 10.15.2
  • 11.5.0
  • 12.4.0 (LTS)

We recommend using nvm as your node version manager

After you've setup nvm run

  nvm use 12.4.0

Get started

Then you can install and start using the huddly sdk you need first install it and the transport

  npm install @huddly/sdk @huddly/device-api-usb

Start by creating the sdk and the transport

const HuddlyDeviceAPIUSB = require('@huddly/device-api-usb').default;
const HuddlySdk = require('@huddly/sdk').default;

// Create instances of device-apis you want to use
const usbApi = new HuddlyDeviceAPIUSB();

// Create an instance of the SDK
const sdk = new HuddlySdk(usbApi);

setup camera attached subscriber, this will give you a camera than has been attached.

// Create a instance that will represent the `IDeviceManager` interface
let cameraManager;
sdk.on('ATTACH', (d) => {
  cameraManager = d;

then initialize it


Then you should be good to go. All the actions on the cameraManager are done after the attach event. For example, to get the camera information, call getInfo when the camera is attached.

sdk.on('ATTACH', (d) => {
  cameraManager = d;


If you have a question or found a bug please open an issue. Thank you


For more details on the rest of the functionality to the sdk check out the documentation for the sdk class and the cameraManager (IDeviceManager) interface.


Check out the sdk code on github (


My detections are not matching what I see in the stream:

Internally the camera always sees full field of view, the coordinates are relative to full field of view by default. If you want the coordinates to be be absolute to the current framing, you can specify this when you get the detector.

    cameraManager.getDetector({ convertDetections: 'FRAMING' });

This makes it easy to draw these bbox directly on top of the main stream.

How can i disable autoframing and still get detection information from camera?

Another available detector configuration is the shouldAutoFrame option which when set to false, it allows you to configure Genius Framing to send detection data without autoframing.

    cameraManager.getDetector({ shouldAutoFrame: false });

By default, the detector is configured to run autoframing and generate detection information.

How do I get detections only when I am streaming with my Huddly IQ!

If you want to get detection data only when the camera is streaming on the host machine, you need to configure the detector class with the DOWS option.

    cameraManager.getDetector({ DOWS: true });

This option makes it possible to configure the detector so that you only get detection data when you are streaming on host machine. By default, this option set to false so that you don't have to stream to get detection data.

LED light is ON, but I am not streaming with my Huddly IQ!

After v0.4.0, SDK comes with a new feature ragarding the way you get detection data from the camera. On this version (and onward) the default behavior of detector is starting an internal stream (controlled by the camera only) to give you detection information. As a result the LED light is turned ON. Proper tearing down of the detector instance will stop the internal stream on the camera and with it the LED light.

The camera is never attached, or throwing an Error

Make sure that no other application such as the Huddly app or another sdk instance is running and using the camera.

Can I use undocumented methods.

No. To make sure that camera is compatible with the sdk the documented api gets thoroughly tested, we do not guarantee that undocumented functionality will not break/change from sdk version to sdk version, or camera sw to camera sw.

Transition from 0.3.* to 0.4.0

The transition from 0.3.* to 0.4.0 involves breaking changes with regards to Genius Framing configuration and detection data retrival. The breaking change is that we have moved the configuraion part of GeniusFraming (autozoom) into a separate interface that we called AutozoomControl. The autozoom configuration methods enable, disable, start and stop which used to live in the detector interface are now moved to the new AutozoomControl interface. On the other hand, the Detector interace remains responsible for only setting up events for getting detection and framing data from the camera. Have a look at the documentation of each interface to see usage examples.

result-matching ""

    No results matching ""