Download OpenAPI specification:Download
This is the first working version of the Kärcher External IoT API in production. Future updates and improvements are expected based on usage and feedback.
Before you can use the Kärcher External IoT API, you need to authenticate your requests. This section explains how to get access and use the API securely.
Note: If you don't have these credentials yet, please contact your Kärcher representative to request API access.
The API uses a secure authentication method called OAuth 2.0. Here's the simple process:
First, you need to get an access token using your credentials.
Choose your environment:
Production : https://auth.fds.kaercher.com/oauth2/token
Staging : https://auth.stage.fds.kaercher.com/oauth2/token
Access token rate limit: 10 requests/10 minutes
Make this request:
# Production Environment
curl -X POST https://auth.fds.kaercher.com/oauth2/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"
You'll get back a response like this:
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600
}
Important: Save the access_token value - you'll need it for the next step!
Now you can make API requests by including your token in the Authorization header.
Example API request:
curl -X GET https://api.fds.kaercher.com/external/v1/machines/specifications \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
| Problem | What it means | How to fix |
|---|---|---|
| 401 Unauthorized | Your credentials are invalid or expired | Check your Client ID and Client Secret. If using a token, get a new one |
| 403 Forbidden | You don't have permission for this action | Contact Kärcher to request additional permissions |
| 400 Bad Request | Your request format is incorrect | Make sure you're sending credentials in the request body, not as URL parameters |
| Token expired | Your access token has expired (after 1 hour) | Get a new token using the same process as Step 1 |
The Kärcher External IoT API supports multiple device families, each with distinct characteristics, operational patterns, and capabilities. Understanding these family-specific differences is crucial for proper API integration.
Note: While this API is primarily focused on robotic devices, it is a general IoT API and also offers access to non-robotic devices. Capabilities and available data for non-robotic devices may differ significantly from those of robots, and only basic information may be available for some device types.
Each device family represents a group of machines with similar functionality and operational behavior. While all families use the same API endpoints (/machine/{materialNumber}/{serialNumber}/), they differ significantly in:
Autonomous floor cleaning robots with routine-based operation
| Image | Material Number | Model | Description |
|---|---|---|---|
| 1.533-001.0 | KIRA B50 HW 1.0 | Midsize autonomous scrubber dryer with roller brushes | |
| 1.533-002.0 | KIRA B50 HW 2.0 | Midsize autonomous scrubber dryer with roller brushes | |
| 1.533-003.0 | KIRA BR50 HW 3.0 | Midsize autonomous scrubber dryer with roller brushes | |
| 1.533-050.0 | KIRA BD50 | Midsize autonomous scrubber dryer with disc brushes | |
| 1.533-013.0 | KIRA BR200 | Large autonomous scrubber dryer with roller brushes | |
| 1.533-014.0 | KIRA BD200 | Large autonomous scrubber dryer with disc brushes |
Key Characteristics:
Compact commercial vacuum cleaners with map-level operation
| Image | Material Number | Model | Description |
|---|---|---|---|
| 1.454-500.0 | CV50 | Professional dry vacuum | |
| 1.454-505.0 | CV50 USA | Professional dry vacuum |
Key Characteristics:
| State | Description | Data Type | Example Value / Structure |
|---|---|---|---|
| charging | Whether the robot is currently charging. | bool |
true / false |
| docked | Whether the robot is docked at its charging station. | bool |
true / false |
| freshWaterLevel | Current level of fresh water in the tank in Liters | number |
60 |
| inorbitEnabled | Indicates if integration with InOrbit cloud is enabled. | bool |
true / false |
| machineOperatingHours | Total operating hours of the machine (in seconds). | number |
356030 |
| machinePosition | Current GPS position of the robot. | object |
{ "accuracy": 12.808, "latitude": 51.8003658, "longitude": 7.7436499 } |
| repeatProgress | Progress of a repeated cleaning task or mission. | object |
{ "progress": 0.019999999552965164, "routeName": "Test1", "repeatPathId": "3", "repeatExecutionId": "1.533-002.0:020146-ad0978ae-62c2-498d-9dec-dc737200304e"}progress: current mission progress [0-1]repeatExecutionId: Internal ID of the current executionrepeatPathId: Internal ID of the routerouteName: Name of the Route, as given on the device |
| robotStatus | High-level status of the robot. | string |
one of Idle, Autonomous, Charging, Docking |
| serviceCounter | Various service and usage counters for maintenance tracking. | object |
{ "cleaning_time": "98:53:50.295718", "operation_time": "810:42:47.266423", "meter_count": 0, "service_date": "2025-06-10T15:25:06.794977", "suction_time": "00:00:00", "brush_time": "00:00:00", "sidebroom_time": "00:00:00", "dock_count": 0 } |
| softwareVersion | Current software version running on the robot. | string |
2.2.1 |
| routes | List of routes stored on the device. Each route describes an individual cleaning mission generated during a TeachIn session. See routes for the full data structure. Due to the 128 KB AWS IoT limit, capped at 330 items. | array of objects |
[{ "id": 44, "name": "4-long-loop-4", "startLandmark": "id_4", ... }] |
| routines | List of routines stored on the device. A routine is an ordered sequence of routes linked by shared landmarks. See routines for the full data structure. Due to the 128 KB AWS IoT limit, capped at 330 items. | array of objects |
[{ "id": 74, "name": "trip", "routeIds": [24, 26, 30, 24], ... }] |
| schedules | List of schedules stored on the device. Each schedule defines when a routine runs using an rrule recurrence string. See schedules for the full data structure. Due to the 128 KB AWS IoT limit, capped at 330 items. | array of objects |
[{ "id": 26, "name": "six", "idRoutine": 112, "rrule": "...", "color": "#b1b0a1", ... }] |
| State | Description | Data Type | Example Value / Structure |
|---|---|---|---|
| cleaningSchedules | List of scheduled cleaning tasks. | list of objects |
[] or [ { "scheduleId": "...", "time": "08:00", "days": ["Mon", "Wed"] } ] |
| location | Current map-relative position of the robot. | object |
{ "coordinateY": 20293, "mapId": "b0d7aab5-0d2d-44e0-9b31-8ec747b07879", "coordinateX": 37411 } |
| mapId | Unique identifier for the current map in use. | object |
{ "uniqueMapId": "b0d7aab5-0d2d-44e0-9b31-8ec747b07879" } |
| maps | List of available map IDs on the robot. | list of strings |
["8922622c-4418-4d21-9b37-f49f47274e8b", ...] |
| mcuMainInfo | Main MCU info, including state, map count, operation and cleaning time, and storage usage. | object |
{ "machineState": 0, "machineStateEnum": "CLEANING_MODE", "mapCount": 5, "totalOperation": 221170, "totalCleaningTime": 1120069, "usedStorage": 56 } |
| savedWifiNetworks | List of saved WiFi networks. | list of objects |
[] or [ { "ssid": "HRD", "mac": "24:cf:24:3f:95:ec" } ] |
| serviceCounter | Service and maintenance counters for various components. | object |
{ "brush": 1120069, "filter": 210888, "sensors": 43333, "dirtContainer": 12823, "rubberLip": 210888, "version": 1, "sideBroom": 393352 } |
| settings | Various robot settings and configuration parameters. | object |
{ "beep": {"status":0}, "hmiLanguage": {"language":"fi"}, "soundOperating": {"status":1}, "soundVolume": {"soundVolume":100}, "robotName": {"robotName":"Talvikangas uusi"}, "batteryTheftProtection": {"status":0}, "lock": {"status":0}, "blink": {"status":0}, "lockcode": {"code":9999}, "theftProtection": {"status":0}, "lights": {"status":1}, "soundWarning": {"status":1} } |
| softwareVersion | Current software version running on the robot. | string |
1.3.23-1.1.42-1.3.22 |
| time | Current time reported by the robot. | string |
2025-09-03T14:06:10.262+03 |
| wifiStatus | Current WiFi connection status and network details. | object |
{ "macAddress": "00:D6:CB:8D:F2:2C", "ipv6Address": "fe80::ac02:62ff:fea0:9aaf%dummy0", "signalStrength": -57, "ipv4Address": "192.168.31.129", "networkName": "HRD", "subnetMask": 0, "defaultGateway": "192.168.31.1" } |
Our cloud interfaces with cleaning devices by issuing specific commands. We currently support two primary device classes: Kira and CV50. Each class has a distinct set of commands and payload structures.
This section defines the specific command names, arguments, and behaviors available for the Kira device class.
Available since version 2.3.0.
These are argument-free commands used to control the execution state of the currently active mission or repeat.
missionPause: Pauses the currently active mission/repeat. This is the equivalent of the Pause button on the Kira's HMI. The mission can be resumed using the missionResume command.
missionResume: Resumes a currently paused mission/repeat. This is the equivalent of the Resume button on the Kira's HMI.
missionStop: Instantly cancels the active mission/repeat. The Kira will remain at its current position. Note: Starting a new mission/repeat at this location will likely fail, as the Kira requires a docking station or landmark to localize itself for every mission. This is the equivalent of the Cancel button on the Kira's HMI.
missionDriveBackAndSkip: Skips the current route in a routine after driving back to the docking station or landmark. This is the equivalent of the Skip button on the Kira's HMI.
missionInstinctiveDocking: Interrupts the current route and drives the Kira back to the docking station to exchange resources. Afterward, the Kira will return to the position where it was interrupted and continue the route.
missionDriveBackAndCancel: Cancels the current route/routine after driving back to the docking station or landmark. This is the recommended method for canceling a mission (preferred over missionStop), as it ensures the Kira is positioned to start new missions at a valid location.
These are commands used to create, update or destroy schedules on the robot.
All scheduling commands use an rrule string to define when a schedule runs. RRule is a standard format for expressing recurring calendar dates. The Kira device supports a specific subset of the full RRule specification, described below.
An rrule string is composed of two or three newline-separated (\n) components:
DTSTART — defines the start date and time with timezoneRRULE — defines the recurrence patternEXDATE (optional) — excludes specific dates from the seriesExample structure:
DTSTART;TZID=Europe/Berlin:20250826T114100\nRRULE:FREQ=DAILY;UNTIL=20250930T235900;INTERVAL=1\nEXDATE;TZID=Europe/Berlin:20250821T113100
Supported fields:
| Field | Description | Example |
|---|---|---|
DTSTART |
Start date and time. Must always include a timezone identifier. | DTSTART;TZID=Europe/Berlin:20250826T114100 |
FREQ |
Repetition unit. Supported values: DAILY, WEEKLY, MONTHLY. |
FREQ=DAILY |
COUNT |
Used only for one-time (non-repeating) schedules. Must be 1. Repeating schedules use UNTIL instead. |
COUNT=1 |
UNTIL |
End date for a repeating schedule (inclusive). Omitted for one-time schedules. | UNTIL=20250930T235900 |
INTERVAL |
Repetition interval, used together with FREQ. Supported range: 1–5. An INTERVAL=2 with FREQ=DAILY means every other day. |
INTERVAL=2 |
BYDAY |
Used with FREQ=WEEKLY to specify individual weekdays. Comma-separated values: MO, TU, WE, TH, FR, SA, SU. |
BYDAY=MO,TH,SU |
EXDATE |
Excludes specific occurrences from the series. Must include a timezone identifier and match the time component of DTSTART. |
EXDATE;TZID=Europe/Berlin:20250821T113100 |
Examples:
// A single, one-time schedule on the given DTSTART time
DTSTART;TZID=Europe/Berlin:20250428T161100\nRRULE:FREQ=DAILY;COUNT=1;INTERVAL=1
// A weekly repeating schedule on Mondays, Thursdays, and Sundays until 2025-09-01
DTSTART;TZID=Europe/Berlin:20250831T090800\nRRULE:FREQ=WEEKLY;UNTIL=20250901T235900;INTERVAL=1;BYDAY=MO,TH,SU
// A daily repeating schedule with 2025-08-21 excluded
DTSTART;TZID=Europe/Berlin:20250801T113100\nRRULE:FREQ=DAILY;UNTIL=20250822T235900;INTERVAL=1\nEXDATE;TZID=Europe/Berlin:20250821T113100
scheduleAddRegisters a new rrule-based schedule directly on the Kira device. It supports scheduling single routes, standard routines, or on-the-fly anonymous routines.
Parameters
| Name | Type | Description |
|---|---|---|
name |
string |
A free-form string to name the schedule. |
color |
string |
A hex code for the color displayed on the robot's HMI calendar. Supported values: #b1b0a1, #4b8969, #238c96, #b61a2d, #6e6e6e |
rrule |
string |
The recurring rule string defining the schedule (Kira specific RRULE format). |
routineId |
integer |
The ID of the routine to execute. Must exist in the routines telemetry. (Mutually exclusive with routeIds). |
routeIds |
array of integers |
An array of route IDs defining a new anonymous routine. IDs must exist in the routes telemetry and must be sequentially linked via start and end landmarks. (Mutually exclusive with routineId). |
Examples
// Adding a schedule for an existing routine (ID: 57)
{
"name": "a-routine-schedule",
"color": "#b1b0a1",
"rrule": "DTSTART;TZID=Europe/Berlin:20250824T114000\nRRULE:FREQ=DAILY;UNTIL=20250930T235900;INTERVAL=2",
"routineId": 57,
}
// Adding a schedule for a single existing route (ID: 18)
{
"name": "a-route-schedule",
"color": "#4b8969",
"rrule": "DTSTART;TZID=Europe/Berlin:20250824T114000\nRRULE:FREQ=DAILY;UNTIL=20250930T235900;INTERVAL=2",
"routeIds": [18],
}
// Adding a schedule for a new anonymous routine (Routes: 18, 23, 18)
{
"name": "a-new-routine-schedule",
"color": "#238c96",
"rrule": "DTSTART;TZID=Europe/Berlin:20250824T114000\nRRULE:FREQ=DAILY;UNTIL=20250930T235900;INTERVAL=2",
"routeIds": [18, 23, 18],
}
Response
Upon successful completion, the newly created scheduleId is returned within the statusDetails object. You can use this ID to correlate the schedule with the new entry in the schedules telemetry. Additionally, the new schedule entry will include the jobId of this command.
Note: statusDetails only supports string values. Ensure you parse scheduleId to an integer when using it in subsequent API calls.
{
"status": "SUCCEEDED",
"statusDetails": {
"scheduleId": "44"
},
"updatedAt": "2025-09-03T10:13:13.03Z"
}
scheduleChangeModifies an existing schedule. All parameters except scheduleId are optional. Any omitted parameter will retain its current value.
Parameters
| Name | Type | Description |
|---|---|---|
scheduleId |
integer |
Required. The unique ID of the schedule to update. Must exist in the schedules telemetry. |
name |
string |
Optional. A free-form string to rename the schedule. |
color |
string |
Optional. A hex code for the HMI calendar color. |
rrule |
string |
Optional. The recurring rule string defining the schedule. |
routineId |
integer |
Optional. The ID of the routine to execute. (Mutually exclusive with routeIds). |
routeIds |
array of integers |
Optional. An array of route IDs defining an anonymous routine. (Mutually exclusive with routineId). |
Examples
// Updating only name and color
{
"scheduleId": 22,
"name": "hustling-time",
"color": "#6e6e6e",
}
// Updating the rrule time and routine assignment
{
"scheduleId": 22,
"rrule": "DTSTART;TZID=Europe/Berlin:20250824T124000\nRRULE:FREQ=DAILY;UNTIL=20250930T235900;INTERVAL=2",
"routineId": 115,
}
// Excluding specific dates from an existing series
{
"scheduleId": 22,
"rrule": "DTSTART;TZID=Europe/Berlin:20250824T124000\nRRULE:FREQ=DAILY;UNTIL=20250930T235900;INTERVAL=2\nEXDATE;TZID=Europe/Berlin:20250814T163300,20250822T163300",
}
// Updating all properties in a single call
{
"scheduleId": 22,
"name": "hustling-time",
"color": "#6e6e6e",
"rrule": "DTSTART;TZID=Europe/Berlin:20250824T124000\nRRULE:FREQ=DAILY;UNTIL=20250930T235900;INTERVAL=2\nEXDATE;TZID=Europe/Berlin:20250814T163300,20250822T163300",
"routineId": 115,
}
scheduleNowInstantly schedules and executes a defined routine or set of routes.
Parameters
| Name | Type | Description |
|---|---|---|
routineId |
integer |
The ID of the routine to execute. Must exist in the routines telemetry. (Mutually exclusive with routeIds). |
routeIds |
array of integers |
An array of route IDs defining an anonymous routine. Must exist in the routes telemetry and be linked via start/end landmarks. (Mutually exclusive with routineId). |
scheduleRemoveRemoves an existing schedule from the Kira device.
Parameters
| Name | Type | Description |
|---|---|---|
scheduleId |
integer |
Required. The unique ID of the schedule to delete. Must exist in the schedules telemetry. |
This section shows a general end-to-end example of sending a command to a Kira machine, polling its status, and optionally cancelling or reviewing history. The example uses scheduleAdd to register a new daily cleaning schedule for an existing routine.
POST /machines/{materialNumber}/{serialNumber}/commands
curl -X POST https://api.fds.kaercher.com/external/v1/machines/1.533-002.0/000001/commands \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"commandName": "scheduleAdd",
"commandParameters": {
"name": "morning-clean",
"color": "#4b8969",
"rrule": "DTSTART;TZID=Europe/Berlin:20250826T070000\nRRULE:FREQ=DAILY;UNTIL=20250930T235900;INTERVAL=1",
"routineId": 57
}
}'
Response 200 OK:
{
"commandName": "scheduleAdd",
"commandParameters": {
"name": "morning-clean",
"color": "#4b8969",
"rrule": "DTSTART;TZID=Europe/Berlin:20250826T070000\nRRULE:FREQ=DAILY;UNTIL=20250930T235900;INTERVAL=1",
"routineId": 57
},
"createdAt": "2025-06-11T11:51:51.077Z",
"executionId": "36fxuYjGPr9QWCcjNgLg15"
}
Save the executionId from the response — you'll use it to track or cancel the execution.
GET /machines/command-execution/{executionId}
curl -X GET https://api.fds.kaercher.com/external/v1/machines/command-execution/36fxuYjGPr9QWCcjNgLg15 \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Response 200 OK:
{
"data": {
"executionId": "36fxuYjGPr9QWCcjNgLg15",
"commandName": "scheduleAdd",
"commandParameters": {
"name": "morning-clean",
"rrule": "DTSTART;TZID=Europe/Berlin:20250826T070000\nRRULE:FREQ=DAILY;UNTIL=20250930T235900;INTERVAL=1",
"color": "#4b8969",
"routineId": 6
},
"executionRequester": "7sup7pd...",
"createdAt": "2026-03-27T13:51:26.437Z",
"executionEvents": [
{
"status": "SUCCEEDED",
"updatedAt": "2026-03-27T13:54:38.635Z"
},
{
"status": "QUEUED",
"updatedAt": "2026-03-27T13:51:29.402Z"
},
{
"status": "REQUESTED",
"updatedAt": "2026-03-27T13:51:24.062Z"
}
]
}
}
DELETE /machines/command-execution/{executionId}
A command can only be cancelled if it is in the QUEUED or IN_PROGRESS status.
curl -X DELETE https://api.fds.kaercher.com/external/v1/machines/command-execution/36fxuYjGPr9QWCcjNgLg15 \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Returns 204 No Content on success.
GET /machines/{materialNumber}/{serialNumber}/command-executions
curl -X GET "https://api.fds.kaercher.com/external/v1/machines/1.533-002.0/000001/command-executions?limit=10&sort=desc" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Notes:
- For argument-free commands such as
missionPause,missionResume, andmissionStop, use an emptycommandParameters: {}.- The
scheduleAddexample above registers a daily routine (ID57) running at 07:00 Berlin time from 2025-08-26 through 2025-09-30.- Rate limit: 5 requests/second on command endpoints.
Unlike the Kira class, the CV50 device class operates using a single, unified top-level command called cv50_set. All specific actions, configurations, and operations are passed as sub-commands within the payload of this main command.
cv50_set):The payload for a cv50_set command must contain a keys array. Currently, this array is strictly limited to a single element. This single object within the array must contain exactly one key-value pair, where the key is the sub-command string (e.g., "settings.lights") and the value is its corresponding parameter object.
Payload Example:
{
"keys": [
{
"settings.lights": {
"status": 0.0
}
}
]
}
Below are the available sub-commands, their parameters, and the expected JSON structures for their parameter objects.
cleaningProfile.*)Commands for managing maps, schedules, and cleaning profiles.
cleaningProfile.schedule.setCreates or updates a cleaning schedule for a specific map.
Parameters
| Name | Type | Description |
|---|---|---|
weekDays |
array of integers |
Days of the week to run (0 = Monday, 1 = Tuesday, etc.). Example: [0, 2] for Mon/Wed. |
startTime |
string |
Start time in UTC+0 timezone, formatted as hh:mm (e.g., "08:01"). |
repetition |
integer |
Schedule frequency. 0 = once, 1 = weekly. |
mode |
integer |
Cleaning mode. 0 = normal, 1 = eco, 2 = boost. |
mapId |
string (uuid) |
The UUID of the map. |
scheduleId |
string (uuid) |
The unique UUID of the schedule. |
Parameter JSON Example:
{
"weekDays": [0, 2],
"startTime": "08:01",
"repetition": 0,
"mode": 1,
"mapId": "82e79191-c216-43ea-a963-67b6d2a4b82e",
"scheduleId": "7e0adfd5-e65a-488e-954d-70b05219b137"
}
cleaningProfile.schedule.deleteDeletes a specific schedule from a profile.
Parameters
| Name | Type | Description |
|---|---|---|
scheduleId |
string (uuid) |
The UUID of the schedule to delete. |
mapId |
string (uuid) |
The UUID of the associated map. |
Parameter JSON Example:
{
"scheduleId": "7e0adfd5-e65a-488e-954d-70b05219b137",
"mapId": "82e79191-c216-43ea-a963-67b6d2a4b82e"
}
cleaningProfile.deleteDeletes an entire map profile.
Parameters
| Name | Type | Description |
|---|---|---|
mapId |
string (uuid) |
The full UUID-v4 string of the map to delete. |
Parameter JSON Example:
{
"mapId": "82e79191-c216-43ea-a963-67b6d2a4b82e"
}
settings.*)Commands for configuring the robot's hardware settings, security, and user interface.
Parameters & Examples
| Sub-Command | Parameter(s) | Description | Parameter JSON Example |
|---|---|---|---|
settings.lockcode |
code: integer |
Sets a 4-digit PIN code. | {"code": 1234} |
settings.lock |
status: integer |
Enables/disables the device lock (1 = true/enabled). |
{"status": 0} |
settings.batteryTheft |
status: integer |
Activates (1) or deactivates (0) battery theft protection. |
{"status": 1} |
settings.theftProtection |
status: integer |
Activates (1) or deactivates (0) robot theft protection. |
{"status": 1} |
settings.beep |
status: integer |
Triggers audio feedback so the user can locate the robot. | {"status": 1} |
settings.blink |
status: integer |
Triggers visual feedback so the user can locate the robot. | {"status": 1} |
settings.lights |
status: number |
Activates (1.0) or deactivates (0.0) status LEDs on the robot. |
{"status": 1.0} |
settings.soundVolume |
soundVolume: integer |
Sets audio volume from 0 to 100 (0 disables sound). |
{"soundVolume": 50} |
settings.soundWarning |
status: integer |
Toggles warning sounds on (1) or off (0). |
{"status": 1} |
settings.soundOperating |
status: integer |
Toggles operational sounds on (1) or off (0). |
{"status": 1} |
settings.robotName |
robotName: string |
Sets an arbitrary user-defined name for the robot. | {"robotName": "robot name"} |
settings.reset |
settings: integer firmware: integer |
Resets settings to factory defaults and unclaims the device. | {"settings": 1, "firmware": 1} |
settings.hmiLanguageSets the interface language of the robot's HMI.
Parameters
| Name | Type | Description |
|---|---|---|
hmiLanguage |
string |
A 2-letter language code. |
Supported Codes:
de (German), fr (French), nl (Dutch), en (English), sv (Swedish), no (Norwegian), fi (Finnish), da (Danish), pl (Polish), cs (Czech), sk (Slovak), ja (Japanese), ko (Korean), es (Spanish), pt (Portuguese), it (Italian), el (Greek), tr (Turkish), ru (Russian), ar (Arabic), zh (Chinese), hr (Croatian), sl (Slovenian), sr (Serbian), uk (Ukrainian), ro (Romanian), hu (Hungarian), et (Estonian), bg (Bulgarian), lv (Latvian).
Parameter JSON Example:
{
"hmiLanguage": "en"
}
cleaning.*)Real-time commands to control the robot's physical movement and cleaning state.
| Sub-Command | Parameter(s) | Description | Parameter JSON Example |
|---|---|---|---|
cleaning.continue |
(None) | Resumes cleaning if the robot was previously paused. | {} |
cleaning.pause |
(None) | Pauses the current cleaning operation. | {} |
cleaning.start |
mapId: string |
Attempts to start cleaning on the given map UUID. Use "basic" for basic cleaning mode without a map. | {"mapId": "82e79191-c216..."} |
cleaning.stop |
(None) | Instantly terminates the current cleaning or map exploration. | {} |
cleaning.returnHome |
(None) | Commands the robot to return to its home position/docking station. | {} |
remote.*)| Sub-Command | Parameter(s) | Description | Parameter JSON Example |
|---|---|---|---|
remote.start |
(None) | Triggers the robot to start remote control pairing via Bluetooth. | {} |
This section shows an end-to-end example of sending a cv50_set command to a CV50 machine. The example updates the robot's sound volume setting.
POST /machines/{materialNumber}/{serialNumber}/commands
curl -X POST https://api.fds.kaercher.com/external/v1/machines/1.454-500.0/000042/commands \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"commandName": "cv50_set",
"commandParameters": {
"keys": [
{
"settings.soundVolume": {
"soundVolume": 75
}
}
]
}
}'
Response 200 OK:
{
"commandName": "cv50_set",
"commandParameters": {
"keys": [
{
"settings.soundVolume": {
"soundVolume": 75
}
}
]
},
"createdAt": "2025-06-11T12:00:00.000Z",
"executionId": "7t8wChhKBuuD4ToGqPYYYS"
}
GET /machines/command-execution/{executionId}
curl -X GET https://api.fds.kaercher.com/external/v1/machines/command-execution/7t8wChhKBuuD4ToGqPYYYS \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Response 200 OK:
{
"data": {
"executionId": "7t8wChhKBuuD4ToGqPYYYS",
"commandName": "cv50_set",
"commandParameters": {
"keys": [
{
"settings.soundVolume": {
"soundVolume": 75
}
}
]
},
"executionRequester": "7sup7pd...",
"createdAt": "2026-03-27T13:27:30.018Z",
"executionEvents": [
{
"status": "SUCCEEDED",
"updatedAt": "2026-03-27T13:41:40.336Z"
},
{
"status": "QUEUED",
"updatedAt": "2026-03-27T13:27:33.573Z"
},
{
"status": "REQUESTED",
"updatedAt": "2026-03-27T13:27:27.206Z"
}
]
}
}
DELETE /machines/command-execution/{executionId}
A command can only be cancelled if it is in the QUEUED or IN_PROGRESS status.
curl -X DELETE https://api.fds.kaercher.com/external/v1/machines/command-execution/7t8wChhKBuuD4ToGqPYYYS \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Returns 204 No Content on success.
Note: The
keysarray must contain exactly one sub-command object per request. To apply multiple settings, send separatecv50_setcommands.
The Kira device publishes structured telemetry data for its routes, routines, and schedules. These telemetry datapoints reflect the on-device state and are available via the machine status API.
Note on size limits: Due to the 128 kB IoT message size limit, each telemetry datapoint is capped at a maximum of 330 items. Any items that exceed this limit are published separately under the corresponding overflow key (e.g.,
routesOverflow,routinesOverflow,schedulesOverflow). A prioritization strategy is applied to ensure the most relevant items are always included within the limit — items that were recently created, modified, or executed take priority. The order of items in the array does not indicate this priority.
routesRoutes describe individual cleaning missions that were manually recorded during a TeachIn session.
Example item:
{
"id": 44,
"name": "4-long-loop-4",
"startLandmark": "id_4",
"endLandmark": "id_4",
"createdAt": "2025-08-15T09:33:34.209849Z",
"modifiedAt": "2025-05-30T13:37:05.099357Z",
"thumbnailZipS3": "11989085954014531794.44_mission.zip",
"mapZipS3": "14862309742929315492.44.zip",
"duration": "00:15:00",
"postChargingDuration": "00:15:00"
}
Fields:
| Field | Type | Description |
|---|---|---|
id |
int |
Primary key identifying the route on the Kira device it was generated on. |
name |
string |
User-defined freeform name for the route. |
startLandmark |
string |
The start landmark, identified by an ArUco code at the beginning of the route. |
endLandmark |
string |
(Optional) The end landmark of the route, or empty if the route ends without a landmark. |
createdAt |
string |
Creation timestamp in ISO 8601 format. |
modifiedAt |
string |
Last modification timestamp in ISO 8601 format. |
thumbnailZipS3 |
string |
S3 ID of the zip file containing the route thumbnail (thumbnail.svg). |
mapZipS3 |
string |
S3 ID of the zip file containing the route map. |
duration |
string |
Estimated duration of the route execution. |
postChargingDuration |
string |
Estimated duration of charging after route execution. |
routinesA routine is an ordered sequence of routes, where each successive route starts at the end landmark of the previous one.
Example item:
{
"id": 74,
"createdAt": "2025-08-15T09:33:34.209849Z",
"modifiedAt": "2025-04-28T15:07:56.699435Z",
"name": "trip",
"routeIds": [24, 26, 30, 24],
"anonymous": false,
"duration": "00:15:00",
"postChargingDuration": "00:15:00"
}
Fields:
| Field | Type | Description |
|---|---|---|
id |
int |
Primary key identifying the routine on the Kira device. |
createdAt |
string |
Creation timestamp in ISO 8601 format. |
modifiedAt |
string |
Last modification timestamp in ISO 8601 format. |
name |
string |
User-defined freeform name for the routine. |
routeIds |
[]int |
Ordered array of route IDs to execute. References the id field in the routes telemetry. |
anonymous |
bool |
Marks the routine as internally generated. Anonymous routines are not intended to appear in general routine listings visible to the user. |
duration |
string |
Estimated total duration of the routine execution. |
postChargingDuration |
string |
Estimated duration of charging after routine execution. |
Note: A routine is only valid if each pair of neighboring routes shares the same landmark — the
endLandmarkof one route must match thestartLandmarkof the next.
schedulesSchedules define when routines are executed, using an rrule string for recurrence (see RRule — Recurrence Rules above).
Example item:
{
"id": 26,
"name": "six",
"createdAt": "2025-08-15T09:33:34.209849Z",
"modifiedAt": "2025-04-28T15:07:56.699435Z",
"idRoutine": 112,
"rrule": "DTSTART;TZID=Europe/Berlin:20250925T114300\nRRULE:FREQ=DAILY;COUNT=1;INTERVAL=1",
"color": "#b1b0a1",
"idParentSchedule": null
}
Fields:
| Field | Type | Description |
|---|---|---|
id |
int |
Primary key identifying the schedule on the Kira device. |
name |
string |
User-defined freeform name for the schedule. |
createdAt |
string |
Creation timestamp in ISO 8601 format. |
modifiedAt |
string |
Last modification timestamp in ISO 8601 format. |
idRoutine |
int |
ID of the routine to execute. References the id field in the routines telemetry. |
rrule |
string |
Recurrence rule string defining when the schedule runs. See RRule — Recurrence Rules. |
color |
string |
Hex color code displayed in the Kira HMI calendar. One of: #b1b0a1, #4b8969, #238c96, #b61a2d, #6e6e6e. |
idParentSchedule |
int? |
(Optional) If a single event deviates from the recurring series, this points to the parent schedule's id. |
jobId |
string? |
(Optional) Set when the schedule was created via the scheduleAdd command. Contains the jobId of that command, allowing you to correlate the command with this entry. Not persisted — may be absent in subsequent publishes with the same id, but is guaranteed to be present immediately after a successful scheduleAdd. |
Note: Schedules can only reference routines. To schedule a single route, Kira automatically generates an anonymous routine containing that route.
idParentSchedule — Deviating EventsA single occurrence within a recurring schedule can deviate from the rest of the series. This is represented by two linked schedule entries:
EXDATE entry that removes the specific occurrence from the normal series.idParentSchedule.Example:
[
{
"id": 21,
"name": "one",
"createdAt": "2025-08-15T09:30:32.335724",
"modifiedAt": "2025-08-15T09:30:32.335724",
"idRoutine": 97,
"rrule": "DTSTART;TZID=Europe/Berlin:20250819T114000\nRRULE:FREQ=DAILY;UNTIL=20250830T235900;INTERVAL=1\nEXDATE;TZID=Europe/Berlin:20250819T114000",
"color": "#b1b0a1",
"idParentSchedule": null
},
{
"id": 29,
"name": "one",
"createdAt": "2025-08-19T09:38:59.870097",
"modifiedAt": "2025-08-15T09:30:32.335724",
"idRoutine": 97,
"rrule": "DTSTART;TZID=Europe/Berlin:20250819T135500\nRRULE:FREQ=DAILY;COUNT=1;INTERVAL=1",
"color": "#b1b0a1",
"idParentSchedule": 21
}
]
In this example, schedule 21 is a daily recurring series with the occurrence on 2025-08-19 excluded via EXDATE. Schedule 29 is a one-time replacement for that excluded occurrence, running at a different time and pointing back to its parent via idParentSchedule: 21.
For legal information and imprint, please visit: Kärcher Legal Information
The following endpoints are available for interacting with the Kärcher External IoT API:
Retrieves the machine specifications. The rate limit of this endpoint is 5 requests per second.
| registeredSince | string <date> Example: registeredSince=2025-01-10 Filter machines by registration Date. |
| limit | integer Default: 10 Number of results to return. |
| cursor | string Example: cursor=eyJpZCI6IjU1MGU4NDAwLWUyOWItNDFkNC1hNzE2LTQ0NjY1NTQ0MDAwMCIsIm9mZnNldCI6MjB9 Cursor for pagination. |
| sort | string Enum: "asc" "desc" Sort the results by registration date. Use |
{- "data": [
- {
- "machineId": "taPi9tj3PFLY6wrdDVp8A6",
- "generic": {
- "deviceType": "cleaning_machine",
- "registrationDate": "2022-01-26T18:30:44.971Z",
- "manufacturer": "Kaercher",
- "model": "B 40 W DOSE",
- "serial": "1.259-010.2;012199",
- "serialNumber": "012199",
- "materialNumber": "1.259-010.2",
- "resourceOwnerAssetId": "B40 at AKW"
}, - "deviceTypeSpecific": {
- "deviceImage": {
- "fullSizeImage": {
- "title": "Image title",
- "description": "Image description",
- "fileName": "File name",
- "contentType": "png",
- "width": 5245,
- "height": 3497,
- "size": 567
}
}
}
}
], - "pageInfo": {
- "totalCount": 1000,
- "hasNextPage": true,
- "endCursor": "jfioajoiwjrfoasjdfoiejwaofija"
}
}Retrieves the current statuses of a single/multiple machine(s), including generic and device-specific data. Machine Identifier is the "machineId" obtained in the response of the /specifications endpoint. The rate limit of this endpoint is 5 requests per second.
| machineIds required | Array of strings <= 10 items Example: machineIds=bWDsBhPuVFP3ekfWS49yUg,aW4iKdShK2RhgxuFmYZ18k Unique identifier of the machine(s), separated by commas. |
In this example, the machine connected to the cloud ("lastConnected" via MQTT) at 2025-02-11T18:40:44.971Z, but the last time it exchanged telemetry or activity data was at 2025-02-11T18:30:44.971Z ("lastContact"). This means that during the 10-minute interval, there was no data exchange despite network-level connectivity.
{- "data": [
- {
- "machineId": "bWDsBhPuVFP3ekfWS49yUg",
- "lastConnected": "2025-02-11T18:40:44.971Z",
- "lastContact": "2025-02-11T18:30:44.971Z",
- "states": [
- {
- "name": "machineOperatingDuration",
- "value": "PT4H12M45S",
- "timestamp": "2025-02-11T18:30:44.971Z"
}, - {
- "name": "batteryChargeLevel",
- "value": "0.55",
- "timestamp": "2025-02-11T18:30:44.971Z"
}, - {
- "name": "batteryDischargeStatus",
- "value": "OK",
- "timestamp": "2025-02-11T18:30:44.971Z"
}, - {
- "name": "charging",
- "value": "true",
- "timestamp": "2025-02-11T18:30:44.971Z"
}, - {
- "name": "docked",
- "value": "true",
- "timestamp": "2025-02-11T18:30:44.971Z"
}, - {
- "name": "freshWaterLevel",
- "value": "15",
- "timestamp": "2025-02-11T18:30:44.971Z"
}, - {
- "name": "robotStatus",
- "value": "Idle",
- "timestamp": "2025-02-11T18:30:44.971Z"
}, - {
- "name": "softwareVersion",
- "value": "2.1.5",
- "timestamp": "2025-02-11T18:30:44.971Z"
}, - {
- "name": "vda5050Enabled",
- "value": "false",
- "timestamp": "2025-02-11T18:30:44.971Z"
}, - {
- "name": "phoneSignal",
- "value": "-1",
- "timestamp": "2025-02-11T18:30:44.971Z"
}, - {
- "name": "wifiSignal",
- "value": "0.412",
- "timestamp": "2025-02-11T18:30:44.971Z"
}, - {
- "name": "machinePosistion",
- "value": "{\"accuracy\":30,\"latitude\":51.9158493,\"longitude\":5.4581855}",
- "timestamp": "2025-02-11T18:30:44.971Z"
}, - {
- "name": "repeatProgress",
- "value": "{\"progress\":0,\"repeatPathId\":\"0\",\"routeName\":\"RouteA\"}",
- "timestamp": "2025-02-11T18:30:44.971Z"
}, - {
- "name": "scheduledTasks",
- "value": "[{\"scheduleId\":\"bWDsBhPuVFP3ekfWS49yUg-schedhaedfksdj\",\"machine\":\"bWDsBhPuVFP3ekfWS49yUg\",\"targetType\":\"ROUTINE\",\"targetDetails\":{\"routineId\":\"bWDsBhPuVFP3ekfWS49yUg-qwerdahaedfksdj\",\"routeSequence\":[{\"routeId\":\"bWDsBhPuVFP3ekfWS49yUg-routdahaedfksdj\",\"routeName\":\"Route A\",\"startLandmark\":\"100\",\"endLandmark\":\"200\"}]},\"startDateTime\":\"2025-03-01T08:00:00Z\",\"recurrence\":{\"rrule\":\"FREQ=DAILY;INTERVAL=2;COUNT=10\"}}]",
- "timestamp": "2025-02-11T18:30:44.971Z"
}
]
}
], - "errors": [
- {
- "machineId": "aW4iKdShK2RhgxuFmYZ18k",
- "message": "invalidDevice"
}
]
}Retrieves customer notifications related to machines. The rate limit of this endpoint is 5 requests per second.
| machineIds | string Example: machineIds=bWDsBhPuVFP3ekfWS49yUg,aW4iKdShK2RhgxuFmYZ18k Unique identifier of a single/multiple machine(s), separated by commas. If omitted, returns notifications for all machines. Machine Identifier is the "machineId" obtained in the response of the /specifications endpoint. |
| limit | integer Default: 10 Example: limit=10 Number of results to return. |
| cursor | string Example: cursor=eyJpZCI6IjU1MGU4NDAwLWUyOWItNDFkNC1hNzE2LTQ0NjY1NTQ0MDAwMCIsIm9mZnNldCI6MjB9 Cursor for pagination. |
| sort | string Enum: "asc" "desc" Sort the results by received date. Use |
{- "data": [
- {
- "machineId": "bWDsBhPuVFP3ekfWS49yUg",
- "category": "string",
- "code": "999998",
- "data": "{\"reminder\":\"Reminder is due\",\"topic\":\"Hygenic cleaning\",\"description\":\"Hygenic cleaning of the machine to kill 99.99% of the bacteria\"}",
- "receivedAt": "2025-02-10T07:00:42.582Z",
- "recordedAt": "2025-02-10T07:00:42.582Z",
- "severity": "Major",
- "status": "string",
- "type": "Reminder"
}
], - "pageInfo": {
- "endCursor": "fkjaosijfoiweqjrfasjdlfjasdkl",
- "hasNextPage": true,
- "totalCount": 1000
}
}Retrieves cleaning reports for machines within a specified time range. If the machine parameter is provided, it filters reports for that specific machine. The rate limit of this endpoint is 5 requests per second.
| machineId | string Example: machineId=bWDsBhPuVFP3ekfWS49yUg Unique identifier of the machine. If omitted, returns reports for all machines. Machine Identifier is the "machineId" obtained in the response of the /specifications endpoint. |
| startDate required | string <date-time> Example: startDate=2025-01-01T00:00:00.000Z Start date for filtering cleaning reports. |
| endDate required | string <date-time> Example: endDate=2025-01-12T00:00:00.000Z End date for filtering cleaning reports.
Must be later than |
| limit | integer Default: 15 Example: limit=15 Number of results to return. |
| cursor | string Example: cursor=eyJpZCI6IjU1MGU4NDAwLWUyOWItNDFkNC1hNzE2LTQ0NjY1NTQ0MDAwMCIsIm9mZnNldCI6MjB9 Cursor for pagination. |
| sort | string Enum: "asc" "desc" Sort results based on the completion date. Use |
{- "data": [
- {
- "reportId": "1.533-002.0-001004-repdahaedfksdj",
- "machineId": "bWDsBhPuVFP3ekfWS49yUg",
- "materialNumber": "1.533-001.0",
- "serialNumber": "000001",
- "actualOperatingTimeInSeconds": 986,
- "battery": 0.24575998535156252,
- "cleanedSquareMeter": 123,
- "detergents": 0.02209564298391342,
- "water": 0.02209564298391342,
- "distance": 335.5448913574219,
- "startedAt": "2024-01-30T10:49:13.381Z",
- "finishedAt": "2024-01-30T10:51:17.800Z",
- "classification": "ROBOT",
- "executionMode": "ROUTINE",
- "executedRoutineId": "bWDsBhPuVFP3ekfWS49yUg-dafedahaedfksdj",
- "mapIds": [
- "bWDsBhPuVFP3ekfWS49yUg-mapaahaedfksdj"
], - "suctionMode": "Eco"
}
], - "pageInfo": {
- "endCursor": "fkjaosijfoiweqjrfasjdlfjasdkl",
- "hasNextPage": true,
- "totalCount": 1000
}
}Retrives a URL to download the map image of a cleaning report. The rate limit of this endpoint is 5 requests per second.
| materialNumber required | string Example: 1.533-001.0 Material number of the machine. |
| serialNumber required | string Example: 000001 Serial number of the machine. |
| mapId required | string Example: 550e8400-e29b-41d4-a716-446655440000 Unique identifier of the cleaning report map image. This value is obtained from the |
{- "data": {
- "mapId": "550e8400-e29b-41d4-a716-446655440000",
}
}Downloads files including cleaning report maps, map backgrounds, general files, and attachments. This is a new general-purpose endpoint that supports all file types. All files are organized by machine (material number + serial number) and categorized by file type. The rate limit of this endpoint is 5 requests per second.
Note: For cleaning report maps, you can also use the existing dedicated endpoint /machines/{materialNumber}/{serialNumber}/cleaning-reports-map/{mapId}.
| materialNumber required | string Example: 1.533-001.0 Material number of the machine. |
| serialNumber required | string Example: 000001 Serial number of the machine. |
| fileType required | string Enum: "cleaning-report-map" "robotics-map" "general" "attachment" Example: cleaning-report-map Category of the file to download. Can take these values:
|
| fileId required | string Example: 550e8400-e29b-41d4-a716-446655440000 Unique identifier of the file. |
{- "data": {
- "fileId": "550e8400-e29b-41d4-a716-446655440000",
}
}Retrieves a list of available commands for machine types. Machine Type Identifier is Kärcher
| machineTypes required | Array of strings <= 10 items Example: machineTypes=1.533-002.0,0.300-268.0 List of up to 10 machine type identifiers. |
{- "data": [
- {
- "machineType": "1.533-002.0",
- "name": "command-name",
- "parametersSchema": "{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"$id\":\"https://ipp.kaercher.com/schemas/cloudToDevice/commands/getLogs/parameters/1.0.0/schema\",\"title\":\"getLogs parameters\",\"description\":\"getLogs command parameters\",\"type\":\"object\",\"properties\":{},\"additionalProperties\":false}",
- "description": "Command description",
- "createdAt": "2025-04-22T02:04:49.770Z",
- "updatedAt": "2025-04-22T02:04:49.770Z"
}
]
}Sends a command to a specified machine. Machine Identifier is Kärcher
| materialNumber required | string Example: 1.533-002.0 Material Number of the machine. |
| serialNumber required | string Example: 000001 Serial Number of the machine. |
| commandName required | string |
| commandParameters required | object Parameters for the command as an object. |
{- "commandName": "setHorn",
- "commandParameters": {
- "value": 5
}
}{- "commandName": "getLogs",
- "commandParameters": {
- "numberOfLogFiles": 5
}, - "createdAt": "2025-06-11T11:51:51.077Z",
- "executionId": "36fxuYjGPr9QWCcjNgLg15"
}Retrieves the execution history of commands sent to a specified machine. The rate limit of this endpoint is 5 requests per second.
| materialNumber required | string Example: 1.533-002.0 Material Number of the machine. |
| serialNumber required | string Example: 000001 Serial Number of the machine. |
| limit | integer Default: 10 Example: limit=10 Number of results to return. |
| cursor | string Example: cursor=eyJpZCI6IjU1MGU4NDAwLWUyOWItNDFkNC1hNzE2LTQ0NjY1NTQ0MDAwMCIsIm9mZnNldCI6MjB9 Cursor for pagination. |
| sort | string Enum: "asc" "desc" Sort results based on the execution date. Use |
{- "data": [
- {
- "executionId": "7t8wChhKBuuD4ToGqPYYYS",
- "deviceId": "taPi9tj3PFLY6wrdDVp8A6",
- "commandName": "getLogs",
- "commandParameters": {
- "numberOfLogFiles": 5
}, - "createdAt": "2025-02-17T13:37:01.598Z"
}
], - "pageInfo": {
- "totalCount": 1000,
- "hasNextPage": true,
- "endCursor": "jfioajoiwjrfoasjdfoiejwaofija"
}
}Retrieves the execution details of a specific command execution. The rate limit of this endpoint is 5 requests per second.
| executionId required | string Example: 7t8wChhKBuuD4ToGqPYYYS Unique identifier of the command execution. |
{- "executionId": "36fxuYjGPr9QWCcjNgLg15",
- "commandName": "command-name",
- "commandParameters": {
- "command": "cat /proc/cpuinfo"
}, - "executionRequester": "1jm9f8eu78edua5avnqnmc7ph0",
- "createdAt": "2025-04-22T02:04:49.770Z",
- "executionEvents": [
- {
- "status": "CANCELED",
- "updatedAt": "2025-04-22T02:04:49.770Z"
}
]
}Cancels an ongoing command execution. The command execution events will receive the status 'CANCELLED'. This may not happen immediately, so the client may need to check the status again with the get command execution details endpoint. The command can only be cancelled if it is in the 'QUEUED' or 'IN_PROGRESS' status.
| executionId required | string^[1-9A-HJ-NP-Za-km-z]{22}$ Example: 7t8wChhKBuuD4ToGqPYYYS Unique identifier of the command execution. |
{- "status": 400,
- "message": "invalid_parameter"
}Establishes a WebSocket (wss://) connection for some real-time machine
telemetry updates('location', 'cleaningReport', 'mcuMainInfo', 'robotStatus', 'repeatProgress', 'pose').
Connection URL
Replace the server base URL with the WebSocket server URL:
PROD: wss://websocket.fds.kaercher.com
STAGE: wss://websocket.stage.fds.kaercher.com
Example connection URL:
wss://websocket.fds.kaercher.com?materialNumber=1.454-500.0&serialNumber=002005&accessToken={accessToken}
Authentication
Pass the OAuth2 access token (obtained via client credentials flow) as
the accessToken query parameter. The required scope is
external-api/websocket:connect.
Datapoints response:
{
"type": "datapoints",
"data": {
"location": {
"coordinateX": 1636,
"coordinateY": 6355,
"mapId": "124b7f11-3d80-4a2b-b5a7-345835b2f465"
}
},
"timestamp": 1773645666755
}
Disconnection
Closing the WebSocket connection ($disconnect) removes the connection
from the server automatically. No explicit message is required.
| materialNumber required | string Example: materialNumber=1.454-500.0 The material number of the machine to subscribe to. Included in the WebSocket URL as a query string parameter. |
| serialNumber required | string Example: serialNumber=002005 The serial number of the machine to subscribe to. Included in the WebSocket URL as a query string parameter. |
| accessToken required | string Example: accessToken=eyJraWQiOiJleGFtcGxlIiwiYWxnIjoiUlMyNTYifQ... OAuth2 access token obtained via the client credentials flow. Used by the WebSocket authorizer to authenticate the connection request. Required scope: |
{- "status": 400,
- "message": "invalid_parameter"
}