curl https://api.bota.dev/v1/devices/dev_abc123 \
-H "Authorization: Bearer sk_live_..."
const response = await fetch('https://api.bota.dev/v1/devices/dev_abc123', {
headers: {
'Authorization': 'Bearer sk_live_...',
},
});
const device = await response.json();
import requests
response = requests.get(
'https://api.bota.dev/v1/devices/dev_abc123',
headers={'Authorization': 'Bearer sk_live_...'},
)
device = response.json()
{
"id": "dev_abc123",
"serial_number": "SN-2025-001234",
"model": "bota_pin",
"firmware_version": "1.2.3",
"status": "bound",
"end_user_id": "eu_xyz789",
"battery_percent": 85,
"storage_used_mb": 512,
"storage_total_mb": 32768,
"signal_strength_dbm": -75,
"last_heartbeat_at": "2025-01-15T11:30:00Z",
"recording_state": {
"device_state": "idle",
"pending_recordings": 3,
"flags": 8,
"connection_type": ["ble"]
},
"metadata": {},
"settings": {
"connection": {
"enabled_connections": { "wifi": true, "cellular": true },
"upload_network_preference": ["wifi", "ble", "cellular"],
"power_management": {
"wifi_idle_timeout_seconds": 180,
"cellular_idle_timeout_seconds": 180
}
},
"upload": {
"mode": "auto",
"streaming_enabled": true,
"upload_delay_minutes": 5,
"daily_data_limit_mb": 500,
"allow_roaming": false,
"pause_on_low_battery": true
},
"audio": {
"codec": "opus",
"sample_rate_khz": 16,
"bitrate_kbps": 32
},
"power": {
"auto_sleep_minutes": 30,
"low_battery_threshold_percent": 20
}
},
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-01-15T11:00:00Z"
}
{
"error": {
"code": "not_found",
"message": "Device not found"
}
}
Devices
Get Device
Retrieve details of a specific device
GET
/
devices
/
{id}
curl https://api.bota.dev/v1/devices/dev_abc123 \
-H "Authorization: Bearer sk_live_..."
const response = await fetch('https://api.bota.dev/v1/devices/dev_abc123', {
headers: {
'Authorization': 'Bearer sk_live_...',
},
});
const device = await response.json();
import requests
response = requests.get(
'https://api.bota.dev/v1/devices/dev_abc123',
headers={'Authorization': 'Bearer sk_live_...'},
)
device = response.json()
{
"id": "dev_abc123",
"serial_number": "SN-2025-001234",
"model": "bota_pin",
"firmware_version": "1.2.3",
"status": "bound",
"end_user_id": "eu_xyz789",
"battery_percent": 85,
"storage_used_mb": 512,
"storage_total_mb": 32768,
"signal_strength_dbm": -75,
"last_heartbeat_at": "2025-01-15T11:30:00Z",
"recording_state": {
"device_state": "idle",
"pending_recordings": 3,
"flags": 8,
"connection_type": ["ble"]
},
"metadata": {},
"settings": {
"connection": {
"enabled_connections": { "wifi": true, "cellular": true },
"upload_network_preference": ["wifi", "ble", "cellular"],
"power_management": {
"wifi_idle_timeout_seconds": 180,
"cellular_idle_timeout_seconds": 180
}
},
"upload": {
"mode": "auto",
"streaming_enabled": true,
"upload_delay_minutes": 5,
"daily_data_limit_mb": 500,
"allow_roaming": false,
"pause_on_low_battery": true
},
"audio": {
"codec": "opus",
"sample_rate_khz": 16,
"bitrate_kbps": 32
},
"power": {
"auto_sleep_minutes": 30,
"low_battery_threshold_percent": 20
}
},
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-01-15T11:00:00Z"
}
{
"error": {
"code": "not_found",
"message": "Device not found"
}
}
Retrieve the full details of a specific device, including settings and current health status.
Authentication
Requires an API key withdevices:read scope.
curl https://api.bota.dev/v1/devices/dev_abc123 \
-H "Authorization: Bearer sk_live_..."
const response = await fetch('https://api.bota.dev/v1/devices/dev_abc123', {
headers: {
'Authorization': 'Bearer sk_live_...',
},
});
const device = await response.json();
import requests
response = requests.get(
'https://api.bota.dev/v1/devices/dev_abc123',
headers={'Authorization': 'Bearer sk_live_...'},
)
device = response.json()
Path Parameters
The device’s unique identifier (e.g.,
dev_abc123).Response
Returns the device object.{
"id": "dev_abc123",
"serial_number": "SN-2025-001234",
"model": "bota_pin",
"firmware_version": "1.2.3",
"status": "bound",
"end_user_id": "eu_xyz789",
"battery_percent": 85,
"storage_used_mb": 512,
"storage_total_mb": 32768,
"signal_strength_dbm": -75,
"last_heartbeat_at": "2025-01-15T11:30:00Z",
"recording_state": {
"device_state": "idle",
"pending_recordings": 3,
"flags": 8,
"connection_type": ["ble"]
},
"metadata": {},
"settings": {
"connection": {
"enabled_connections": { "wifi": true, "cellular": true },
"upload_network_preference": ["wifi", "ble", "cellular"],
"power_management": {
"wifi_idle_timeout_seconds": 180,
"cellular_idle_timeout_seconds": 180
}
},
"upload": {
"mode": "auto",
"streaming_enabled": true,
"upload_delay_minutes": 5,
"daily_data_limit_mb": 500,
"allow_roaming": false,
"pause_on_low_battery": true
},
"audio": {
"codec": "opus",
"sample_rate_khz": 16,
"bitrate_kbps": 32
},
"power": {
"auto_sleep_minutes": 30,
"low_battery_threshold_percent": 20
}
},
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-01-15T11:00:00Z"
}
{
"error": {
"code": "not_found",
"message": "Device not found"
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
id | string | Device identifier (dev_*) |
serial_number | string | Physical serial number |
model | string | Device model (bota_pin or bota_note) |
firmware_version | string | null | Current firmware version |
status | string | unbound or bound |
end_user_id | string | null | Bound end user (eu_*), null if unbound |
battery_percent | integer | null | Battery level (0-100), null if no heartbeat received |
storage_used_mb | integer | null | Storage used in MB |
storage_total_mb | integer | null | Total storage capacity in MB |
signal_strength_dbm | integer | null | Signal strength in dBm |
last_heartbeat_at | string | null | Last heartbeat timestamp (ISO 8601) |
recording_state | object | null | Current recording state (device_state, pending_recordings, flags, connection_type[]) |
metadata | object | Custom key-value metadata |
settings | object | Device settings including connection, upload, audio, and power configuration |
created_at | string | Creation timestamp (ISO 8601) |
updated_at | string | Last update timestamp (ISO 8601) |
Was this page helpful?
⌘I

