curl --request PATCH \
--url https://fleet-api.flatpeak.com/devices/{device_id}/settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"battery": {
"backup_reserve_percent": 30
}
}
'{
"object": "device_settings",
"device_id": "dev_63a6087272941ef077a8fd3e",
"oem_id": "oem_6a3a8dada72cd0a249ff9528",
"supported": [
"battery.backup_reserve_percent",
"battery.strategy",
"battery.storm_mode_enabled",
"battery.export_rule",
"battery.charge_from_grid_enabled",
"battery.one_off_charge"
],
"battery": {
"backup_reserve_percent": 20,
"strategy": "SELF_POWER",
"storm_mode_enabled": true,
"export_rule": "BATTERY_OK",
"charge_from_grid_enabled": true,
"one_off_charge": false
},
"sync_status": "IN_SYNC",
"updated_by": "OEM",
"time_updated": "2026-08-31T09:12:44Z"
}{
"object": "error",
"type": "invalid_request",
"code": "access_denied",
"message": "The requested resource could not be found.",
"context": "api.price_get",
"live_mode": true,
"time_created": "2026-01-01T00:00:00Z"
}{
"object": "error",
"type": "invalid_request",
"code": "access_denied",
"message": "The requested resource could not be found.",
"context": "api.price_get",
"live_mode": true,
"time_created": "2026-01-01T00:00:00Z"
}{
"object": "error",
"type": "invalid_request",
"code": "access_denied",
"message": "The requested resource could not be found.",
"context": "api.price_get",
"live_mode": true,
"time_created": "2026-01-01T00:00:00Z"
}{
"object": "error",
"type": "invalid_request",
"code": "access_denied",
"message": "The requested resource could not be found.",
"context": "api.price_get",
"live_mode": true,
"time_created": "2026-01-01T00:00:00Z"
}{
"object": "error",
"type": "invalid_request",
"code": "access_denied",
"message": "The requested resource could not be found.",
"context": "api.price_get",
"live_mode": true,
"time_created": "2026-01-01T00:00:00Z"
}{
"object": "error",
"type": "invalid_request",
"code": "access_denied",
"message": "The requested resource could not be found.",
"context": "api.price_get",
"live_mode": true,
"time_created": "2026-01-01T00:00:00Z"
}{
"object": "error",
"type": "invalid_request",
"code": "access_denied",
"message": "The requested resource could not be found.",
"context": "api.price_get",
"live_mode": true,
"time_created": "2026-01-01T00:00:00Z"
}{
"object": "error",
"type": "invalid_request",
"code": "access_denied",
"message": "The requested resource could not be found.",
"context": "api.price_get",
"live_mode": true,
"time_created": "2026-01-01T00:00:00Z"
}Update device settings
Updates the device’s desired settings. Send only the fields that change; when two writes change the same field, the last one wins. Unsupported field paths return 422 setting_not_supported. Requires an ACTIVE enrollment with the SETTINGS scope.
curl --request PATCH \
--url https://fleet-api.flatpeak.com/devices/{device_id}/settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"battery": {
"backup_reserve_percent": 30
}
}
'{
"object": "device_settings",
"device_id": "dev_63a6087272941ef077a8fd3e",
"oem_id": "oem_6a3a8dada72cd0a249ff9528",
"supported": [
"battery.backup_reserve_percent",
"battery.strategy",
"battery.storm_mode_enabled",
"battery.export_rule",
"battery.charge_from_grid_enabled",
"battery.one_off_charge"
],
"battery": {
"backup_reserve_percent": 20,
"strategy": "SELF_POWER",
"storm_mode_enabled": true,
"export_rule": "BATTERY_OK",
"charge_from_grid_enabled": true,
"one_off_charge": false
},
"sync_status": "IN_SYNC",
"updated_by": "OEM",
"time_updated": "2026-08-31T09:12:44Z"
}{
"object": "error",
"type": "invalid_request",
"code": "access_denied",
"message": "The requested resource could not be found.",
"context": "api.price_get",
"live_mode": true,
"time_created": "2026-01-01T00:00:00Z"
}{
"object": "error",
"type": "invalid_request",
"code": "access_denied",
"message": "The requested resource could not be found.",
"context": "api.price_get",
"live_mode": true,
"time_created": "2026-01-01T00:00:00Z"
}{
"object": "error",
"type": "invalid_request",
"code": "access_denied",
"message": "The requested resource could not be found.",
"context": "api.price_get",
"live_mode": true,
"time_created": "2026-01-01T00:00:00Z"
}{
"object": "error",
"type": "invalid_request",
"code": "access_denied",
"message": "The requested resource could not be found.",
"context": "api.price_get",
"live_mode": true,
"time_created": "2026-01-01T00:00:00Z"
}{
"object": "error",
"type": "invalid_request",
"code": "access_denied",
"message": "The requested resource could not be found.",
"context": "api.price_get",
"live_mode": true,
"time_created": "2026-01-01T00:00:00Z"
}{
"object": "error",
"type": "invalid_request",
"code": "access_denied",
"message": "The requested resource could not be found.",
"context": "api.price_get",
"live_mode": true,
"time_created": "2026-01-01T00:00:00Z"
}{
"object": "error",
"type": "invalid_request",
"code": "access_denied",
"message": "The requested resource could not be found.",
"context": "api.price_get",
"live_mode": true,
"time_created": "2026-01-01T00:00:00Z"
}{
"object": "error",
"type": "invalid_request",
"code": "access_denied",
"message": "The requested resource could not be found.",
"context": "api.price_get",
"live_mode": true,
"time_created": "2026-01-01T00:00:00Z"
}Authorizations
Authenticate with the bearer_token obtained from the authentication endpoint.
Body
Partial update of the device's desired operating settings. Send only the fields that change, nested under their namespace. When two writes change the same field, the last one wins.
Response
Device settings record.
The device's desired settings, one record shared with its OEM. Device-local changes are reconciled in from the OEM's state submissions. supported lists the writable field paths; writes outside it return 422. Only the blocks for subsystems the device has are returned.
Flatpeak OEM ID: the OEM that connects the device. See list all OEMs.
^oem_[A-Za-z0-9]+$"oem_6a3a8dada72cd0a249ff9528"
The field paths that can be written for this device, from its type and declared hardware support. Read only. Empty for device types without settings.
[
"battery.backup_reserve_percent",
"battery.strategy",
"battery.storm_mode_enabled",
"battery.export_rule",
"battery.charge_from_grid_enabled",
"battery.one_off_charge"
]
Whether the device has applied the desired settings, from comparing this record with reported state. Numeric fields compare within a tolerance. A null desired value is in sync only with a null reported value. one_off_charge is not compared, because device state does not report it. FAILED fires device.settings.sync_failed.
IN_SYNC, PENDING, FAILED "IN_SYNC"
Was this page helpful?

