External Williams AV Infinium REST API (1.0)

Download OpenAPI specification:

Introduction

The Infinium system supports remote control through its REST API (Representational State Transfer Application Programming Interface). This API provides a standardized set of rules and conventions that enable third-party control systems—such as Q-Sys, Crestron, Extron, or AMX—to perform the same functions as are available through the Infinium Web UI.

Using standard HTTP methods like GET, POST, PUT, and DELETE, third-party controllers can:

  • Switch source or retrieve currently selected source for a channel

  • Change DSP settings or presets

  • Retrieve and display system status

  • Set or retrieve passcodes for channel access

  • Change or retrieve current IP Addresses, Subnet mask, and Gateway

  • …and much more

This allows seamless integration of Infinium into a variety of control environments.

Getting Started

Before configuring commands in a control system, the first step is to generate an API Key. This key is required for all commands sent to the Infinium Controller and must be included in the command structure.
So it should be created before any programming begins. This is done using the web UI.

Step 1 Navigate to the tab where the API Key generation function is shown:

Image

Step 2 Click on “Generate a new API Key” and enter a name for the key:

Image

Step 3: Once a name is typed into the box, the “Generate Key” button will turn blue, indicating the key is ready to be generated.

Image

Step 4: Once the generate key button has been pressed, the screen will show a blanked out key name.

Image

Step 5: To see the key that was generated, and have the ability to copy the key, click on the eye symbol shown under “Actions”.

Image

Step 6: Copy the key and save it somewhere for use when constructing the API commands.

Programming Example

Here is an example of setting channel 1 audio source settings. This shows just the objects; the structure of the command is obtained below.

Image

Glossary of Terms

  • API: Application Programming Interface

  • REST: acronym for REpresentational State Transfer, an architectural style for distributed hypermedia systems

  • Resources: REST APIs are based on the concept of resources. A resource can be any information that can be named, such as a document, an image, or a collection of other resources. This typically lives in a database.

  • GET: Retrieves data from a Controller resource

  • POST: Creates a new entry (resource) in the Controller database

  • PUT: Updates an existing entry (resource) in the Controller database

  • DELETE: Removes an entry (resource) in the Controller database

  • cURL: The term "cURL" stands for "Client for URLs" or "Client URL". It is a command-line tool and a library (libcurl) used for transferring data to and from a server using URL syntax. cURL supports a variety of protocols, including HTTP, HTTPS, FTP, and more, making it a versatile tool for interacting with web servers and APIs.

api

get_health_check

Health check endpoint to verify if the backend is running.

Responses

get_open_source_licenses

Get OSS license's that where used.

Authorizations:
jsonWebToken
header Parameters
X-Fields
string <mask>

An optional fields mask

Responses

Response samples

Content type
application/json
{
  • "license_folder": "string"
}

post_user_login

header Parameters
X-Fields
string <mask>

An optional fields mask

Request Body schema: application/json
required
password
string
username
string

Responses

Request samples

Content type
application/json
{
  • "password": "string",
  • "username": "string"
}

Response samples

Content type
application/json
{
  • "access_token": "string"
}

api/controller

get_controller_audio_source

Get the channel 1 audio source settings.

Authorizations:
jsonWebToken
header Parameters
X-Fields
string <mask>

An optional fields mask

Responses

Response samples

Content type
application/json
{
  • "audio_source": "Disabled",
  • "mic_gain_enable": true,
  • "mic_power_enable": true
}

put_controller_audio_source

Set the channel 1 audio source settings.

Authorizations:
jsonWebToken
Request Body schema: application/json
required
audio_source
required
string
Enum: "Disabled" "Terminal Block" "XLR / 1/4\" (Combo Jack)" "Dante" "Test Tone"

Audio source selected for channel 1

mic_gain_enable
required
boolean

MIC gain enable

mic_power_enable
required
boolean

15V MIC bias enable (ie phantom power)

Responses

Request samples

Content type
application/json
{
  • "audio_source": "Disabled",
  • "mic_gain_enable": true,
  • "mic_power_enable": true
}

get_controller_audio_source

Get the channel 2 audio source settings.

Authorizations:
jsonWebToken
header Parameters
X-Fields
string <mask>

An optional fields mask

Responses

Response samples

Content type
application/json
{
  • "audio_source": "Disabled"
}

