device.detail.list (Batch detail by device ID)
device.detail.list: Batch detail by device ID
What it does
Batch device detail by serial number. Not in device.capability.list. capabilityIds[] lists capability ids—do not use for get/set/invoke. canBeUpgrade etc. are Boolean; capability switches remain 0/1.
Request URL
POST https://openapi-[DataCenter].easy4ip.com/openapi/v2/device.detail.list
Minimum permission
Administrator: bound or shared devices. Sub-user: own bound devices. Sub-account: authorized devices, filtered by channel permission.
Request parameters
| Name | Type | Required | Default | Valid values | Description |
|---|---|---|---|---|---|
token | String | yes | accessToken | ||
deviceList | Array | yes | 1–50 items | Devices to query | |
deviceList[].deviceId | String | yes | Device serial number | ||
deviceList[].channelId | String[] | no | all channels | e.g. ["0"] for IPC | Channels to include; omit = all |
openid | String | no | Sub-account |
Request example
{
"id": "d5c287b4-5b2f-4f03-baf5-8032c5c354af",
"system": {
"ver": "1.0",
"appId": "lcdxxxxxxxxx",
"sign": "xjhCQBoJ9hRDsCjyDcHjtDNzRZ3ZJezcawsfWeiaoxU=",
"time": 1706511734,
"nonce": "f5a1ae2d-c09c-4d39-a744-83a5c2c653c2"
},
"params": {
"token": "<yourAccessToken>",
"deviceList": [
{
"deviceId": "TESTIPC000012345",
"channelId": ["0"]
}
]
}
}
Response data fields
| Name | Type | Description |
|---|---|---|
count | Int | Batch count |
deviceList | Array | Device detail objects (see below) |
deviceList[]
| Name | Type | Description |
|---|---|---|
deviceId | String | Device serial number |
productId | String | When known |
deviceStatus | String | online / offline / sleep / upgrading |
deviceModel | String | Model |
catalog | String | Category |
brand | String | Brand |
accessType | String | Access type |
deviceVersion | String | Version |
deviceName | String | Name |
canBeUpgrade | Boolean | Upgrade available |
upgradeInfo | Object | When upgrade available |
upgradeInfo.version | String | Target version |
upgradeInfo.attention | String | Upgrade notes |
upgradeInfo.packageUrl | String | Package URL |
encryptMode | String | 0 / 1 |
lastOffLineTime | String | Last offline time |
bindTime | Long | Bind time |
source | String | Source |
channelNum | Int | Channel count |
playTokenV2 | String | Play token |
sdcardStatus | String | SD status |
wifiTransferMode | String | Band |
isSubDevice | Boolean | Sub-device flag |
parentDeviceId | String | Parent serial |
parentProductId | String | Parent model |
capabilityIds | String[] | Capability ids—do not use for get/set/invoke |
channelList | Array | Channels (see below) |
subDeviceList | Array | Sub-device summary |
httpPort | String | Overseas port |
rtspPort | String | Overseas port |
tlsPrivatePort | String | Overseas port |
deviceUsernameV2 | String | Encrypted username (overseas) |
devicePasswordV2 | String | Encrypted password (overseas) |
channelList[]
| Name | Type | Description |
|---|---|---|
channelId | String | Channel id |
channelName | String | Channel name |
channelStatus | String | online / offline / sleep / upgrading |
cameraStatus | String | on / off |
channelPicUrl | String | Cover image |
alarmStatus | String | Arming state |
csStatus | String | Cloud storage |
aiInsightStatus | String | Smart View |
shareStatus | String | Share state |
shareFunctions | String | Shared features |
lastOffLineTime | String | Offline time |
capabilityIds | String[] | Channel capability ids |
resolutions | Array | Resolution list |
resolutions[].name | String | Resolution name |
resolutions[].imageSize | String | Image size |
resolutions[].streamType | String | Stream type |
productId | String | Channel model (multi-sensor) |
Response example
{
"id": "d5c287b4-5b2f-4f03-baf5-8032c5c354af",
"result": {
"code": "0",
"msg": "Operation is successful",
"data": {
"count": 1,
"deviceList": [
{
"deviceId": "TESTIPC000012345",
"productId": "56WGTET2",
"deviceStatus": "online",
"deviceModel": "IPC-C22EP",
"catalog": "IPC",
"brand": "lechange",
"deviceVersion": "2.800.0000000.0.R.230101",
"deviceName": "Living room",
"canBeUpgrade": false,
"encryptMode": "0",
"lastOffLineTime": "",
"bindTime": 1599031074,
"source": "bind",
"channelNum": 1,
"playTokenV2": "pt_xxx",
"sdcardStatus": "empty",
"wifiTransferMode": "5G",
"isSubDevice": false,
"capabilityIds": ["detection.motion", "ptz.aim"],
"channelList": [
{
"channelId": "0",
"channelName": "Channel 1",
"channelStatus": "online",
"cameraStatus": "on",
"channelPicUrl": "https://example.imou.com/pic/cover.jpg",
"alarmStatus": "on",
"csStatus": "off",
"aiInsightStatus": "off",
"shareStatus": "",
"shareFunctions": "",
"lastOffLineTime": "",
"capabilityIds": ["detection.motion", "ptz.aim"],
"resolutions": [
{
"name": "1080P",
"imageSize": "1920x1080",
"streamType": "main"
}
]
}
],
"subDeviceList": []
}
]
}
}
}
Error codes
This method may return the codes below. See Return codes and Capability errors for the full catalog.
Gateway and auth (SN / TK / OP)
| Code | Meaning | Next step |
|---|---|---|
SN1001 | Signature error | Check sign per Development specification |
TK1002 | Token invalid or expired | Refresh accessToken |
OP1002 | Missing required parameter | Add required fields |
OP1003 | Invalid parameter | Match this page’s parameter table |
OP1009 | Permission denied | Check token and device bind/share grants |
OP1013 | Total call limit exceeded | Reduce call rate |
OP1014 | Daily per-interface limit exceeded | See Interface call limits |
DV1007 | Device offline | Wait until the device is online |
See Return codes · OP/SN/TK for the full catalog.
Sub-accounts (SUB)
| Code | Meaning | Next step |
|---|---|---|
SUB1001–SUB1002 | Sub-account lacks API permission | Update policy via addPolicy |
SUB1005 | Sub-account token expired | Refresh subAccountToken |
SUB1006 | No device grant for sub-account | Check Resource and device serial |
SUB1008 | Sub-account not bound to app | Create and bind the sub-account first |
See Return codes · SUB.
Device query (DV20xx)
| Code | Meaning | Next step |
|---|---|---|
DV2004 | Invalid property value | Check parameter range |
| :--- | :--- | :--- |
DV2007 | Missing channelId | Add channelId |
| :--- | :--- | :--- |
LIMIT_DEVICE_NUM | Device count limit | Reduce page size or scope |
| :--- | :--- | :--- |
PARAM_ILLEGAL_VALUE | Invalid parameter | Fix request body |
| :--- | :--- | :--- |
PERMISSION_DENIED | Permission denied | Check token and share policy |
