> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.android-kiosk.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Unified Kiosk Remote Management API: API Endpoints

The Unified Kiosk Remote Management API is available for all subscribers. It is designed to allow programmatic access to devices and other relevant information within your account.

**Security**
The API can be accessed using your unique **API Key**. Your API Key should **NEVER** be shared, if compromised you can delete your API Key in the management console and generate a new one.

### Request
Base Url: https://kioskapi.azure-api.net/klr/api/
Headers:
**api-key** = myapikey

**Where do I find my API Key?**
You can find this via [More > API Keys](https://klr.android-kiosk.com/ApiKey) > Click **Add**

# Device Endpoint
**GET**

**/api/device** - get all devices on account
**/api/device?identifier=b60e7c95-d160-439d-8dc6-4c7e1648bd1a** - get device on account using device identifier
**/api/devicebytag?tags=tag1,tag2** - get all devices with tags "tag1" and/or "tag2", tags parameter should comma separated if more than one tag is specified

Example url: https://kioskapi.azure-api.net/klr/api/device

**Sample Response:**
```json
[
    {
        "identifier": "e4fc83bf-d29b-4789-826a-4f9f8a21b2f0",
        "name": "Emulator 7.1.1",
        "serial": "EMULATOR30X8X4X0",
        "androidVersion": "7.1.1",
        "brand": "google",
        "model": "Android SDK built for x86",
        "kioskVersion": "1.4.2 (Build 127)",
        "kioskPackageName": "com.procoit.kiosklauncher",
        "build": 127,
        "buildNumber": "NYC",
        "timezone": "Europe/London",
        "provisioned": true,
        "systemUpdatePending": false,
        "wiFiNetwork": "<unknown ssid>",
        "macAddress": "",
        "imei": "358240051111110",
        "screenOn": true,
        "defaultLauncher": "com.procoit.kiosklauncher",
        "simSerial": "89014103211118510720",
        "simOperator": "Android",
        "permissionsGranted": true,
        "batteryLevel": 100,
        "isCharging": true,
        "lastSeen": "2021-09-01T08:43:56.1757277",
        "registered": "0001-01-01T00:00:00",
        "latitude": 0.000000000,
        "longitude": 0.000000000,
        "tags": "cat,tag1",
        "online": false,
        "applicationScreenshot": ""
    },
    {
        "identifier": "cdd7344d-731c-4bf1-8c50-a89801ce8949",
        "name": "Nokia 7 Plus",
        "serial": "B2NGAA9832614974",
        "androidVersion": "10",
        "brand": "Nokia",
        "model": "Nokia 7 plus",
        "kioskVersion": "1.4.6 (Build 131)",
        "kioskPackageName": "com.procoit.kiosklauncher",
        "build": 131,
        "buildNumber": "00WW_4_15N",
        "timezone": "Europe/London",
        "provisioned": true,
        "systemUpdatePending": false,
        "wiFiNetwork": "Droid",
        "macAddress": "00:00:00:00:00",
        "imei": "000000000000",
        "screenOn": true,
        "defaultLauncher": "com.procoit.kiosklauncher",
        "simSerial": "",
        "simOperator": "",
        "permissionsGranted": true,
        "batteryLevel": 25,
        "isCharging": false,
        "lastSeen": "2021-09-08T10:33:51.7061598",
        "registered": "2021-08-26T07:16:11.5010442",
        "latitude": 0.00,
        "longitude": 0.00,
        "tags": null,
        "online": false,
        "applicationScreenshot": ""
    }
}
```

**PATCH**
**/api/device?identifier=b60e7c95-d160-439d-8dc6-4c7e1648bd1a** - update a single device using device identifier

**Sample request body:**
When using PATCH only the supplied values are updated. If for example you supply no value for the device name, it will not change. Include json in the request body as per examples below:

```
{

    "configurationid": 4688,
    "name": "My Device Name"

}
```

# DeviceConfiguration Endpoint

**GET**
**/api/deviceconfiguration** - get all configurations on account
**/api/deviceconfiguration?id=1** - get configuration on account using configuration id

Example url: https://kioskapi.azure-api.net/klr/api/deviceconfiguration

**Sample Response:**
```json
[
    {
        "configurationID": 1,
        "name": "First Configuration",
        "lastModified": "2022-07-11T08:52:40.5432508",
        "revision": 94,
        "kioskType": 1
    },
    {
        "configurationID": 2,
        "name": "Second Configuration",
        "lastModified": "2022-04-13T10:57:19.3491193",
        "revision": 66,
        "kioskType": 2
    }
]
```

**POST**
**/api/deviceconfiguration** **- create a new configuration**

**Sample request body:**
Including templateconfigurationid (integer) will copy all of the settings from the supplied(existing) configuration.
Including filesetid (integer) will assign the specified fileset to your new configuration

```
{
    "name": "test configuration",
    "kiosktype": 1, //1 = Kiosk Launcher, 2 = Kiosk Browser
    "templateconfigurationid": null,
    "filesetid": null
    
}
```

**Sample Response:**
```json
{
    "success": true,
    "message": "",
    "configuration": {
        "configurationID": 9314,
        "name": "api configuration",
        "lastModified": "2025-11-03T12:28:55.7248028Z",
        "revision": 1,
        "kioskType": 2
    }
}
```
**PATCH**
**/api/deviceconfiguration?id=[configurationid]** updates a**&#160;configuration**

**Sample request body:**
Including filesetid (integer) will assign the specified fileset to your configuration and notify associated devices, specifying zero will remove the fileset association

```
{
    "name": "test configuration (updated)",
    "filesetid": 0
}
```

# Push Endpoint

**GET**
**/api/push?identifier=b60e7c95-d160-439d-8dc6-4c7e1648bd1a&type=1** - send push/device action to device identifier and push type 1
**/api/pushbytag?tags=tag1,tag2&type=1** - send push/device action to all devices with tags "tag1" and/or "tag2", tags parameter should comma separated if more than one tag is specified, push type 1

Example url: https://kioskapi.azure-api.net/klr/api/push

**Sample Response**
```json
{
    "success":true,
    "message":"Push sent"
}
```

**Valid Push Types**

[1] Request Status from Device (heartbeat to server, battery, screen state etc...)
[2] Restart Application
[3] Take App Screenshot/device screenshot (Kiosk Browser)
[4] Open WiFi Settings
[5] Identify device (show message box)
[6] Download configuration
[7] Screen Off
[8] Screen On
[9] Open Kiosk Browser/Launcher Settings
[10] Open TeamViewer QuickSupport or TeamViewer Host (if installed)
[12] Open Date & Time Settings
[14] Locate device with sound
[15] Upload diagnostic logs (if enabled)
[16] Clear app data (Kiosk Launcher)
[17] Reload Home Page (Kiosk Browser)
[18] Clear WebView Cache and reload Kiosk Url (Kiosk Browser)
[19] Clear WebView Cookies and reload Kiosk Url (Kiosk Browser)
[20] Clear WebView Forms and reload Kiosk Url (Kiosk Browser)
[21] Clear WebView Cache, Cookies & Forms and reload Kiosk Url (Kiosk Browser)
[22] Clear WebView HTML5 WebStorage (Kiosk Browser)
[23] Execute JavaScript kbRemoteFunction() on device (Kiosk Browser)

[201] Reboot device
[202] Update Kiosk Browser/Launcher to latest version
[203] Update Kiosk Browser/Launcher to beta version
[204] Set Kiosk Browser/Launcher as the default launcher


# File Set Endpoint

**GET**
**/api/fileset** - get all file sets on account
**/api/fileset?id=[filesetid]** - get file set on account using it's unique id

Example url: https://kioskapi.azure-api.net/klr/api/fileset

**Sample Response:**
```json
[
    {

        "fileSetID": 23,
        "name": "local",
        "lastModified": "2024-11-20T13:01:10.7376213",
        "awaitingDeployment": false,
        "assignments": 0
    },
    {

        "fileSetID": 24,
        "name": "test file set",
        "lastModified": "2024-11-21T11:22:45.0756963",
        "awaitingDeployment": true,
        "assignments": 1
    }
]
```

**POST**
**/api/fileset - create a new file set**

**Sample request body:**
Include json in the request body as per example below:

```
{
    "name": "test file set"
}
```

**Sample Response:**
```json
{
    "success": true,
    "message": "",
    "fileset": {
        "fileSetID": 384,
        "name": "test file set1",
        "lastModified": "2025-11-03T11:03:43.0706328Z",
        "awaitingDeployment": false,
        "assignments": 0
    }
}
```

**PATCH**
**/api/fileset?id=[filesetid]** - update a single file set using it's unique id

**Sample request body:**
When using PATCH only the supplied values are updated. If for example you supply no value for the file set name, it will not change. Include json in the request body as per examples below:

```
{
    "deploychanges": true,
    "name": "test file set"
}
```

# File Set File Endpoint

**GET**
**/api/filesetfile?id=[filesetid]** - gets all files in the file set using it's unique id

Example url: https://kioskapi.azure-api.net/klr/api/filesetfile?id=24

**Sample Response:**
```json
{
    "success": true,
    "message": "",
    "name": "test file set",
    "awaitingdeployment": true,
    "files": [
        {
            "name": "customicon.png",
            "lastmodified": "2024-11-21T15:02:59Z"
        },
        {
            "name": "localcontent/index.htm",
            "lastmodified": "2024-11-21T15:02:59Z"
        }
    ]
}
```

**DELETE**
**/api/filesetfile?id=**[filesetid]** **- deletes a specified file from the file set using it's unique id

Example url: https://kioskapi.azure-api.net/klr/api/filesetfile?id=24

**Sample request body:**
Include json in the request body as per examples below:

```
{
    "path": "/localcontent/index.htm"
}
```

**POST**
**/api/filesetfile?id=[filesetid]** - upload a single file to the file set using it's unique id

**Sample request body:**
Please supply a single file as part of the form body as well as the following parameters as form data:
*Path: this should be the folder path and should not include the name of the file. i.e. /localcontent/. If the folder does not exist it will automatically get created.*

```
path: "/localcontent/"
```

| Whenever deleting a file or uploading a new file the "awaiting deployment" property is automatically set to true. You must deploy the changes by making a request (PATCH) to the File Set Endpoint for the specific File Set.