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
      • Audio
      • Media
      • Network
      • Power
      • Privacy
      • Call
      • Storage
      • System
      • Algorithm
        • Algorithm package
          • algorithm.package.loaded (Read loaded algorithm info property)
          • algorithm.package.region (Read algorithm package region property)
          • algorithm.package.region (Set algorithm package region property)
          • algorithm.package.upgrade (Upgrade algorithm package)
          • algorithm.package.check (Validate algorithm)
          • algorithm.package.delete (Delete algorithm)
          • algorithm.package.progress (Query algorithm download progress)
          • algorithm.package.status (Algorithm package status)
          • algorithm.package.enable (Query algorithm package enable state)
          • algorithm.package.downloadResult (Algorithm package download result)
          • algorithm.package.upgradeResult (Algorithm package upgrade result)
      • 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

algorithm.package.upgrade (Upgrade algorithm package)

algorithm.package.upgrade: Upgrade algorithm package

algorithm.package.upgrade · device scope · permission Config

What it does

Upgrades an on-device algorithm package. Input: url, name, size, type. Each call runs once. Suggested flow: this invoke → progress query → status → completion via download result (Alarm). For detection enable switches, see the Detection domain (not package-only).

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 basic configuration permission. A bound sub-user does not. A sub-account needs Config. See Permission codes. Shared devices must satisfy one alias in the capability row share_auth_code (for example Config,config). A timeout does not mean the operation did not execute.

Request parameters

NameTypeRequiredDescription
tokenStringyesAdministrator, sub-user, or sub-account accessToken
deviceIdStringyesDevice serial number
productIdStringnoOptional. If sent and it does not match the device model → DV2009
serviceIdStringyesalgorithm.package.upgrade
inputDataObjectyesSee table below
NameDescriptionTypeRequiredValues
urlUpgrade URL. Download or file address.textyesString
nameAlgorithm name.textyesString
sizePackage size. Range 0–199999, step 1, unit byte.intyes0–199999, step 1, unit byte
typeAlgorithm package type.enumyes1 human; 2 vehicle; 4 pet; 8 parcel; 16 human region intrusion; 17 vehicle region intrusion; 18 person line-crossing detection; 19 vehicle line-crossing detection; 20 video occlusion; 21 no-person detection; 22 gesture call detection

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",
 "serviceId": "algorithm.package.upgrade",
 "inputData": {
 "url": "https://example.com/alg.bin",
 "name": "human",
 "size": 1024,
 "type": "1"
 }
 }
}

Response data fields

Output is in result.data.outputData. No output fields means {}.

Response example

{
 "id": "d5c287b4-5b2f-4f03-baf5-8032c5c354af",
 "result": {
 "code": "0",
 "msg": "Operation is successful",
 "data": {
 "outputData": {}
 }
 }
}

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.

Algorithm package

algorithm.package.region (Set algorithm package region property)
algorithm.package.check (Validate algorithm)