put_controller_audio_source

Set the channel 2 audio source settings.

Authorizations:
jsonWebToken
Request Body schema: application/json
required
audio_source
required
string
Enum: "Disabled" "Terminal Block" "Dante" "Test Tone"

Audio source selected for channel 2

Responses

Request samples

Content type
application/json
{
  • "audio_source": "Disabled"
}

get_controller_audio_settings

Get the audio DSP settings for the selected channel.

Authorizations:
jsonWebToken
path Parameters
id
required
integer

Channel Number

header Parameters
X-Fields
string <mask>

An optional fields mask

Responses

Response samples

Content type
application/json
{
  • "audio_preset": "Custom",
  • "channel_enable": true,
  • "digital_gain": -60,
  • "dynamic_range_compression": 0,
  • "high_pass_freq": 0,
  • "low_pass_freq": 0
}

put_controller_audio_settings

Set the audio DSP settings for the selected channel.

Authorizations:
jsonWebToken
path Parameters
id
required
integer

Channel Number

Request Body schema: application/json
required
audio_preset
string
Enum: "Custom" "Music" "Voice" "Hearing Assist" "Flat"

Preset for audio signal processing

digital_gain
integer [ -60 .. 24 ]

Digital audio gain to apply to the channel in dB

dynamic_range_compression
number

Dynamic range compression ratio to apply to the channel. Only settable if audio_preset=Custom

high_pass_freq
number

High shelf filter frequency in Hz. Only settable if audio_preset=Custom

low_pass_freq
number

Low shelf filter frequency in kHz. Only settable if audio_preset=Custom

Responses

Request samples

Content type
application/json
{
  • "audio_preset": "Custom",
  • "digital_gain": -60,
  • "dynamic_range_compression": 0,
  • "high_pass_freq": 0,
  • "low_pass_freq": 0
}

get_controller_audio_status

Get the audio status for the selected channel.

Authorizations:
jsonWebToken
path Parameters
id
required
integer

Channel Number

header Parameters
X-Fields
string <mask>

An optional fields mask

Responses

Response samples

Content type
application/json
{
  • "overload": true,
  • "vu_meter": -100
}

get_controller_dante

Get Dante status and Dante information.

Authorizations:
jsonWebToken
header Parameters
X-Fields
string <mask>

An optional fields mask

Responses

Response samples

Content type
application/json
{
  • "dante_mac": "string",
  • "dante_name": "string",
  • "dante_status": "string",
  • "poe_enable": true,
  • "poe_status": true
}

put_controller_dante

Set POE for dante port.

Authorizations:
jsonWebToken
Request Body schema: application/json
required
poe_enable
required
boolean

POE enable for the Dante interface

Responses

Request samples

Content type
application/json
{
  • "poe_enable": true
}

get_controller_dante_network_address

Get the Dante ethernet interface IP address.

Authorizations:
jsonWebToken
header Parameters
X-Fields
string <mask>

An optional fields mask

Responses

Response samples

Content type
application/json
{
  • "address": "string",
  • "gateway": "string",
  • "static_address_enable": true,
  • "subnet_mask": "string"
}

put_controller_dante_network_address

Set the Dante ethernet interface IP address. Must reboot for settings to take effect.

Authorizations:
jsonWebToken
Request Body schema: application/json
required
address
string

Ethernet address using IPv4 notation (ex. 192.168.0.101)

gateway
string

Ethernet gateway using IPv4 notation (ex. 192.168.0.1)

static_address_enable
required
boolean

Static address assignment enable

subnet_mask
string

Ethernet subnet mask using IPv4 notation (ex. 255.255.255.0)

Responses

Request samples

Content type
application/json
{
  • "address": "string",
  • "gateway": "string",
  • "static_address_enable": true,
  • "subnet_mask": "string"
}

get_controller_dante_network_status

Get the Dante ethernet interface link status.

Authorizations:
jsonWebToken
header Parameters
X-Fields
string <mask>

An optional fields mask

Responses

Response samples

Content type
application/json
{
  • "link_status": true
}

get_controller_front_panel

Get the controller front panel parameters.

Authorizations:
jsonWebToken
header Parameters
X-Fields
string <mask>

An optional fields mask

Responses

Response samples

