---
title: "RESTful API Guide"
slug: "restful-api-guide"
updated: 2026-05-13T21:28:36Z
published: 2026-05-13T21:28:36Z
canonical: "docs.algosolutions.com/restful-api-guide"
---

> ## 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

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.

![](https://cdn.document360.io/f6f5e62d-d280-487f-9da7-5926ffd53b5f/Images/Documentation/api-door-unlock.png)

#### **School Bell**

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

![](https://cdn.document360.io/f6f5e62d-d280-487f-9da7-5926ffd53b5f/Images/Documentation/api-school-bell.png)

#### **Temperature Check**

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

![](https://cdn.document360.io/f6f5e62d-d280-487f-9da7-5926ffd53b5f/Images/Documentation/AIP-Blog-Diagrams-v02C-20241125.png)

**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.

![](https://cdn.document360.io/f6f5e62d-d280-487f-9da7-5926ffd53b5f/Images/Documentation/image(455).png)

## 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]
> 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](http://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*. ![](https://cdn.document360.io/f6f5e62d-d280-487f-9da7-5926ffd53b5f/Images/Documentation/image(158).png)
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**

```plaintext
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**

```plaintext
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**

```plaintext
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]
> 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 set 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: - [Speaker Provisioning Guide](https://docs.algosolutions.com/v1/docs/speaker-provisioning-guide) - [Paging Adapter Provisioning Guide](https://docs.algosolutions.com/v1/docs/paging-adapter-provisioning-guide) - [Intercom Provisioning Guide](https://docs.algosolutions.com/v1/docs/intercom-provisioning-parameters) |

**Sample Request**

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

**Sample Response**

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

**Related Links:**

- [Speaker Provisioning Guide](https://docs.algosolutions.com/v1/docs/speaker-provisioning-guide)
- [Paging Adapter Provisioning Guide](https://docs.algosolutions.com/v1/docs/paging-adapter-provisioning-guide)
- [Intercom Provisioning Guide](https://docs.algosolutions.com/v1/docs/intercom-provisioning-parameters)

#### Set the value of a specific parameter

Change or set the value of a specific device configuration.

**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: - [Speaker Provisioning Guide](https://docs.algosolutions.com/v1/docs/speaker-provisioning-guide) - [Paging Adapter Provisioning Guide](https://docs.algosolutions.com/v1/docs/paging-adapter-provisioning-guide) - [Intercom Provisioning Guide](https://docs.algosolutions.com/v1/docs/intercom-provisioning-parameters) |

**Sample Request**

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

**Related Links:**

- [Speaker Provisioning Guide](https://docs.algosolutions.com/v1/docs/speaker-provisioning-guide)
- [Paging Adapter Provisioning Guide](https://docs.algosolutions.com/v1/docs/paging-adapter-provisioning-guide)
- [Intercom Provisioning Guide](https://docs.algosolutions.com/v1/docs/intercom-provisioning-parameters)

#### 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]
> Note
> 
> The parameter `tonelist`refers 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**

```json
{
    "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]
> Note
> 
> Available status options 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 i**s 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 IPv4 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) |
| Volume | The volume set on the device, including dB. | String | Page Volume: ## (##dB) |
| Relay Input Status | A status of whether or not the relay input is in use. | 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 |
| 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 |

**Sample Request**

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

**Sample Response**

```json
{
    "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**

```json
{
    "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**

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

**Sample Response**

```plaintext
{
    "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**

```json
{"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**

```plaintext
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**

```json
{
    "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**

```json
{
     "status":"updated"
}
```

#### Set the API 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**

```json
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 **System** → **File Manager**.

You must specify the target file name in the request.

> [!NOTE]
> 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**

```json
{
  "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**

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

**POST Sample Response for Listing a File Folder Contents**

```json
{
    "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**

```json
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](http://10.12.123.12/api/files/tones/custom-audio.wav) |
| Auth | **Basic Auth** **Username**: admin **Password**: algo > [!NOTE] > 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. |

![](https://cdn.document360.io/f6f5e62d-d280-487f-9da7-5926ffd53b5f/Images/Documentation/Screenshot 2025-09-29 150029 (1).png)

**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**

```json
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.

### 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]
> Note
> 
> - netdc1: Control the remote network door controller (8063)
> - local: Control the local relay.

**Sample Request**

```json
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]
> Note
> 
> - netdc1: Control the remote network door controller (8063)
> - local: Control the local relay

**Sample Request**

```json
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]
> Note
> 
> - netdc1: Control the remote network door controller (8063)
> - local: Control the local relay

**Sample Request**

```json
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**

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

**Sample Response**

```json
{
    "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**

```json
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**

```json
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**

```json
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**

```json
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 |
| --- | --- | --- | --- | --- |
| 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. |
| 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” |
| address | The multicast zone IP address. | string | Optional |  |
| port | The multicast zone port. | string | Optional |  |
| type | The multicast transfer type. | string | Optional | Valid values: - “poly” - “rtp“ |
| group | The Poly group being used. | integer | Optional | Valid values: numbers 1 through 25. Applicable only when “type” is set as “poly”. |

**Sample Request**

```json
POST https://10.12.123.12/api/controls/tone/start
{
  "path": "chime.wav",
  "loop": true,
  "mcast": true,
  "playback": false,
  "state": {
    "mode": "sender",
    "address": "<address>",
    "port": "<port>",
    "type": "poly",
    "group": 1
  }
}
```

**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`

**Sample Request**

```json
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.

#### 

#### Stop a selected tone on firmware 5.4

Stop the looping of a selected tone. For firmware 5.4, you must include a payload in the API request.

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

**URI**

`POST /api/controls/tone/stop`

**Parameters**

| Element | Description | Type | Required |
| --- | --- | --- | --- |
| path | The file name of the tone being played. | string | Required |

**Sample Request**

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

#### 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**

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

#### 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**

```json
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 a phone extension and play an audio file

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**: All speakers, 8301

**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 |  |

**Sample Request**

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

#### End a call to a phone extension

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**

```json
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**

```json
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**

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

**Sample Response**

```json
{
    "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**

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

**Sample Response**

```json
{
    "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**

```json
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**

```json
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**

```json
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**

```json
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**

```json
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 |
| --- | --- | --- | --- | --- |
| type | The type of background to display | String | Required | Set as “image” |
| image1 | The file name of the image | String | Required |  |

**Sample Request**

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

**Sample Response**

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

#### Display scrolling text over 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 |  |
| --- | --- | --- | --- | --- | --- |
| type | The type of background to display. | String | Required | Set as “image” |  |
| image1 | The file name of the image. | String | Required |  |  |
| text1 | The text to be displayed on the device. | String | Required |  |  |
| 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 as black: ```json "textColor": "black" "textColor": "#000000" ``` For more information, see [HTML Color Names](https://www.w3schools.com/colors/colors_names.asp). 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 | Turn text scroll on or off. | String | 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 | 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**

```json
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"
}
```

**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 |
| --- | --- | --- | --- | --- |
| 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 | clockSeconds | Boolean | Optional | Use if type=digitalClock Default= “false” |
| clockSecondsAnalog | Enable or disable displaying clock seconds | Boolean | Optional | Use if type= analogClock Default= “true” |
| clockBgColor | The background color of the clock | String | Optional | Use if type=digitalClock Valid values: - SVG color name - HEX code |
| clockFgColor | The foreground color of the clock | String | Optional | Use if type=digitalClock Valid values: - SVG color name - HEX code Default= “white” |
| analogBgColor | The background color of the clock | String | Optional | Use if type=analogClock Valid values: - SVG color name - HEX code |
| analogFgColor | The foreground color of the clock | String | Optional | Use if type=analogClock Valid values: - SVG color name - HEX code Default= “black” |
| analogSecondsColor | The color of the seconds hand on the analog clock | String | Optional | Use if type=analogClock Valid values: - SVG color name - HEX code |
| clockFont | 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 | The file name of the background image to use behind the clock if needed. | String | Optional |  |

**Sample Request for Digital Clock**

```json
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"
}
```

**Sample Request for Analog Clock**

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

**Sample Response**

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

#### Display flashing images on the device screen

Display multiple 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 |
| --- | --- | --- | --- | --- |
| 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**

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

**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 |
| --- | --- | --- | --- | --- |
| 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**

```json
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.

#### 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:

- [Display a single image on the device screen](/v1/docs/restful-api-guide#display-a-single-image-on-the-device-screen)
- [Display scrolling text over an image on the device screen](/v1/docs/restful-api-guide#display-scrolling-text-over-an-image-on-the-device-screen)
- [Display a clock on the device screen](/v1/docs/restful-api-guide#display-a-clock-on-the-device-screen)
- [Display flashing images on the device screen](/v1/docs/restful-api-guide#display-flashing-images-on-the-device-screen)
- [Display a slideshow on the device screen using slide names](/v1/docs/restful-api-guide#display-a-slideshow-on-the-device-screen-using-slide-names)

| Element | Description | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| strobeFlash | The strobe flash pattern to use | Integer | Required | Valid values: See [Algo Strobe Light Pattern Reference Guide](https://docs.algosolutions.com/docs/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**

- [Algo Strobe Light Pattern Reference Guide](https://docs.algosolutions.com/docs/algo-strobe-light-pattern-reference-guide)

#### 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**

```json
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.

### 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 | Notes |
| --- | --- | --- | --- |
| pattern | The number of the pattern set. | Integer | Valid values: See [Algo Strobe Light Pattern Reference Guide](https://docs.algosolutions.com/docs/algo-strobe-light-pattern-reference-guide) |
| color1 | The color to set the strobe | String | Valid values: - "red” - "blue” - “green” - “amber” |
| color2 | The second color for the strobe to use if the pattern uses two colors. | String | Only applicable to 8138/8410/8420. Valid values: - "red” - "blue” - “green” - “amber” |
| ledlvl | The brightness of the strobe light. | String | For 8190S: - Low: 1 - Medium: 2 - High: 3 For 8128(G2)/8138/8410/8420: - Low: 0 - Medium: 56 - High: 255 |

**Related Links**

- [Algo Strobe Light Pattern Reference Guide](https://docs.algosolutions.com/docs/algo-strobe-light-pattern-reference-guide)

**Sample Request**

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

**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**

```json
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.** ![](https://cdn.document360.io/f6f5e62d-d280-487f-9da7-5926ffd53b5f/Images/Documentation/New Project (29).png) |

**Sample Request**

```json
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.

> [!NOTE]
> 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**

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

**Sample Response:**

```json
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**

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

**Sample Response:**

```json
{"active":[ 

               {"type":"emergency"}, 

               {"type":"pageMic"} 

]}
```
