Get started
  • English
  • 简体中文
Official Site
Get started
  • English
  • 简体中文
Official Site
  • Get started
  • Concepts
  • Guides
  • Device capabilities & events
    • Browse by device type
    • Device capabilities
      • Common methods
      • Detection and alarms
      • Image
      • PTZ
      • Light
      • Recording
        • Recording events
        • Local recordings
          • record.file.cover (Get SD card recording cover property)
          • record.file.pageSize (Get local recording page size property)
          • record.file.download (Get LAN download property)
          • record.file.list (Get local recordings)
          • record.file.alarmList (Get local recordings (by message time))
          • record.file.count (Get local recording count)
          • record.file.bitmap (Get local recording bitmap)
        • Plan
        • Playback
        • Timelapse
      • Audio
      • Media
      • Network
      • Power
      • Privacy
      • Call
      • Storage
      • System
      • Algorithm
      • Maintenance
      • Control
    • Events overview
    • Permission codes
    • Capability error codes
    • Alarm and capability messages
    • Capability FAQ
    • Legacy ability and push types
  • API reference
  • SDK and tools
  • Solutions
  • Platform and support
On this page
What it does
Request URL
Minimum permission
Request parameters
Request example
Response data fields
Response example
Error codes

record.file.list (Get local recordings)

record.file.list: Get local recordings

record.file.list · channel scope · permission RecordReplay

What it does

Local recordings: fetches the local recording file list for this channel by time (not player playback control). Input beginTime, endTime, type, and limit (30–100). sessionId is optional; if the previous response included sessionId, you may send it on the next call to optimize the query—it is not a pagination token. Paginate with beginTime, endTime, and limit by sliding the time window. Returns up to 100 records. Do not mix with legacy queryLocalRecords count/queryRange. Each call runs once. type enums follow this page’s table (includes 17 vlog, 21 localRecord). Count and bitmap do not allow the exact same set (e.g. count omits 21, bitmap omits 17). Trust device.capability.list and each leaf’s table.

Routing: externally unified v2 device.service.invoke; on some devices the platform maps to device-side Open-OPS (e.g. record/list). The open platform does not proxy queryLocalRecords again. Devices that list this service in device.capability.list use invoke. For playback, see SDK/player docs.

Request URL

POST https://openapi-[DataCenter].easy4ip.com/openapi/v2/device.service.invoke

Minimum permission

The administrator does not need an extra permission on a device they bound. A shared device needs the local recording view permission. A bound sub-user does not. A sub-account needs RecordReplay. Omitting channelId on channel-scope capabilities returns DV2007. Mixing device and channel properties in one request returns DV2008. A timeout does not mean the invoke failed.

Request parameters

NameTypeRequiredDescription
tokenStringyesAccess token for an administrator, sub-user, or sub-account
deviceIdStringyesDevice serial number
productIdStringnoOptional. If sent and it does not match the device model → DV2009
channelIdStringyesChannel ID; "0" is common for IPC
serviceIdStringyesrecord.file.list
inputDataObjectyesSee table below
NameDescriptionTypeRequiredValues
typeRecording type.enumyes0 all; 1 normal; 2 videomotion; 3 human; 4 faceDetect; 5 faceRecognition; 6 crossLine; 7 crossRegion; 8 leftDetection; 9 takenAwayDetection; 10 abAlarmSound; 11 callEvent; 12 muti; 13 smdTypeHuman; 14 smdTypeVehicle; 15 smdTypeHumanAndVehicle; 17 vlog; 18 packageOnDuty; 19 aor (AOV+audio); 20 aov; 21 localRecord
beginTimeStart time. Wall-clock, format YYYY-MM-DD HH:mm:ss.textyesFormat YYYY-MM-DD HH:mm:ss
endTimeEnd time. Wall-clock, format YYYY-MM-DD HH:mm:ss.textyesFormat YYYY-MM-DD HH:mm:ss
sessionIdSession ID for query optimization; not used for pagination.textnoString; may reuse sessionId from the previous response
limitCount. Range 30–100, step 1.intyes30–100, step 1