Content type
application/json
{
  • "lock_status": true,
  • "timeout": "Never"
}

put_controller_front_panel

Set the controller front panel parameters.

Authorizations:
jsonWebToken
Request Body schema: application/json
required
lock_status
boolean

Front panel lock status

timeout
string
Enum: "Never" "1 min" "5 min" "30 min" "60 min"

Screen timeout: Never, 1 min, 5 min, 30 min, 60 min

Responses

Request samples

Content type
application/json
{
  • "lock_status": true,
  • "timeout": "Never"
}

get_controller_info

Get general info about the controller.

Authorizations:
jsonWebToken
header Parameters
X-Fields
string <mask>

An optional fields mask

Responses

Response samples

Content type
application/json
{
  • "control_mac": "string",
  • "hostname": "string",
  • "hw_version": "string",
  • "model": "string",
  • "sw_version": "string"
}

put_controller_info

Set the hostname for the controller. Must reboot for settings to take effect.

Authorizations:
jsonWebToken
Request Body schema: application/json
required
hostname
required
string [ 2 .. 63 ] characters

Hostname name of the controller

Responses

Request samples

Content type
application/json
{
  • "hostname": "string"
}

get_controller_network_address

Get the control ethernet interface IP address.

Authorizations:
jsonWebToken
header Parameters
X-Fields
string <mask>

An optional fields mask

Responses

Response samples

Content type
application/json
{
  • "address": "string",
  • "gateway": "string",
  • "static_address_enable": true,
  • "subnet_mask": "string"
}

put_controller_network_address

Set the control ethernet interface IP address.

Authorizations:
jsonWebToken
Request Body schema: application/json
required
address
string

Ethernet address using IPv4 notation (ex. 192.168.0.101)

gateway
string

Ethernet gateway using IPv4 notation (ex. 192.168.0.1)

static_address_enable
required
boolean

Static address assignment enable

subnet_mask
string

Ethernet subnet mask using IPv4 notation (ex. 255.255.255.0)

Responses

Request samples

Content type
application/json
{
  • "address": "string",
  • "gateway": "string",
  • "static_address_enable": true,
  • "subnet_mask": "string"
}

get_controller_network_status

Get the control ethernet interface link status.

Authorizations:
jsonWebToken
header Parameters
X-Fields
string <mask>

An optional fields mask

Responses

Response samples

Content type
application/json
{
  • "link_status": true
}

put_controller_reboot

Software reboot the controller. Note: connection will be lost during reboot.

Authorizations:
jsonWebToken

Responses

api/transmitter

get_transmitter_list

Get a list of MAC addresses for actively connected transmitters.

Authorizations:
jsonWebToken
header Parameters
X-Fields
string <mask>

An optional fields mask

Responses

Response samples

Content type
application/json
[
  • {
    }
]

get_transmitter_audio

Get channel information for the given MAC addresses.

Authorizations:
jsonWebToken
path Parameters
mac_address
required
string

Mac address of transmitter

header Parameters
X-Fields
string <mask>

An optional fields mask

Responses

Response samples

Content type
application/json
{
  • "channel1_enable": true,
  • "channel1_name": "string",
  • "channel1_sample_rate": "16000",
  • "channel2_enable": true,
  • "channel2_name": "string",
  • "channel2_sample_rate": "16000",
  • "stereo_enable": true
}

put_transmitter_audio

Set channel information for the given MAC addresses.

Authorizations:
jsonWebToken
path Parameters
mac_address
required
string

Mac address of transmitter

Request Body schema: application/json
required
channel1_enable
boolean

Channel 1 audio stream enable

channel1_name
string [ 2 .. 12 ] characters ^[^,]+$

Channel 1 streaming channel name

channel1_sample_rate
string
Enum: "16000" "24000" "48000"

Channel 1 sample rate

channel2_enable
boolean

Channel 2 audio stream enable

channel2_name
string [ 2 .. 12 ] characters ^[^,]+$

Channel 2 streaming channel name

channel2_sample_rate
string
Enum: "16000" "24000" "48000"

Channel 2 sample rate

stereo_enable
boolean

Enable stereo streaming

Responses

Request samples

Content type
application/json
{
  • "channel1_enable": true,
  • "channel1_name": "string",
  • "channel1_sample_rate": "16000",
  • "channel2_enable": true,
  • "channel2_name": "string",
  • "channel2_sample_rate": "16000",
  • "stereo_enable": true
}

