Documentation Index

Fetch the complete documentation index at: https://docs.algosolutions.com/llms.txt

Use this file to discover all available pages before exploring further.

RESTful API Guide

Prev Next

The Algo REST API provides flexibility and scalability when integrating Algo IP endpoints with other paging and alerting systems. By using the Algo REST API, devices can trigger or be triggered by unique actions or events.

This guide outlines how to begin using the Algo REST API for an Algo IP endpoint and what calls can be used for device management.

Prerequisites

Make sure the following requirements are met.

  • The Algo endpoint must be using firmware version 3.3 or higher.

  • The time difference between the requestor and the Algo devices should be less than 30 seconds to use standard authentication.

  • Ensure NTP (Network Time Protocol) is enabled on the device. The addresses of custom NTP servers may be configured in the Advanced Settings → Time tab.

  • The target endpoint must have RESTful API access enabled.

  • Check whether the target endpoint requires a password for API access. If yes, include the password information in your API commands. 

Example Use Cases

Door Unlock for Building Entry

The REST API can be used to allow a user to unlock a door with the 8063 from a computer program.

School Bell

The REST API can be used to play a bell tone over Algo speakers when classes begin.

Temperature Check

The REST API can be used to trigger Algo visual alerters to flash a color based on a specific event.

Remote Button Activation

The REST API can be used to control Algo 8450 buttons to play pre-recorded announcements for urgent situations, such as lockdowns or medical alerts.

Initial Configuration

To allow API control on an Algo device, you must first enable REST API.

You can also set a passcode for REST API to ensure only authorized access is allowed.

Note

If you enable the REST API password, you must include this password in any API command sent to the device.

For example, to access the About page of a device with the default REST API password set to algo, use the following command:

curl -u admin:algo -X GET "https://10.12.123.12/api/info/about"

  1. Enable RESTful API under the Advanced Settings → Admin tab.

  2. Select an Authentication Method. There are three types of authentication:

    Standard (recommended)

    Uses a Hash-based Message Authentication Code (HMAC) with an SHA-256 encoded digest.

    Basic

    Uses Base64 encoding and should only be used over HTTPS.

    None (not recommended)

    It should only be used with extreme care as it provides no authentication.

  3. Enter a RESTful API Password. The default password is algo.

  4. Select Save.

Authentication Requirements

If you have set the Authentication Method to Standard, you must authenticate with the API before making any requests.

Authentication requires generating a valid HMAC signature using the provided RESTful API Password. The device verifies this signature before processing your API command.

Standard Authentication Request with a JSON Payload

A standard authentication payload will require generating an HMAC digest. This is generated by the REST API password (secret key) and the HMAC input. Generate HMAC with password and HMAC input string as digest using SHA-256.

The HMAC digest must be lowercase hex-encoded.

The HMAC input is formatted as: [request_method]:[request_uri]:[content_md5]:[content_type]:[timestamp]:[nonce]

Element

Notes

Example

Request method

GET, POST, PUT, or DELETE

POST

Request URI

Must start with a forward slash

/api/controls/tone/start

Content-MD5

Generated separately. Also required for the payload request.

6e43c05d82f71e77c586e29edb93b129

Content-Type

Set as application/json

application/json

Timestamp

Seconds (Unix epoch)

1601312252

Nonce

Random string that is also required for the payload request.

49936

Example HMAC Input (using algo as the secret key)

POST:/api/controls/tone/start:6e43c05d82f71e77c586e29edb93b129:application/json:1601312252:49936

Example HMAC Digest

2e109d7aeed54a1cb04c6b72b1d854f442cf1ca15eb0af32f2512dd77ab6b330

Headers

Header Name

Required

Values

Content-Type

Required

application/json

Content-MD5

Required

Same as HMAC input

Authorization

Required

hmac admin:{nonce from HMAC input}:{HMAC key}

Date

Required

Day, DD Mon YYYY HH:MM:SS GMT

Example Payload Request