For common request fields and signing, see Signing conventions and Common request payload.

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>",
 "deviceId": "TESTIPC000012345",
 "channelId": "0",
 "serviceId": "record.file.list",
 "inputData": {
 "type": "0",
 "beginTime": "2026-09-19 00:00:00",
 "endTime": "2026-09-19 23:59:59",
 "limit": 30
 }
 }
}

Response data fields

Output is in result.data.outputData.

NameDescriptionTypeRequiredValues
sessionIdSession ID; may be sent on the next request to optimize the query.textnoString
recordsRecording list. Up to 100 items.arraynoUp to 100 items
records.item.fileNameFile name.textnoString
records.item.fileLengthFile length. Range 0–999999, step 1, unit byte.intno0–999999, step 1, unit byte
records.item.typeType.enumno0 all; 1 normal; 2 videomotion; 3 human; 4 faceDetect; 5 faceRecognition; 6 crossLine; 7 crossRegion; 8 leftDetection; 9 takenAwayDetection; 10 abAlarmSound; 11 callEvent; 12 muti; 13 smdTypeHuman; 14 smdTypeVehicle; 15 smdTypeHumanAndVehicle; 17 vlog; 18 packageOnDuty; 19 aor (AOV+audio); 20 aov; 21 localRecord
records.item.streamTypeStream type.enumno0 main stream; 1 sub stream 1; 2 sub stream 2; 3 sub stream 3
records.item.beginTimeStart time. Wall-clock, format YYYY-MM-DD HH:mm:ss.textnoFormat YYYY-MM-DD HH:mm:ss
records.item.endTimeEnd time. Wall-clock, format YYYY-MM-DD HH:mm:ss.textnoFormat YYYY-MM-DD HH:mm:ss
records.item.localBeginTimeDevice start time. Wall-clock, format YYYY-MM-DD HH:mm:ss.textnoFormat YYYY-MM-DD HH:mm:ss
records.item.localEndTimeDevice end time. Wall-clock, format YYYY-MM-DD HH:mm:ss.textnoFormat YYYY-MM-DD HH:mm:ss
records.item.objectTypeObject type.textnoString
records.item.xseqSequence number. Range 0–9999999, step 1.intno0–9999999, step 1
records.item.multiTypeComposite type.textnoString
records.item.picIdCover image ID. Range 0–999999, step 1.intno0–999999, step 1

Response example

{
 "id": "d5c287b4-5b2f-4f03-baf5-8032c5c354af",
 "result": {
 "code": "0",
 "msg": "Operation is successful",
 "data": {
 "outputData": {
 "sessionId": "s-1",
 "records": [
 {
 "fileName": "rec-1",
 "fileLength": 1024,
 "type": "1",
 "streamType": "0",
 "beginTime": "2026-09-19 08:00:00",
 "endTime": "2026-09-19 08:10:00",
 "localBeginTime": "2026-09-19 08:00:00",
 "localEndTime": "2026-09-19 08:10:00",
 "objectType": "",
 "xseq": 1,
 "multiType": "",
 "picId": 0
 }
 ]
 }
 }
 }
}

Error codes

CodeMeaningNext step
SN1001Signature errorCheck sign per Development specification
TK1002Token invalid or expiredRefresh accessToken
OP1002Missing required parameterAdd required fields
OP1003Invalid parameterMatch this page’s parameter table
OP1009Permission deniedCheck token and device bind/share grants
OP1013Total call limit exceededReduce call rate
OP1014Daily per-interface limit exceededSee Interface call limits
DV1007Device offlineWait until the device is online

See Return codes · OP/SN/TK for the full catalog.

CodeMeaningNext step
DV2003Capability not on deviceUse device.capability.list
DV2007channelId vs scope mismatchRequired for channel scope; omit for device scope
DV2008Mixed device and channel in one callSplit the request
DV2009productId mismatchOmit or set actual model id
DV2011No capability permissionSee Permission codes

See Capability errors.

Local recordings

record.file.download (Get LAN download property)
record.file.alarmList (Get local recordings (by message time))