get_transmitter_dante_subscription

Get Dante subscription for the given MAC addresses.

Authorizations:
jsonWebToken
path Parameters
mac_address
required
string

Mac address of transmitter

header Parameters
X-Fields
string <mask>

An optional fields mask

Responses

Response samples

Content type
application/json
{
  • "dante_subscription": "Controller"
}

put_transmitter_dante_subscription

Set Dante subscription for the given MAC addresses. Can either set to Controller or Unsubscribed.

Authorizations:
jsonWebToken
path Parameters
mac_address
required
string

Mac address of transmitter

Request Body schema: application/json
required
dante_subscription
required
string
Enum: "Controller" "Other" "Unsubscribed"

Limited Dante subscription status. Use Dante Controller for full subscription options.

Responses

Request samples

Content type
application/json
{
  • "dante_subscription": "Controller"
}

get_transmitter_encryption

Get encryption enable and passcode for channel 1 and channel 2 for a given MAC addresses. In stereo mode channel 1 is only used.

Authorizations:
jsonWebToken
path Parameters
mac_address
required
string

Mac address of transmitter

header Parameters
X-Fields
string <mask>

An optional fields mask

Responses

Response samples

Content type
application/json
{
  • "encrypted_channel_1": true,
  • "encrypted_channel_2": true,
  • "passcode_channel_1": "0000",
  • "passcode_channel_2": "0000"
}

put_transmitter_encryption

Set encryption enable and passcode for channel 1 and channel 2 for a given MAC addresses. In stereo mode channel 1 is only used.

Authorizations:
jsonWebToken
path Parameters
mac_address
required
string

Mac address of transmitter

Request Body schema: application/json
required
encrypted_channel_1
required
boolean

Channel encryption status

encrypted_channel_2
boolean

Channel encryption status

passcode_channel_1
required
string = 4 characters
Default: "0000"

Four digit passcode for audio stream encryption

passcode_channel_2
string = 4 characters
Default: "0000"

Four digit passcode for audio stream encryption

Responses

Request samples

Content type
application/json
{
  • "encrypted_channel_1": true,
  • "encrypted_channel_2": true,
  • "passcode_channel_1": "0000",
  • "passcode_channel_2": "0000"
}

put_transmitter_factory_reset

Factory reser the transmitter at the given MAC address.

Authorizations:
jsonWebToken
path Parameters
mac_address
required
string

Mac address of transmitter

Responses

get_transmitter_info

Get transmitter infromation for the given MAC addresses.

Authorizations:
jsonWebToken
path Parameters
mac_address
required
string

Mac address of transmitter

header Parameters
X-Fields
string <mask>

An optional fields mask

Responses

Response samples

Content type
application/json
{
  • "audio_quality": true,
  • "fw_version": "string",
  • "hw_version": "string",
  • "led_enable": true,
  • "radio_name": "string",
  • "region_code": "string",
  • "supported_channels": 0,
  • "transmit_power": "Low"
}

put_transmitter_info

Set transmitter infromation for the given MAC addresses: radio name, transmit power, or LED enable.

Authorizations:
jsonWebToken
path Parameters
mac_address
required
string

Mac address of transmitter

Request Body schema: application/json
required
led_enable
boolean

LED enable

radio_name
string [ 4 .. 16 ] characters ^[^,]+$

Radio name of the server beginning with "WAV"

transmit_power
string
Enum: "Low" "Medium" "High"

Transmit power setting

Responses

Request samples

Content type
application/json
{
  • "led_enable": true,
  • "radio_name": "string",
  • "transmit_power": "Low"
}

put_transmitter_reboot

Reboot the transmitter at the given MAC address.

Authorizations:
jsonWebToken
path Parameters
mac_address
required
string

Mac address of transmitter

Responses

get_transmitter_status

Get transmitter status for the given MAC addresses.

Authorizations:
jsonWebToken
path Parameters
mac_address
required
string

Mac address of transmitter

header Parameters
X-Fields
string <mask>

An optional fields mask

Responses

Response samples

Content type
application/json
{
  • "channel1_stream_state": true,
  • "channel2_stream_state": true,
  • "transmitter_status": "string"
}