Hypertext Transfer Protocol
 POST /api/controls/tone/start HTTP/1.1\r\n
 Host: 10.0.0.161\r\n
 Accept: */*\r\n
 Transfer-Encoding: chunked\r\n
 Content-Type: application/json\r\n
 Content-Md5: 6e43c05d82f71e77c586e29edb93b129\r\n
 Authorization: hmac admin:1028014788:c450024af4493f9cdf582499456bf58d7e134b161566e764e61bd52d24f759dc\r\n
 Date: Mon, 28 Sep 2020 17:07:18 GMT\r\n
 \r\n
 [Full request URI: https://10.0.0.161/api/controls/tone/start]
 [HTTP request 1/1]
 File data 39 bytes
JavaScript Object Notation: application/json
 Object
  Member Key: path
   String value: page-notif.wav
   Key: path
  Member Key: loop
   False value
   Key: loop

Standard Authentication Request without a JSON Payload

A standard authentication payload will require generating an HMAC digest. This is generated by the REST API password (secret key) and the HMAC input. Generate HMAC with password and HMAC input string as digest using SHA-256.

The HMAC digest must be lowercase hex-encoded.

The HMAC input is formatted as: [request_method]:[request_uri]:[timestamp]:[nonce]

Element

Notes

Example

Request method

GET, POST, PUT, or DELETE

POST

Request URI

Must start with a forward slash

/api/controls/tone/stop

Timestamp

Seconds (Unix epoch)

1601312252

Nonce

Random string that is also required for the payload request.

49936

Example HMAC Input (using algo as the secret key)

GET:/api/settings/audio.page.vol:1601312252:49936

Example HMAC Digest

c5b349415bce0b9e1b8122829d32fbe0a078791b311c4cf40369c7ab4eb165a8

Headers

Header Name

Required

Values

Authorization

Required

hmac admin:{nonce from HMAC input}:{HMAC key}

Date

Required

day, date month year HH:MM:SS GMT

Example Payload Request

Hypertext Transfer Protocol
 GET /api/settings/audio.page.vol HTTP/1.1\r\n
 Host: 10.0.0.161\r\n
 Accept: */*\r\n
 Authorization: hmac admin:881767496:c5b349415bce0b9e1b8122829d32fbe0a078791b311c4cf40369c7ab4eb165a8\r\n
 Date: Mon, 28 Sep 2020 17:07:18 GMT\r\n
 \r\n
 [Full request URI: https://10.0.0.161/api/controls/tone/start]
 [HTTP request 1/1]
 [Response in frame: 304]
Hypertext Transfer Protocol
 HTTP/1.1 200 OK\r\n
 Server: nginx/1.10.3\r\n
 Date: Mon, 28 Sep 2020 17:07:05 GMT\r\n
 Content-Type: application/json\r\n
 Transfer-Encoding: chunked\r\n
 Connection: keep-alive\r\n
 Cache-Control: no-cache, no-store, must-revalidate\r\n
 Pragma: no-cache\r\n
 Expires: 0\r\n
 X-Frame-Options: DENY\r\n
 \r\n
 [HTTP request 1/1]
 [Time since request: 0.242859963 seconds]
 [Request in frame: 297]
 [Request URI: https://10.0.0.161/api/settings/audio.page.vol]
 HTTP chunked response
 File Date: 26 bytes
JavaScript Object Notation: application/json
 Object
  Member Key: audio.page.vol
   String value: -42dB
   Key: audio.page.vol 

Basic Authentication Request

A basic authentication payload requires encoding the username and password using Base64. This encoded string is then included in the Authorization header of the HTTP request.

Basic authentication should only be used over secure HTTPS connections, as it transmits credentials in a reversible format.

Headers

Header Name

Required

Values

Authorization

Required

Basic [base64]

Example Payload Request

Hypertext Transfer Protocol
 POST /api/controls/tone/start HTTP/1.1\r\n
 Host: 10.0.0.161\r\n
 Accept: */*\r\n
 Content-Type: application/json\r\n
 Content-Md5: 6e43c05d82f71e77c586e29edb93b129\r\n
 Content-Length: 39\r\n
 Authorization: Basic YWRtaW46YWxnbw==\r\n
 User-Agent: curl/7.58.0\r\n
 \r\n
 [Full request URI: https://10.0.0.161/api/controls/tone/start]
 [HTTP request 1/1]
 [Response in frame: 760]
 File data 39 bytes
JavaScript Object Notation: application/json
 Object
  Member Key: path
   String value: page-notif.wav
   Key: path
  Member Key: loop
   False value
   Key: loop

REST API Calls

The details below describe how the Algo REST API can access, manipulate, and trigger actions on Algo IP endpoints on your network through HTTP/HTTPS requests. Requesting systems can interact with Algo devices through a uniform and predefined set of stateless operations.

HTTP/HTTPS requests to “{device IP address}/URI” with a JSON payload will provide a JSON response. The payload format of all the requests and responses is JSON, except for file operations.

A PUT request changes or creates a permanent resource that survives a reboot, while a POST request only controls a device for the current session.

Note

If a configuration parameter value in an API command differs from the value set in the device’s web interface, the API setting takes precedence.

For example, if the web interface configures the device as a multicast receiver, but the API command sets it as a multicast transmitter, the device will operate as a multicast transmitter when processing the API request.

Device Information

Use the following API commands to retrieve or configure specific device parameters.

Retrieve the value of a specific parameter

Get the value of a specific configuration parameter on the device. Any parameter name listed in the Provisioning Parameter Guide applicable to the device can be used.

Applicable Products: All

Minimum Firmware Version: 3.3

URI

GET /api/settings/{parameter name}

Parameters

Element

Description

Type

Required

Notes

{parameter name}

Refers to the parameter name for the configuration setting of interest.

String

Required

All values will be retrieved as strings, no matter the parameter or setting.

For the parameter names, see the Parameter column in the following Guides:

Sample Request

GET https://10.12.123.12/api/settings/audio.page.vol

Sample Response

{
    "audio.page.vol": "0dB"
}

Related Links:

Set the value of a specific parameter

Change the value of a specific configuration parameter.

Applicable Products: All

Minimum Firmware Version: 3.3

URI

PUT /api/settings

Parameters

Element

Description

Type

Required

Notes

{parameter name}

Refers to the parameter name for the configuration setting of interest.

String

Required

All values will be retrieved as strings, no matter the parameter or setting.

For the parameter names, see the Parameter column in the following guides:

Sample Request

PUT https://10.12.123.12/api/settings
{
    "audio.page.vol": "0dB"
}

Related Links:

Retrieve a list of all tone files installed on the device

Get the full list of tones available on the device, including both pre-loaded tones and custom tones that were uploaded manually.

Applicable Products: All

Minimum Firmware Version: 5.0

URI

GET /api/info/tonelist

Note

The parameter tonelistrefers to the tone files uploaded to the device. All devices are pre-loaded with 10+ tone files.

Response

Element

Description

tonelist

array of tone files

tone file names

The file name of the tone uploaded to the device.

Sample Request

GET https://10.12.123.12/api/info/tonelist

Sample Response

{
    "tonelist": [
        "bell-na.wav",
        "bell-uk.wav",
        "buzzer.wav",
        "chime.wav",
        "dogs.wav",
        "gong.wav",
        "page-notif.wav",
        "speech-test.wav",
        "tone-1kHz-max.wav",
        "warble1-low.wav",
        "warble2-med.wav",
        "warble3-high.wav",
        "warble4-trill.wav"
    ]
}

Retrieve the device information from the Status page of the device web interface

Get a list of the device information that is also available on the Status page of the device web interface.

Note

Available status may vary depending on your device model.

Applicable Products: All

Minimum Firmware Version: 5.4

URI

GET /api/info/status

Response

The response content may vary depending on the device type.

Element

Description

Type

Response

Device Name

The assigned name of the device.

String

{device name}

SIP Registration

The status of SIP registration for the device.

String

  • No Account

  • Attempting to contact server...

  • Successful

  • Deregistered

  • Authenticating...

  • Rejected by server

  • No reply from server

Call Status

The status of calling.

String

  • Idle

  • Ringing

  • Connected

  • Recording Message

  • Playing Delayed Page

Next Scheduled Action

The next scheduled action.

String

  • When no action is scheduled, it displays “No Actions Scheduled”.

  • When there is an action scheduled, it displays action information, including:

    • {Schedule Name}

    • {Action}

    • {Date}

    • {Time}

    • {Tone Name} (If the Action is SIP Call with Tone)

Next Scheduled Event

The next scheduled event.

String

  • When no event is scheduled, it displays “No Events Scheduled”.

  • When there is an event scheduled, it displays event information, including:

    • {Schedule Name}

    • {Date}

    • {Time}

    • {Audio Name}

Proxy Status

The configured SIP proxy server status.

String

  • When SIP Server Redundancy is not enabled, the status displays: Single proxy mode.

  • When SIP Server Redundancy is in use, the status displays in this format: Active: {}, PRI:{} , BK1: {}, BK2:{}.

    For example: "Active: Primary, PRI: Up, BK1: Down: BK2: Not Configured".

Provisioning Status

The current status of provisioning.

String

  • Disabled

  • Successful

  • None Found

MAC

The MAC address of the device.

String

The device’s MAC address

IPv4

If available, the IPv4 address of the device and the default gateway.

String

The device’s IPv4 address

IPv6

If available, the IPv6 address of the device and the default gateway.

String

The device's IPv6 address

Switch Port ID

The ID of the port on the switch the device is plugged into.

String

{Port ID}

Date / Time

The date and time currently used by the device.

String

Day Mon Date HH:MM:SS GMT Year

Current Action

Used for scheduler events (tone, audio stream, or SIP call with tone).

String

  • None

  • Streaming Audio

Multicast Mode

The multicast mode the device is set to. If the device is in receiver or transmitter mode, the zone it is in will also be displayed when active.

String

  • Disabled

  • Receiver (Active)

  • Receiver (Idle)

  • Transmitter (Active)

  • Transmitter (Idle)

OAuth Profile Status

The status of OAuth profiles

String

  • Active

  • {Error message}

Volume

The volume set on the device, including dB.

String

Page Volume: ## (##dB)

Relay Input Status

The status of relay input.

String

  • When relay input is enabled, it displays information such as the active state, configured mode, action, or whether or not a tamper is detected.

  • When the relay input is not enabled, it displays “Disabled”.

Temperature

The temperature of the device.

String

{Temperature}

Stand (Docking Station)

The connection status of the 8450 stand.

String

  • Audio:

    • Handset not connected

    • Handset connected - Active

    • Handset connected - Idle

Panic Button Status

The status of each configured panic button, including its location, description, and current state.

String

  • {Location}

  • {Description}

  • {Status}

Virtual Panic Button Status

The status of each configured virtual panic button, including its location, description, and current state.

String

  • {Location}

  • (Description}

  • {Status}

Action Button

The status of the Action Button

String

  • Pressed

  • Idle

Console

The status of the 8450 console.

String

  • Idle

  • Paging with Tone Active

  • Remote Screen with Tone Active

  • Emergency Alert Active

  • Remote Emergency Alert Active

  • Call Active

  • Paging with Mic Active

  • Delayed Paging with Mic Active

  • Playing Media

  • Audio Recording Active

Weather Status

The status of the configured weather service and the weather location

String

  • Active

Last Weather Update

The date and time of the most recent weather update.

String

{Date time}

Sample Request

GET https://10.12.123.12/api/info/status

Sample Response

{
    "Device Name": "pagingadapter-12345",
    "SIP Registration": "Page, No Account;",
    "Call Status": "Idle",
    "Provisioning Status": "None Found",
    "MAC": "00:22:ee:11:11:11",
    "IPv4": "10.10.101.10/1, Gateway: 10.0.1.1",
    "IPv6": "Not Available",
    "Switch Port ID": "name eth0",
    "Date / Time": "Thu Feb  6 17:13:44 GMT 2025",
    "Current Action": "None",
    "Multicast Mode": "Disabled, RTP: 0, PPA: 0, Spk: 0",
    "Volume": "Page Volume: 10 (0dB)",
    "Relay Input Status": "Disabled"
}

Retrieve the device information from the About page of the device web interface

Get a list of the device information that is also available on the About page of the device web interface.

Applicable Products: All

Minimum Firmware Version: 5.4

URI

GET /api/info/about

Response

Element

Description

Type

Product Name

The full name of the product.

String

Firmware Version

The firmware currently installed on the device.

String

MAC Address

The MAC address of the device.

String

Hardware Info

The version of the hardware.

String

Manufacturer Certificate

States whether or not the manufacturer’s certificate has been installed.

String

Sample Request

GET https://10.12.123.12/api/info/about

Sample Response

{
    "Product Name": "Algo 8301 IP Paging Adapter & Scheduler",
    "Firmware Version": "5.5_beta11",
    "MAC Address": "00:22:ee:11:11:11",
    "Manufacturer Certificate": "Installed"
}

Read Relay Input Status

Retrieve the current status of the relay input.

Applicable Products: All except 8450

Minimum Firmware Version: 3.3

URI

GET /api/info/input.relay.status

Parameters

Element

Description

Type

Required

Notes

input.relay.status

Refers to the overall relay input status.

String

Required

Returns Idle or active state depending on the relay condition.

input.relay1.status

Refers to relay input 1 status (8063 only).

String

Optional

Use when reading relay 1 state on 8063.

input.relay2.status

Refers to relay input 2 status (8063 only).

String

Optional

Use when reading relay 2 state on 8063.

Sample Request

GET https://10.12.123.12/api/info/input.relay.status

Sample Response

{
    "input.relay.status": "Idle"
}

Device Management

You can manage your device using API commands, such as restoring its factory default settings and checking for the latest firmware.

Restore the device to factory default

Restore the device to the factory default settings.

Applicable Products: All

Minimum Firmware Version: 5.4

URI

POST /api/settings/action/restore

Sample Request

POST https://10.12.123.12/api/settings/action/restore

Sample Response

{"Restore":"Restoring to default"}

Reboot the device

Reboot the device.

Applicable Products: All

Minimum Firmware Version: 3.3

URI

POST /api/controls/reboot

Sample Request

POST https://10.12.123.12/api/controls/reboot

Sample Response

None. The observable outcome is whether the device performs the requested action or not.

Restart Main Application Process

Restart the main application process on the device.

Applicable Products: All

Minimum Firmware Version: 3.3

URI

POST /api/controls/reload

Sample Request

POST https://10.12.123.12/api/controls/reload

Check for the latest firmware available for the device

Get the firmware version the device is currently using.

Applicable Products: All

Minimum Firmware Version: 4.1

URI

POST /api/controls/upgrade/check

Response

Element

Responses

Type

version

  • updated

  • {firmware version}

String

Sample Request

POST https://10.30.238.37/api/controls/upgrade/check

Sample Response

{
    "version": "updated"
}

Upgrade the device with the most recently available firmware

Check the Algo provisioning server for the latest firmware version and upgrade to that version.

Applicable Products: All

Minimum Firmware Version: 4.1

URI

POST /api/controls/upgrade/start

Response

Element

Description

Type

status

  • updated

  • upgrading {firmware version}

  • message

String

url

The URL for the firmware download file.

String

Sample Request

POST https://10.30.238.37/api/controls/upgrade/start

Sample Response

{
     "status":"updated"
}

Set the multicast mode

Applicable to multicast streams controlled by the /api/controls/tone/start command. Use this call to update stream parameters, but not change the configurations directly on the device.

Applicable Products: All except 8450

Minimum Firmware Version: 5.0

URI

POST /api/state/mcast/update/

Parameters

Element

Description

Type

Required

Notes

mode

The multicast mode of the device.

String

Required

Valid values:

  • “sender”

address

Use the IP address used for the command: /api/controls/tone/start/

String

Required

port

Use the port number used for the command: /api/controls/tone/start/

String

Required

type

The multicast transfer type.

String

Required

Valid values:

  • “rtp”

  • “poly”

group

The Poly group being used.

Integer

Optional

Valid values: numbers 1 through 25.

Applicable only when “type” = “poly”

Sample Request

POST https://10.12.123.12/api/state/mcast/update/ 
{
    "mode": "sender", 
    "address": “224.0.2.60", 
    "port": "50002", 
    "type": "rtp", 
    "group": "1"
}

File Management

You can manage files in the system File Manager using API commands, such as listing, uploading new files, or deleting existing files.

List the file folder contents or download a file

You can use GET /api/files/{filepath} or   POST /api/files/download to do the following:

  • Retrieve a list of files available in a specified folder within the device's System File Manager.

    You must specify the target file folder name in the request.

  • Download a file that is available in the device's SystemFile Manager.

    You must specify the target file name in the request.

Note

With a GET command, the payload is included in the URI. With a POST command, the payload is included in the JSON body.

Applicable Products: All except 8039

Minimum Firmware Version: 5.5

URI

  • GET /api/files/{filepath or filename}

  • POST /api/files/download

Parameters

Element

Description

Type

Required

Valid Values

{filepath}

The name of the folder from which to list the file contents.

string

Required if you want to get the file directory content.

Valid values:

The name of any file that exists in your device's File Manager.

{filename}

The name of the file to be downloaded.

string

Required if you want to download a file.

Valid values:

The name of any file that exists in your device's File Manager.

GET Sample Request for Listing a File Folder Contents

GET https://10.30.238.37/api/files/tones

GET Sample Response for Listing a File Folder Contents

{
  "filelist": [
    "bell-na.wav",
    "bell-uk.wav",
    "buzzer.wav",
    "chime.wav",
    "dogs.wav",
    "gong.wav",
    "page-notif.wav",
    "speech-test.wav",
    "tone-1kHz-max.wav",
    "warble1-low.wav",
    "warble2-med.wav",
    "warble3-high.wav",
    "warble4-trill.wav"
  ]
}

POST Sample Request  for Listing a File Folder Contents

POST https://10.12.123.12/api/files/download 
{ 
   "path": "/tones"
}

POST Sample Response  for Listing a File Folder Contents

{
    "filelist": [
        "netcap-20250110t194944re4.pcap",
        "netcap-20250110t195031r55.pcap",
        "netcap-20250122t221635rc9.pcap",
        "netcap-20250130t222903r12.pcap",
        "netcap-20250130t231453ra0.pcap",
        "netcap-20250203t194006rf0.pcap",
        "netcap-20250203t194559red.pcap"
    ]
}

GET Sample Request for Downloading a File

GET https://10.30.238.37/api/files/tones/chime.wav

POST Sample Request  for Downloading a File

POST https://10.12.123.12/api/files/download 
{
   "path": "/tones/chime.wav"
}

Add a new file or replace an existing one

When this call is used, a new file with the designated file path and file name will be added to the device. If the file path and file name already exist, the existing file will be replaced by the one used in the call.

Applicable Products: All except 8039

Minimum Firmware Version: 5.5

URI

PUT /api/files/{filepath}/{filename}

Parameters

Element

Description

Required

Type

{filepath}

The folder structure to be directed to within the device's File Manager.

Required

String

{filename}

The file name.

Required

String

Sample Request

Here is an example using Postman to send this command:

Item

Configuration

Method

PUT

URL

https://10.12.123.12/api/files/tones/custom-audio.wav

Auth

Basic Auth

Username: admin

Password: algo

Note

For legacy compatibility, username algo is also supported.

Headers

Key: Content-Type

Value: Application/octet-stream

Body

Binary

Select the target audio file from your local drive.

Sample Response

None. Go to your device's web interface System File Manager to check whether the file has been uploaded successfully.

Delete a file

Select a file to delete by specifying the file path.

Applicable Products: All except 8039

Minimum Firmware Version: 5.5

When this call is used, the specified file will be deleted from the device.

URI

DELETE /api/files/

Parameters

Element

Description

{filepath}

The folder structure to be directed to within the device's File Manager.

{filename}

The file name.

Sample Request

DELETE https://10.12.123.12/api/files/
{
   "path": "/tones/chime.wav"
}

Sample Response

None. Go to your device’s web interface System File Manager to check whether the file has been deleted successfully.

MD5 Checksum Query API

Retrieves the MD5 checksum for a specified file in the File Manager to support file integrity and version validation.

Applicable Products: All

Minimum Firmware Version: 5.7

URI

GET /api/file-md5sum/<filepath>/<filename>

Parameters

Element

Description

Format / Type

Required

filepath

The target file folder in System File Manager.

String

Required

filename

The target file name, including the file extension.

String

Required

Sample Request: Query the MD5 checksum of a file.

curl -X GET \
        -H "Authorization: hmac <user>:<nonce>:<digest>" \
        https://10.11.12.123/api/file-md5sum/tones/chime.wav

Example Response:

{"md5sum":"6267f951c9b28c83ca55972823f3d50e"}

Door Control

You can lock or unlock a door using API commands.

Lock a door

Control whether the device being called or a secondary connected device locks a door.

Applicable Products: 8039, 8028(G2), 8201, 8063

Minimum Firmware Version: 3.3

URI

POST /api/controls/door/lock

Parameters

Element

Description

Type

Required

Notes

doorid

Used to indicate whether lock control is to be triggered directly by the device or indirectly by a connected secondary device.

String

Required

Valid values:

  • “netdc1”

  • “local”

Note

  • netdc1: Control the remote network door controller (8063)

  • local: Control the local relay.

Sample Request

POST https://10.12.123.12/api/controls/door/lock
{
   "doorid": "local"
}

Sample Response

None. The observable outcome is whether the device performs the requested action or not.

Unlock a door

Control whether the device being called or a secondary connected device unlocks a door.

Applicable Products: 8039, 8028(G2), 8201, 8063

Minimum Firmware Version: 3.3

URI

POST /api/controls/door/unlock

Parameters

Element

Description

Type

Required

Notes

doorid

Used to indicate whether lock control is to be triggered directly by the device or indirectly by a connected secondary device.

String

Required

Valid values:

  • “netdc1”

  • “local”

Note

  • netdc1: Control the remote network door controller (8063)

  • local: Control the local relay

Sample Request

POST https://10.12.123.12/api/controls/door/unlock
{
   "doorid": "local"
}

Sample Response

None. The observable outcome is whether the device performs the requested action or not.

Momentarily unlock a door

Control whether the device being called or a secondary connected device unlocks a door for a specified duration.

Applicable Products: 8039, 8028(G2), 8201, 8063

Minimum Firmware Version: 5.5

URI

POST /api/controls/door/munlock

Parameters

Element

Description

Type

Required

Notes

doorid

Used to indicate whether lock control is to be triggered directly by the device or indirectly by a connected secondary device.

String

Required

Valid values:

  • “netdc1”

  • “local”

duration

The time in seconds that the door should be unlocked for.

String

Required

Note

  • netdc1: Control the remote network door controller (8063)

  • local: Control the local relay

Sample Request

POST https://10.12.123.12/api/controls/door/munlock
{
   "doorid": "netdc1",
   "duration": "10"
}

Sample Response

None. The observable outcome is whether the device performs the requested action or not.

Audio Control

You can use API commands to control device audio, such as retrieving ambient noise or playing and stopping an audio file.

Retrieve the ambient noise

Get the dB measurement of the ambient noise of the environment the device is in.

Applicable Products: All speakers, 8450

Minimum Firmware Version: 3.3

URI

GET /api/info/audio.noise.level

Response

Element

Description

Type

Required

Notes

audio.noise.level

The measured level of ambient noise in dB.

String

Required

Will only collect this data if ambient noise compensation is enabled.

Sample Request

GET https://10.12.123.12/api/info/audio.noise.level

Sample Response

{
    "audio.noise.level": "54"
}

Change the ambient noise level

Manually update the ambient noise level. This is intended for devices controlling volumes, but may not be directly in the environment where the noise is. For example, a securely located 8301 set as a multicast transmitter controlling the audio of multiple speakers set as multicast receivers in a warehouse.

Applicable Products: 8190, 8190s, 8516, 8410, 8420, 8186, 8450, 8188, 8189, 8196, 8197, 8198, 8199, 8180g2, 8301, 8305, 8507

Minimum Firmware Version: 5.4

URI

POST /api/controls/noise/update

Parameters

Element

Description

Type

Required

level

The measured level of ambient noise in dB.

String

Required

Sample Request

POST https://10.12.123.12/api/controls/noise/update
{
   "level": "50"
}

Sample Response

None. You can use an API command to get the ambient noise level to see whether the change has been made.

Play the default test tone or turn on a strobe light

Trigger a test tone on supported audio devices and activate a strobe light on visual alert devices.

Applicable Products:

  • 8190, 8190s, 8300, 8039, 8028 (G2), 8186, 8373, 8375, 8188, 8189, 8196, 8197, 8198, 8199, 8180( G2), 8301, 8305, 8201, 8203: Play the default test tone.

  • 8128 (G2), 8138:  Start a steady strobe light for five seconds.

  • 8410, 8420: Start a steady strobe light for five seconds and play the test tone once.

Minimum Firmware Version: 5.4

URI

POST /api/controls/test/start

Sample Request

POST https://10.12.123.12/api/controls/test/start

Sample Response

None. The observable outcome is whether the device performs the requested action or not.

Loop the default test tone or turn on a strobe light

Trigger a test tone loop on supported audio devices and activate a steady strobe light on visual alert devices.

Applicable Products:

  • 8190, 8190s, 8516, 8300, 8039, 8410, 8420, 8028 (G2), 8186, 8373, 8375, 8188, 8189, 8196, 8197, 8198, 8199, 8180 (G2), 8301, 8305, 8201, 8203, 8507: Loop playing the default test tone.

  • 8128 (G2), 8138: Start a steady strobe light.

  • 8410, 8420: Start a steady strobe light and loop playing the test tone.

Minimum Firmware Version: 5.4

URI

POST /api/controls/test/loop

Sample Request

POST https://10.12.123.12/api/controls/test/loop

Sample Response

None. The observable outcome is whether the device performs the requested action or not.

Stop the default tone or strobe light

Stop the default test tone on supported Algo audio devices and turn off the test strobe light on visual alert devices.

Applicable Products:

  • 8190, 8190s, 8300, 8039, 8028 (G2), 8186, 8373, 8375, 8188, 8189, 8196, 8197, 8198, 8199, 8180 (G2), 8301, 8305, 8201, 8203: Stop default test tone.

  • 8128 (G2), 8138:  Stop the test strobe light.

  • 8410, 8420: Stop the strobe light and test tone.

Minimum Firmware Version: 5.4

URI

POST /api/controls/test/stop

Sample Request

POST https://10.12.123.12/api/controls/test/stop

Sample Response

None. The observable outcome is whether the device performs the requested action or not.

Play or loop a selected tone

Play a selected tone uploaded to the device once or on a loop.

Applicable Products: All speakers, paging adapters, 8028(G2), 8201, 8203, 8039

Minimum Firmware Version: 5.4

URI

POST /api/controls/tone/start

Parameters

Element

Description

Type

Required

Notes

duration

How long the audio plays (in seconds).

Integer

Optional

This parameter is available only on firmware version 5.7 and later.

path

The file name of the tone to be played

string

Required

Default valid values:

  • bell-na.wav

  • bell-uk.wav

  • buzzer.wav

  • chime.wav

  • dogs.wav

  • gong.wav

  • page-notif.wav

  • tone-1kHz-max.wav

  • warble1-low.wav

  • warble2-med.wav

  • warble3-high.wav

  • warble4-trill.wav

Note: The file name of any file stored under the System → File Manager → tones folder is a valid value.

interval

When audio file looping is enabled (loop = true), specify the pause time between playbacks, in seconds.

Integer

Optional

loop

Set the tone file to loop

boolean

Required

Valid values:

  • “true”

  • “false”

mcast

Configure the device to multicast transmit and play a tone or loop a tone on a receiving device.

boolean

Optional

Valid values:

  • “true”

  • “false”

Multicast must be on to use. If multicast is turned on via /mcast/update at any time, this call will default to these settings. If multicast is only configured via the web interface, this call will default to the web interface settings.

Note: For firmware version 5.5 and earlier, this parameter is available only on 8301 devices.

playback

Whether the receiving endpoint plays the multicast message

string

Optional

Valid values:

  • “true”

  • “false”

Note: For firmware version 5.5 and earlier, this parameter is available only on 8301 devices.

state

The multicast parameters.

string

Optional

Note: For firmware version 5.5 and earlier, this parameter is available only on 8301 devices.

mode

The multicast mode of the device

string

Optional

Valid values:

  • “sender”

Applicable only when “mcast” is set as “true”

address

The IP address of the multicast zone.

string

Optional

Applicable only when “mcast” is set as “true”

port

The port of the multicast zone.

string

Optional

Applicable only when “mcast” is set as “true”

type

The multicast transfer type.

string

Optional

Valid values:

  • “poly”

  • “rtp“

Applicable only when “mcast” is set as “true”

group

The Poly group being used.

integer

Optional

Valid values: numbers 1 through 25.

Applicable only when:

  • “mcast” is set as “true”

  • “type” is set as “poly”

Sample Request: Play an audio file for 10 seconds, and multicast it to a Poly Group

Custom

POST https://10.12.123.12/api/controls/tone/start
{
  "duration": 10,
  "path": "chime.wav",
  "loop": true,
  "mcast": true,
  "playback": false,
  "state": {
    "mode": "sender",
    "address": "101.102.123.12",
    "port": "5000",
    "type": "poly",
    "group": 1
  }
}

JSON

Sample Response

None. The observable outcome is whether the device performs the requested action or not.

Stop looping tone on firmware 5.5 and later

Stop the looping tone.

Applicable Products: All speakers, paging adapters, 8028(G2), 8201, 8203, 8039

URI

POST /api/controls/tone/stop

Parameters

No parameters required for firmware 5.5 and later.

Note

For firmware 5.4 or earlier, you must use the parameter path  to specify the ongoing tone. For example:

POST https://10.12.123.12/api/controls/tone/stop
{
	"path": "chime.wav"
}

Sample Request

POST https://10.12.123.12/api/controls/tone/stop

Sample Response

None. The observable outcome is whether the device performs the requested action or not.

Start listening to a direct audio stream

Open the path to an audio stream to listen to.

Applicable Products: All except 8450

Minimum Firmware Version: 5.3.4

URI

POST /api/controls/rx/start

Parameters

Element

Description

Type

Required

port

Port to listen.

string

Required

Sample Request

POST https://10.12.123.12/api/controls/rx/start
{
	"port": "5001"
}

Upload, Play, and Delete an Audio File API

This API supports the following combined actions:

  1. Upload a WAV (recommended) or MP3 audio file.

  2. Play or multicast the audio.

  3. Delete the file after playback completes.

Notes About This API
  • Playback latency varies depending on the target device’s status and the audio file size. When the device is idle, the typical latency is:

    • 15-second audio file: approximately 60 seconds

    • 60-second audio file: approximately 90 seconds

  • The POST /api/controls/tone/upload-play API supports two upload methods. Each method uses a different request format and HMAC signature (if the standard authentication method is used).

    Upload Method

    Description

    Request Format

    HMAC String

    Required Headers

    Raw file

    Upload the binary data of an audio file directly

    --data-binary "@<file_name>"

    [request_method]:[request_uri]:[content_md5]:[content_type]:[timestamp]:[nonce]

    • Authorization

    • Content-Md5

    • Content-Type

    • Date

    Multipart (File + JSON)

    Upload an audio file with optional playback and multicast settings

    -F "tone=@<file_name>"

    -F "data={...}"

    [request_method]:[request_uri]:[timestamp]:[nonce]

    • Authorization

    • Date

API Specifications

Applicable Products: All IP Speakers, Paging Adapters, IP Intercoms, IP Visual Alerters, IP Displays, IP Clocks

Minimum Firmware Version: 5.7

URI

POST /api/controls/tone/upload-play

Multipart Payload

Element

Description

Type

Required

Notes

data

Multipart payload to specify the audio file playback and multicast settings.

Optional

The multipart data field is optional.

However, when provided, you must specify the Content-Type as “application/json”.

  • For example:
    -F "data={\"loop\":true};type=application/json"

duration

How long the audio plays (in seconds).

Integer

Optional

interval

When the audio file loop plays (loop set to true), set the pause time (in seconds) between each playback.

Integer

Optional

loop

Set the audio file to loop.

Boolean

Optional

Valid values:

  • “true”

  • “false”

mcast

Configure the device as a multicast transmitter.

Boolean

Optional

Valid values:

  • “true”

  • “false”

If multicast is turned on via /mcast/update at any time, this call will default to these settings. If multicast is only configured via the web interface, this call will default to the web interface settings.

playback

Whether the device plays the uploaded audio file locally.

String

Optional

Valid values:

  • “true”

  • “false”

         state

The multicast parameters.

String

Optional

mode

The multicast mode of the device

String

Optional

Valid values:

  • “sender”

Applicable only when “mcast” is set as “true”

address

The IP address of the multicast zone.

String

Optional

Applicable only when “mcast” is set as “true”

port

The port of the multicast zone.

String

Optional

Applicable only when “mcast” is set as “true”

type

The multicast transfer type.

String

Optional

Valid values:

  • “poly”

  • “rtp“

Applicable only when “mcast” is set as “true”

group

The Poly group being used.

Integer

Optional

Valid values: numbers 1 through 25.

Applicable only when:

  • “mcast” is set as “true”

  • “type” is set as “poly”

tone

The audio file to play back or multicast.

Required

Note:

  • All uploaded files are converted to 16kHz single-channel (Mono).

  • When using MP3 files, the Content-Type must be set as “audio/mpeg”

file

The binary data of the audio file.

Required

File format:

  • WAV with 16kHz sample rate (recommended)

  • MP3 with 16kHz sample rate

Sample Request 1: Upload a WAV audio file, play it, then delete it.

curl -X POST "http://10.11.12.123/api/controls/tone/upload-play" \
  -H "Authorization: hmac admin:<nonce>:<hex_digest>" \
  -H "Content-Md5: <hex_md5>" \
  -H "Content-Type: audio/wav" \
  -H "Date: <RFC1123_date>" \
  --data-binary "@alert-lockdown.wav"

Sample Request 2: Upload a WAV file to the device, continuously play the file locally for 60 seconds with a 2-second pause between playbacks, multicast the audio to a specified zone, and then delete the file after playback completes.

curl -X POST \
  -H "Authorization: hmac admin:<nonce>:<digest>" \
  -H "Date: <date>" \
  -F "tone=@alert-lockdown.wav;type=audio/wav" \
  -F 'data={"loop":true,"interval":2,"duration":60,"mcast":true,"playback":true,"state":{"mode":"sender","address":"20.21.22.234","port":"50000","type":"rtp"}};type=application/json' \
  http://10.11.12.123/api/controls/tone/upload-play

Sample Request 3: Upload an MP3 file, play locally, multicast to a specified zone, then delete it.

curl -X POST \
  -H "Authorization: hmac admin:<nonce>:<digest>" \
  -H "Date: <date>" \
  -F "tone=@alert-lockdown.mp3;type=audio/mpeg" \
  -F 'data={"loop":false,"mcast":true,"playback":true,"state":{"mode":"sender","address":"20.21.22.234","port":"50002","type":"rtp"}};type=application/json' \
  http://10.11.12.123/api/controls/tone/upload-play

Example Response

On success, the device plays the audio and (if configured) multicasts it.

Stop listening to a direct audio stream

Close the path to an audio stream to stop listening.

Applicable Products: All except 8450

Minimum Firmware Version: 5.3.4

URI

POST /api/controls/rx/stop

Sample Request

POST https://10.12.123.12/api/controls/rx/stop

Call Control

You can use API commands to control calls, such as starting or stopping a SIP call.

Call an assigned phone extension and play an audio file. The extension can be used to broadcast the audio file via multicast for a set amount of time if multicast is configured.

Applicable Products: 8190, 8190s, 8410, 8420, 8186, 8188, 8189, 8196, 8197, 8198, 8199, 8063, 8180g2, 8301, 8305, 8312

Minimum Firmware Version: 3.3

URI

POST /api/controls/call/start

Parameters

Element

Description

Type

Required

Notes

extension

The phone extension to call.

String

Required

tone

The file name of the tone to play.

String

Required

Used to call and play a tone.

interval

Specify how long to wait (in seconds) before the tone plays again after it ends.

String

Optional

maxdur

The total time (in seconds) to play the tone on a repeated loop.

String

Optional

dtmf

Enable to play DTMF tones during the  call to allow interoperability with DTMF-controlled multi-zone legacy communication systems.

String

Optional

  • This parameter is available in firmware version 5.7 and later.

  • Use a comma to insert a pause between DTMF tones. Each comma (,) represents a 500 ms delay.

    For example:

    • "dtmf": "12": The device plays tone 1 followed immediately by tone 2 (no pause).

    • "dtmf": "1,2": The device plays tone 1, waits 500 ms, then plays tone 2.

    • "dtmf": "1,,2": The device plays DTMF tone 1, waits 1000 ms, then plays tone 2.

  • Maximum length: 15 characters.

Sample Request: The device calls extension 123. After the call connects, it dials DTMF tone 1. The device plays chime.wav repeatedly for up to 60 seconds, with a 3-second interval between playbacks.

POST https://10.12.123.12/api/controls/call/start
{
	"extension": "123",
	"dtmf": "1",
	"tone": "chime.wav",
	"interval": "3",
	"maxdur": "60"
}

End a call to a phone extension.

Applicable Products: All speakers, 8301

Minimum Firmware Version: 3.3

URI

POST /api/controls/call/stop

Sample Request

POST https://10.12.123.12/api/controls/call/stop

Initiate a one-way page call to receive an audio stream from a specified extension

Open an extension to be able to receive an audio stream. The audio stream must be configured separately.

Applicable Products: All Speakers

Minimum Firmware Version: 5.3.4

URI

POST /api/controls/call/page

Parameters

Element

Description

Type

Notes

extension

The phone extension to call

String

Sample Request

POST https://10.12.123.12/api/controls/call/page
{
	"extension": "123"
}

Sample Response

None. The observable outcome is whether the device performs the requested action or not.

Relay Control

You can use API commands to control relay input and output. For example, you can check the status of a relay input terminal or activate a relay output.

Retrieve the status of the relay input terminal

Get the status of a relay input terminal to see if it is in use on the device.

Applicable Products: 8301, 8305, 8186, 8188, 8189, 8180, 8190, 8190S, 8410, 8420, 8138, 8128

Minimum Firmware Version: 3.3

URI

GET api/info/input.relay.status

Response

Element

Description

Type

Notes

input.relay.status

States whether or not the relay is connected and actively in use.

String

Responses include:

  • “idle”

  • “active”

  • “Disabled”

If active, will also describe the activity.

Sample Request

GET https://10.12.123.12/api/info/input.relay.status

Sample Response

{
    "input.relay.status": "Disabled"
}

Retrieve the status of an 8063 input terminal

Get the status of an input terminal to see if it is in use on the device.

Applicable Products: 8063

Minimum Firmware Version: 4.1

URI

GET api/info/input.relay1.status

or

GET api/info/input.relay2.status

Response

Element

Description

Type

Notes

input.relay{number}.status

States whether or not the relay is connected and actively in use.

String

Responses include:

  • “idle”

  • “active”

  • “Disabled”

If active, will also describe the activity.

Sample Request

GET https://10.12.123.12/api/info/input.relay1.status

Sample Response

{
    "input.relay1.status": "Idle"
}

Enable the 8063 24V AUX Out Relay

Enable the 24V AUX out relay on the 8063.

Applicable Products: 8063

Minimum Firmware Version: 5.0

URI

POST /api/controls/24v/enable

Sample Request

POST https://10.12.123.12/api/controls/24v/enable

Disable the 8063 24V AUX Out Relay

Disable the 24V AUX out relay on the 8063.

Applicable Products: 8063

Minimum Firmware Version: 5.0

URI

POST api/controls/24v/disable

Sample Request

POST https://10.12.123.12/api/controls/24v/disable

Enable the 8063 Output Relay

Enable the output relay on the 8063.

Applicable Products: 8063

Minimum Firmware Version: 5.0

URI

POST api/controls/relay/enable

Sample Request

POST https://10.12.123.12/api/controls/relay/enable

Enable the 8063 Output Relay Momentarily

Enable the output relay on the 8063.

Applicable Products: 8063

Minimum Firmware Version: 5.6

URI

POST api/controls/relay/menable

Parameters

Element

Description

Type

Required

duration

The time (in seconds) the relay should stay enabled

Int

Required

Sample Request

POST https://10.12.123.12/api/controls/relay/menable
{
	"duration": 15
}

Disable the 8063 Output Relay

Disable the output relay on the 8063.

Applicable Products: 8063

Minimum Firmware Version: 5.0

URI

POST api/controls/relay/disable

Sample Request

POST https://10.12.123.12/api/controls/relay/disable

Screen Control

You can use API commands to control content displayed on the IP Display, such as displaying an image or turning on a strobe light.

Display a single image on the device screen

Display one static image on the device screen.

Applicable Products: 8410, 8420

Minimum Firmware Version: 5.3.4

URI

POST /api/controls/screen/start

Parameter

Element

Description

Type

Required

Notes

stopAfter

How long the image stays (in seconds).

Integer

Optional

This parameter is available only on firmware v5.7 and later.

type

The type of background to display

String

Required

Set as “image”

image1

The file name of the image

String

Required

Sample Request

Custom


POST https://10.12.123.12/api/controls/screen/start
{
	"stopAfter": 10,
    "type": "image",
	"image1": "school.jpeg"
}

JSON

Sample Response

None. The observable outcome is whether the device performs the requested action or not.


Display a slide or slideshow on the device screen

Display a pre-defined slide or slideshow on the device screen.

Applicable Products: 8410, 8420

Minimum Firmware Version: 5.3.4

URI

POST /api/controls/screen/start

Parameter

Element

Description

Type

Required

Notes

screenName

The name of the slide or slideshow.

String

Required

If both a slide and a slideshow have the specified name, the device will display the slide.

stopAfter

How long the slide or slideshow stays (in seconds).

Integer

Optional

This parameter is available only on firmware v5.7 and later.

Sample Request

Custom


POST https://10.12.123.12/api/controls/screen/start
{
"screenName":"Evacuation",
"stopAfter":5
}

JSON

Sample Response

None. The observable outcome is whether the device performs the requested action or not.


Display text along with an image on the device screen

Display scrolling text on top of a static image on the device screen.

Applicable Products: 8410, 8420

Minimum Firmware Version: 5.3.4

URI

POST /api/controls/screen/start

Parameter

Element

Description

Type

Required

Notes

stopAfter

How long the scrolling text stays (in seconds).

Integer

Optional

This parameter is available only on firmware v5.7 and later.

type

Specifies the type of background to display.

String

Required

Set as “image”

image1

Specifies the file name of the image.

String

Required

text1

Specifies the text to be displayed on the device.

String

Required

textBg

Whether to display the text background rectangle

Boolean

Optional

Valid values include:

  • “true”

  • “false”

Default= “false”

textBgColor

Specifies the fill color of the text background rectangle

Valid values:

  • SVG color name

  • HEX code

textColor

Specifies the color of the text.

String

Optional

Valid values:

  • SVG color name

  • HEX code

For example, use either of the following to set the text color as black:

Custom

"textColor": "black"
"textColor": "#000000"

JSON

For more information, see HTML Color Names.

Default= “black”

textFont

Specifies the font of the text.

String

Optional

Valid values include:

  • “acumin”

  • “bookman”

  • “din”

  • “inter”

  • “nixie”

  • “overpass”

  • “roboto”

Default= “inter”

textPosition

Specifies where the text should be displayed on the screen.

String

Optional

Valid values include:

  • “top”

  • “middle”

  • “bottom”

Default= “bottom”

textScroll

Specifies whether to scroll the text.

String

Optional

Valid values include:

  • “true”

  • “false”

Default=”true”

textScrollSpeed

Specifies the speed at which the text scrolls.

String

Optional

Valid values include (in increasing speed):

  • “1”

  • “2”

  • “3”

  • “4”

  • “5”

Default= “1”

textSize

Specifies the size of the text.

String

Optional

Valid string values include:

  • “tiny“ (equal to integer value 60)

  • “small” (equal to integer value 100)

  • “medium (equal to integer value 200)

  • “large” (equal to integer value 30)

Valid integer values:  50 - 300

Default=”large” (in v5.6 and earlier)

Sample Request

Custom


POST https://10.12.123.12/api/controls/screen/start
{
	"type": "image",
	"image1": "school.jpeg",
	"text1": "Class is in session",
	"textColor": "forestgreen",
	"textFont": "inter",
	"textPosition": "middle",
	"textScroll": true,
	"textScrollSpeed": "3",
	"textSize": "medium"
}

JSON

Sample Response

None. The observable outcome is whether the device performs the requested action or not.

Display a clock on the device screen

Display a digital or analog clock on the device screen.

Applicable Products: 8410, 8420

Minimum Firmware Version: 5.3.4

URI

POST /api/controls/screen/start

Parameter

Element

Description

Type

Required

Notes

stopAfter

How long the clock stays (in seconds).

Integer

Optional

This parameter is available only on firmware v5.7 and later.

type

The type of clock to display.

String

Required

Valid values:

  • “digitalClock”

  • “analogClock”

clockFormat

Display the time in a 12h or 24h format.

String

Optional

Use if type=digitalClock

Valid values:

  • “12h”

  • “24h”

Default= “24h”

clockSeconds

Specifies whether to display the second hand on the digital clock.

Boolean

Optional

Use if type=digitalClock

Default= “false”

clockSecondsAnalog

Specifies whether to display the second hand on the analog clock.

Boolean

Optional

Use if type= analogClock

Default= “true”

clockSize

Specifies the size of the clock.

String

Optional

Valid values:

  • x-small

  • small

  • medium

  • large

  • x-large (default)

clockPosition

Specifies the position of the clock.

String

Optional

Valid values:

  • top-left

  • top-center

  • top-right

  • left

  • center

  • right

  • bottom-left

  • bottom-center

  • bottom-right

Default= “center

clockBgColor

Specifies the background color of the clock.

String

Optional

Use if type=digitalClock

Valid values:

  • SVG color name

  • HEX code

clockFgColor

Specifies the foreground color of the clock.

String

Optional

Use if type=digitalClock

Valid values:

  • SVG color name

  • HEX code

Default= “white”

date

Specifies whether to display the date.

Boolean

Optional

Valid values:

  • true

  • false

datePosition

Specifies the position of the date information.

String

Optional

Valid values:

  • top-left

  • top-center

  • top-right

  • left

  • center

  • right

  • bottom-left

  • bottom-center

  • bottom-right

Default= “bottom-center

dateSize

Specifies the text size of the date information.

Integer

Valid values: 50 - 300 (default: 140)

dateColor

Specifies the text color of the date information.

Valid values:

  • SVG color name

  • HEX code

Default= “black”

analogBgColor

Specifies the background color of the clock.

String

Optional

Use if type=analogClock

Valid values:

  • SVG color name

  • HEX code

analogFgColor

Specifies the foreground color of the clock.

String

Optional

Use if type=analogClock

Valid values:

  • SVG color name

  • HEX code

Default= “black”

analogSecondsColor

Specifies the color of the seconds hand on the analog clock.

String

Optional

Use if type=analogClock

Valid values:

  • SVG color name

  • HEX code

clockFont

Specifies the font of the clock text.

String

Optional

Use if type=digitalClock

Valid values include:

  • “acumin”,

  • “bookman”,

  • “din”,

  • “inter”,

  • “nixie”,

  • “overpass”,

  • “roboto”

Default= “inter”

clockBgImage

Specifies the file name of the background image to use behind the clock.

String

Optional

Sample Request for Digital Clock

Custom


POST https://10.12.123.12/api/controls/screen/start
{
	"type": "digitalClock",
	"clockFormat": "12h",
	"clockSeconds": "1",
	"clockBgColor": "navy",
	"clockFgColor": "beige",
	"clockFont": "inter",
	"clockBgImage": "school-entrance.jpeg"
}

JSON

Sample Request for Analog Clock

Custom


POST https://10.12.123.12/api/controls/screen/start
{
	"type": "analogClock”	
}

JSON

Sample Response

None. The observable outcome is whether the device performs the requested action or not.

Display flashing images on the device screen

Display two images one after another on the device screen.

Applicable Products: 8410, 8420

Minimum Firmware Version: 5.3.4

URI

POST /api/controls/screen/start

Parameter

Element

Description

Type

Required

Notes

stopAfter

How long the flashing image stays (in seconds).

Integer

Optional

This parameter is available only on firmware v5.7 and later.

type

The type of background to display.

String

Required

Set as “blitz”

image1

The image file name to use.

String

Required

image2

The image file name to use.

String

Required

Sample Request

Custom


POST https://10.12.123.12/api/controls/screen/start
{
	"type": "blitz",
	"image1": "school_entrance.jpeg",
	"image2": "school_logo.jpeg"
}

JSON

Sample Response

None. The observable outcome is whether the device performs the requested action or not.

Display a slideshow on the device screen using slide names

Select pre-configured slides to display on the screen by specifying the slide names.

Applicable Products: 8410, 8420

Minimum Firmware Version: 5.3.4

URI

POST /api/controls/screen/start

Parameter

Element

Description

Type

Required

Notes

stopAfter

How long the slideshow stays (in seconds).

Integer

Optional

This parameter is available only on firmware v5.7 and later.

duration

Duration of each slide in seconds

Integer

Required

slideNames

The file names of the slides to display in the slideshow

Comma-separated values as a string

Required

Format is: “slide1, slide2, slide3, …”

overrideStrobe

Use specified strobe parameters for the slideshow instead of the strobe parameters of each individual slide.

Boolean

Required

Valid values include:

  • “true”

  • “false”

Sample Request

POST https://10.12.123.12/api/controls/screen/start
{
	"duration": 10,
	"slideNames": "slide1, slide2, slide3",
	"overrideStrobe": true
}

Sample Response

None. The observable outcome is whether the device performs the requested action or not.

Display a slide on the device screen using slide templates

Create a slide using a template and display it on the screen.

Applicable Products: 8410, 8420

Minimum Firmware Version: 5.3.

Note: The complete list of templates is available in firmware version 5.7 and later.

URI

POST /api/controls/screen/start

Parameter

Element

Description

Type

Required

Notes

type

Specifies the slide content type.

String

Required

Set as “template

template

Specifies the slide template type.

String

Required

Valid values:

  • "school_time"

  • "school_date_time"

  • "hospital_scrolling_text"

  • "hospital_text"

  • "hospital_time"

  • "announcement"

  • "dont_forget"

  • "reminder"

  • "today_is"

  • "time_date_bg"

  • "time_date_bg2"

  • "dualclock1"

  • "dualclock1_nocorner"

  • "dualclock2"

  • "dualclock3"

  • "calendar_time_date"

  • "calendar_time_image"

  • "calendar_analog_clock"

  • "weather_current"

  • "weather_hourly"

  • "weather_weekly"

These values correspond to the templates available in the device's web interface under Display Slides Template.

showWeather

Specifies whether to show the weather widget (if configured).

Boolean

Optional

Valid values:

  • “true”

  • “false”

Default= “true”

stopAfter

Specifies how long the slide stays (in seconds).

Integer

Optional

This parameter is available only on firmware v5.7 and later.

strobeFlash

Specifies the flashing pattern of the strobe light.

Integer

Optional

Valid values:

  • 15: Turns the strobe light off.

  • 0: Turns the strobe light on continuously.

  • 2: Uses the Strobe Fast pattern.

  • 3: Uses the Slow Sweep pattern.

  • 4: Uses the Fast Sweep pattern.

  • 5: Uses the Reverse Slow Sweep pattern.

  • 6: Uses the Reverse Fast Sweep pattern.

  • 7: Uses the Flash All pattern.

  • 8: Uses the Alternate Sides pattern.

  • 9: Uses the Scan Slow pattern.

  • 10: Uses the Scan Fast pattern.

  • 11: Uses the Inside Out pattern.

  • 12: Uses the Single Flash pattern.

  • 13: Uses the Double Flash pattern.

  • 14: Uses the Triple Flash pattern.

strobeColor

Specifies the color to display on the strobe.

String

Required if “strobeFlash” is set to 0 - 14

Valid values:

  • "red”

  • "blue”

  • “green”

  • “amber”

strobeColor2

Specifies the alternate color displayed by the strobe.

String

Optional

Valid values:

  • "red”

  • "blue”

    Note: This value is not available on all firmware versions.

  • “green”

  • “amber”

strobeLedlvl

Specifies the brightness of the strobe light.

String

Required if “strobeFlash” is set to 0 - 14

Valid values:

  • Low: 0

  • Medium: 56

  • High: 255

Template-specific parameters: “template”="school_time" or "school_date_time"

icon1

Specifies the icon that displays in the top-left section of the slide header.

String

Optional

Note: Icons larger than 1200px x 130px will be scaled to fit.

icon2

Specifies the icon that displays in the top-right section of the slide header.

String

Optional

Note: Icons larger than 400px x 130px will be scaled to fit.

clockFormat

Specifies how the time is displayed on the clock (12-hour or 24-hour format).

String

Optional

Valid values:

  • “12hr”

  • “24hr”

clockSeconds

Specifies whether to display the seconds on the clock.

Boolean

Optional

Valid values:

  • “true”

  • “false”

colorScheme

Specifies the overall color theme used for the slide.

String

Optional

Valid values:

  • “bluegrey”

  • “greyblue”

layout

Specifies whether the date information displays on the left or right of the screen.

Integer

Optional

This parameter is available only when “template”="school_date_time".

Valid values:

  • 1: The date is displayed in a rectangle on the left side of the display.

  • 2": The date is displayed in a rectangle on the right side of the display.

Template-specific parameters: “template”="hospital_scrolling_text" or "hospital_text"

icon1

Specifies the icon that displays in the top-left section of the slide header.

String

Optional

Note: Icons larger than 1200px x 130px will be scaled to fit.

text1

Specifies the text that scrolls across the bottom of the screen.

String

Optional

scrollSpeed

Specifies how fast text scrolls.

String

Optional

This parameter is available only when “template”="hospital_scrolling_text".

Valid values include (in increasing speed):

  • “1”

  • “2”

  • “3”

  • “4”

  • “5”

Default= “1”

Template-specific parameters: “template”="hospital_time"

icon1

Specifies the icon that displays in the top-left section of the slide header.

String

Optional

clockFormat

Set how the time is displayed on the clock (12-hour or 24-hour format).

String

Optional

Valid values:

  • “12hr”

  • “24hr”

clockSeconds

Specifies whether to display the seconds on the clock.

Boolean

Optional

Valid values:

  • “true”

  • “false”

Template-specific parameters: “template”="announcement"

text1

Specifies the white static text that displays at the top of the screen.

String

Optional

text2

Specifies the yellow static text that displays at the bottom of the screen.

String

Optional

Template-specific parameters: “template”="dont_forget"

text1

Specifies the static black text that displays at the top of the text frame.

String

Optional

text2

Specifies the static white text that displays in the center of the text frame on a red background.

String

Optional

text3

Specifies the static black text that displays at the bottom of the text frame.

String

Optional

Template-specific parameters: “template”="reminder"

text1

Specifies the static red text that displays at the top of the text frame.

String

Optional

text2

Specifies the static red text that displays in the center of the text frame.

String

Optional

text3

Specifies the static white text that displays at the bottom of the text frame, on a red background.

String

Optional

Template-specific parameters: “template”="today_is"

text1

Specifies the static black text that displays on the screen.

String

Optional

image1

Specifies the background image.

String

Optional

Template-specific parameters: “template”="time_date_bg" or "time_date_bg2"

image1

Specifies the background image.

String

Optional

font

Specifies the font used for the text.

String

Optional

Valid values include:

  • “acumin”

  • “bookman”

  • “din”

  • “inter”

  • “nixie”

  • “overpass”

  • “roboto”

textColor

Specifies the color of the date information.

String

Optional

Valid values:

  • SVG color name

  • HEX code

For example, use either of the following to set the text color as black:

Custom


"textColor": "black"
"textColor": "#000000"

JSON

For more information, see HTML Color Names.

Default= “black”

clockFgColor

Specifies the color of the time information.

String

Optional

clockFormat

Set how the time is displayed on the clock (12-hour or 24-hour format).

String

Optional

Valid values:

  • “12hr”

  • “24hr”

clockFont

Specifies the font used for the time and date information.

String

Optional

clockSeconds

Enable or disable the display of seconds on the clock.

Boolean

Optional

Valid values:

  • “true”

  • “false”

Template-specific parameters: “template”="dualclock1", "dualclock1_nocorner", "dualclock2", or "dualclock3"

image1

Specifies the background image.

String

Optional

icon1

Specifies the icon that displays on the upper-right of the screen.

String

Optional

clockSeconds

Enable or disable the display of seconds on the digital clock.

Boolean

Optional

Valid values:

  • “true”

  • “false”

clockSecondsAnalog

Enable or disable the display of seconds on the analog clock.

Boolean

Optional

Valid values:

  • “true”

  • “false”

analogSecondsColor

Specifies the color of the clock second hand.

String

Optional

These parameters are available only when “template”="dualclock1", or or "dualclock3"

dualclock1_nocorner”

Valid values:

  • SVG color name

  • HEX code

For example, use either of the following to set the text color as black:

Custom


"dualClock1Color": "black"
"dualClock1Color": "#000000"

JSON

For more information, see HTML Color Names.

Default= “black”

dualClock1Color

Specifies the color of the clock and graphical elements.

String

Optional

Template-specific parameters: “template”="calendar_time_date", "calendar_analog_clock", or "calendar_time_image"

icon1

Specifies the icon that displays on the lower-left of the screen.

String

Optional

colorScheme

Sets the overall color theme used for the slide.

String

Optional

Valid values:

  • “light”

  • “dark”

image1

Specifies the background image.

String

Optional

This parameter is available only when “template”="calendar_time_image".

Template-specific parameters: “template”="weather_current", "weather_hourly", or "weather_weekly"

clockFormat

Set how the time is displayed on the clock (12-hour or 24-hour format).

String

Optional

Valid values:

  • “12hr”

  • “24hr”

clockSeconds

Enable or disable the display of seconds on the digital clock.

Boolean

Optional

Valid values:

  • “true”

  • “false”

headline

Specifies whether to show a headline.

String

Optional

Valid values:

  • "date": This shows the date as the headline.

  • "location": This shows the location as the headline (only available for Canada weather).

  • "none": Do not show a headline.

showExtra

Specifies whether to show “Feels Like” data.

String

Optional

Valid values:

  • "1": This shows "Feels Like" data.

  • "0": Do not show "Feels Like" data

Sample Request: Display a slide created using the template, with a strobe light on, and display the slide for 10 seconds

POST https://10.12.123.12/api/controls/screen/start
{
"type": "template",
"template": "hospital_time",
"stopAfter": 10,
"strobeFlash": 2,
"strobeColor": "amber",
"strobeLedlvl": 255
}

Sample Response

None. The observable outcome is whether the device performs the requested action or not.

Stop a screen pattern and return the screen to default

Return a screen to its default setting.

Applicable Products: 8410, 8420

Minimum Firmware Version: 5.3.4

URI

POST /api/controls/screen/stop

Sample Request

POST https://10.12.123.12/api/controls/screen/stop

Sample Response

None. The observable outcome is whether the device performs the requested action or not.

Display text on the device screen. If a slide, slideshow, or image display is ongoing, the text is added on top of the content.

Applicable Products: 8410, 8420

Minimum Firmware Version: 5.7

URI

POST /api/controls/screen-text/start

Parameter

Element

Description

Type

Required

Notes

duration

How long the text displays (in seconds).

Integer

Optional

If not specified, the text displays indefinitely.

persistent

Whether the text continues to display when the screen content changes.

Boolean

Optional

Valid values include:

  • “true”

  • “false”

Default=”false”

textContent

The text to be displayed on the device.

String

Required

textBg

The text background.

Boolean

Optional

Valid values:

  • “true”

  • “false”

textBgColor

The text background color.

String

Optional

Valid values:

  • SVG color name

  • HEX code

textColor

The color of the text.

String

Optional

Valid values:

  • SVG color name

  • HEX code

For example, use either of the following to set the text color to black:

"textColor": "black"
"textColor": "#000000"

For more information, see HTML Color Names.

Default= “black”

textFont

The font of the text.

String

Optional

Valid values include:

  • “acumin”

  • “bookman”

  • “din”

  • “inter”

  • “nixie”

  • “overpass”

  • “roboto”

Default= “inter”

textPosition

Where the text should be displayed on the screen.

String

Optional

Valid values include:

  • “top”

  • “middle”

  • “bottom”

Default= “bottom”

textScroll

Whether text scroll is enabled.

Boolean

Optional

Valid values include:

  • “true”

  • “false”

Default=”true”

textScrollSpeed

The speed at which the text scrolls.

String

Optional

Valid values include (in increasing speed)

  • “1”

  • “2”

  • “3”

  • “4”

  • “5”

Default= “1”

textSize

The size of the text.

String or Integer

Optional

Valid string values include:

  • “tiny“ (equal to integer value 60)

  • “small” (equal to integer value 100)

  • “medium (equal to integer value 200)

  • “large” (equal to integer value 30)

Valid integer values: 50 - 300

Default=”large” (in v5.6 and earlier)

Default=”small” (in v5.7 and later)

Sample Request

curl -X POST \
    -H "Content-Type: application/json" \
    -H "Authorization: hmac <user>:<nonce>:<digest>" \
    -d '{
        "textContent": "Emergency Notice: Stand by for instructions",
        "textColor": "#FFFFFF",
        "textFont": "Roboto",
        "textSize": "large",
        "textPosition": "bottom",
        "textScroll": true,
        "textScrollSpeed": 3,
        "textBg": true,
        "textBgColor": "#000000",
        "duration": 10
    }' \
    https://10.12.123.12/api/controls/screen-text/start

Sample Response

None. The observable outcome is whether the text is displayed on the screen.

Stop the text displaying on the device screen.

Applicable Products: 8410, 8420

Minimum Firmware Version: 5.7

URI

POST /api/controls/screen-text/stop

Sample Request

curl -X POST \
    -H "Content-Type: application/json" \
    -H "Authorization: hmac <user>:<nonce>:<digest>" \    
    https://10.12.123.12/api/controls/screen-text/stop

Sample Response

None. The observable outcome is whether the text display stops.

Turn on the strobe light

You can use the parameters below to enable a strobe light on the 8410/8420. These parameters work with the following commands:

Element

Description

Type

Required

Notes

strobeFlash

The strobe flash pattern to use

Integer

Required

Valid values: See Algo Strobe Light Pattern Reference Guide

strobeColor

The color to display on the strobe

String

Required

Valid values:

  • "red”

  • "blue”

  • “green”

  • “amber”

strobeColor2

The second color to display on the strobe if desired

String

Required

Valid values:

  • "red”

  • "blue”

  • “green”

  • “amber”

strobeLedlvl

The brightness of the strobe light.

String

Required

Valid values:

  • Low: 0

  • Medium: 56

  • High: 255

Related Links

Strobe Lights

You can control strobe lights using API commands, such as starting or stopping a light.

Start a strobe light

Turn on a strobe light.

Applicable Products: 8128(G2), 8138, 8190S, 8410, 8420

Minimum Firmware Version: 3.3

URI

POST /api/controls/strobe/start

Parameters

Element

Description

Type

Required

Notes

duration

How long the strobe light is on (in seconds).

Integer

Optional

This parameter is available only on firmware v5.7 and later.

pattern

The number of the pattern set.

Integer

Required

Valid values: See Algo Strobe Light Pattern Reference Guide

color1

The color to set the strobe

String

Required

Valid values:

  • "red”

  • "blue”

  • “green”

  • “amber”

color2

The second color for the strobe to use if the pattern uses two colors.

String

Optional

Only applicable to 8138/8410/8420.

Valid values:

  • "red”

  • "blue”

  • “green”

  • “amber”

ledlvl

The brightness of the strobe light.

String

Required

For 8190S:

  • Low: 1

  • Medium: 2

  • High: 3

For 8128(G2)/8138/8410/8420:

  • Low: 0

  • Medium: 56

  • High: 255

Related Links

Sample Request

Custom

POST https://10.12.123.12/api/controls/strobe/start
{
	"duration": 10,
    "pattern": 1,
	"color1": "red",
	"color2": "blue",
	"ledlvl": 100
}

JSON

Sample Response

None. The observable outcome is whether the device performs the requested action or not.


Stop a strobe light

Turn off a strobe light.

Applicable Products: 8128(G2), 8138, 8190S, 8410, 8420

Minimum Firmware Version: 3.3

URI

POST /api/controls/strobe/stop

Sample Request

POST https://10.12.123.12/api/controls/strobe/stop

Sample Response

None. The observable outcome is whether the device performs the requested action or not.

8450 Button Control

You can use API commands to activate or deactivate 8450 buttons. This lets you trigger or stop the actions linked to those buttons.

Activate an 8450 Button

Activate a button on an 8450 screen. This triggers the action associated with that button.

Applicable Products: 8450

Minimum Firmware Version: 5.6

URI

POST /api/controls/console/button/activate

Parameters

Element

Description

Type

Required

Notes

id

The button identifier.

string

Required

Make sure it matches the Identifier you configured for the button on its configuration screen.

To find your button ID:

  1. Log in to your 8450 device web interface.

  2. Go to Screens. Then select the screen where your button is located.

  3. Find the button and copy its Identifier.

Sample Request

POST https://10.12.123.12/api/controls/console/button/activate
{
"id":"weather-incident"
} 

Sample Response

None. The observable outcome is whether the device performs the requested action or not.

About duplicated button identifiers

In case of duplicated button identifiers, the action priority is determined by its hosting button or screen, in the following order:

  1. Action button (single press)

  2. Action button (double press)

  3. Home screen

  4. Emergency screen

  5. Emergency Paging screen

  6. Paging screen

  7. Custom screens 1 → 20 (The custom screen with the lower number takes priority)

Stop Ongoing Actions on 8450

Stop active events, such as paging, SIP calls, or tone playback.

Applicable Products: 8450

Minimum Firmware Version: 5.6

URI

 POST /api/controls/console/event/stop

Parameters

Element

Description

Type

Required

Notes

type

The event type.

string

Required

Valid values:

  • "all" : Stop all ongoing events.

  • “emergency” : Stop active emergency paging.

  • “nonEmergency” : Stop active non-emergency paging.

  • “call” : Stop an active SIP call.

  • “pageMic” : Stop live paging through 8450 microphone.

  • “pageTone” : Stop ongoing tones or pre-recorded announcements.

Sample Request

POST https://10.12.123.12/api/controls/console/event/stop
{
"type":"all"
} 

Sample Response:

Stopped 1 event(s).

List active events on 8450

List active events on the 8450, such as ongoing paging, SIP calls, or tone playback.

Applicable Products: 8450

Minimum Firmware Version: 5.6

URI

 GET /api/console/event/status

Sample Request

GET https://10.12.123.12/api/console/event/status 

Sample Response:

{"active":[ 

               {"type":"emergency"}, 

               {"type":"pageMic"} 

]} 

Emergency Alerts

You can use API commands to start or stop an emergency alert.

Start an Emergency Alert

Start an emergency alert.

Applicable Products: All IP Speakers, Paging Adapters, IP Visual Alerters, IP Displays

Minimum Firmware Version: 5.7

URI

POST /api/controls/emergency-alert/start

Payload

Element

Description

Type

Required

Notes

announcement

The ID number of the emergency alert. In the device web interface, this corresponds to the Announcement number under Additional Features → Emergency Alerts. For example, for Announcement 2, the ID is 2.

integer

Required

Valid values: 1-10

Sample Request 1: Start emergency 1.

curl -X POST \
  -H "Authorization: hmac <user>:<nonce>:<digest>" \
  -H "Content-Md5: <hex_md5>" \
  -H "Content-Type: application/json" \
  -H "Date: <RFC1123_date>" \
  -d '{"announcement":"1"}' \
  http://10.11.12.123/api/controls/emergency-alert/start

Example Response

On success, the device plays the emergency alert.

Stop an Emergency Alert

Stop an ongoing emergency alert.

Applicable Products: All IP Speakers, Paging Adapters, IP Visual Alerters, IP Displays

Minimum Firmware Version: 5.7

URI

POST /api/controls/emergency-alert/stop

Sample Request 1: Stop the ongoing emergency.

curl -X POST \
  -H "Authorization: hmac <user>:<nonce>:<digest>" \
  -H "Content-Md5: <hex_md5>" \
  -H "Content-Type: application/json" \
  -H "Date: <RFC1123_date>" \ 
  http://10.11.12.123/api/controls/emergency-alert/stop

Example Response

On success, the device stops the emergency alert.

Scheduler

You can use API commands to query, create, delete, update, skip, or restore events and groups.

You can also apply tags to identify events and batch-process them later.

Note

  • You can combine multiple API requests into a single command. For example, you can create one event and delete another in the same request.

  • If any operation in a request fails, the entire transaction is rolled back and no changes are committed.

  • Use HTTPS with the Standard or Basic authentication method.

Prerequisites

All examples in this section use the Standard authentication method, which requires:

  • Setting Authentication Method to Standard (under Advanced SettingsAdmin).

  • Setting a RESTful API Password (under Advanced SettingsAdmin).

  • Ensuring your computer’s time zone matches the device’s time zone.

    The HMAC timestamp validation required by Standard API authentication must fall within the timestamp tolerance, which is controlled by api.auth.tsvar (30 seconds by default).

Note

If you want to use the Basic authentication in API calls, include an authentication payload by encoding the RESTFUL API username (admin) and password in Base64.

Retrieve All Schedules

Retrieve the full Scheduler database, including events, groups, and events inside each group.

Applicable Products: 8301, 8305

Minimum Firmware Version: 5.7

URI

GET /api/schedules

Parameters

None.

Sample Request Format

curl -X GET \
        -H "Authorization: hmac <user>:<nonce>:<digest>" \
        https://10.12.123.12/api/schedules

Response Format

{
  "format": "v2.0",
  "groups": [
    <Group>
  ],
  "events": [
    <Event>
  ]
}

Example Response

{
  "format": "v2.0",
  "events": [
    {
      "enabled": 1,
      "api_call": [],
      "greyed_out_date": "",
      "tag": "",
      "start_time": "12:00",
      "duration": "",
      "exdate": "",
      "evid": 1,
      "extension": "",
      "mgroup": "NULL",
      "audio": "bell-na.wav",
      "event_type": "play_tone",
      "dtmf": "2",
      "name": "Lunch Break",
      "auto_remove": 0,
      "rrule": "FREQ=WEEKLY;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR",
      "start_date": "2026-09-01",
      "color": "#ff8800",
      "zone": 1,
      "rdate": ""
    }
  ],
  "groups": [
    {
      "color": "#dd036d",
      "rdate": "",
      "groupid": 1,
      "start_date": "2026-02-25",
      "rrule": "FREQ=WEEKLY;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR",
      "name": "School Day",
      "events": [
        {
          "enabled": 1,
          "api_call": [],
          "greyed_out_date": "",
          "tag": "",
          "start_time": "08:00:00",
          "duration": "",
          "exdate": "",
          "evid": 2,
          "extension": "",
          "audio": "bell-na.wav",
          "event_type": "play_tone",
          "rdate": "",
          "name": "Morning Bell",
          "auto_remove": 0,
          "rrule": "",
          "start_date": "",
          "color": "#dd036d",
          "zone": 1,
          "dtmf": ""
        }
      ]
    }
  ]
}

Retrieve Scheduled Event Instances Within a Date Range

Retrieve scheduled event instances within a specified date range.

Applicable Products: 8301, 8305

Minimum Firmware Version: 5.7

URI

GET /api/schedules?events=<date>&days=<number>

Parameters

Element

Description

Format / Type

Required

Note

events

Start date.

String (YYYY-MM-DD)

Required

days

Number of days to return.

Integer

Required

Default value: 1

Sample Request: Query 7-day schedules starting from today

curl -X GET `
        -H "Authorization: hmac <user>:<nonce>:<digest>" `
        https://10.12.123.12/api/schedules?events=&days=7

Sample Request: Query 7-day schedules starting from a specified date

curl -X GET \
        -H "Authorization: hmac <user>:<nonce>:<digest>" \
        https://10.12.123.12/api/schedules?events=2026-02-15&days=7

Example Response:

{
  "format": "v2.0",
  "events": {
    "2026-02-15": [],
    "2026-02-16": [],
    "2026-02-17": [],
    "2026-02-18": [],
    "2026-02-19": [
      {
        "evid": 9,
        "color": "#88fc0b",
        "name": "Emergency Alert",
        "start_time": "13:13:00",
        "skipped": 0
      }
    ],
    "2026-02-20": [
      {
        "evid": 9,
        "color": "#88fc0b",
        "name": "Emergency Alert",
        "start_time": "13:13:00",
        "skipped": 0
      }
    ],
    "2026-02-21": [
      {
        "evid": 9,
        "color": "#88fc0b",
        "name": "Emergency Alert",
        "start_time": "13:13:00",
        "skipped": 0
      }
    ]
  }
}

Create Stand-Alone Events

Create standalone events.

Note

Don’t specifyevid when creating new events. Otherwise, if an event with the specified evid already exists, the existing event is updated instead, regardless where is its location.

The event type is decided by event_type :

  • play_tone : Creates a Play Tone event. An event ID evid is automatically created.

  • stream_audio : Creates a Stream Audio event. An event ID evid is automatically created.

  • sip_call : Creates a SIP Call with Tone event. An event ID evid is automatically created.

  • api_call : Creates an API Call event. An event ID evid  and API Call IDsactidare automatically created. You can add up to 5 API calls in one API Call event.

Applicable Products: 8301, 8305

Minimum Firmware Version: 5.7

URI

POST /api/schedules

Parameters

Refer to the following links for the event structure and parameters required by each event type:

Sample Request: Create a standalone Play Tone event

curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: hmac <user>:<nonce>:<digest>" \
        -d '{
        "events": [
        {
        "event_type": "play_tone",
        "name": "Lunch Bell",
        "start_time": "12:00",
        "zone": 1,
        "audio": "bell-na.wav",
        "start_date": "2026-09-01",
        "rrule": "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR",
        "rdate": "",
        "exdate": "",
        "color": "#ff8800"
        }
        ]
        }' \
        https://10.12.123.12/api/schedules

Sample Response

{
  "rdate": "",
  "duration": "",
  "greyed_out_date": "",
  "evid": 13,
  "exdate": "",
  "auto_remove": 0,
  "extension": "",
  "start_date": "2026-09-01",
  "start_time": "12:00",
  "zone": 1,
  "color": "#ff8800",
  "enabled": 1,
  "tag": "",
  "api_call": [],
  "name": "test",
  "audio": "bell-na.wav",
  "event_type": "play_tone",
  "dtmf": "",
  "rrule": "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR"
}

Update Events

Update specified events. The target events are identified by the provided evid.

Note

  • If no evid or actid are provided, or if the IDs are invalid, new events are created based on the specified event_type.

  • Include only the parameters you want to modify. All other parameters remain unchanged.

  • To update an API Call event, provide at least two IDs:

    • evid: The ID of its host event.

    • actid: The ID for the API calls.

Applicable Products: 8301, 8305

Minimum Firmware Version: 5.7

URI

POST /api/schedules

Parameters

Element

Description

Type

Required

Notes

events

Create or update events

Array of events

Required

You must specify a valid evid.

Sample Request: Update an API Call event payload

curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: hmac <user>:<nonce>:<digest>" \
        -d '{
        "events": [
        {
        "evid": 1,
        "api_call": [
        {
        "actid": 1,
        "payload": "{\"path\":\"chime.wav\",\"loop\":false}"
        }
        ]
        }
        ]
        }' \
        https://10.12.123.12/api/schedules

Sample Response

{
  "events": [
    {
      "evid": 1,
      "api_call": [
        {
          "actid": 1,
          "payload": "{\"path\":\"chime.wav\",\"loop\":false}"
        }
      ]
    }
  ]
}

Create a Group

Create a group of events.

Note

  • Don’t specify groupid when creating a new group. Otherwise, if a group with the specified groupid already exists, the existing group is updated instead.

  • Don’t specifyevid when adding new events to the group. Otherwise, if an event with the specifiedevid already exists, the existing event is updated instead, regardless where is its location.

Applicable Products: 8301, 8305

Minimum Firmware Version: 5.7

URI

POST /api/schedules

Parameters

Element

Description

Type

Required

Notes

groups

Create groups with nested events

Array of groups

Required

To add events to a group, refer to the following links for the event structure and parameters required by each event type:

Request Format

curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: hmac <user>:<nonce>:<digest>" \
        -d '{
        "groups": [
        {
        ...
        "events": [
        {
        "event_type": "play_tone",
        ...
        },
        {
        "event_type": "sip_call",
        ...
        }
        ]
        }
        ]
        }' \
        "https://10.12.123.12/api/schedules"

Sample Body Request

{
  "groups": [
    {
      "name": "Morning Music",
      "color": "#3366ff",
      "start_date": "2026-02-21",
      "rrule": "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR",
      "rdate": "",
      "events": [
        {
          "event_type": "play_tone",
          "name": "Start of Day",
          "enabled": true,
          "start_time": "08:30",
          "duration": 30,
          "zone": 1,
          "audio": "bell-na.wav",
          "color": "#33cc99"
        },
        {
          "event_type": "api_call",
          "name": "Notify PA",
          "enabled": true,
          "start_time": "08:50",
          "color": "#33cc99",
          "api_call": [
            {
              "method": "POST",
              "target": "https://10.0.0.10",
              "path": "/api/controls/tone/start",
              "header": "Content-Type: application/json",
              "payload": "{\"path\":\"chime.wav\",\"loop\":false,\"mcast\":false}"
            }
          ]
        }
      ]
    }
  ]
}

Sample Response

{
  "groups": [
    {
      "name": "Morning Music",
      "groupid": 1,
      "rrule": "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR",
      "events": [
        {
          "audio": "bell-na.wav",
          "duration": 30,
          "start_time": "08:30",
          "name": "Start of Day",
          "evid": 2,
          "event_type": "play_tone",
          "enabled": true,
          "color": "#33cc99",
          "zone": 1
        },
        {
          "enabled": true,
          "evid": 3,
          "api_call": [
            {
              "actid": 2,
              "method": "POST",
              "payload": "{\"path\":\"chime.wav\",\"loop\":false,\"mcast\":false}",
              "header": "Content-Type: application/json",
              "target": "https://10.0.0.10",
              "path": "/api/controls/tone/start"
            }
          ],
          "event_type": "api_call",
          "start_time": "08:50",
          "color": "#33cc99",
          "name": "Notify PA"
        }
      ],
      "rdate": "",
      "start_date": "2026-02-21",
      "color": "#3366ff"
    }
  ]
}

Update Groups

Update an existing group or its nested events. The target groups and events are identified by the provided groupid and event IDs (evid or actid).

Note

  • If no IDs are provided, or if the IDs are invalid, new group or event instances are created.

  • Include only the parameters you want to modify. All other parameters remain unchanged.

  • To update an API Call event in a group, provide at least these IDs:

    • groupid: The ID of the host group.

    • evid: The ID of its host event.

    • actid: The ID for the API calls.

Applicable Products: 8301, 8305

Minimum Firmware Version: 5.7

URI

POST /api/schedules

Parameters

Element

Description

Type

Required

Notes

groups

Create groups with nested events.

Array of groups.

Required

You must specify a valid groupid.

Sample Request: Update a group by groupid

curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: hmac <user>:<nonce>:<digest>" \
        -d
        '{
        "groups": [
        {
        "groupid": 1,
        "rrule": "FREQ=WEEKLY;BYDAY=MO,FR"
        }
        ],
        "events": [
        {
        "name": "Open Day",
        "evid": 2
        }
        ]
        }' \
        https://10.12.123.12/api/schedules

Sample Response

{
  "events": [
    {
      "evid": 2,
      "name": "Open Day"
    }
  ],
  "groups": [
    {
      "rrule": "FREQ=WEEKLY;BYDAY=MO,FR",
      "groupid": 1
    }
  ]
}

Delete Events or Groups

Delete events or groups by specifying their IDs.

Note

When you delete a group, all events it contains are also deleted.

Applicable Products: 8301, 8305

Minimum Firmware Version: 5.7

URI

POST /api/schedules

Parameters

Element

Description

Format / Type

Required

Note

delete

Delete events or groups.

Array of objects.

Required

Specify the target event or group IDs:

  • evid: Event ID for Play Tone, Stream Audio, or SIP Call with Tone.

  • actid: API Call event ID.

  • groupid: Group ID.

Sample Request: Delete a group and an API Call event

curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: hmac <user>:<nonce>:<digest>" \
        -d '
        {
        "delete": [
        {
        "groupid": 1
        },
        {
        "actid": 3
        }
        ]
        }' \
        https://10.12.123.12/api/schedules

Sample Response

{
  "delete": [
    {
      "groupid": 1
    },
    {
      "actid": 3
    }
  ]
}

Exclude Event or Group Instances from a Specified Date

Remove instances of the specified event or group on a specified date.

Excluded events or group instances do not appear in the Calendar, but they can be restored if needed.

Note

  • This command does not modify the event definition itself.

  • Use evid: -1 to target all events (including both standalone events and events inside groups) that have an occurrence on the specified date.

    When using evid: -1, the response includes affected_events which lists all available events.

Applicable Products: 8301, 8305

Minimum Firmware Version: 5.7

URI

POST /api/schedules

Parameters

Element

Description

Type

Required

Notes

exclude

Remove event instances on a specified date.

Array of objects.

Required

  • Use exdate ( YYYY-MM-DD) to specify the date.

  • Use evidto specify events.

  • Use groupidto specify groups.

Sample Request: Exclude event instances on a specified date

curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: hmac <user>:<nonce>:<digest>" \
        -d '{"exclude":[{"evid":4,"exdate":"2026-09-01"}]}' \
        https://10.12.123.12/api/schedules

Sample Response

{
  "exclude": [
    {
      "evid": 4,
      "exdate": "2026-09-01"
    }
  ]
}

Restore Excluded Event or Group Instances

Restore excluded event or group instances on a specified date.

Note

  • This command does not modify the event or group definition itself.

  • Use evid: -1 to target all events (including both standalone events and events inside groups) that have an occurrence on the specified date.

    When using evid: -1, the response includes affected_events which lists all available events.

Applicable Products: 8301, 8305

Minimum Firmware Version: 5.7

URI

POST /api/schedules

Parameters

Element

Description

Type

Required

Notes

remove_exclude

Restore event or group instances on a specified date.

Array of objects.

Required

  • Use date ( YYYY-MM-DD) to specify the date.

  • Use evidto specify events.

  • Use groupidto specify groups.

Sample Request: Restore event instances on a specified date

curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: hmac <user>:<nonce>:<digest>" \
        -d '{
        "remove_exclude": [
        {
        "evid": 4,
        "date": "2026-09-01"
        }
        ]
        }' \
        https://10.12.123.12/api/schedules

Sample Response

{
  "remove_exclude": [
    {
      "date": "2026-09-01",
      "evid": 4
    }
  ]
}
    

Skip Event or Group Instances

Remove event or group instances from a specified date.

Skipped events or groups still appear in the Calendar and can be restored if needed.

Note

  • This command does not modify the event definition itself.

  • Use evid: -1 to target all events (including both standalone events and events inside groups) that have an occurrence on the specified date.

    When using evid: -1, the response includes affected_events which lists all available events.

Applicable Products: 8301, 8305

Minimum Firmware Version: 5.7

URI

POST /api/schedules

Parameters

Element

Description

Type

Required

Notes

skip

Skip event or group instances on a specified date.

Array of objects.

Required

  • Use date ( YYYY-MM-DD) to specify the date.

  • Use evidto specify standalone events.

  • Use groupidto specify groups.

Sample Request: Skip a group instance from a specified date

curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: hmac <user>:<nonce>:<digest>" \
        -d '{"skip":[{"groupid":101,"date":"2025-12-01"}]}' \
        https://10.12.123.12/api/schedules

Sample Response

{
  "skip": [
    {
      "groupid": 101,
      "date": "2025-12-01"
    }
  ]
}
    

Restore Skipped Event or Group Instances

Restore skipped event or group instances.

Note

  • This command does not modify the event or group definition itself.

  • Use evid: -1 to target all events (including both standalone events and events inside groups) that have an occurrence on the specified date.

    When using evid: -1, the response includes affected_events which lists all available events.

Applicable Products: 8301, 8305

Minimum Firmware Version: 5.7

URI

POST /api/schedules

Parameters

Element

Description

Type

Required

Notes

remove_skip

Restore event or group instances on a specified date..

Array of objects

Required

  • Use date ( YYYY-MM-DD) to specify the date.

  • Use evidto specify events.

  • Use groupidto specify groups.

Sample Request: Restore all skipped events for the specified day

curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: hmac <user>:<nonce>:<digest>" \
        -d '{
        "remove_skip": [
        {
        "evid": -1,
        "date": "2026-03-09"
        }
        ]
        }' \
        https://10.12.123.12/api/schedules
    

Sample Response

Note

The response returns all events for the day with its latest state (regardless if they are skipped or not before the change).

{
  "remove_skip": [
    {
      "evid": -1,
      "date": "2026-03-09",
      "affected_events": [
        {
          "start_time": "00:00:00",
          "name": "Start a strobe",
          "evid": 1,
          "recurrent": 1,
          "skipped": 0,
          "color": "#cdebfa"
        },
        {
          "skipped": 0,
          "group": "Morning Music",
          "group_color": "#3366ff",
          "color": "#33cc99",
          "name": "Open Day",
          "recurrent": 1,
          "groupid": 1,
          "start_time": "08:30",
          "evid": 2
        },
        {
          "skipped": 0,
          "group": "Morning Music",
          "group_color": "#3366ff",
          "color": "#33cc99",
          "name": "Notify PA",
          "recurrent": 1,
          "groupid": 1,
          "start_time": "08:50",
          "evid": 3
        }
      ]
    }
  ]
}

Apply Tags to Events

You can use tags to identify events and batch manage them later.

Applicable Products: 8301, 8305

Minimum Firmware Version: 5.7

URI

POST /api/schedules

Parameters

Element

Description

Type

Required

events

Action to perform.

Array of objects

Required

tag

Event tag.

String

Required

Sample Request: Add the tag “Test” to an existing event

curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: hmac <user>:<nonce>:<digest>" \
        -d '{
        "events": [
        {
        "evid": 1,
        "tag": "Test"
        }
        ]
        }' \
        https://10.12.123.12/api/schedules
    

Sample Response

{
  "events": [
    {
      "evid": 1,
      "tag": "Test"
    }
  ]
}

Delay the Start of an Event

You can use delay to postpone the triggering of events after its creation time.

Note

If you specify delay, don’t set the start_date and start_time. Otherwise, the schedule fails.

Applicable Products: 8301, 8305

Minimum Firmware Version: 5.7

URI

POST /api/schedules

Parameters

Element

Description

Type

Required

Note

events

Action to perform.

Array of objects

Required

delay

Postpone the event triggering time in seconds.

Integer

Required

To ensure the event is entered into the Scheduler in time to be activated, set the delay time to at least 10 seconds.

Sample Request: Trigger an event one minute after its creation

curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: hmac <user>:<nonce>:<digest>" \
        -d '{
         "events": [
        {
          "name": "DELAYED TIMER",
          "color": "#ffcc99",
          "event_type": "play_tone",
          "audio": "bell-na.wav",
          "delay": "20",
          "auto_remove": 1
        }
        ]
        }' \
        https://10.12.123.12/api/schedules
    

Sample Response

{
  "events": [
    {
      "start_date": "2026-02-03",
      "audio": "bell-na.wav",
      "name": "DELAYED TIMER",
      "event_type": "play_tone",
      "delay": "20",
      "color": "#ffcc99",
      "auto_remove": 1,
      "start_time": "10:29:09",
      "evid": 12
    }
  ]
}

Batch Manage Events Using Tags

You can use tags to batch manage events, including:

  • delete : Delete events.

  • exclude : Exclude a date.

  • remove_exclude : Re-add the excluded date.

  • skip : Skip events.

  • remove_skip : Restore skipped events.

Applicable Products: 8301, 8305

Minimum Firmware Version: 5.7

URI

POST /api/schedules

Parameters

Element

Description

Type

Required

  • delete

  • exclude

  • remove_exclude

  • skip

  • remove_skip

Action to perform.

Array of objects

Required

tag

Event tag.

String

Required

Sample Request: Skip all events tagged as “Test” on a specified date

curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: hmac <user>:<nonce>:<digest>" \
        -d '{
        "skip": [
        {
        "tag":"Test",
        "date": "2026-12-01"
        }
        ]
        }' \
        https://10.12.123.12/api/schedules
    

Sample Response

{
  "skip": [
    {
      "date": "2026-12-01",
      "tag": "Test"
    }
  ]
}

Event Structure

Refer to the following section for the structure and available parameters for different event types.

Event Structure: Play Tone

This table shows parameters available to the event type Play Tone.

Element

Description

Type

Required

Note

api_call

Specifies the API call(s) to execute.

String

N/A

If an event includes api_call entries but its event_type is not api_call, the associated api_call entries are ignored.

audio

The audio file to play.

String

Required

Valid values:

  • Any audio file name that is available in System File Manager.

auto_remove

Deletes all instances of the event or group after it is triggered.

Boolean or 0/1

Optional

Default value: 0.

This can be used to remove temporary schedules intended for testing purposes.

color

The color of the event to display on the Calendar.

String (Hex color value)

Required

If not specified, a unique color is assigned automatically for each new event.

delay

Postpone the event triggering time in seconds.

Integer

Optional

if specified, the event starts after the specified delay  period, calculated from the event creation time.

  • If specified, don’t specify the start_date or start_time. Otherwise, the schedule fails.

  • To ensure the event is entered into the Scheduler in time to be activated, set the delay time to at least 10 seconds.

dtmf

The DTMF tone to play before the tone.

Integer

Optional

Used only when the following configuration is set:

Advanced SettingsAdvanced Audio Play DTMF Tones Before Pages/Alerts and set Alert Specific for DTMF Tone(s).

duration

The duration of this event in seconds.

Integer

N/A

Don’t specify.

It’s generated automatically.

enabled

Whether this event is enabled.

Boolean or 0/1

Optional

Default value: 1

event_type

The event type.

Enum

Required

Valid values:

  • play_tone

evid

The unique ID of the event.

Integer

Optional

Leave it empty to create a new event.

Specify the ID to update an existing event.

exdate

Specifies dates to exclude from the recurrence set generated by rrule and rdate.

String (YYYY-MM-DD)

Optional

extension

The target SIP extension.

Integer

N/A

greyed_out_date

Days that have skipped events or groups.

String (YYYY-MM-DD)

N/A

Don’t specify.

It’s generated automatically.

mgroup

Poly page group ID.

Integer

N/A

Specify the target Poly page group ID when you have set Multicast Type to one of the following in Basic SettingsMulticast:

  • Poly Group Page

  • Poly Push-to-Talk

  • Regular RTP + Poly Group Page

  • Regular RTP + Poly Push-to-Talk

name

The name of the event.

String

Required

rdate

Specifies additional custom dates on which the event occurs, beyond those defined by rrule.

String (YYYY-MM-DD)

N/A

rrule

Defines the recurrence pattern of a repeating event, including the frequency and optional rule components such as INTERVAL, COUNT, UNTIL, and BYDAY.

String

Required

Must include FREQ=.

Valid FREQ values:

  • DAILY

  • WEEKLY

  • MONTHLY

  • YEARLY

No whitespace allowed.

start_date

The start date of the event.

String (YYYY-MM-DD)

Required

start_time

The start time of the event.

String (HH-MM:SS)

Required

tag

An optional identifier for events.

This identifier can be used to perform actions on multiple events at once.

String

Optional

You can use tags to batch manage events, including:

  • delete : Delete events.

  • exclude : Exclude a date.

  • remove_exclude : Re-add the excluded date.

  • skip : Skip events.

  • remove_skip : Restore skipped events.

zone

The target multicast zone.

Integer

Optional

Specify the target multicast zone when you have set Multicast Type to one of the following in Basic SettingsMulticast:

  • Regular (RTP)

  • Regular RTP + Poly Group Page

  • Regular RTP + Poly Push-to-Talk

Example:

{
  "zone": 1,
  "api_call": [],
  "event_type": "play_tone",
  "audio": "bell-na.wav",
  "name": "Lunch Break",
  "auto_remove": 0,
  "enabled": 1,
  "duration": "",
  "rdate": "",
  "tag": "",
  "color": "#ff8800",
  "exdate": "",
  "evid": 1,
  "start_date": "2026-09-01",
  "greyed_out_date": "",
  "rrule": "FREQ=WEEKLY;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR",
  "extension": "",
  "start_time": "12:00",
  "dtmf": "2",
  "mgroup": "NULL"
}
    

Event Structure: Stream Audio

This table shows parameters available to the event type Stream Audio.

Note

The Stream Audio event type (stream_audio) is available only to 8301.

Element

Description

Type

Required

Note

api_call

Specifies the API call(s) to execute.

String

N/A

If an event includes api_call entries but its event_type is not api_call, the associated api_call entries are ignored.

audio

The audio file to play.

String

N/A

Valid values:

  • Any audio file name that is available in System File Manager.

auto_remove

Deletes all instances of the event or group after it is triggered.

Boolean or 0/1

Optional

Default value: 0.

This can be used to remove temporary schedules intended for testing purposes.

color

The color of the event to display on the Calendar.

String (Hex color value)

Required

If not specified, a unique color is assigned automatically for each new event.

delay

Postpone the event triggering time in seconds.

Integer

Optional

if specified, the event starts after the specified delay  period, calculated from the event creation time.

  • If specified, don’t specify the start_date or start_time. Otherwise, the schedule fails.

  • To ensure the event is entered into the Scheduler in time to be activated, set the delay time to at least 10 seconds.

dtmf

The DTMF tone to play before the tone.

Integer

N/A

duration

The duration of this event in seconds.

Integer

N/A

Don’t specify.

It’s generated automatically.

enabled

Whether this event is enabled.

Boolean or 0/1

Optional

Default value: 1

event_type

The event type.

Enum

Required

Valid value:

  • stream_audio

evid

The unique ID of the event.

Integer

Optional

Leave it empty to create a new event.

Specify the ID to update an existing event.

exdate

Specifies dates to exclude from the recurrence set generated by rrule and rdate.

String (YYYY-MM-DD)

Optional

extension

The target SIP extension.

Integer

N/A

greyed_out_date

Days that have skipped events or groups.

String (YYYY-MM-DD)

N/A

Don’t specify.

It’s generated automatically.

mgroup

Poly page group ID.

Integer

N/A

Specify the target Poly page group ID when you have set Multicast Type to one of the following in Basic SettingsMulticast:

  • Poly Group Page

  • Poly Push-to-Talk

  • Regular RTP + Poly Group Page

  • Regular RTP + Poly Push-to-Talk

name

The name of the event.

String

Required

rdate

Specifies additional custom dates on which the event occurs, beyond those defined by rrule.

String (YYYY-MM-DD)

N/A

Use commas (,) to separate multiple dates.

rrule

Defines the recurrence pattern of a repeating event, including the frequency and optional rule components such as INTERVAL, COUNT, UNTIL, and BYDAY.

String

Required

Must include FREQ=.

ValidFREQ values:

  • DAILY

  • WEEKLY

  • MONTHLY

  • YEARLY

No whitespace allowed.

start_date

The start date of the event.

String (YYYY-MM-DD)

Required

start_time

The start time of the event.

String (HH-MM:SS)

Required

tag

An optional identifier for events.

This identifier can be used to perform actions on multiple events at once.

String

Optional

You can use tags to batch manage events, including:

  • delete : Delete events.

  • exclude : Exclude a date.

  • remove_exclude : Re-add the excluded date.

  • skip : Skip events.

  • remove_skip : Restore skipped events.

zone

The target multicast zone.

Integer

Optional

Specify the target multicast zone when you have set Multicast Type to one of the following in Basic SettingsMulticast:

  • Regular (RTP)

  • Regular RTP + Poly Group Page

  • Regular RTP + Poly Push-to-Talk

Example:

{
  "evid": 1,
  "duration": 3600,
  "enabled": 1,
  "rdate": "",
  "dtmf": "",
  "zone": 1,
  "auto_remove": 0,
  "exdate": "",
  "extension": "",
  "audio": "",
  "tag": "",
  "color": "#ffd5de",
  "event_type": "stream_audio",
  "greyed_out_date": "",
  "start_date": "2026-02-26",
  "name": "Lunch Music",
  "rrule": "FREQ=MONTHLY;INTERVAL=2",
  "start_time": "00:00:00",
  "api_call": []
}
Event Structure: SIP Call with Tone

This table shows parameters available to the event type SIP Call with Tone.

Element

Description

Type

Required

Note

api_call

Specifies the API call(s) to execute.

String

N/A

If an event includes api_call entries but its event_type is not api_call, the associated api_call entries are ignored.

audio

The audio file to play.

String

Required

Valid values:

  • Any audio file name that is available in System File Manager.

auto_remove

Deletes all instances of the event or group after it is triggered.

Boolean or 0/1

Optional

Default value: 0.

This can be used to remove temporary schedules intended for testing purposes.

color

The color of the event to display on the Calendar.

String (Hex color value)

Required

If not specified, a unique color is assigned automatically for each new event.

delay

Postpone the event triggering time in seconds.

Integer

Optional

if specified, the event starts after the specified delay  period, calculated from the event creation time.

  • If specified, don’t specify the start_date or start_time. Otherwise, the schedule fails.

  • To ensure the event is entered into the Scheduler in time to be activated, set the delay time to at least 10 seconds.

dtmf

The DTMF tone to play before the tone.

Integer

Optional

Used only when the following configuration is set:

Advanced SettingsAdvanced AudioPlay DTMF Tones Before Pages/Alerts and set Alert Specific for DTMF Tone(s).

duration

The duration of this event in seconds.

Integer

N/A

Don’t specify.

It’s calculated automatically as per the start_time, stop_time.

enabled

Whether this event is enabled.

Boolean or 0/1

Optional

Default value: 1

event_type

The event type.

Enum

Required

Valid values:

  • sip_call

evid

The unique ID of the event.

Integer

Optional

Leave it empty to create a new event.

Specify the ID to update an existing event.

exdate

Specifies dates to exclude from the recurrence set generated by rrule and rdate.

String (YYYY-MM-DD)

Optional

extension

The target SIP extension.

Integer

Required

greyed_out_date

Days that have skipped events or groups.

String (YYYY-MM-DD)

N/A

Don’t specify.

It’s generated automatically.

mgroup

Poly page group ID.

Integer

N/A

Specify the target Poly page group ID when you have set Multicast Type to one of the following in Basic SettingsMulticast:

  • Poly Group Page

  • Poly Push-to-Talk

  • Regular RTP + Poly Group Page

  • Regular RTP + Poly Push-to-Talk

name

The name of the event.

String

Required

rdate

Specifies additional custom dates on which the event occurs, beyond those defined by rrule.

String (YYYY-MM-DD)

N/A

Use commas (,) to separate multiple dates.

rrule

Defines the recurrence pattern of a repeating event, including the frequency and optional rule components such as INTERVAL, COUNT, UNTIL, and BYDAY.

String

Required

Must include FREQ=.

Valid FREQ values:

  • DAILY

  • WEEKLY

  • MONTHLY

  • YEARLY

No whitespace allowed.

start_date

The start date of the event.

String (YYYY-MM-DD)

Required

start_time

The start time of the event.

String (HH-MM:SS)

Required

tag

An optional identifier for events.

This identifier can be used to perform actions on multiple events at once.

String

Optional

You can use tags to batch manage events, including:

  • delete : Delete events.

  • exclude : Exclude a date.

  • remove_exclude : Re-add the excluded date.

  • skip : Skip events.

  • remove_skip : Restore skipped events.

zone

The target multicast zone.

Integer

Optional

Specify the target multicast zone when you have set Multicast Type to one of the following in Basic SettingsMulticast:

  • Regular (RTP)

  • Regular RTP + Poly Group Page

  • Regular RTP + Poly Push-to-Talk

Example:

{
  "duration": "",
  "event_type": "sip_call",
  "start_time": "00:00:00",
  "extension": "1234",
  "exdate": "",
  "evid": 1,
  "dtmf": "",
  "audio": "bell-na.wav",
  "tag": "",
  "api_call": [],
  "color": "#831f8f",
  "auto_remove": 0,
  "enabled": 1,
  "start_date": "2026-02-24",
  "rdate": "",
  "greyed_out_date": "",
  "rrule": "",
  "name": "SIP CALL"
}
    

Event Structure: API Call

This table shows parameters available to an API call.

Element

Description

Type

Required

Note

api_call

Specifies the API call(s) to execute.

String

Required

If an event includes api_call entries but its event_type is not api_call, the associated api_call entries are ignored.

    actid

Unique ID for the API Call.

Integer

Required

Leave it empty to create a new event.

Specify the ID to update an existing event.

       header

HTTP header content included in the API request.

String

Required

May include authentication headers or predefined variables:

  • When sending API requests to Algo endpoints that require the Standard authentication method, use %ALGO_HEADERS% to insert an Algo standard authentication header.

    "header": "%ALGO_HEADERS%"
  • When sending API requests to Algo endpoints that require Basic authentication, use this header format:

    "header": "Authorization: Basic <Base64 Value>\\r\\nContent-Type: application/json"

Here, the <Base64 Value> is the RESTful API username (admin) and password encoded in Base64.

The default RESTful API Password is algo.

  • When sending API requests to non-Algo endpoints, refer to their documentation for the authentication header requirements.

        method

HTTP method used for the API request.

String

Required

Common values: GET, POST, PUT, DELETE.

        name

User-defined name for the API call.

String

Optional

        path

API endpoint path on the target device.

String

Required

Should not include protocol or host (e.g., api/controls/screen/start).

        payload

Request body content sent with the API call.

String

Required

Required for methods such as POST or PUT. Must be valid JSON if provided.

audio

The audio file to play.

String

Required

Valid values:

  • Any audio file name that is available in System File Manager.

auto_remove

Deletes all instances of the event or group after it is triggered.

Boolean or 0/1

Optional

Default value: 0.

This can be used to remove temporary schedules intended for testing purposes.

color

The color of the event to display on the Calendar.

String (Hex color value)

Optional

If not specified, a unique color is assigned automatically for each new event.

delay

Postpone the event triggering time in seconds.

Integer

Optional

if specified, the event starts after the specified delay  period, calculated from the event creation time.

  • If specified, don’t specify the start_date or start_time. Otherwise, the schedule fails.

  • To ensure the event is entered into the Scheduler in time to be activated, set the delay time to at least 10 seconds.

dtmf

The DTMF tone to play before the tone.

Integer

Optional

Used only when the following configuration is set:

Advanced SettingsAdvanced Audio Play DTMF Tones Before Pages/Alerts and set Alert Specific for DTMF Tone(s).

duration

The duration of this event in seconds.

Optional

enabled

Whether this event is enabled.

Boolean or 0/1

Optional

Default value: 1

event_type

The event type.

Enum

Required

Valid values:

  • play_tone

  • stream_audio

  • sip_call

  • api_call

evid

The unique ID of the event.

Integer

Optional

Leave it empty to create a new event.

Specify the ID to update an existing event.

exdate

Specifies dates to exclude from the recurrence set generated by rrule and rdate.

String (YYYY-MM-DD)

Optional

extension

The target SIP extension.

Integer

Required

greyed_out_date

Days that have skipped events or groups.

String (YYYY-MM-DD)

N/A

Don’t specify.

It’s generated automatically.

mgroup

Poly page group ID.

Integer

N/A

Specify the target Poly page group ID when you have set Multicast Type to one of the following in Basic SettingsMulticast:

  • Poly Group Page

  • Poly Push-to-Talk

  • Regular RTP + Poly Group Page

  • Regular RTP + Poly Push-to-Talk

name

The name of the event.

String

Required

rdate

Specifies additional custom dates on which the event occurs, beyond those defined by rrule.

String (YYYY-MM-DD)

N/A

Use commas (,) to separate multiple dates.

rrule

Defines the recurrence pattern of a repeating event, including the frequency and optional rule components such as INTERVAL, COUNT, UNTIL, and BYDAY.

String

Required

Must include FREQ=.

Valid FREQ values:

  • DAILY

  • WEEKLY

  • MONTHLY

  • YEARLY

No whitespace allowed.

start_date

The start date of the event.

String (YYYY-MM-DD)

Required

start_time

The start time of the event.

String (HH-MM:SS)

Required

tag

An optional identifier for events.

This identifier can be used to perform actions on multiple events at once.

String

Optional

You can use tags to batch manage events, including:

  • delete : Delete events.

  • exclude : Exclude a date.

  • remove_exclude : Re-add the excluded date.

  • skip : Skip events.

  • remove_skip : Restore skipped events.

Example:

{
  "api_call": [
    {
      "path": "api/controls/screen/start",
      "payload": "{\n \"type\": \"image\",\n \"image1\": \"alerts-severe-weather-A.png\"\n}",
      "target": "10.11.12.123",
      "method": "POST",
      "header": "%ALGO_HEADERS%",
      "name": "",
      "actid": 1
    }
  ],
  "mgroup": 0,
  "exdate": "",
  "zone": "NULL",
  "evid": 1,
  "rdate": "",
  "rrule": "",
  "auto_remove": 0,
  "start_date": "2026-02-27",
  "tag": "",
  "event_type": "api_call",
  "greyed_out_date": "",
  "audio": "bell-na.wav",
  "start_time": "00:00:00",
  "color": "#f4daf7",
  "duration": "",
  "dtmf": "",
  "extension": "",
  "enabled": 1,
  "name": "Start Screen"
}

Group Structure

This table shows parameters available to a group.

Element

Description

Type

Required

Note

color

The color of the event to display on the Calendar.

String (Hex color value)

Required

If not specified, a unique color is automatically assigned to each new group.

groupid

The unique ID of the group.

Integer

Optional

Leave it empty to create a new group.

Specify the ID to update an existing group.

events

The list of events.

String

Required

Refer to the following links for the event structure and parameters required by each event type:

name

The name of the event.

String

Required

rdate

Specifies additional custom dates on which the event occurs, beyond those defined by rrule.

String (YYYY-MM-DD)

N/A

Use commas (,) to separate multiple dates.

rrule

Defines the recurrence pattern of a repeating event, including the frequency and optional rule components such as INTERVAL, COUNT, UNTIL, and BYDAY.

String

Required

Must include FREQ=.

ValidFREQ values:

  • DAILY

  • WEEKLY

  • MONTHLY

  • YEARLY

No whitespace allowed.

start_date

The start date of the event.

String (YYYY-MM-DD)

Required

Example:

 "groups": [
  {
    "rrule": "FREQ=DAILY;INTERVAL=1;UNTIL=20261224T000000Z",
    "groupid": 1,
    "events": [
      {
        <Event1>,
        <Event2>
      }
    ],
    "rdate": "",
    "start_date": "2026-02-24",
    "color": "#f4daf7",
    "name": "Group 1"
  }
]

Related Links:

Refer to the following links for the event structure and parameters required by each event type:


Scheduler API FAQs

Can I put multiple commands into a single API command?

You can combine multiple POST commands into a single request. For example, you can add a group, remove a standalone event, and skip an instance of another event in one API request.

However, regardless of the order in which operations are written in the request, they are executed in the following order:

  1. Any exclude operation

  2. Any remove_exclude operation

  3. Any skip operation

  4. Any remove_skip operation

  5. Any delete operation

  6. Add or update groups

  7. Add or update standalone events

How can I quickly locate API request errors in the system log file?

  1. Go to System System Log Download systlog.txt.

  2. In the systlog.txt, search forsched2-load for GET API errors andsched2-savefor POST API request errors.