Get started
  • English
  • 简体中文
Official Site
Get started
  • English
  • 简体中文
Official Site
  • Get started
  • Concepts
  • Guides
    • Account and authorization
    • Device access
    • Audio and video
    • Device capability integration
    • Receive device messages
    • Manage cloud storage
    • Release and operations
  • Device capabilities & events
  • API reference
  • SDK and tools
  • Solutions
  • Platform and support
On this page
Device APIs vs capabilities vs legacy HTTP
device.capability.list: List capabilities
device.property.get: Read properties
device.property.set: Write properties
device.service.invoke: Invoke a service
Fields and value ranges
Test on one device
Errors by layer

Device capability integration

Device capability integration

Start with Capability usage and the Device capability model: call device.capability.list to see what the device supports, then use device.property.get, device.property.set, and device.service.invoke to read, write, or trigger capabilities. Device list and online state stay on Device APIs. Calls that must remain POST /openapi/{method} are under Legacy APIs.

Device APIs vs capabilities vs legacy HTTP

NeedStart here
Paged or batch device detailPaged device detail, Batch detail
Online / bind stateOnline status, Bind state
Rename, password, upgrade, detection, record plansCapability usage and leaf pages
PTZ, local record plan, etc. still on old HTTPMatching page under Legacy APIs

Do not invent a targetId. Use propertyId / serviceId / eventId from device.capability.list only.

device.capability.list: List capabilities

POST https://openapi-[DataCenter].easy4ip.com/openapi/v2/device.capability.list with deviceId (or productId before bind). Only listed propertyId / serviceId values may be used with get/set/invoke. See List capabilities.

device.property.get: Read properties

Read one or more property values. Pass deviceId for a bound device; productId is optional (if sent and it does not match the device model → DV2009). See Read properties and the leaf page for each capability.

device.property.set: Write properties

Write properties (switches, plans, sensitivity, etc.). Pass deviceId for a bound device; productId is optional (same check as list/get). See Write properties and each leaf Default / Valid values.

device.service.invoke: Invoke a service

One-shot actions (snapshot, format, PTZ step, etc.). Pass deviceId for a bound device; productId is optional (same check as list/get). See Invoke a service.

Fields and value ranges

Copy Default and Valid values from the v2 leaf page. Do not assume old HTTP field names still apply. Channel-scoped capabilities need channelId (IPC often "0"); omitting it returns DV2007.

Test on one device

Run device.capability.list on one bound serial number. Confirm the leaf exists and accessMode allows your verb, then call get/set/invoke once. Unbound list-by-device returns DV2013.

Errors by layer

LayerWhere to look
Request body / token / signReturn codes, Development specification (TK1002, SN1005)
Capability DV20xxCapability errors and the leaf page
Troubleshoot preview
Receive device messages