ARMCLOUD Documentation Center
  • 简体中文
  • English
  • 简体中文
  • English
  • Product introduction
  • Product billing
  • Server OpenAPI
    • Usage Guide
    • API Signature v1.0
    • API Reference
    • Error Codes
    • Callback Business Type Codes
    • Instance List
    • Android Instance Property List
    • Changelog
  • Android SDK
    • Example Setup
    • Interface Description
    • Callback Function
    • Error Code
    • Changelog
  • Web H5 SDK
    • Example Setup
    • Interface Description
    • Callback Function
    • Error Code
    • Changelog
  • Windows PC SDK
    • Example Setup
    • Interface Description
    • Callback Function
    • Changelog
  • Edge-Cloud Communication Development
    • AIDL Access Method
    • System Service API (AIIDL)
  • Scenario solutions
    • XP-like LSP Hook framework
    • Dynamic simulation of sensor data
  • ADI Collection Tool
  • FAQ
    • Platform Basics
    • Storage
    • Network Connectivity
    • Application Management
    • Development and Integration
    • Performance Optimization
    • Billing
    • Technical Support
  • Related agreements
    • Cloud Phone SDK Privacy Policy

📑 # Interface Documentation Navigation

This document includes 140+ API interfaces, covering the full lifecycle management of cloud phones

🚀 Get Started Quickly

  • API Domain - Select the correct service region
  • Interface Rate Limiting Rules - Understand call frequency limits

📦 Overview of Interface Classification

ClassificationExplanationMain features
🔐 [SDK Token Issuance] (#sdk-token-issuance)Temporary token acquisition and managementObtain temporary tokens and clear tokens
💾 [Board Management] (#board-management)Querying and operating board resourcesBoard list, hashrate query, restart and reset
📱 [Instance Management] (#example-management)Full lifecycle management of cloud phone instancesSample operations, property settings, ADB debugging, screen interaction, data injection
🔔 [Callback Management] (#callback-management)Asynchronous task callback configurationCallback address configuration and various task callback notifications
📁 [File Management] (#file-management)File upload, download, and managementCloud drive upload, instance file operations
📦 [Application Management] (#application-management---1)App installation, start-stop, and blacklist listsApp installation and uninstallation, blacklist and whitelist management
🌐 [Network Storage 2.0] (#netstorage-20)Next-generation network storage solutionsStorage instance management, backup and restoration
💿 [Network Storage 1.0] (#net-storage-10)Classic network storage managementCreate, power off, and back up and delete storage
🛡️ [Application Security Policy V2.0] (#application-security-policy-v20)Apply security controlApplication security policy configuration
💽 [Image Management] (#mirror-management)System image queryGet the image list
👥 [Account Management] (#account-management)Sub-account and permission managementSub-account management and board authorization
📊 [Event Log] (#event-log)App startup and exit logsStart/exit log query

API domain name

Important reminder

Please select the correct API domain name according to your service region

RegionDomain nameScope of application
Domestichttps://api.xiaosuanyun.comUsers in Chinese mainland
Overseashttps://openapi-hk.armcloud.netUsers overseas as well as in Hong Kong, Macau, and Taiwan

Interface Rate Limiting Rules

::: warning: Traffic limit reminder All OpenAPI interfaces are subject to access frequency restrictions; please control call frequency appropriately. For detailed current limiting rules, please refer to [User Guide - Interface Rate Limiting Instructions] (./UsageGuide.md#interface-rate-limiting-explanation) :::

Main Traffic Limiting Rules:

User typeQPS limit (per second)Limit per minuteCalculation method
Test Users200 times per second5,000 times per minuteSlide the window, access key level
Paying Users2,000 times per second30,000 beats per minuteSlide the window, access key level

Important Notes

  • Each Access Key has its own rate limit; different keys do not share the quota
  • All interface calls under a single Access Key share the same rate limit
  • The limits of both QPS and per-minute dimensions must be met simultaneously

Rate Limiting Response: When rate limiting is triggered, it returns an HTTP 429 status code and error message

{
  "msg": "Too many requests. Please try again later..",
  "code": 429,
  "data": null
}

Response Head Explanation:

Response headExplanationExample
X-RateLimit-LimitThe request limit for the current rate limiting cycle depends on the type of throttling200
X-RateLimit-RemainingThe number of available requests remaining in the current rate limiting period150
X-RateLimit-ResetCurrent rate limiting cycle reset timestamp (Unix timestamp)1618900361
X-RateLimit-TypeThe type of rate limit triggeredqps

SDK Token Issuance

Issue temporary STS Tokens to verify users accessing cloud mobile services.

Obtaining SDK Temporary Tokens

Interface Address

/openapi/open/token/stsToken

Request Method

GET

Request Data Types

application/json

Request Example

package com.xiaosuan.api.utils;

import com.alibaba.fastjson.TypeReference;
import com.xiaosuan.armcloud.sdk.configure.ArmCloudConfig;
import com.xiaosuan.armcloud.sdk.constant.ArmCloudApiEnum;
import com.xiaosuan.armcloud.sdk.http.DefaultHttpExecutor;
import com.xiaosuan.armcloud.sdk.model.Result;
import com.xiaosuan.armcloud.sdk.service.ArmCloudApiService;
import com.xiaosuan.armcloud.sdk.service.impl.ArmCloudApiServiceImpl;

import java.util.HashMap;

public class test {
    /**
     * Get sts_token
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {

        ArmCloudConfig armCloudConfig = new ArmCloudConfig();
        armCloudConfig.setOpenUrl("https://xxx");
        armCloudConfig.setService("armcloud-paas");
        armCloudConfig.setHost("xxx");
        armCloudConfig.setAk("xxxxxx");
        armCloudConfig.setSk("xxxxxx");
        ArmCloudApiService armcloudApiService = new ArmCloudApiServiceImpl(armCloudConfig, new DefaultHttpExecutor());
        Result<Object> result = armcloudApiService.execute(ArmCloudApiEnum.STS_TOKEN,new HashMap<>(), new TypeReference<Result<Object>>() {});
        System.out.println(result);

    }
}

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject
├─tokenxxxx-xxxx-xxxxx-xxxxStringSDK communication token

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts":1713773577581,
 "data": {
  "token": "xxxx-xxxx-xxxxx-xxxx"
 }
}

Obtaining SDK Temporary Token (based on padCode)

Issue temporary STS tokens to authenticate users accessing cloud mobile services (this token can only be used for the requested padCode).

Interface Address

/openapi/open/token/stsTokenByPadCode

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodeACXXXXXStringYesExample code
expireSeconds604800IntegerNoPaaS token validity in seconds. Omitted or null: 86400 (24 hours). Range: 1–604800 (up to 7 days).

Request Example

{"padCode":"AC32010230001"}

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject
├─tokenxxxx-xxxx-xxxx-xxxxStringSDK communication token

Response Examples

{"code":200,"msg":"success","ts":1735209109185,"data":{"token":"xxx-xxx-xxx-xxxx"}}

Clearing SDK Authorized Tokens

Interface Address

/openapi/open/token/clearStsToken

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
token123StringYes

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts":1713773577581,
 "data": null
}

Error Codes

Error codeError ExplanationOperation Suggestions
120008The token does not belong to the current userRefer to the interface description to check request parameters and pass values

Clearing SDK Temporary Tokens (based on padCode)

Interface Address

/openapi/open/token/clearStsTokenByPadCode

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodeACXXXXXStringYesExample code

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1757656454505LongTimestamp
datanullObjectResponse data (cleared tokens in this interface have no return value)
traceIdextrgsyx962oStringLink Tracing ID

Response Examples

{
  "code": 200,
  "msg": "success",
  "ts": 1757656454505,
  "data": null,
  "traceId": "extrgsyx962o"
}

Board Management

Board List

Obtain the board list by pagination according to query conditions.

Interface Address

/openapi/open/device/list

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
page1IntegerisPage number
rows10IntegerisNumber of items
padAllocationStatus2IntegerNoInstance allocation status: -2 Delete failed -1 Allocation failed 0 - Not allocated; 1 - In allocation 2 - Allocated 3 - Deleting
deviceStatus1IntegerNoPhysical machine status 0-offline; 1 - Online
armServerCodeXS-MARS3500SA-0019StringNoServer code
deviceCode192.168.230.100StringNoBoard code
deviceIp172.31.3.3StringNodeviceIp
armServerStatus1IntegerNoServer status 0-offline; 1 - Online
idc1StringNoData center ID
deviceIpListString[]No
├─172.31.3.3StringNoBoard IP

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200Integer
msgsuccessString
ts1713773577581Long
dataObject
├─page1IntegerCurrent page
├─rows10IntegerThe number per page
├─size1IntegerCurrent page count
├─total1IntegerTotal recorded count
├─totalPage1IntegerTotal pages
├─pageDataobject[]List
├─├─id11236IntegerBoard ID
├─├─deviceLevelm2-3StringCloud machine instance level
├─├─deviceCodeAC32010250020StringPhysical machine number
├─├─deviceOutCode03-58614134b4357321StringExternal physical machine encoding
├─├─deviceStatus172.31.3.0/24IntegerPhysical machine status 0-offline; 1 - Online
├─├─deviceIp172.31.3.3IntegerPhysical machine IP
├─├─idc1IntegerExternal data center code
├─├─armServerCodeACS32010260000StringARM server encoding
├─├─createByadminStringFounder
├─├─createTime2025-01-02 10:56:13StringCreation date
├─├─padAllocationStatus2IntegerInstance allocation status: -2 Delete failed -1 Allocation failed 0 - Not allocated; 1 - In allocation 2 - Allocated 3 - Deleting
├─├─clusterCode001StringCluster code
├─├─macAddress52:74:01:b8:58:40StringMAC address
├─├─initStatus1StringInitialization status: 0 - Initialization failed 1 - Initialization successful 2 - Initialization in progress
├─├─cbsInfo2.0.8StringCBS Board
├─├─nodeId1StringBlade ID
├─├─position3StringSlot position
├─├─gateway192.168.3.1StringBoard Gateway

Request Example

{
    "padAllocationStatus": 2,
        "deviceStatus": 1,
        "armServerCode": "ACS32010260000",
        "deviceCode": "AC32010250020",
        "deviceIpList": [
        "172.31.3.3"
    ],
        "deviceIp": "172.31.3.3",
        "armServerStatus": 1
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1737626655161,
        "data": {
        "page": 1,
            "rows": 10,
            "size": 1,
            "total": 1,
            "totalPage": 1,
            "pageData": [
            {
                "page": 1,
                "rows": 10,
                "id": 11236,
                "deviceLevel": "m2-3",
                "deviceCode": "AC32010250020",
                "deviceOutCode": "03-58614134b4357321",
                "deviceStatus": true,
                "deviceIp": "172.31.3.3",
                "idc": "1",
                "armServerCode": "ACS32010260000",
                "createBy": "admin",
                "createTime": "2025-01-02 10:56:13",
                "padAllocationStatus": 2,
                "deleteFlag": false,
                "clusterCode": "001",
                "macAddress": "52:74:01:b8:58:40",
                "initStatus": 1,
                "cbsInfo": "2.0.8",
                "nodeId": "1",
                "position": "3",
                "gateway": null
            }
        ]
    }
}

Designated Board Cards to Query Accounts

Query the account based on the board number.

Interface Address

/openapi/open/device/queryDeviceOwner

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
deviceCodeZSC250403MxxxxStringisBoard number

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringInterface request status information
dataObjectBusiness returns data
├─deviceCodeZSC250403MxxxxStringBoard number
├─customerAccountxxxStringThe account belongs to the board
traceIdextrgsyx962oStringLink Tracing ID
Request Example
{
    "deviceCode":"ZSC250403Mxxxx"
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1772447216373,
        "data": {
        "deviceCode": "ZSC250403Mxxxx",
            "customerAccount": "xxxx"
    },
    "traceId": "feslqausejuo"
}

Querying Computing Power Usage

Summarize the usage of computing power units.

Verification instructions: Sub-accounts can only query themselves; When specifying a query, the sub-account list must be a collection of subordinate accounts of the current main account.

Interface Address

/openapi/open/device/computeUsage

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
queryRange0IntegerNoQuery scope: 0-main account and all sub-accounts; 1 - Only itself (default); 2 - Specify the list of sub-accounts
subCustomerIds[862, 863]Long[]NoSub-account ID list, mandatory when queryRange=2

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]List of account hash power usage
├─customerId10001LongCustomer ID
├─customerAccounttest001StringCustomer account
├─usedCompute2LongAmount of hash power used
├─totalCompute8LongTotal hash rate

Request Example

{
  "queryRange": 0
}

Response Examples

{
  "code": 200,
  "msg": "success",
  "ts": 1737626655161,
  "data": [
    {
      "customerId": 10001,
      "customerAccount": "master001",
      "usedCompute": 4,
      "totalCompute": 12
    },
    {
      "customerId": 10002,
      "customerAccount": "sub001",
      "usedCompute": 1,
      "totalCompute": 4
    }
  ]
}

Board Restart

Powering off and restarting the board will affect all instances created on the board

This interface is generally used when restarting the instance cannot be recovered

Interface Address

/openapi/open/device/powerReset

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
deviceIpsString[]Yes
├─172.31.4.124StringYesPhysical device IP
type2String[]YesRestart Type 1: Hard Restart 2: Power Cut Restart

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]
├─taskId1IntegerTask ID
├─deviceIp172.31.4.124StringPhysical device IP
├─errorMsg“”StringThe reason for failure
├─deviceOutCodeAC22030010000StringCloud machine numbering

Request Example

{
 "deviceIps": [
  "172.31.4.124"
 ],
 "type":2
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1713773577581,
    "data": [
        {
            "taskId": 1,
            "deviceIp": "172.31.4.124",
            "errorMsg": null,
            "deviceOutCode": "AC22030010000"
        }
    ]
}

Error Codes

Error codeError ExplanationOperation Suggestions
110030Failing to execute power-off restart command, parameter request is non-compliantParameter requests are non-compliant
110032Physical IP does not existPlease check that the physical device's IP address is correct
110033Failing to execute power-off and restart commandContact relevant personnel

Reset Board

Reset the board, clear the corresponding instance, and restart the board

Interface Address

/openapi/open/device/resetDevice

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
remarkConfirm deletionStringisReset remarks information
deviceIpsString[]YesList of physical machine IPs (minimum 1, maximum 128)
├─172.31.3.3StringisBoard IP

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerResponse code
msgsuccessString
ts1713773577581Long
data1 example of board deletion!StringNews content

Request Example

{
    "deviceIps": [
        "172.31.3.3"
    ],
        "remark": "1"
}

Response Examples

{
    "msg": "success",
        "code": 200,
        "data": "1个板卡删除实例!",
        "ts": 1739954448827
}

Error Codes

Error codeError ExplanationOperation Suggestions
110060The board does not existConfirm that the board IP is correct

Check Latest Preheating Successful Images

Retrieves the list of mirror IDs that have recently preheated successfully, returning up to 3 records.

Interface Address

/openapi/open/device/getLatestWarmupSuccessImages

Request Method

GET

Request Data Types

None

Request Query Parameters

Parameter nameExample valuesParameter typeIs it required?Parameter description
customerId178LongNoCustomer ID (administrators can pass this parameter to query images of specified customers; regular users ignore this parameter)

Note:

  • Regular users: No need to pass parameters; automatically query the current user's preheating successful image
  • Administrator user: Can pass customerId parameters to query the preheating success image of a specified customer

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1713773577581LongTimestamp
traceIdewab8qjqbaioStringLink Tracing ID
dataWarmupSuccessImageVO[]Latest preheating success image information list, up to 3 items
├─ customerId178LongCustomer ID
├─ customerAccounttestaStringCustomer account
├─ customerNameZhang SanStringCustomer name
├─ imageIdIMG-20250305001StringMirror ID
├─ imageVersion20251027_1StringMirror version
├─ imageDescTestingStringMirror description
├─ supportF2fs1IntegerDoes F2FS support (1: Support 0: Not supported)
├─ fileTag0IntegerFile tags (1: deletable 0: cannot be deleted)
├─ androidVersion13IntegerAndroid version

Request Example

/openapi/open/device/getLatestWarmupSuccessImages

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1713773577581,
    "traceId": "ewab8qjqbaio",
    "data": [
        {
            "customerId": 178,
            "customerAccount": "testa",
            "customerName": "Zhang San",
            "imageDesc": "Testing",
            "imageVersion": "20251027_1",
            "imageId": "IMG-20250305001",
            "fileTag": 1,
            "supportF2fs": 1,
            "androidVersion": 13
        },
        {
            "customerId": 178,
            "customerAccount": "testa",
            "customerName": "Zhang San",
            "imageDesc": "Testing",
            "imageVersion": "20251027_1",
            "imageId": "IMG-20250304002",
            "fileTag": 1,
            "supportF2fs": 1,
            "androidVersion": 13
        },
        {
            "customerId": 178,
            "customerAccount": "testa",
            "customerName": "Zhang San",
            "imageDesc": "Testing",
            "imageVersion": "20251027_1",
            "imageId": "IMG-20250303005",
            "fileTag": 1,
            "supportF2fs": 1,
            "androidVersion": 12
        }
    ]
}

NetStorage 2.0

1. Comparison between Network Storage 2.0 and Network Storage 1.0

NetPadV2FlowDoc.png

  • Significantly optimized API interfaces to reduce failure rates during startup/shutdown tasks.
  • NetStorage 2.0 integrates instances and storage, eliminating the need for complex relationship management between storage blocks and instances; deleting instances means deleting instances and corresponding storage.

2. Quick Entry

netPadV2UseDoc.png

  1. Purchase boards to gain computing power
  2. Check the board information
  3. Set the board specifications (multiple sheets)
  4. Create a network storage instance
  5. Boot on using a newly created instance or a previously shutdown instance
  6. Complete business shutdown
  7. Clone a single instance into multiple units for use (cloned instances are individual entities and can modify device model attributes, image versions, etc.)

3. API Interface

Create a Mesh Instance

Used to create the NetMemory 2.0 instance interface, supports batch creation, with a maximum of 100 instances created at once.

Interface Address

/openapi/open/pad/v2/net/storage/res/create

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
clusterCode001StringYesCluster coding identifies the cluster to which the instance belongs
specificationCodeSPEC_001StringYesSpecification code, defines the hardware specifications of the instance
imageIdIMG_123456StringNoImage ID, used to create the system image of the instance. not passed, press aospVersion to get the default image configured by that client
aospVersionandroid13StringNoAOSP version. only takes effect when imageId is not passed, is used to retrieve the default image configured by the customer under that AOSP version
number5IntegerYesThe number of instances must be between 1 and 100
storageSize32IntegerYesStorage size (GB) must be greater than 0, supported: 4, 8, 16, 32, 64, 128, 256
screenLayoutCodeLAYOUT_001StringNoScreen layout encoding, mandatory if not random ADI templates and no ADI template parameters are passed
randomADITemplatesfalseBooleanNoWhether to randomly select an ADI template is false by default
excludeRealPhoneTemplateIds[101,102]List<Long>NoList of template IDs to exclude when randomizing ADI templates; validity takes effect when randomADITemplates is true
realPhoneTemplateId12345LongNoADI Template ID, specifying the ADI template to use
countryCodeSGStringNoCountry code. It only takes effect on the first boot. If the system is empty, use the country code passed in during creation; if all are empty, SG is the default.
groupId0IntegerNoGroup IDs default to public pools.

imageId and aospVersion value rules

  • Pass in imageId: Create instances using this image according to the original logic, aospVersion do not take effect (the original caller does not need to make any changes).
  • No imageId passed: aospVersion must be passed, and the system creates instances using the default image configured by the client for that AOSP version.
  • imageId and aospVersion are both empty: Reporting parameter error imageId和aospVersion不能同时为空.
  • Passing in a aospVersion, but the customer did not configure the default image for that AOSP version, or the configured default image is invalid (deleted/disabled): Reporting a parameter error 未传imageId,且未设置aospVersion=xxx对应的默认镜像.

The default image is configured by ArmCloud operations at the (customer, AOSP version) dimension. For use, please contact the business/technical support provider.

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1742536327373LongTimestamp
data[ {...} ]Object[]Create a list of results
├─ padCodeACN1234567890123StringExample coding
├─ padNameNetwork storage example 001StringInstance name
├─ status0IntegerInstance status

Request Example

{
  "clusterCode": "001",
  "specificationCode": "SPEC_001",
  "imageId": "IMG_123456",
  "number": 5,
  "storageSize": 32,
  "screenLayoutCode": "LAYOUT_001",
  "randomADITemplates": true,
  "excludeRealPhoneTemplateIds": [101, 102],
  "countryCode": "SG"
}

Request Example (without passing imageId, obtain the client's default image according to the AOSP version)

{
  "clusterCode": "001",
  "specificationCode": "SPEC_001",
  "aospVersion": "android13",
  "number": 5,
  "storageSize": 32,
  "screenLayoutCode": "LAYOUT_001",
  "countryCode": "SG"
}

Response Examples

{
  "msg": "success",
  "code": 200,
  "data": [
    {
      "padCode": "ACN1234567890123",
      "clusterCode": "001",
      "storageSize": 32
    },
    {
      "padCode": "ACN1234567890124",
      "clusterCode": "001", 
      "storageSize": 32
    }
  ],
  "ts": 1742536327373
}

Error Codes

Error codeMisstatementOperational advice
100000Cluster codes cannot be emptyProvides effective cluster coding
100000The specification code cannot be emptyProvide valid specification codes
100000imageId and aospVersion cannot be empty at the same timeAt least one of the two is passed: either by passing imageId to specify the image, or by passing aospVersion to use the client's default image
100000No imageId was passed, and the default image corresponding to aospVersion=xxx was not setIf the customer does not configure the default image or the default image is disabled in this AOSP version, directly pass the imageId or contact the administrator to configure the default image
100000The number of instances must be between 1 and 100Adjust the number of instances to the effective range
100000Storage size must be greater than 0Provides efficient storage size
100000The screen layout encoding cannot be emptyScreen layout encoding is provided when the ADI template is not random and no ADI template is specified
100000DNS format errorConfirm that the DNS format is correct
110044The instance specifications do not existConfirm that the specification code is correct, then contact the administrator to confirm the specification configuration
110041Mirrors do not existConfirm that the image ID is correct and check if the image is usable
110045The screen layout does not existConfirm that the screen layout encoding is correct
110099The ADI template does not exist; please check the parametersConfirm that the ADI template ID is correct
220003Current storage specifications are not supported at this time; please refer to the documentation settingsSupported storage specifications: 4, 8, 16, 32, 64, 128, 256GB
220009If the current cluster storage capacity is insufficient, please contact the administratorContact the administrator to increase storage capacity or delete the cleanup instance
110077Failed to obtain instance MAC, please try againTry again later or contact the administrator
Batch boot of network storage instances

Used for batch booting multiple network memory instances

Interface Address

/openapi/open/pad/v2/net/storage/batch/boot/on

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodes["ACN250321HRKNE3F", "ACN250321HRKNE3G"]String[]YesList of instances that need to be powered on, with a range of 100 to 200
dns8.8.8.8StringNoDNS configuration
countryCodeSGStringNoCountry code (see https://chahuo.com/country-code-lookup.html) Only activates when the instance boots for the first time; if not passed, use the country code passed in during instance creation (if empty, default is SG).
androidProp{"persist.sys.cloud.wifi.mac": "D2:48:83:70:66:0B"}ObjectNoAndroid attribute configuration, refer to the Android Modification Attribute List (Note: time zone, language, and country attributes are currently not active )
timeout1800IntegerNoTimeout time (seconds), range: 300-7200 seconds (5 minutes - 120 minutes)
imageIdimg-25081965158StringNoImage ID: Supports changing the image ID at startup, and it takes effect every time the device is input at startup. note: Only mirrored of the same version is supported
regenSimtrueBooleanNoDo you need to regenerate SIM information based on the country code? (Note: Previously, SIM information was only generated based on country code during the first boot; regenSim is ture, regardless of whether the first boot is or not, SIM information is generated based on country code, default is false)
certCodeACN631098529xxxxxStringNoSpecify the certificate code; if not transferred, use the default certificate

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code (200 does not mean the instance operation was successful; whether the instance was successful depends on the successList itself)
msgsuccessStringInterface request status information
ts1742536327373LongTimestamp
data{...}ObjectOperation result data
├─ successList[{...}]ArrayList of successful operations (asynchronous callback, indicating the current asynchronous execution was successful; business results require waiting for callbacks)
├─ successList[].taskId13023IntegerTask ID
├─ successList[].padCodeACN280512603291648StringExample coding
├─ successList[].vmStatus0IntegerInstance status
├─ failList[{...}]ArrayList of failed operations, caused by failure in business validation or other abnormalities causing operations to fail
├─ failList[].padCodeACN279133733257216StringExample coding
├─ failList[].errCode110028StringError code
├─ failList[].errMsgThere are no instancesStringReasons for failure
Request Example
{
  "padCodes": ["ACN250321HRKNE3F", "ACN250321HRKNE3G"],
  "dns": "8.8.8.8",
  "countryCode": "US",
  "androidProp": {"persist.sys.cloud.wifi.mac": "D2:48:83:70:66:0B"},
  "timeout": 1800
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1752480095637,
    "data": {
        "successList": [
            {
                "taskId": 10111,
                "padCode": "ACN281696605700096",
                "vmStatus": 0
            }
        ],
        "failList": [
            {
                "errCode": 110028,
                "padCode": "ACN281696605700095",
                "errMsg": "实例不存在"
            },
            {
                "errCode": 110028,
                "padCode": "ACN281696605700094",
                "errMsg": "实例不存在"
            },
            {
                "errCode": 110028,
                "padCode": "ACN281696605700093",
                "errMsg": "实例不存在"
            }
        ]
    }
}

Error Codes

Error codeMisstatementOperational advice
100000The instance encoding list cannot be emptyMake sure the padCodes parameter is not empty
100000Number of instances ranges from 1 to 200Make sure the number of padCodes is between 1 and 200
100000The overtime must be between 5 minutes and 120 minutesEnsure the timeout parameter is within the range of 300-7200 seconds
100000DNS format errorConfirm that the DNS format is correct
110042There exists instances that do not belong to the current userCheck whether the instance belongs to the current user
110071There are non-net-memory instancesConfirm that the instance type is a network storage instance
110079There are instances where hash power has not been releasedWait for the computing power to be released and then retry
111070Do not repeat the operation; the current instance is currently bootingWait for the current boot operation to finish and then try again
111076Do not repeat the operation; the current instance is powered offWait for the shutdown operation to complete and then try again
111071There are instances where the device is neither shutdown nor failed to boot, and startup operations are not allowedConfirm that the instance status is either shutdown or failed to boot
111074Batch boot failure of network memory instances (system exception)System errors; please try again later or contact technical support
110074Failed to obtain computing power units, please try againTry again later or contact the administrator
110075Failed to obtain the instance IP. Please try againRetest shortly
110076ARM server network segments do not existContact the administrator to check the network segment configuration
2200014Currently, there are no available computing resources in the cluster. If the resources are insufficient, please contact the administrator for assistanceWait for computing resources to be released or contact the administrator
111079The board belonging to the current instance is offlineTry again later or contact the administrator
111081NetStorage 1.0 instances are not supportedUse the NetMemory 2.0 instance to call the interface
Batch shutdown of network storage instances

Used for batch shutdown operations on NetMemory 2.0 instances. Supports shutting down multiple instances simultaneously; only instances that are running or in a failed shutdown state can perform shutdown operations.

Interface Address

/openapi/open/pad/v2/net/storage/batch/off

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodes["ACN250321HRKNE3F", "ACN250321HRKNE3G"]String[]YesList of instances that need to be shut down, with a maximum of 200 instances allowed to be shut down simultaneously
timeout1800IntegerNoTimeout time (seconds), range: 300-7200 seconds (5 minutes to 120 minutes)
forceDelfalseBooleanNoPlease use with caution Whether to force deletion (will shut down and delete instances directly, data not retained) is set to false by default. Supported by CBS version 2.3.5 and above

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code (200 does not mean the instance operation was successful; whether the instance was successful depends on the successList itself)
msgsuccessStringInterface request status information
ts1742536327373LongTimestamp
data{...}ObjectOperation result data
├─ successList[{...}]ArrayList of successful operations (asynchronous callback, indicating the current asynchronous execution was successful; business results require waiting for callbacks)
├─ successList[].taskId13023IntegerTask ID
├─ successList[].padCodeACN280512603291648StringExample coding
├─ successList[].vmStatus0IntegerInstance status
├─ failList[{...}]ArrayList of failed operations, caused by failure in business validation or other abnormalities causing operations to fail
├─ failList[].padCodeACN279133733257216StringExample coding
├─ failList[].errCode110028StringError code
├─ failList[].errMsgThere are no instancesStringReasons for failure

Request Example

{
  "padCodes": ["ACN250321HRKNE3F", "ACN250321HRKNE3G"],
  "timeout": 1800
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1752480095637,
    "data": {
        "successList": [
            {
                "taskId": 10111,
                "padCode": "ACN281696605700096",
                "vmStatus": 0
            }
        ],
        "failList": [
            {
                "errCode": 110028,
                "padCode": "ACN281696605700095",
                "errMsg": "实例不存在"
            },
            {
                "errCode": 110028,
                "padCode": "ACN281696605700094",
                "errMsg": "实例不存在"
            },
            {
                "errCode": 110028,
                "padCode": "ACN281696605700093",
                "errMsg": "实例不存在"
            }
        ]
    }
}

Error Codes

Error codeMisstatementOperational advice
100000The instance encoding list cannot be emptyMake sure the padCodes parameter is not empty
100000Number of instances ranges from 1 to 200Ensure the number of instances ranges from 1 to 200
100000The overtime must be between 5 minutes and 120 minutesSet a reasonable timeout time (300-7200 seconds)
110028There are no instancesCheck whether the instance code is correct
110071There are non-net-memory instancesMake sure all operations are on the network storage instance
110042There exists instances that do not belong to the current userCheck instance attribution permissions
111072The instance is not bound to computing power and cannot shut downEnsure the instance is bound to the computing power resource
111073Consecutive failed shutdowns of the network storage instanceCheck the instance status and contact the administrator for assistance
111070Do not repeat the operation; the current instance is currently bootingWait for the current boot operation to finish and then try again
111076Do not repeat the operation; the current instance is powered offWait for the shutdown operation to complete and then try again
111078If there are instances that are not running and not in a failed shutdown state, shutdown operations are not allowedConfirm that the instance status is running or failed to shut down
111079The board belonging to the current instance is offlineTry again later or contact the administrator
111080The CBS version does not support forced deletionIf needed, please contact the administrator to upgrade to the CBS version
111081NetStorage 1.0 instances are not supportedUse the NetMemory 2.0 instance to call the interface
Batch forced shutdown of network memory instances

Interface Type: Asynchronous interface Association Callback: NetStorage 2.0 Forced Shutdown Callback (taskBusinessType: 1308)

Used to batch force shutdown operations on NetStorage 2.0 instances. The forced shutdown device shuts down directly and deletes instance data (without rewriting CEPH), using a separate queue channel from regular shutdown, unaffected by the regular shutdown queue. Only instances that are running or in a failed shutdown state can perform forced shutdown operations.

Note: After a forced shutdown, instance data will be deleted and cannot be recovered. Please use with caution. Requires CBS version > = 2.8.4.

Interface Address

/openapi/open/pad/v2/net/storage/batch/forceOff

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodes["ACN250321HRKNE3F", "ACN250321HRKNE3G"]String[]YesA list of instances that require forced shutdown, allowing up to 200 instances to operate simultaneously
timeout1800IntegerNoTimeout time (seconds), range: 300-7200 seconds (5 minutes to 120 minutes)

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code (200 does not mean the instance operation was successful; whether the instance was successful depends on the successList itself)
msgsuccessStringInterface request status information
ts1742536327373LongTimestamp
data{...}ObjectOperation result data
├─ successList[{...}]ArrayList of successful operations (asynchronous callback, indicating the current asynchronous execution was successful; business results require waiting for callbacks)
├─ successList[].taskId13023IntegerTask ID
├─ successList[].padCodeACN280512603291648StringExample coding
├─ successList[].vmStatus0IntegerInstance status
├─ failList[{...}]ArrayList of failed operations, caused by failure in business validation or other abnormalities causing operations to fail
├─ failList[].padCodeACN279133733257216StringExample coding
├─ failList[].errCode110028StringError code
├─ failList[].errMsgThere are no instancesStringReasons for failure

Request Example

{
  "padCodes": ["ACN250321HRKNE3F", "ACN250321HRKNE3G"],
  "timeout": 1800
}

Error Codes

Error codeFalse informationSuggested handling methods
100000Number of instances ranges from 1 to 200Ensure the number of instances ranges from 1 to 200
110028There are no instancesCheck whether the instance code is correct
110071There are non-net-memory instancesMake sure all operations are on the network storage instance
110042There exists instances that do not belong to the current userCheck instance attribution permissions
111072The instance is not bound to computing power and cannot shut downEnsure the instance is bound to the computing power resource
111073Consecutive failed shutdowns of the network storage instanceCheck the instance status and contact the administrator for assistance
111076Do not repeat the operation; the current instance is powered offWait for the shutdown operation to complete and then try again
111078If there are instances that are not running and not in a failed shutdown state, shutdown operations are not allowedConfirm that the instance status is running or failed to shut down
111080The CBS version does not support forced shutdownCBS version requires >=2.8.4. Please contact your administrator to upgrade
111081NetStorage 1.0 instances are not supportedUse the NetMemory 2.0 instance to call the interface

Batch deletion of network storage instances

Used for batch deletion of network memory instances, supports passing multiple instances for batch deletion operations.

Interface Address

/openapi/open/pad/v2/net/storage/batch/delete

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodes["ACN250321HRKNE3F", "ACN250321HRKNE3G"]String[]YesList of instance codes to be deleted, with a range of 1 to 200 instances
timeout1800IntegerNoTimeout time (seconds), range: 300-7200 seconds (5 minutes - 120 minutes)

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code (200 does not mean all instances succeeded; whether the instance succeeded depends on the successList itself)
msgsuccessStringInterface request status information
ts1742536327373LongTimestamp
data{...}ObjectOperation result data
├─ successList[{...}]ArrayList of successful operations (asynchronous callback, indicating the current asynchronous execution was successful; business results require waiting for callbacks)
├─ successList[].taskId13023IntegerTask ID
├─ successList[].padCodeACN280512603291648StringExample coding
├─ successList[].vmStatus0IntegerInstance status
├─ failList[{...}]ArrayList of failed operations, caused by failure in business validation or other abnormalities causing operations to fail
├─ failList[].padCodeACN279133733257216StringExample coding
├─ failList[].errCode110028StringError code
├─ failList[].errMsgThere are no instancesStringReasons for failure
├─ completeList[{...}]ArrayA list of completed operations, examples that do not require asynchronous operations
├─ completeList[].padCodeACN279133733257231StringExample coding

Request Example

{
  "padCodes": ["ACN250321HRKNE3F", "ACN250321HRKNE3G"],
  "timeout": 1800
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1752480095637,
    "data": {
        "successList": [
            {
                "taskId": 10111,
                "padCode": "ACN281696605700096",
                "vmStatus": 0
            }
        ],
        "failList": [
            {
                "errCode": 110028,
                "padCode": "ACN281696605700095",
                "errMsg": "实例不存在"
            },
            {
                "errCode": 110028,
                "padCode": "ACN281696605700094",
                "errMsg": "实例不存在"
            },
            {
                "errCode": 110028,
                "padCode": "ACN281696605700093",
                "errMsg": "实例不存在"
            }
        ],
        "completeList": [
            {
                "padCode": "ACN281696605700096"
            }
        ]
    }
}

Error Codes

Error codeMisstatementOperational advice
100000The instance encoding list cannot be emptyCheck whether the padCodes parameter is passed
100000Number of instances ranges from 1 to 200Check whether the padCodes' array length is within the valid range
100000The overtime must be between 5 minutes and 120 minutesCheck whether the timeout parameter is within the 300-7200 second range
110028There are no instancesCheck whether the incoming instance code is correct
110042There exists instances that do not belong to the current userCheck whether the instance belongs to the currently logged-in user
110071There are non-net-memory instancesConfirm that all incoming instances are network memory instances
111070Do not repeat the operation; the current instance is currently bootingWait until the startup operation is complete before deleting it
111073Instances that are not currently powered down cannot be deletedMake sure all instances are powered down before deleting
111077Do not repeat the operation; the current instance is being deletedWait for the current deletion operation to complete
111079The board belonging to the current instance is offlineTry again later or contact the administrator
111081NetStorage 1.0 instances are not supportedUse the NetMemory 2.0 instance to call the interface
Network Storage Example Cloning

Used for cloning a single network storage instance, supports specifying the number of clones and note information. This interface only supports network storage 2.0 instances that are powered on and powered on. Additionally, special attention should be paid to: ** must be connected to callback processing; instances created after successful cloning will be returned in the callback messages. **

Interface Address

/openapi/open/pad/v2/net/storage/clone

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodeACN250321HRKNE3FStringYesThe original instance code needed to be cloned
number2IntegerYesNumber of clones, range 1-100

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code: 200 means successful
msgsuccessStringInterface request status information
ts1742536327373LongTimestamp
data{...}ObjectClone result information
├─ successList[{...}]ArrayList of successful operations (asynchronous callback, indicating the current asynchronous execution was successful; business results require waiting for callbacks)
├─ successList[].taskId13023IntegerTask ID
├─ successList[].padCodeACN280512603291648StringExample coding
├─ successList[].vmStatus0IntegerInstance status
├─ failList[{...}]ArrayList of failed operations, caused by failure in business validation or other abnormalities causing operations to fail
├─ failList[].padCodeACN279133733257216StringExample coding
├─ failList[].errCode110028StringError code
├─ failList[].errMsgThere are no instancesStringReasons for failure

Request Example

{  
    "padCode": "ACN250321HRKNE3F",
    "number": 2,
    "remark": "Test cloning"  
}  

Response Examples

{
    "msg": "success",
    "code": 200,
    "data": {
        "successList": [
            {
                "taskId": 13023,
                "padCode": "ACN250321HRKNE3F",
                "vmStatus": 0
            }
        ],
        "failList": []
    },
    "ts": 1742536327373
}

Callback Examples

{
  "endTime": 1754724268268,
  "padCode": "ACN319190980034587",
  "taskBusinessType": 1304,
  "taskContent": "[\"ACN319348753039360\",\"ACN319348753039363\",\"ACN319348753039366\",\"ACN319348753039369\",\"ACN319348753039372\",\"ACN319348753039375\",\"ACN319348753039378\",\"ACN319348753039381\",\"ACN319348753039384\",\"ACN319348753039387\"]",
  "taskId": 10682,
  "taskResult": "Success",
  "taskStatus": 3
}

Error Codes

Error codeMisstatementOperational advice
100000Incorrect request parametersCheck whether the requested parameters are complete
100000The instance number cannot be emptyEnsure the padCode parameter is not empty
100000The number of clones cannot be empty and must be greater than 0Make sure the number parameter is greater than 0 and not empty
100000The number of clones cannot exceed 100Make sure the number parameter does not exceed 100
111081NetStorage 1.0 instances are not supportedMake sure the instance type is Cache V2 instance
110028There are no instancesCheck whether the instance code is correct
111083Instances that are not powered down are not allowed to be clonedEnsure the instance status is off
111085The instance does not have boot behavior and does not allow cloningMake sure the instance has been powered on at least once
111082Network storage units do not existCheck whether the instance storage configuration is normal
111086If the instance does not generate data after booting, cloning is not allowedEnsure the instance has effective data storage
111087The CBS version does not support cloning. Please upgrade to the CBS version and try againPlease contact us to upgrade to the CBS version
111084Do not repeat the operation; the current instance is currently being clonedIt's best not to make concurrent calls
111070Do not repeat the operation; the current instance is currently bootingIt's best not to make concurrent calls
111076Do not repeat the operation; the current instance is powered offIt's best not to make concurrent calls
111077Do not repeat the operation; the current instance is being deletedIt's best not to make concurrent calls
500System anomalySystem errors; please try again later or contact technical support

Application Security Policy V2.0

1. API Interface

Paginated Search for Application Security Policy Group Lists

Used for paginating the list of application security policy groups, supports filtering by policy group name and type, and uses lastId+rows for paginated queries.

Interface Address

/openapi/open/appSecurityPolicyGroup/pageList

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
policyNameTest strategy groupStringNoPolicy group name (fuzzy query)
policyType0IntegerNoStrategy group types (0-blacklist, 1-whitelist)
lastId0LongNoFor the last record ID of the last query, pass null or 0 for the first query
rows10IntegerYesQuery quantity, range 1-1000, default 10

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1742536327373LongTimestamp
data{...}ObjectPaginated result data
├─ pageData[{...}]ArrayList of strategy groups
├─ pageData[].id123LongStrategy group ID
├─ pageData[].policyNameTest strategy groupStringStrategy group name
├─ pageData[].policyType0IntegerStrategy group types (0-blacklist, 1-whitelist)
├─ pageData[].appCount5IntegerNumber of applications
├─ pageData[].padCount10IntegerNumber of instances
├─ pageData[].remarkNote the informationStringNote
├─ pageData[].createTime2025-01-29 10:00:00StringCreation date
├─ pageData[].updateTime2025-01-29 10:00:00StringUpdate time
├─ lastId123LongThe last record ID is used for the next page query
├─ rows10IntegerQuery quantity
├─ size10IntegerCurrent page count
├─ hasNexttrueBooleanIs there a next page?

Request Example

{
  "policyName": "Testing",
  "policyType": 0,
  "lastId": 0,
  "rows": 10
}

Response Examples

{
  "msg": "success",
  "code": 200,
  "data": {
    "pageData": [
      {
        "id": 123,
        "policyName": "Test strategy group",
        "policyType": 0,
        "appCount": 5,
        "padCount": 10,
        "remark": "Note the information",
        "createTime": "2025-01-29 10:00:00",
        "updateTime": "2025-01-29 10:00:00"
      }
    ],
    "lastId": 123,
    "rows": 10,
    "size": 10,
    "hasNext": true
  },
  "ts": 1742536327373
}
Query Application Security Policy Group Details

Used to query detailed information of application security policy groups based on policy group IDs, including information about associated applications and instances.

Interface Address

/openapi/open/appSecurityPolicyGroup/detail

Request Method

POST

Request Data Types

application/json

Request Parameters

Parameter nameExample valuesParameter typeIs it required?Parameter description
id123LongYesStrategy group ID

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1742536327373LongTimestamp
data{...}ObjectDetailed data from the strategy group
├─ id123LongStrategy group ID
├─ policyNameTest strategy groupStringStrategy group name
├─ policyType0IntegerStrategy group types (0-blacklist, 1-whitelist)
├─ appNum5IntegerNumber of applications
├─ padNum10IntegerNumber of instances
├─ remarkNote the informationStringNote
├─ appInfos[{...}]ArrayApplication information list
├─ appInfos[].fileId456LongFile ID
├─ appInfos[].appId789LongApplication ID
├─ appInfos[].appNameTest applicationsStringApp name
├─ appInfos[].packageNamecom.test.appStringPackage name
├─ appInfos[].appVersionNo1IntegerApplication version number
├─ appInfos[].appVersionName1.0.0StringApply the version name
├─ padInfos[{...}]ArrayList of example information
├─ padInfos[].padcodeACN1234567890123StringExample code
├─ padInfos[].padTyperealStringInstance Types (real-Cloud-Real, virtual-Virtual Machine)
├─ padInfos[].padImageIdimg_123456StringInstance image ID
├─ padInfos[].padImageAosp10StringInstance mirrors the AOSP version
├─ padInfos[].padImageVersion20251023_2StringInstance image version
├─ padInfos[].padIp192.168.1.100StringInstance IP

Request Example

POST /openapi/open/appSecurityPolicyGroup/detail?id=123

Response Examples

{
  "msg": "success",
  "code": 200,
  "data": {
    "id": 123,
    "policyName": "Test strategy group",
    "policyType": 0,
    "appNum": 5,
    "padNum": 10,
    "remark": "Note the information",
    "appInfos": [
      {
        "fileId": 456,
        "appId": 789,
        "appName": "Test applications",
        "packageName": "com.test.app",
        "appVersionNo": 1,
        "appVersionName": "1.0.0"
      }
    ],
    "padInfos": [
      {
        "padcode": "ACN1234567890123",
        "padType": "real",
        "padImageId": "img_123456",
        "padImageAosp": "10",
        "padImageVersion": "20251023_2",
        "padIp": "192.168.1.100"
      }
    ]
  },
  "ts": 1742536327373
}
New/Updated Application Security Policy Group

Used to add or update the application security policy group. Updates when the ID is passed; new when the ID is not passed.

Interface Address

/openapi/open/appSecurityPolicyGroup/save

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
id123LongNoStrategy Group ID (required for updates, can be left empty when added)
policyNameTest strategy groupStringYesStrategy group name (non-repeatable)
policyType0IntegerYesStrategy group types (0-blacklist, 1-whitelist)
remarkNote the informationStringNoNote
appInfos[{...}]ArrayNoApplication information list (pass null, no updates, pass empty array[], clear)
├─ appInfos[].appId789LongNoApp ID (choose between appId or packageName) can be obtained by uploading the app
├─ appInfos[].packageNamecom.test.appStringNoPackage Name (choose either appId or packageName) If appId is valid, this field will not be active
padCodes["ACN1234567890123"]String[]NoExample code list (pass null without updates, pass empty array[] to clear)

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1742536327373LongTimestamp
data123LongStrategy group ID

Request Example

{
  "policyName": "Test strategy group",
  "policyType": 0,
  "remark": "Note the information",
  "appInfos": [
    {
      "appId": 789
    },
    {
      "packageName": "com.test.app"
    }
  ],
  "padCodes": ["ACN1234567890123"]
}

Response Examples

{
  "msg": "success",
  "code": 200,
  "data": 123,
  "ts": 1742536327373
}
Delete the Application Security Policy Group

Used to delete the application security policy group based on the policy group ID.

Interface Address

/openapi/open/appSecurityPolicyGroup/delete

Request Method

POST

Request Data Types

application/json

Request Parameters

Parameter nameExample valuesParameter typeIs it required?Parameter description
id123LongYesStrategy group ID

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1742536327373LongTimestamp
datanullObjectNo data returned

Request Example

POST /openapi/open/appSecurityPolicyGroup/delete?id=123

Response Examples

{
  "msg": "success",
  "code": 200,
  "data": null,
  "ts": 1742536327373
}
Instance Replacement Policy Group

Used to replace an instance with a specified set of policy groups, with the parameter set as instance number + set of policy group id.

Interface Address

/openapi/open/appSecurityPolicyGroup/changePadPolicyGroups

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodeACN1234567890123StringYesCase number
policyGroupIds[123, 456]Long[]YesSet of policy group IDs (up to 100)

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1742536327373LongTimestamp
datanullObjectNo data returned

Request Example

{
  "padCode": "ACN1234567890123",
  "policyGroupIds": [123, 456]
}

Response Examples

{
  "msg": "success",
  "code": 200,
  "data": null,
  "ts": 1742536327373
}
Query instance association policy group

Used to query all policy groups associated with each instance by instance number collection.

Interface Address

/openapi/open/appSecurityPolicyGroup/queryPadPolicyGroups

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodes["ACN1234567890123", "ACN1234567890124"]String[]YesInstance numbered collection

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1742536327373LongTimestamp
data[{...}]ArrayThe instance associates a list of policy groups
├─ padCodeACN1234567890123StringCase number
├─ policyGroups[{...}]ArrayList of associated strategy groups
├─ policyGroups[].id123LongStrategy group ID
├─ policyGroups[].policyNameTest strategy groupStringStrategy group name
├─ policyGroups[].policyType0IntegerStrategy group types (0-blacklist, 1-whitelist)
├─ policyGroups[].appCount5IntegerNumber of applications
├─ policyGroups[].remarkNote the informationStringNote

Request Example

{
  "padCodes": ["ACN1234567890123", "ACN1234567890124"]
}

Response Examples

{
  "msg": "success",
  "code": 200,
  "data": [
    {
      "padCode": "ACN1234567890123",
      "policyGroups": [
        {
          "id": 123,
          "policyName": "Test strategy group",
          "policyType": 0,
          "appCount": 5,
          "remark": "Note the information"
        }
      ]
    }
  ],
  "ts": 1742536327373
}
Additional Update to Strategy Group

Used for additional updates to the strategy group, allowing for additional applications or instances. The input parameters are the policy group ID + application set + instance number set.

Interface Address

/openapi/open/appSecurityPolicyGroup/appendRelations

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
policyGroupId123LongYesStrategy group ID
appInfos[{...}]ArrayNoApp information list (up to 100 items), each app information can choose either appId or packageName
├─ appInfos[].appId789LongNoApplication ID (choose either appId or packageName)
├─ appInfos[].packageNamecom.test.appStringNoIf both the package name (choose between appId and packageName) exists, the valid appId shall prevail
padCodes["ACN1234567890123"]String[]NoInstance number collection (up to 100)

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1742536327373LongTimestamp
datanullObjectNo data returned

Request Example

{
  "policyGroupId": 123,
  "appInfos": [
    {
      "appId": 789
    },
    {
      "packageName": "com.test.app"
    }
  ],
  "padCodes": ["ACN1234567890123"]
}

Response Examples

{
  "msg": "success",
  "code": 200,
  "data": null,
  "ts": 1742536327373
}
Delete Application/Example in Policy Group

Used to delete applications/instances in policy groups; the application list and instance list cannot be empty at the same time.

Interface Address

/openapi/open/appSecurityPolicyGroup/removeRelations

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
policyGroupId123LongYesStrategy group ID
appInfos[{...}]ArrayNoApp information list (up to 100 items), each app information can choose either appId or packageName
├─ appInfos[].appId789LongNoApplication ID (choose either appId or packageName)
├─ appInfos[].packageNamecom.test.appStringNoIf both the package name (choose between appId and packageName) exists, the valid appId shall prevail
padCodes["ACN1234567890123"]String[]NoInstance number collection (up to 100)

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1742536327373LongTimestamp
datanullObjectNo data returned

Request Example

{
  "policyGroupId": 123,
  "appInfos": [
    {
      "appId": 789
    },
    {
      "packageName": "com.test.app"
    }
  ],
  "padCodes": ["ACN1234567890123"]
}

Response Examples

{
  "msg": "success",
  "code": 200,
  "data": null,
  "ts": 1742536327373
}

Net Storage 1.0

Creating a Database Instance

Used to create a network memory instance in a specified cluster (default type is virtual machine)

Interface Address

/openapi/open/pad/net/storage/res/create

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
clusterCode001StringisCluster code identifies the cluster to which the instance belongs
specificationCodem2-3StringisSpecification code defines the performance configuration of the instance
imageIdimg-25021828327StringNoImage ID, specifying the system image. not passed, press aospVersion to get the default image configured by that client
aospVersionandroid13StringNoAOSP version. only takes effect when imageId is not passed, is used to retrieve the default image configured by the customer under that AOSP version
screenLayoutCoderealdevice_1440x3120x560StringisScreen layout code
number2IntegerisThe number of instances that need to be created
dns8.8.8.8StringNoDNS server address
storageSize16IntegerisStorage size (GB)
randomADITemplatestruebooleanNoRandom ADI template (if true, it means real machine, and randomly fill in an ADI template)
excludeRealPhoneTemplateIds[36,37]Long[]NoList of template IDs to exclude when randomizing ADI templates; validity takes effect when randomADITemplates is true
realPhoneTemplateId36IntegerNoReal device template ID
groupId0IntegerNoGroup IDs default to public pools.

imageId and aospVersion value rules

  • Pass in imageId: Create instances using this image according to the original logic, aospVersion do not take effect (the original caller does not need to make any changes).
  • No imageId passed: aospVersion must be passed, and the system creates instances using the default image configured by the client for that AOSP version.
  • imageId and aospVersion are both empty: Reporting parameter error imageId和aospVersion不能同时为空.
  • Passing in a aospVersion, but the customer did not configure the default image for that AOSP version, or the configured default image is invalid (deleted/disabled): Reporting a parameter error 未传imageId,且未设置aospVersion=xxx对应的默认镜像.

The default image is configured by ArmCloud operations at the (customer, AOSP version) dimension. For use, please contact the business/technical support provider.

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1742536074329LongTimestamp
dataInstance creation successfulStringBusiness returns information
├─padCodeACN250424UPHQOTGIntegerCase number
├─screenLayoutCoderealdevice_1440x3120x560StringScreen layout numbering
├─netStorageResId“ZSC250424G4S6RH1-ACN250424UPHQOTG”StringNetwork storage code
├─deviceLevel“m2-4”StringExample specifications
├─clusterCode“006”StringCluster numbering

Request Example

{
  "clusterCode": "001",
  "specificationCode": "m2-3",
  "imageId": "img-25021828327",
  "screenLayoutCode": "realdevice_1440x3120x560",
  "isolateCpu": true,
  "isolateMemory": true,
  "number": 2,
  "isolateStorage": true,
  "dns": "8.8.8.8",
  "storageSize": 16,
  "randomADITemplates": true,
  "excludeRealPhoneTemplateIds": [36, 37],
  "realPhoneTemplateId": 36
}

Request Example (without passing imageId, obtain the client's default image according to the AOSP version)

{
  "clusterCode": "001",
  "specificationCode": "m2-3",
  "aospVersion": "android13",
  "screenLayoutCode": "realdevice_1440x3120x560",
  "number": 2,
  "storageSize": 16
}

Response Examples

{
  "msg": "success",
  "code": 200,
  "data": [
    {
      "padCode": "ACN250424UPHQOTG",
      "cloudVendorType": 3,
      "memory": 8192,
      "groupId": 0,
      "storage": 45,
      "padIp": null,
      "streamType": 1,
      "padSn": 1,
      "armServerCode": null,
      "screenLayoutCode": "realdevice_1440x3120x560",
      "netStorageResSize": 16,
      "imageId": "img-25041475147",
      "dns": "8.8.8.8",
      "dataSize": 17179869184,
      "dataSizeAvailable": null,
      "cpu": -1,
      "clusterCode": "006",
      "netStorageResId": "ZSC250424G4S6RH1-ACN250424UPHQOTG",
      "realPhoneTemplateId": null,
      "dataSizeUsed": null,
      "netStorageResFlag": 1,
      "deviceLevel": "m2-4",
      "online": 0,
      "socModel": "MACS2080",
      "streamStatus": 0,
      "status": 1
    }
  ],
  "ts": 1745465574610
}

Error Codes

Error codeError ExplanationOperation Suggestions
100000imageId and aospVersion cannot be emptyat the same time At least one of the two is passed: either by passing imageId to specify the image, or by passing aospVersion to use the client's default image
100000No imageId was passed, and the default image, corresponding to aospVersion=xxx, was not set If the customer does not configure the default image or the default image is disabled in this AOSP version, directly pass the imageId or contact the administrator to configure the default image
220003Current storage specifications are not supported at this time. Please refer to the documentation settingsCurrently supports fixed stored values (4, 16, 32, 64, 128, 256)
110099The ADI template does not exist. Please check the parametersConfirm that the value of the ADI template exists and is not disabled
110044The instance specification does not existCurrently supports m2-1~10
220009Currently, network storage capacity is insufficient. Please contact the administratorContact the administrator to increase network storage capacity or delete some unused instances to free up space
110041Mirror does not existConfirm that the image ID is correct
110045Screen layout does not existConfirm that the screen layout code is correct

Network Storage Instance Powers On

Used to boot up a network memory instance in a specified cluster. If the incoming country code does not match, the default code: SG will be used

Interface Address

/openapi/open/pad/net/storage/on

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
clusterCode001StringNoCluster code identifies the cluster to which the instance belongs
androidProp{"persist.sys.cloud.wifi.mac": "D2:48:83:70:66:0B"}ObjectNoRefer to the Android Modification Attribute List (Note: Time zone, language, and country attributes are currently not active )
countryCodeSGStringNoCountry code (see details for details:https://chahuo.com/country-code-lookup.html)
padCodes["ACN250321HRKNE3F"]String[]isList of instances that need to be powered on, with a maximum of 200 instances allowed to start simultaneously
imageIdimg-25081965158StringNoImage ID: Supports changing the image ID at startup, and it takes effect every time the device is input at startup. note: Only mirrored of the same version is supported
regenSimtrueBooleanNoDo you need to regenerate SIM information based on the country code? (Note: Previously, SIM information was only generated based on country code during the first boot; regenSim is ture, regardless of whether the first boot is or not, SIM information is generated based on country code, default is false)
certCodeACN631098529xxxxxStringNoSpecify the certificate code; if not transferred, use the default certificate

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1742536327373LongTimestamp
data[ {...} ]Object[]List of instance status information
├─ padCodeACN250321HRKNE3FStringExample coding
├─ vmStatus0IntegerInstance status (0 means started)
├─ taskId13023IntegerBackground task ID
├─ dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
  "clusterCode": "001",
  "padCodes": ["ACN250321HRKNE3F"], 
   "countryCode":"US",
   "androidProp": "{\"persist.sys.cloud.wifi.mac\": \"D2:48:83:70:66:0B\"}"
}

Response Examples

{
  "msg": "success",
  "code": 200,
  "data": [
    {
      "padCode": "ACN250321HRKNE3F",
      "vmStatus": 0,
      "taskId": 13023,
      "dispatchCode": 200
    }
  ],
  "ts": 1742536327373
}

Error Codes

Error codeError ExplanationOperation Suggestions
110095There is no instance that can be turned on. Please check the instance statusCheck whether the instance status is powered off
220011Frequent network storage instances, please try again laterTry again later
110101No board matching the sample specifications was found. Please go to the board list to set the specifications.Confirm that the instance's specifications match the board specifications, and that the board has no computing power occupied

Network Storage Instance Shutdown

Used to perform shutdown operations on network memory instances within a specified cluster.

Interface Address

/openapi/open/pad/net/storage/off

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
clusterCode001StringNoCluster code identifies the cluster to which the instance belongs
padCodes["ACN250321HRKNE3F"]String[]isList of instance codes that need to be shut down
forceDelfalseBooleanNoPlease use with caution Whether to forcibly delete (will shut down and delete instances directly, data not retained) Default is false. CBS version 2.3.5 and above supports

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1742536327373LongTimestamp
data[ {...} ]Object[]List of shutdown result information
├─ padCodeACN250321HRKNE3FStringExample coding
├─ vmStatus0IntegerInstance status (0 means shutdown)
├─ taskId13023IntegerBackground task ID
├─ dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
  "clusterCode": "001",
  "padCodes": ["ACN250321HRKNE3F"]
}

Response Examples

{
"msg": "success",
"code": 200,
"data": [
{
"padCode": "ACN250321HRKNE3F",
"vmStatus": 0,
"taskId": 13023,
"dispatchCode": 200
}
],
"ts": 1742536327373
}

Error Codes

Error codeError ExplanationOperation Suggestions
110094There are no instances that can shut down. Please check the instance statusConfirm instance status (shutdown status and power-on status cannot be shut down)

Forced Shutdown Network Storage Example

Interface Type: Asynchronous interface Associated Callback: Forced shutdown callback for network storage instance (taskBusinessType: 1208)

Used to force shutdown operations on NetStorage 1.0 instances. The forced shutdown device shuts down directly and deletes instance data (without rewriting CEPH), using a separate queue channel from regular shutdown, unaffected by the regular shutdown queue.

Note: After a forced shutdown, instance data will be deleted and cannot be recovered. Please use with caution. Requires CBS version > = 2.8.4.

Interface Address

/openapi/open/pad/net/storage/forceOff

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodes["ACN250321HRKNE3F"]String[]isList of instance codes that require forced shutdown, up to 200 entries

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1742536327373LongTimestamp
data[ {...} ]Object[]List of forced shutdown result information
├─ padCodeACN250321HRKNE3FStringExample coding
├─ vmStatus0IntegerInstance status
├─ taskId13023IntegerBackground task ID
├─ dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
  "padCodes": ["ACN250321HRKNE3F"]
}

Response Examples

{
  "msg": "success",
  "code": 200,
  "data": [
    {
      "padCode": "ACN250321HRKNE3F",
      "vmStatus": 0,
      "taskId": 13023,
      "dispatchCode": 200
    }
  ],
  "ts": 1742536327373
}

Error Codes

Error codeError ExplanationOperation Suggestions
110094There are no instances that can shut down. Please check the instance statusConfirm instance status (shutdown status and power-on status cannot be shut down)

Delete Network Storage Examples

Used to delete specified Memory instances in a specified cluster.

Interface Address

/openapi/open/pad/net/storage/delete

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
clusterCode""StringNoCluster code identifies the cluster to which the instance belongs (can be empty)
padCodes["ACN250321GYWUP8J"]String[]isList of instance codes to be deleted

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1742536423100LongTimestamp
data[ {...} ]Object[]Delete the list of result information
├─ padCodeACN250321GYWUP8JStringExample coding
├─ vmStatus0IntegerInstance status (0 means deleted or shut down)
├─ taskId13025IntegerBackground task ID
├─ dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
  "clusterCode": "",
  "padCodes": ["ACN250321GYWUP8J"]
}

Response Examples

{
  "msg": "success",
  "code": 200,
  "data": [
    {
      "padCode": "ACN250321GYWUP8J",
      "vmStatus": 0,
      "taskId": 13025,
      "dispatchCode": 200
    }
  ],
  "ts": 1742536423100
}

Error Codes

Error codeError ExplanationOperation Suggestions
110096The current instance status cannot be deleted. Please check the instance statusConfirm instance status (only instances in the connection state can be deleted)

Gengbai Network Storage Examples

Used to perform configuration operations on specified network memory instances, supporting modification of storage space size or instance specifications.

Interface Address

/openapi/open/pad/net/storage/update

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodes["ACN250321GYWUP8J"]String[]isList of instance codes that need to be further matched (minimum 1, maximum 200)
storageCapacity100IntegerNoStorage space size, unit: GB
deviceLevel"S1"StringNoExample specifications

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1742536423100LongTimestamp
datanullStringReturns data (empty on success)

Request Example

{
  "padCodes": ["ACN250321GYWUP8J"],
  "storageCapacity": 100,
  "deviceLevel": "S1"
}

Response Examples

{
  "msg": "success",
  "code": 200,
  "data": null,
  "ts": 1742536423100
}

Query Network Storage Cluster Details

Query the user's quota, used capacity, and remaining available capacity on each storage cluster.

Whether a cluster appears in the response depends on whether operations have allocated quotas to the user on that cluster; If not allocated, the cluster will not appear in the results.

Interface Address

/openapi/open/pad/net/detail/storageCapacity/available

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
clusterCode"example001"StringNoStorage cluster encoding; If not transmitted, it returns all the clusters with allocated quotas for that user

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1742476224830LongTimestamp
data[]ArrayThe user's capacity details on each storage cluster
data[].clusterCode"example001"StringStorage cluster encoding
data[].storageCapacityTotal1000NumberUser quota (unit: GB); Returns 99999999 when there is no limit
data[].storageCapacityUsedTotal100NumberThe user's usage capacity (unit: GB)
data[].storageCapacityAvailable900NumberRemaining Available Capacity (unit: GB) = storageCapacityTotal − storageCapacityUsedTotal

Request Example

{
  "clusterCode": "example001"
}

Response Examples

{
  "code": 200,
  "msg": "success",
  "ts": 1745406673542,
  "data": [
    {
      "clusterCode": "example001",
      "storageCapacityTotal": 1000,
      "storageCapacityUsedTotal": 100,
      "storageCapacityAvailable": 900
    }
  ]
}

Setting Network Storage Cluster Board Specifications

Used to set the specification level of the specified equipment's board.

Interface Address

/openapi/open/device/net/setDeviceLevel

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
deviceCodes["ACD250320R4I7OLM", "ACD250320UEH4OV3"]ArrayisDevice code list, including the codes for the board that needs specification settings
deviceLevel"m2-8"StringisThe equipment specifications and grades are set up

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1742526263389LongTimestamp
data""StringBusiness returns information

Request Example

{
  "deviceCodes": ["ACD250320R4I7OLM", "ACD250320UEH4OV3"],
  "deviceLevel": "m2-8"
}

Response Examples

{
  "msg": "success",
  "code": 200,
  "data": "",
  "ts": 1742526263389
}
Error codeError ExplanationOperation Suggestions
220002The current specification does not exist; please check the parametersConfirm that the specification code is correct
220007The operating board does not exist; please check the parametersConfirm that the board code is correct
220008Currently, the board has running computing power units and cannot modifyThere is a running instance on the board, and the specifications cannot be changed; you need to shut down the instance on the board first

Network Storage Backup

Used to initiate a network storage backup task, the system will generate a corresponding backup task for each incoming network storage resource number.

Interface Address

/openapi/open/pad/net/storage/pad/backup

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
remarkGoogle verification is logged inStringisBackup markup information
padCodes["ACN250403SFPIB1N"]List<String>isInstances padCode: minimum 1, maximum 200

Response Parameters

List of network storage resource numbers

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1743664828338LongTimestamp
data[ { "padCode": "ZSC2504034L6B26X-ACN250403SFPIB1N", "vmStatus": 0, "taskId": 10350 } ]List<GeneratePadTaskVO>Backup and storage code list
├─ dispatchCode0Integer(data list element field) The task issues a status code. 200 means the instance was successfully issued; 200 is the failure reason code (used for internationalization, distinct from interface layer code). The value is shown at the end of the article in the PadTaskFailCode encoding table

Request Example

{
  "padCodes": [
    "ACN250403SFPIB1N"
  ],
  "remark": "Google verification is now on"
}

Response Examples

{
  "msg": "success",
  "code": 200,
  "data": [
    {
      "padCode": "ZSC2504034L6B26X-ACN250403SFPIB1N",
      "vmStatus": 0,
      "taskId": 10350,
      "dispatchCode": 200
    }
  ],
  "ts": 1743664828338
}
Error codeError ExplanationOperation Suggestions
220009Unable to operate storage units that do not belong to you, please check the parametersMake sure the storage code is filled in correctly
220010Network storage that is powered on cannot be backed up. Please check the dataStorage is only allowed to be backed up when the device is in the shutdown state
220001There are instances in the current batch that have not been turned off. Please check the instance status

Boot (Restore) of the Specified Network Storage Instance

Used to boot on instances bound to specified network storage resource numbers (netStorageResUnitCode). If the incoming country code does not match, the default code: SG will be used When starting up a specified storage, interception is required in the following situations:

  1. Cross-Device Type:

    • Virtual machine → cloud physical device
    • Cloud physical device → virtual machine
  2. Cross-real machine brand and model (except for instances where the machine is not yet powered on):

    • Brand A cloud physical device → Brand B cloud physical device (for example, Samsung → Xiaomi)
    • Brand A model 1 cloud physical device → Brand A model 2 cloud physical device (for example, Samsung Galaxy A53 → Samsung Galaxy A71)
  3. Cross-mirror versions:

    • Android 13 → Android 14
    • Android 13 → Android 10
    • Android 14 → Android 13
    • Android 14 → Android 10
    • Android 10 → Android 13
    • Android 10 → Android 14

Interface Address

/openapi/open/pad/net/storage/specifiedCode/on

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
clusterCode"001"StringNoCluster coding
padCode"ACN250403FKAX2HX"StringisCase number
netStorageResUnitCode"ZSC250403MMGUFGN-ACN250403ZIMD9KJ"StringNoNetwork Storage Resource Number (optional)
androidProp{"persist.sys.cloud.wifi.mac": "D2:48:83:70:66:0B"}ObjectNoRefer to the [Android Modification Attribute List] (./InstanceAndroidPropList.html)
countryCodeSGStringNoCountry code (see details for details:https://chahuo.com/country-code-lookup.html)
certCodeACN631098529xxxxxStringNoSpecify the certificate code; if not transferred, use the default certificate

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1743664443188LongTimestamp
data{ "padCode": "ACN250403FKAX2HX", "vmStatus": 0, "taskId": 10341 }GeneratePadTaskVOMission details
├─ dispatchCode0Integer(data object field) The task sends a status code. 200 means the instance was successfully sent. A non-200 is a failure reason code (used for internationalization, distinct from interface layer code). The value is shown at the end of the article in the PadTaskFailCode Encoding Table

Request Example

{
  "clusterCode": "001",
  "padCode": "ACN250403FKAX2HX",
  "netStorageResUnitCode": "ZSC250403MMGUFGN-ACN250403ZIMD9KJ", 
   "countryCode":"US",
   "androidProp": "{\"persist.sys.cloud.wifi.mac\": \"D2:48:83:70:66:0B\"}"
}

Response Examples

{
  "msg": "success",
  "code": 200,
  "data": {
    "padCode": "ACN250403FKAX2HX",
    "vmStatus": 0,
    "taskId": 10341,
    "dispatchCode": 200
  },
  "ts": 1743664443188
}

Error Codes

Error codeError ExplanationOperation Suggestions
110095There is no instance that can be turned on. Please check the instance statusCheck whether the instance status is powered off
220011Frequent network storage instances, please try again laterTry again later
110101No board matching the sample specifications was found. Please go to the board list to set the specifications.Confirm that the instance's specifications match the board specifications, and that the board has no computing power occupied

Network Storage Deletion

Used to delete specified network storage resources.


Interface Address

POST /openapi/open/pad/net/storage/pad/delete


Request Data Types

application/json


Request Parameters

Parameter nameExample valuesParameter typeIs it required?Parameter description
netStorageResUnitCodes["ZSC250407XLYILP4-ACN250407XRY4CW9"]List<String>YesList of network storage resource numbers to be deleted, supporting up to 200 items

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1744026334273LongTimestamp
data[{"padCode": "ZSC250407XLYILP4-ACN250407XRY4CW9", "vmStatus": 0, "taskId": 10159}]List<GeneratePadTaskVO>List of deletion task results for each storage resource
├─ dispatchCode0Integer(data list element field) The task issues a status code. 200 means the instance was successfully issued; 200 is the failure reason code (used for internationalization, distinct from interface layer code). The value is shown at the end of the article in the PadTaskFailCode encoding table

Request Example

{
  "netStorageResUnitCodes": [
    "ZSC250407XLYILP4-ACN250407XRY4CW9"
  ]
}

Response Examples

{
  "msg": "success",
  "code": 200,
  "data": [
    {
      "padCode": "ZSC250407XLYILP4-ACN250407XRY4CW9",
      "vmStatus": 0,
      "taskId": 10159,
      "dispatchCode": 200
    }
  ],
  "ts": 1744026334273
}

Error Codes [Error Code Explanation] (./ErrorMsgCode.md#system-error-code-explanation)

Obtaining Usage Details for Network Storage Instances

Used to query usage details of network storage instances, grouped by device level.


Interface Address

POST /openapi/open/pad/netPad/group/deviceLevel


Request Data Types

application/json


Request Parameters

Parameter nameExample valuesParameter typeIs it required?Parameter description
clusterCode"001"StringYesCluster coding

Response Parameters

Parameter nameExample valuesParameter typeParameter description
totalNumber16LongTotal hash rate
onNumber2LongNumber of units already started
deviceLevel"m2-8"StringSpecifications

Request Example

{
  "clusterCode": "001"
}

Response Examples

{
  "msg": "success",
  "code": 200,
  "data": [
    {
      "totalNumber": 16,
      "onNumber": 2,
      "deviceLevel": "m2-8"
    },
    {
      "totalNumber": 9,
      "onNumber": 1,
      "deviceLevel": "m2-3"
    }
  ],
  "ts": 1744024331175
}

Detailed Query for Network Storage Details

Used to query detailed information of network storage resources, supports paginated queries.


Interface Address

POST /openapi/open/netStorage/resUnit/net/storage/pad/resUnit


Request Data Types

application/json


Request Parameters

Parameter nameExample valuesParameter typeIs it required?Parameter description
page3IntegerYesCurrent page number
rows10IntegerYesDisplay the number of entries per page

Response Parameters

Parameter nameExample valuesParameter typeParameter description
total27IntegerTotal recorded count
size7IntegerCurrent page number of records
totalPage3IntegerTotal pages
page3IntegerCurrent page number
pageData[...]List<NetStorageResUnitVO>Data list on the current page

NetStorageResUnitVO Field Description

field nameExample valuesParameter typeParameter description
netStorageResUnitId87LongNetwork storage details ID
shutdownFlag0IntegerIs there an instance of power on and off (0: Shut down, 1: Turn on)
netStorageResUnitCode"ZSC25040761D2GP8-ACN250407XRY4CW9"StringNetwork Storage Details Code
clusterCode"001"StringCluster Code
padCode"ACN250407XRY4CW9"StringExample Code
netStorageResUnitSize16LongNetwork storage size (unit: GB)

Request Example

{
  "page": 3,
  "rows": 10
}

Response Examples

{
  "msg": "success",
  "code": 200,
  "data": {
    "total": 27,
    "size": 7,
    "totalPage": 3,
    "page": 3,
    "pageData": [
      {
        "shutdownFlag": 0,
        "padCode": "ACN250407XRY4CW9",
        "netStorageResUnitCode": "ZSC25040761D2GP8-ACN250407XRY4CW9",
        "clusterCode": "001",
        "netStorageResUnitId": 87,
        "netStorageResUnitSize": 16
      }
      // ... More net-stored instance objects
    ],
    "rows": 10
  },
  "ts": 1744023373581
}

Query for Storage Blocks (Check whether a block exists and its details)


Interface Address

POST /openapi/open/netStorage/resUnit/pad/net/storage/unit/detail


Request Data Types

application/json


Request Parameters

Parameter nameExample valuesParameter typeIs it required?Parameter description
netStorageResUnitCodeZSC250403MMGUFGN-ACxxxxxxxxxStringYesUnique encoding of network storage blocks

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringInterface request status information
data-ObjectBusiness returns data
├─ existtrueBooleanWhether the storage block exists, true=existent/false=nonexistent
├─ netStorageResUnitCodeZSC250403MMGUFGN-ACxxxxxxxxxStringInput Storage Block Encoding (Echo)
├─ clusterCode001StringCluster code of the storage block (returns if present, null if nonexistent)
├─ padCodeACN250403ZIMD9xxStringThe encoding of the storage block associated network instance (returns if present, null if nonexistent)
├─ storageSize32IntegerStorage block size (GB) (returns if present, null if nonexistent)

Request Example

{
  "netStorageResUnitCode": "ZSC250403MMGUFGN-ACN25040xxxxxxxxx"
}

Response Examples

{
  "code": 200,
  "msg": "success",
  "data": {
    "exist": true,
    "netStorageResUnitCode": "ZSC250403MMGUFGN-ACN250403Zxxxxx",
    "clusterCode": "001",
    "padCode": "ACN250403ZIMDxxx",
    "storageSize": 32
  }
}

Error Codes

Error codeError ExplanationOperation Suggestions
100000The network storage block encoding cannot be emptyCheck and pass in a valid netStorageResUnitCode
110028Network storage block encoding format errorConfirm that the code complies with the platform's standard format
220009No access permission to this storage blockConfirm that the storage block belongs to the current user
500System AnomalyRetry later or contact technical support

Database Instance Storage Usage Query

Batch query the currently used storage capacity (in GB) and the most recent reporting time of instances by instance number, with a maximum of 200 instances at a time.

data depends on CBS versions

The number of this interface requires CBS version >= 2.13.32. If the CBS version of the board where the instance is located is lower than 2.13.32, the interface will not show errors, but the returned storageUsedGb and storageStatUpdateTime will be null; After upgrading to the target version, you can access the data (within about 5 minutes).


Interface Address

POST /openapi/open/netStorage/resUnit/pad/storage/stat/list


Request Data Types

application/json


Request Parameters

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodes["ACN260709TTF8NHU","ACN260709LT1F8N1"]List<String>YesList of instance numbers, up to 200 per session; Elements cannot be null or empty strings, and duplicates are not allowed

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code, 200 means successful
msgsuccessStringInterface request status information
data[...]List<PadStorageStatVO>A list of results corresponding to the order of entering padCodes for entry

PadStorageStatVO Field Description

field nameExample valuesParameter typeParameter description
padCode"ACN260709TTF8NHU"StringInstance Number (corresponding to entry)
storageUsedGb3.6055DoubleThe instance is currently using storage (GB); when not collected, it is null
storageStatUpdateTime"2026-07-01 18:20:00"StringThe most recent reported time for storage usage (GMT+8, format yyyy-MM-dd HH:mm:ss) is null when not collected

Cases with a return value of null

In any of the following cases, storageUsedGb and storageStatUpdateTime will be null, but the padCode will still appear in the result list, and the interface will not give an error:

  1. The CBS version of the board on which this instance is located is lower than 2.13.32

Request Example

{
  "padCodes": ["ACN260709TTF8NHU", "ACN260709LT1F8N1"]
}

Response Examples

{
  "code": 200,
  "msg": "success",
  "data": [
    {
      "padCode": "ACN260709TTF8NHU",
      "storageUsedGb": 3.6055,
      "storageStatUpdateTime": "2026-07-01 18:20:00"
    },
    {
      "padCode": "ACN260709LT1F8N1",
      "storageUsedGb": null,
      "storageStatUpdateTime": null
    }
  ]
}

Error Codes

Error codeError ExplanationOperational advice
110027The instance number set contains duplicate entriesRetest after removing duplicates
110028The instance does not existIf the entry contains instance numbers not under the account name, check and retry
110029The instance cannot be emptyIf the parameter group contains null or an empty string element, check and try again
500System ExceptionRetry later or contact technical support

Certificate Management

Upload Certificate

Used to upload Google root certificates (Keybox's XML structure)

Interface Address

/openapi/open/certificate/google/root/upload

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
certCodeGCA202603090xxxStringNoUnique certificate encoding (custom / system generated)
certNameGoogle Root Certificate _v1.0StringisCertificate name
certContentxxxxStringisCertificate contents (converted to string upload)
certTypeROOTStringNoCertificate type, fixed value "ROOT", default value "ROOT"

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject
├─ certCodeGCA202603090xxxStringUnique certificate encoding (custom / system generated)
├─ certNameGoogle Root Certificate _v1.0StringCertificate name
├─ status1IntegerUpload status (0 successful, 1 failed).
├─ errorMsgCertificate format errorStringFailure Reason (Returns only when status=1)

Request Example

{
    "certName": "Google Root Certificate _v1.0",
    "certContent": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Keyboxes>\n  <Keybox DeviceID=\"DEVICE_SAMPLE_ID\">\n    <Key algorithm=\"ecdsa\">\n      <PrivateKey>MIIBS...[PKCS8_PRIVATE_KEY]...A=</PrivateKey>\n      <CertificateChain>\n        <NumberOfCertificates>1</NumberOfCertificates>\n        <Certificate>MIIC...[BASE64_CERTIFICATE]...Q==</Certificate>\n      </CertificateChain>\n    </Key>\n    <Key algorithm=\"rsa\">\n      <PrivateKey>MIIEv...[PKCS8_PRIVATE_KEY]...E=</PrivateKey>\n      <CertificateChain>\n        <NumberOfCertificates>1</NumberOfCertificates>\n        <Certificate>MIID...[BASE64_CERTIFICATE]...S==</Certificate>\n      </CertificateChain>\n    </Key>\n  </Keybox>\n</Keyboxes>"
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1773211788170,
        "data": {
        "certCode": "GCA202603090xxx",
            "certName": "Google Root Certificate _v1.0",
            "status": 0,
            "errorMsg": null
    },
    "traceId": "ffo6go7g0we8"
}

Certificate Specification Template

<?xml version="1.0" encoding="UTF-8"?>
<Keyboxes>
    <Keybox DeviceID="TEST_DEVICE_002">

        <Key algorithm="ecdsa">
            <PrivateKey> [Enter one segment of Base64 private key here]. </PrivateKey>
            <CertificateChain>
                <NumberOfCertificates>4</NumberOfCertificates>
                <Certificate> [Level 1: Leaf/User Certificate (Leaf)]. </Certificate>
                <Certificate> [Level 2: Intermediate Certificate 1]. </Certificate>
                <Certificate> [Level 3: Intermediate 2</Certificate>].
                <Certificate> [Level 4: Root Certificate</Certificate>].
            </CertificateChain>
        </Key>

        <Key algorithm="rsa">
            <PrivateKey> [Enter one segment of Base64 private key here]. </PrivateKey>
            <CertificateChain>
                <NumberOfCertificates>4</NumberOfCertificates>
                <Certificate> [Level 1: Leaf/User Certificate (Leaf)]. </Certificate>
                <Certificate> [Level 2: Intermediate Certificate 1]. </Certificate>
                <Certificate> [Level 3: Intermediate 2</Certificate>].
                <Certificate> [Level 4: Root Certificate</Certificate>].
            </CertificateChain>
        </Key>

    </Keybox>
</Keyboxes>

Query by Certificate Code

Query certificates based on the unique code of the certificate

Interface Address

/openapi/open/certificate/google/root/query

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
certCodeGCA202603090xxxStringNoCertificate Unique Code (Precise Query/No Transmission Query All Items)
certNameGoogle Root Certificate _v1.0StringNoCertificate Name (Fuzzy Lookup)
rows10IntegerNoQuery quantity, range 1-1000, default 10

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]
├─ certCodeGCA202603090xxxStringUnique certificate encoding (custom / system generated)
├─ certNameGoogle Root Certificate _v1.0StringCertificate name
├─ ├─efficienttrueBooleanUpload status (0 successful, 1 failed).

Request Example

{
    "certCode":"GCA202603090xxx"
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1773370014107,
        "data": [
        {
            "certCode": "GCA202603090xxx",
            "certName": "Google Root Certificate _v1.0",
            "efficient": true
        }
    ],
        "traceId": "ffuppeig3qbk"
}

Domain Name Management

Adding Domain Name Certificate Configuration

Add domain name certificate configuration; the same domain cannot be added multiple times

Interface Address

/openapi/open/domainCertConfig/add

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
hostnameexample.comStringYesDomain name only
protocolTypehttpsStringYesProtocol types: currently supported: http / https / follow
domainCertPemStringNoDomain Certificate PEM Contents
domainKeyPemStringNoDomain private key PEM content
ipStringNoIP address
defaultRouteBooleanNoDefault route is set to false

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObjectResponse data
traceIda1b2c3d4e5f6StringLink Tracing ID

Request Example

{
    "hostname": "example.com",
    "protocolType": "https"
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1711267200000,
    "data": null,
    "traceId": "a1b2c3d4e5f6"
}

Query Domain Certificate Configuration List

Query the current domain name certificate configuration under the customer's name, supporting fuzzy queries based on domain names

Interface Address

/openapi/open/domainCertConfig/list

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
hostnameexample.comStringNoDomain keywords, fuzzy matching

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataListResponse data
├─id1LongRecord ID
├─customerId0LongCustomer ID
├─hostnameexample.comStringDomain name
├─protocolTypehttpsStringTypes of Protocols
├─domainCertPem-----BEGIN CERTIFICATE-----\n...StringDomain Certificate PEM Contents
├─domainKeyPem-----BEGIN PRIVATE KEY-----\n...StringDomain private key PEM content
├─ip1.2.3.4StringIP address
├─defaultRoutefalseBooleanWhether the default route is available
├─createTime2026-03-25 10:00:00StringCreation date
├─updateTime2026-03-25 10:00:00StringModify the time
traceIda1b2c3d4e5f6StringLink Tracing ID

Request Example

{
    "hostname": "example"
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1711267200000,
    "data": [
        {
            "id": 101,
            "customerId": 888,
            "hostname": "example.com",
            "protocolType": "https",
            "domainCertPem": "-----BEGIN CERTIFICATE-----\n...",
            "domainKeyPem": "-----BEGIN PRIVATE KEY-----\n...",
            "ip": "1.2.3.4",
            "defaultRoute": false,
            "createTime": "2026-03-25 10:00:00",
            "updateTime": "2026-03-25 10:00:00"
        }
    ], 
    "traceId": "a1b2c3d4e5f6"
}

Deleting Domain Name Certificate Configuration

Batch deleting domain name certificate configurations based on the ID set can only delete records under the current customer's name

Interface Address

/openapi/open/domainCertConfig/remove

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
ids[1]ListYesRecord the ID set, which cannot be empty

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObjectResponse data
traceIda1b2c3d4e5f6StringLink Tracing ID

Request Example

{
    "ids": [1, 2]
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1711267200000,
    "data": null,
    "traceId": "a1b2c3d4e5f6"
}

Resource Cache Management

Upload Game Resources

Clients must upload the URL of the updated game resources; the same URL under the same client cannot be added again

Interface Address

/openapi/open/gameResUrl/upload

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
resUrlhttps://cdn.example.com/game/v2/patch.zipStringYesGame resource URL, maximum 2048 characters
resNameVersion 2.0 resource packStringNoResource name/note, maximum 128 characters

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataLongReturns the new record ID on success
traceIda1b2c3d4e5f6StringLink Tracing ID

Request Example

{
    "resUrl": "https://cdn.example.com/game/v2/patch.zip",
    "resName": "Version 2.0 resource pack"
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1711267200000,
    "data": null,
    "traceId": "a1b2c3d4e5f6"
}

Query Game Resource List

Paginated query of the current customer's game resource URL list, supports fuzzy URL search, and deleted records will not be returned

Interface Address

/openapi/open/gameResUrl/list

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
resUrlpatchStringNoURL keywords, fuzzy matching
pageNum1IntegerNoPage number, minimum value 1, default 1
pageSize10IntegerNoNumber of entries per page, range 1~100, default 10

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObjectPaginated data objects
├─recordsListCurrent page data list
├─├─id1001LongRecord ID
├─├─customerId888LongCustomer ID
├─├─resUrlhttps://cdn.example.com/game/v2/patch.zipStringResource URL
├─├─resNameVersion 2.0 resource packStringResource Name/Note
├─├─createTime2026-03-24 10:00:00StringCreation date
├─├─updateTime2026-03-24 10:00:00StringUpdate time
├─total2LongTotal number of articles
├─size10LongNumber of entries per page
├─current1LongCurrent page number
├─pages1LongTotal pages
traceIda1b2c3d4e5f6StringLink Tracing ID

Request Example

{
    "resUrl": "patch",
    "pageNum": 1,
    "pageSize": 10
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1711267200000,
    "data": {
        "records": [
            {
                "id": 1001,
                "customerId": 888,
                "resUrl": "https://cdn.xxx.com/game/v2/patch.zip",
                "resName": "Version 2.0 resource pack",
                "createTime": "2026-03-24 10:00:00",
                "updateTime": "2026-03-24 10:00:00"
            },
            {
                "id": 1002,
                "customerId": 888,
                "resUrl": "https://cdn.xxx.com/game/v2/hotfix.zip",
                "resName": "2.0 Thermal Repair Package",
                "createTime": "2026-03-24 11:30:00",
                "updateTime": "2026-03-24 11:30:00"
            }
        ],
        "total": 2,
        "size": 10,
        "current": 1,
        "pages": 1
    },
    "traceId": "a1b2c3d4e5f6"
}

Delete Game Resources

Batch delete game resource URL records based on the ID collection, but only records under the current customer's name can be deleted

Interface Address

/openapi/open/gameResUrl/remove

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
ids[1001]ListYesRecord the ID set, which cannot be empty

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObjectResponse data
traceIda1b2c3d4e5f6StringLink Tracing ID

Request Example

{
    "ids": [1001, 1002]
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1711267200000,
    "data": null,
    "traceId": "a1b2c3d4e5f6"
}

Example Management

Modifying Example WIFI Properties

Modify the WiFi list properties of the specified instance (choose between this interface and the WiFi settings for the first new machine; otherwise, coverage issues may occur)

Interface Address

/openapi/open/pad/setWifiList

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodesString[]isCase number
wifiJsonListString[]isWiFi attribute list
├─SSID110101StringisWiFi Name (Chinese not supported)
├─BSSID02:31:00:00:00:01StringisAccess point MAC address
├─MAC02:00:10:00:00:00StringisWiFi network card MAC address
├─IP02:00:10:00:00:00StringisWiFi network IP
├─MAC02:00:10:00:00:00StringisWiFi network card MAC address
├─gateway192.168.120.1StringisWiFi gateway
├─DNS11.1.1.1StringisDNS1
├─DNS28.8.8.8StringisDNS2
├─hessid0IntegerNoNetwork identifiers
├─anqpDomainId0IntegerNoANQP (Access Network Query Protocol) domain ID
├─capabilities""StringNoWPA/WPA2 and other information
├─level0IntegerNoSignal Strength (RSSI)
├─linkSpeed500IntegerNoCurrent Wi-Fi connection speed
├─txLinkSpeed600IntegerNoUpload link speed
├─rxLinkSpeed700IntegerNoDownload link speed
├─frequency2134IntegerNoWi-Fi channel frequency
├─distance-1IntegerNoEstimated AP distance
├─distanceSd-1IntegerNoEstimate the standard deviation of distance
├─channelWidth0IntegerNoChannel bandwidth
├─centerFreq00IntegerNoCentral frequency 0
├─centerFreq1-1IntegerNoCentral frequency 1
├─is80211McRTTResponderfalseBooleanNoDoes it support 802.11mc (Wi-Fi RTT, ranging technology?).

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject
├─ taskId1IntegerTask ID
├─ padCodeAC2025030770RStringCase number
├─ vmStatus1IntegerInstance online status: 0-offline, 1-online
├─ dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
    "padCodes":["AC2025030770R92X"],
        "wifiJsonList":[
        {
            "SSID": "110101",
            "BSSID": "02:31:00:00:00:01",
            "MAC": "02:00:10:00:00:00",
            "IP": "192.168.120.15",
            "gateway": "192.168.120.1",
            "DNS1": "1.1.1.1",
            "DNS2": "8.8.8.8",
            "hessid": 0,
            "anqpDomainId": 0,
            "capabilities": "",
            "level": 0,
            "linkSpeed": 500,
            "txLinkSpeed": 600,
            "rxLinkSpeed": 700,
            "frequency": 2413,
            "distance": -1,
            "distanceSd": -1,
            "channelWidth": 0,
            "centerFreq0": -1,
            "centerFreq1": -1,
            "is80211McRTTResponder": true
        }
    ]
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1741676855566,
        "data": [
        {
            "taskId": 14904,
            "padCode": "AC2025030770R92X",
            "vmStatus": 0,
            "dispatchCode": 200
        }
    ]
}

Example Details

Query the attribute information of the specified instance, including system attribute information and configuration information.

Interface Address

/openapi/open/pad/padDetails

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
page1IntegerNoPage number
rows10IntegerNoRecord the number per page
padCodesString[]No
├─AC21020010391StringNoCase number
padIpsString[]No
├─192.168.1.1StringNoExample IP
vmStatus1StringNoInstance online status: 0-offline, 1-online
controlStatus1StringNoControlled state (push flow state): 1 - Uncontrolled, 2 - Controlled
faultStatus14StringNoInstance Running Status: 14-Abnormal Other-Normal
deviceStatus0StringNoPhysical machine online status: 0-offline, 1-online
groupId2IntegerNoGroup ID
idcCodeHNCS-C-01StringNoData center number
brandsamsungBrandNoBrand used for instances (exact match)
brandModelSM-G996U1(8G)StringNoBrand-Matched Model (Exact Match)

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756360093771LongTimestamp
traceIdewc83bwudvr4StringLink Tracing ID
dataObjectResponse data
├─ page1IntegerCurrent page
├─ rows10IntegerRecord the number per page
├─ size10IntegerCurrent page count
├─ total13398IntegerTotal recorded count
├─ totalPage1340IntegerTotal pages
├─ pageDataobject[]List
├─ ├─ padId552LongInstance ID
├─ ├─ padCodeACP250331GLMP7YXStringCloud machine numbering
├─ ├─ customerIdnullLongCustomer ID
├─ ├─ imageIdimg-25032628136StringMirror ID
├─ ├─ deviceLevelm2-6StringExample specifications
├─ ├─ dcInfoObjectData center information
├─ ├─ ├─ id1LongData center ID
├─ ├─ ├─ dcNameSmall Calculation Test - Data CenterStringMachine room name
├─ ├─ ├─ dcCode001StringData center code
├─ ├─ ├─ areachangshaStringRegion
├─ ├─ ├─ ossEndpointnullStringOSS public network interface address
├─ ├─ ├─ ossEndpointInternalnullStringOSS intranet interface address
├─ ├─ ├─ ossFileEndpointnullStringFile access address
├─ ├─ ├─ ossScreenshotEndpointnullStringScreenshot the access address
├─ ├─ padStatus15IntegerInstance status (10-Running, 11-Restarting, 12-Resetting, 13-Upgrading, 14-Abnormal, 15-Not Ready, 16-Backup, 17-Data Restore, 18-Shutdown, 19-Shutdown, 20-Starting, 21-Shutdown Failed, 22-Boot Failed, 23-Deleted, 24-Delete Failed, 25-Deleted, 26-Cloning)
├─ ├─ deviceStatus1IntegerPhysical machine status (0-offline, 1-online)
├─ ├─ online0IntegerInstance online status (0-offline, 1-online)
├─ ├─ streamStatus0IntegerExample streaming status (0-idle, 1-streaming)
├─ ├─ dataSizenullLongTotal storage capacity (bytes)
├─ ├─ dataSizeUsednullLongStorage capacity used (bytes)
├─ ├─ adbOpenStatusnullStringadb switch status (1 On; Empty/0 Close)
├─ ├─ deviceIp172.31.1.4StringBoards IP
├─ ├─ screenLayoutCodemultiple-portrait-basicStringScreen layout coding
├─ ├─ mac""StringMAC address
├─ ├─ netStorageResIdnullStringNetwork storage ID
├─ ├─ dns192.168.50.15StringExample DNS
├─ ├─ memorynullIntegerMemory size
├─ ├─ cpu-1IntegerCPU size
├─ ├─ socModelMACS2080StringSoC model
├─ ├─ netStorageResFlag0IntegerMemory Tags (1 Memory Instances; 0 local instances)
├─ ├─ netStorageResSizenullLongMesh instance size (GB)
├─ ├─ realPhoneTemplateId389LongReal model template ID
├─ ├─ clusterCodeZEG3650947StringCluster coding
├─ ├─ padIpnullStringExample IP
├─ ├─ updateNetStorageResFlagfalseBooleanWhether to specify a network storage ID to boot up
├─ ├─ targetStorageResIdnullStringSpecified network storage ID
├─ ├─ armIp192.168.200.50StringARM server IP
├─ ├─ countryCodenullStringCountry code
├─ ├─ typevirtualStringInstance Type (virtual-Virtual Machine / real-Cloud-Real-machine)
├─ ├─ armServerId179LongServer ID
├─ ├─ lastComputeUnitCodenullStringThe final computing power code used for startup
├─ ├─ lastDeviceCodenullStringFinally, the number of the board used for power-up
├─ ├─ lastDeviceIpnullStringFinally, the IP of the board used for booting
├─ ├─ cloneFlagnullStringClone Logo (0-No, 1-Yes)
├─ ├─ baseResUnitCodenullStringThe base storage code of the cloned instance
├─ ├─ cbsInfo2.0.14StringCBS News
├─ ├─ firstBoottrueBooleanIs it the first time you start the machine?

Request Example

{
 "page": 1,
 "rows": 10,
 "padCodes": ["AC21020010391"],
 "padIps":["192.168.1.1"],
 "vmStatus":"1",
 "controlStatus":"1",
 "faultStatus":"14",
 "deviceStatus":"0"
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1756360093771,
        "data": {
        "page": 1,
            "rows": 10,
            "size": 10,
            "total": 13398,
            "totalPage": 1340,
            "pageData": [
            {
                "padId": 552,
                "padCode": "ACP250331GLMP7YX",
                "customerId": null,
                "imageId": "img-25032628136",
                "deviceLevel": "m2-6",
                "dcInfo": {
                    "id": 1,
                    "dcName": "Small Calculation Test - Data Center",
                    "dcCode": "001",
                    "area": "changsha",
                    "ossEndpoint": null,
                    "ossEndpointInternal": null,
                    "ossFileEndpoint": null,
                    "ossScreenshotEndpoint": null
                },
                "padStatus": 15,
                "deviceStatus": 1,
                "online": 0,
                "streamStatus": 0,
                "dataSize": null,
                "dataSizeUsed": null,
                "adbOpenStatus": null,
                "deviceIp": "172.31.1.4",
                "screenLayoutCode": "multiple-portrait-basic",
                "mac": "",
                "netStorageResId": null,
                "dns": "192.168.50.15",
                "memory": null,
                "cpu": -1,
                "socModel": "MACS2080",
                "netStorageResFlag": 0,
                "netStorageResSize": null,
                "realPhoneTemplateId": 389,
                "clusterCode": "ZEG3650947",
                "padIp": null,
                "updateNetStorageResFlag": false,
                "targetStorageResId": null,
                "armIp": "192.168.200.50",
                "countryCode": null,
                "type": "virtual",
                "armServerId": 179,
                "lastComputeUnitCode": null,
                "lastDeviceCode": null,
                "lastDeviceIp": null,
                "cloneFlag": null,
                "baseResUnitCode": null,
                "cbsInfo": "2.0.14",
                "firstBoot": true
            }
        ]
    },
    "traceId": "ewc83bwudvr4"
}

Code Examples

// Example of a Java call
PadDetailsRequest requestParam = new PadDetailsRequest();
List<String> padCodes = new ArrayList<>();
padCodes.add("AC22010041147");
requestParam.setPadCodes(padCodes);
Result<Page<PadDetailsResponse>> result = armCloudApiService.execute(ArmCloudApiEnum.PAD_DETAILS, requestParam,new TypeReference<Result<Page<PadDetailsResponse>>>() {});

Example Details - Streamlined Version

Query the basic attribute information of the instance.

Interface Address

/openapi/open/pad/padBaseInfoList

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
lastId1234LongNoThe lastId returned from the last query; the first query can skip or pass null
rows10IntegerNoEach page can have up to 1,000 entries per page
padCodesString[]No
├─ACP250331GLXXXXXStringNoCase number
padIpsString[]No
├─192.168.1.1StringNoExample IP
online1IntegerNoInstance online status: 0-offline, 1-online
padStatus14IntegerNoInstance Running Status: 14-Abnormal Other-Normal
computeOccupiedtrueBooleanNoFilter computing power usage: true means computing power usage, false means no computing power usage
netStorageResFlag1IntegerNoMemory tags: 1 - Memory instance, 0 - Local instance
brandsamsungBrandNoBrand used for instances (exact match)
brandModelSM-G996U1(8G)StringNoBrand-Matched Model (Exact Match)

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756360093771LongTimestamp
traceIdewc83bwudvr4StringLink Tracing ID
dataObjectResponse data
├─ rows10IntegerRecord the number per page
├─ size10IntegerCurrent page count
├─ lastId1234LongThe last record ID is used for the next page query
├─ hasNexttrueBooleanIs there a next page?
├─ pageDataobject[]List
├─ ├─ padCodeACP250331GLXXXXXStringCase number
├─ ├─ padIpnullStringExample IP
├─ ├─ padStatus15IntegerInstance running status (10-Running, 11-Restarting, 12-Reset, 13-Upgrading, 14-Abnormal, 15-Not Ready, 16-Backup, 17-Data Restore, 18-Shutdown, 19-Shutdown, 20-Starting, 21-Shutdown Failed, 22-Boot Failure, 23-Deleted, 24-Delete Failed, 25-Deleted, 26-Cloning)
├─ ├─ online0IntegerInstance online status (0-offline, 1-online)
├─ ├─ computeOccupiedtrueBooleanComputing power usage: true means usage of computing power, false means no computing power usage
├─ ├─ netStorageResFlag1IntegerMemory tags: 1 - Memory instance, 0 - Local instance
├─ ├─ deviceStatus1IntegerBoard status: 0-offline, 1-online

Request Example

{
 "lastId": null,
 "rows": 10,
 "padCodes": ["ACP250331GLXXXXX"],
 "padIps":["192.168.1.1"],
 "online":1,
 "padStatus":10,
 "computeOccupied":true, 
 "netStorageResFlag":1
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1756360093771,
    "data": {
        "rows": 10,
        "size": 10,
        "lastId": 552,
        "hasNext": true,
        "pageData": [{
            "padCode": "ACP250331GLXXXXX",
            "padIp": null,
            "padStatus": 15,
            "online": 0,
            "computeOccupied": true,
            "netStorageResFlag":1,
            "deviceStatus": 1
        }]
    }, 
    "traceId": "f9lvinjx337k"
}

Case Restart

Perform a restart operation on a specified instance to resolve issues such as system unresponsiveness and freezing.

Interface Address

/openapi/open/pad/restart

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesString[]Yes
├─AC21020010001StringYesCase number
groupIdsInteger[]No
├─1IntegerNoInstance group ID
certCodeACN631098529xxxxxStringNoCertificate code. Specify the use of the private certificate corresponding to the client's name and code for issuance to Yunzhenji; If not passed (null), certificates are automatically allocated according to the platform's default logic (backward compatible, no changes needed for stock calls). This interface does not involve certificate; certCode takes effect directly. If the code does not exist under the client's name, the interface will report an error at the acceptance stage saying "certificate does not exist, certCode: xxx" and will not generate a task

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]
├─taskId1IntegerTask ID
├─padCodeAC21020010001StringCase number
├─vmStatus1IntegerInstance online status (0: offline; 1: Online)
├─ taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─ dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
 "padCodes": [
  "AC22030022693"
 ],
 "groupIds": [1]
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1756313806284,
        "data": [
        {
            "taskId": 4844869,
            "padCode": "ATP250818261XVMO",
            "vmStatus": 0,
            "taskStatus": 1,
            "dispatchCode": 200
        }
    ],
        "traceId": "ewab9x88fkzk"
}

Error Codes

Error codeError ExplanationOperation Suggestions
10001Restart failed Contact the administrator
110004Failed to execute the restart command Restart later
110028The instance does not existPlease check if the instance exists

Code Examples

// Example of a Java call
public class SDKExample {
    private final ArmCloudApiService armCloudApiService;

    public SDKExample() {
        ArmCloudConfig armCloudConfig = new ArmCloudConfig();
        armCloudConfig.setOpenUrl("https://openapi-hk.armcloud.net");
        armCloudConfig.setService("armcloud-paas");
        armCloudConfig.setHost("openapi.armcloud.net");
        armCloudConfig.setAk("your access_key_id");
        armCloudConfig.setSk("your secret_access_key");
        armCloudApiService = new ArmCloudApiServiceImpl(armCloudConfig, new DefaultHttpExecutor());
    }

    @Test
    public void test() throws Exception {
        RestartRequest requestParam = new RestartRequest();
        List<String> padCodes = new ArrayList<>();
        padCodes.add("AC22010041147");
        requestParam.setPadCodes(padCodes);
        Result<PadTaskResponse> result = armCloudApiService.execute(ArmCloudApiEnum.PAD_RESTART, requestParam, new TypeReference<Result<PadTaskResponse>>() {});
    }
}

Instance Reset

Note: Instance reset clears all system data. Please use with caution; after each reset, the public IP will be restored to its default value

Performing a reset operation on the instance will clean all data from the cloud phone

Interface Address

/openapi/open/pad/reset

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesString[]Yes
├─AC21020010001StringYesCase number
groupIdsInteger[]No
├─1IntegerNoInstance group ID
androidProp{"persist.sys.cloud.wifi.mac": "D2:48:83:70:66:0B"}ObjectNoRefer to the [Android Modification Attribute List] (./InstanceAndroidPropList.html)

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]
├─taskId1IntegerTask ID
├─padCodeAC21020010001StringCase number
├─vmStatus1IntegerInstance online status (0: offline; 1: Online)
├─ taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─ dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
 "padCodes": [
  "AC21020010001"
 ],
 "groupIds": [1]
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1756313781715,
        "data": [
        {
            "taskId": 760459892,
            "padCode": "ATP250817PIJLWRP",
            "vmStatus": 0,
            "taskStatus": 1,
            "dispatchCode": 200
        }
    ],
        "traceId": "ewab8lv65yio"
}

Error Codes

Error codeMisstatementOperational advice
10002Reset failedContact the administrator
110005Failing to execute the reset commandReset again later

Code Examples

// Example of a Java call
 ResetRequest requestParam = new ResetRequest();
List<String> padCodes = new ArrayList<>();
padCodes.add("AC22010041147");
requestParam.setPadCodes(padCodes);
Result<PadTaskResponse> result = armCloudApiService.execute(ArmCloudApiEnum.PAD_RESET, requestParam, new TypeReference<Result<PadTaskResponse>>() {});

Query Instance Properties

Query the attribute information of the specified instance, including system attribute information and configuration information.

Interface Address

/openapi/open/pad/padProperties

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodeAC21020010001StringYesCase number

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject
├─padCodeAC21020010001StringCase number
├─modemPropertiesListObject[]Modem - Property list
├─├─propertiesNameIMEIStringAttribute name
├─├─propertiesValue412327621057784StringAttribute values
├─systemPropertiesListObject[]System-Property List
├─├─propertiesNamero.build.idStringAttribute name
├─├─propertiesValueQQ3A.200805.001StringAttribute values
├─settingPropertiesListObject[]setting-- Property list
├─├─propertiesNamero.build.tagsStringAttribute name
├─├─propertiesValuerelease-keysStringAttribute values
├─oaidPropertiesListObject[]oaid—Property list
├─├─propertiesNameoaidStringAttribute name
├─├─propertiesValue001StringAttribute values

Request Example

{
 "padCode": "AC21020010001"
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts":1713773577581,
 "data": {
  "padCode": "AC21020010001",
  "modemPropertiesList": [
   {
    "propertiesName": "IMEI",
    "propertiesValue": "412327621057784"
   }
  ],
  "systemPropertiesList": [
   {
    "propertiesName": "ro.build.id",
    "propertiesValue": "QQ3A.200805.001"
   }
  ],
  "settingPropertiesList": [
   {
    "propertiesName": "ro.build.tags",
    "propertiesValue": "release-keys"
   }
  ],
  "oaidPropertiesList": [
   {
    "propertiesName": "oaid",
    "propertiesValue": "001"
   }
  ]
 }
}

Error Codes

Error codeMisstatementOperational advice
110028There are no instancesPlease check if the instance is correct

Code Examples

// Example of a Java call
PadPropertiesRequest requestParam = new PadPropertiesRequest();
requestParam.setPadCode("AC22010041147");
Result<PadPropertiesResponse> result = armCloudApiService.execute(ArmCloudApiEnum.PAD_GET_PROPERTIES, requestParam,new TypeReference<Result<PadPropertiesResponse>>() {});

Batch Query Instance Properties

Batch query of the attribute information of specified instances, including system attribute information and configuration information.

Interface Address

/openapi/open/pad/batchPadProperties

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesString[]YesThere are no more than 200 instances
├─AC21020010001StringYesCase number
├─AC21020010002StringYesCase number

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]
├─padCodeAC21020010001StringCase number
├─modemPropertiesListObject[]Modem - Property list
├─├─propertiesNameIMEIStringAttribute name
├─├─propertiesValue412327621057784StringAttribute values
├─systemPropertiesListObject[]System-Property List
├─├─propertiesNamero.build.idStringAttribute name
├─├─propertiesValueQQ3A.200805.001StringAttribute values
├─settingPropertiesListObject[]setting-- Property list
├─├─propertiesNamero.build.tagsStringAttribute name
├─├─propertiesValuerelease-keysStringAttribute values
├─oaidPropertiesListObject[]oaid—Property list
├─├─propertiesNameoaidStringAttribute name
├─├─propertiesValue001StringAttribute values

Request Example

{
    "padCodes": [
        "AC21020010001",
        "AC21020010002"
    ]
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts":1713773577581,
 "data": [
        {
            "padCode": "AC21020010001",
            "modemPropertiesList": [
                {
                    "propertiesName": "IMEI",
                    "propertiesValue": "412327621057784"
                }
            ],
            "systemPropertiesList": [
                {
                    "propertiesName": "ro.build.id",
                    "propertiesValue": "QQ3A.200805.001"
                }
            ],
            "settingPropertiesList": [
                {
                    "propertiesName": "ro.build.tags",
                    "propertiesValue": "release-keys"
                }
            ],
            "oaidPropertiesList": [
                {
                    "propertiesName": "oaid",
                    "propertiesValue": "001"
                }
            ]
        },
        {
            "padCode": "AC21020010002",
            "modemPropertiesList": [
                {
                    "propertiesName": "IMEI",
                    "propertiesValue": "412327621057784"
                }
            ],
            "systemPropertiesList": [
                {
                    "propertiesName": "ro.build.id",
                    "propertiesValue": "QQ3A.200805.001"
                }
            ],
            "settingPropertiesList": [
                {
                    "propertiesName": "ro.build.tags",
                    "propertiesValue": "release-keys"
                }
            ],
            "oaidPropertiesList": [
                {
                    "propertiesName": "oaid",
                    "propertiesValue": "001"
                }
            ]
        }
    ]
}

Error Codes

Error codeMisstatementOperational advice
110028There are no instancesPlease check if the instance is correct

Code Examples

// Example of a Java call
PadPropertiesRequest requestParam = new PadPropertiesRequest();
List<String> padCodes = new ArrayList<>();
padCodes.add("AC21020010001");
padCodes.add("AC21020010002");
requestParam.setPadCodes(padCodes);
Result<List<PadPropertiesResponse>> result = armCloudApiService.execute(ArmCloudApiEnum.PAD_POST_PROPERTIES, requestParam,new TypeReference<Result<PadPropertiesResponse>>() {});

Modifying Instance Properties

Dynamically modify the instance's attribute information, including system properties and settings

The instance must be in the boot state, and this interface takes effect immediately

Refer to the [Instance Property List] (./InstanceList.html#modem-properties---property-list)

Interface Address

/openapi/open/pad/updatePadProperties

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesString[]Yes
├─AC21020010001StringYesCase number
modemPersistPropertiesListObject[]NoModem - Persistence - Property List
├─propertiesNameIMEIStringNoAttribute name
├─propertiesValue412327621057784StringNoAttribute values
modemPropertiesListObject[]NoModem - Non-persistent - Property list
├─propertiesNameIMEIStringNoAttribute name
├─propertiesValue412327621057784StringNoAttribute values
systemPersistPropertiesListObject[]NoSystem - Persistence - Property List
├─propertiesNamero.build.idStringNoAttribute name
├─propertiesValueQQ3A.200805.001StringNoAttribute values
systemPropertiesListObject[]NoSystem - Non-persistent - Property List
├─propertiesNamero.build.idStringNoAttribute name
├─propertiesValueQQ3A.200805.001StringNoAttribute values
settingPropertiesListObject[]Nosetting-- Property list
├─propertiesNamero.build.tagsStringNoAttribute name
├─propertiesValuerelease-keysStringNoAttribute values
oaidPropertiesListObject[]Nooaid—Property list
├─propertiesNameoaidStringNoAttribute name
├─propertiesValue001StringNoAttribute values
webkitPropertiesListObject[]Nowebkit-property list
├─propertiesNameoaidStringNoAttribute name
├─propertiesValue001StringNoAttribute values

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]
├─taskId1IntegerTask ID
├─padCodeAC21020010001StringCase number
├─vmStatus1IntegerInstance online status (0: offline; 1: Online)
├─ dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
 "padCodes": [
  "AC21020010001"
 ],
 "modemPersistPropertiesList": [
   {
    "propertiesName": "IMEI",
    "propertiesValue": "412327621057784"
   }
  ],
 "modemPropertiesList": [
   {
    "propertiesName": "IMEI",
    "propertiesValue": "412327621057784"
   }
  ],
  "systemPersistPropertiesList": [
   {
    "propertiesName": "ro.build.id",
    "propertiesValue": "QQ3A.200805.001"
   }
  ],
  "systemPropertiesList": [
   {
    "propertiesName": "ro.build.id",
    "propertiesValue": "QQ3A.200805.001"
   }
  ],
  "settingPropertiesList": [
   {
    "propertiesName": "ro.build.tags",
    "propertiesValue": "release-keys"
   }
  ],
  "oaidPropertiesList": [
   {
    "propertiesName": "oaid",
    "propertiesValue": "001"
   }
  ], 
   "webkitPropertiesList": [
     {
      "propertiesName": "oaid",
      "propertiesValue": "001"
     }
    ]
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts": 1717570916196,
 "data": [
  {
   "taskId": 36,
   "padCode": "AC22030010001",
   "vmStatus": 1,
   "dispatchCode": 200
  }
 ]
}

Error Codes

Error codeMisstatementOperational advice
110011Failing to execute the modifying property commandPlease try again later
110028There are no instancesPlease check if the instance is correct
110027There are duplicate entries in the instance number setPlease check for duplicates in the instance

Code Examples

// Example of a Java call
UpdatePadPropertiesRequest requestParam = new UpdatePadPropertiesRequest();
List<String> padCodes = new ArrayList<>();
padCodes.add("AC22010041147");
requestParam.setPadCodes(padCodes);

List<PadPropertiesSub> subs = new ArrayList<>();
PadPropertiesSub sub = new PadPropertiesSub();
sub.setPropertiesName("oaid");
sub.setPropertiesValue("123456789");
subs.add(sub);
requestParam.setSystemPropertiesList(subs);
Result<List<GeneratePadResponse>> result = armCloudApiService.execute(ArmCloudApiEnum.PAD_UPDATE_PROPERTIES, requestParam,new TypeReference<Result<List<GeneratePadResponse>>>() {});

Modifying Android Modification Attributes for Examples

Static settings for Android modification properties require restarting the instance to take effect, generally used to modify device information

The difference between this interface and the [Modify Instance Properties] (./OpenAPI_AI.md#modifying-instance-properties) interface lies in its effective timing, which is initialized at each startup

setting instance properties, the attribute data is persistently stored, so restarting or resetting the instance does not require calling the interface

Refer to the [Android Modification Attribute List] (./InstanceAndroidPropList.html)

Using this interface requires a certain understanding of the Android system. Some properties may affect the normal launch of the instance. If modifications cause instance abnormalities, you can restore the interface by calling the instance

Interface Address

/openapi/open/pad/updatePadAndroidProp

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodeAC32010210001StringNoInstance ID
restartfalseBooleanNoAutomatically restarts after setup (default false)
props{}ObjectYesSystem Properties (this field is defined by key-value)
├─ro.product.vendor.nameOP52D1L1StringYesProperty settings

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject
├─taskId24LongTask ID
├─padCodeAC32010210001StringInstance ID
├─taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
 "padCode": "AC32010210001",
 "props": {
  "ro.product.vendor.name": "OP52D1L1"
 },
 "restart": false
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1756313781338,
        "data": {
        "taskId": 760459884,
            "padCode": "AC32010160134",
            "vmStatus": 0,
            "taskStatus": 1,
            "dispatchCode": 200
    },
    "traceId": "ewab8l4lqu4g"
}

Modifying SIM Card Information According to Country Code

Static settings for Android modification properties require restarting the instance to take effect, generally used to modify device information

This interface has the same functionality as the [Modifying Android Modification Properties for Instances (./OpenAPI_AI.md#modify-the-android-modification-properties-of-the-example) interface. The difference is that this interface randomly generates SIM card information and restarts each time

setting instance properties, the attribute data is persistently stored, so restarting or resetting the instance does not require calling the interface

Interface Address

/openapi/open/pad/replacePadAndroidPropByCountry

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodeAC32010210001StringYesInstance ID
countryCodeUSStringNoCountry code
props{}ObjectNoSystem Properties (this field is defined by key-value)
├─ro.product.vendor.nameOP52D1L1StringNoProperty settings

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756360113813LongTimestamp
traceIdewc84g8si0oyStringLink Tracing ID
dataObjectResponse data
├─taskId10002486LongTask ID
├─padCodeACN342712020172800StringCase number
├─vmStatus0IntegerInstance online status (0: offline; 1: Online)
├─taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
    "padCode": "AC32010250001",
        "props": {
        "persist.sys.cloud.phonenum": "1234578998"
    },
    "countryCode": "US"
}

Response Example 1

{
    "code": 200,
        "msg": "success",
        "ts": 1756360113813,
        "data": {
        "taskId": 10002486,
            "padCode": "ACN342712020172800",
            "vmStatus": 0,
            "taskStatus": 1,
            "dispatchCode": 200
    },
    "traceId": "ewc84g8si0oy"
}

Response Example 2

{
   "code": 500,
   "msg": "目前不支持国家编码: XX",
   "ts": 1753521350163,
   "data": null
}

Error Codes

Error codeError ExplanationOperation Suggestions
110065Parameter requests are non-compliant; please refer to the interface documentationCheck the parameters and refer to the interface documentation
110028The instance does not existPlease check if the instance number is correct

Stop Streaming

Stop pushing the specified instance stream and disconnect the instance connection.

Interface Address

/rtc/open/room/dissolveRoom

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesString[]Yes
├─AC11010000031StringYesCase number
├─AC22020020700StringYesCase number

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
traceIdewc84g8si0oyStringLink Tracing ID
dataObject[]
├─successListObject[]Successful collection
├─├─padCodeAC11010000031StringCase number
├─├─taskId1234567890LongTask ID
├─failListObject[]Failed collection
├─├─padCodeAC22020020700StringCase number
├─├─errorCode120005IntegerError code
├─├─errorMsgThere are no instancesStringThe reason for failure

Request Example

{
    "padCodes": ["AC11010000031","AC22020020700"]
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts":1713773577581,
     "data": {
     "successList": [
              {
                  "padCode": "AC11010000031",
                  "taskId": 1234567890
              }
          ],
          "failList": [
      {
                  "padCode": "AC22020020700",
      "errorCode": 120005,
      "errorMsg": "实例不存在"
              }
    ]
     },
    "traceId": "ewab9njt3gn4"

}

Error Codes

Error codeError ExplanationOperation Suggestions
120005The instance does not existPlease check if the instance number is correct
120004Stream Interruption Error, Command Service ExceptionPlease try again later

Batch Application for RTC Connection Tokens

Batch request RTC Token connection information for multiple instances under the current account, with connection information returned by pad grouping.

When the Pad cannot connect, the RTC Toekn message will not be returned; msg field will display the reason for the connection.

Currently, this interface only supports the production of ArmcloudRTC tokens. If you encounter abnormal messages such as 此接口暂不支持此功能, please contact the relevant personnel to reconfigure the traffic information

Tokens generated do not currently support refreshing or extending validity. When the token expires, a new token must be reapplied

Encrypted data must be decrypted using the AES GCM mode, with the key being padCode

Interface Address

/rtc/open/room/batchApplyToken

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
userId202StringYesThe business side defines the user ID, which is used to generate room information. Implement a user in the same room as the GameServer. The caller must perform user-level uniqueness. For example, using the same userId to generate different Toekn connections to the same GamerServer will cause the previous established connection to be disconnected
expire3600IntegerNoToken validity period (unit: seconds). Default: 86400)
padsObject[]YesList of instances
├─padCodeAC11010000031StringYesCase number
├─videoStreamObjectNoStreaming Configuration
├─├─resolution07StringNoResolution
├─├─frameRate30StringNoFrame rate
├─├─bitrate2000StringNoBit rate

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]
├─roomToken001j7Tb2jAyAzR6UtLv3cgclCFhw6Q==Stringtoken
├─roomCodeAC22030010181202StringRoom number
├─appIdj7Tb2GcE9rN5oF6xP3A4qwerStringApplication ID
├─padCodeAC22030010181StringInstance ID
├─signalServerLnBbVX4AD1CA4uyoN1kXp:P8H01PaGZDHEFDStringSignaling address (decryption required using AES GCM mode)
├─stunspL25iYgaA12RNmdCYR/:SUJD21Bz4S6HE88GzVNStringstuns address (decryption using AES GCM mode)
├─turnsdoF22kA7Z6OiVP1br29:rA1R4d6Vyk9eStringTurns address (requires AES GCM mode decryption)
├─msgconnect pad failStringFalse information

Request Example

{
 "userId": "202",
 "expire": 3600,
 "pads": [
  {
   "padCode": "AC22010010842",
   "videoStream ": {
    "resolution": "1",
    "frameRate": "30",
    "bitrate": "2000"
   }
  },
  {
   "padCode": "AC22030010181",
   "videoStream ": {
    "resolution": "1",
    "frameRate": "30",
    "bitrate": "2000"
   }
  }
 ]
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts": 1721305008916,
 "data": [
  {
   "roomToken": null,
   "roomCode": "AC22010010842202",
   "appId": "j7Tb2GcE9rN5oF6xP3A4qwer",
   "streamType": 2,
   "videoCodec": "",
   "reportSdkLog": false,
   "padCode": "AC22010010842",
   "msg": "connect pad fail",
   "signalServer": null,
   "stuns": null,
   "turns": null
  },
  {
   "roomToken": "001j7Tb2GcE9rN15oF6xP3A4qwerNwDyCHIRtQrGxZABAAC1ZuzKkAEAABAAQUMyMjAzMDAxMDE4MA12D1TIwMgMAMjAyAQAEALVm7MqQAQAAIABpLvj5zX3dnyN/8UvRsLJnHWA4zR6UtLv3cgclCFhw6Q==",
   "roomCode": "AC22030010181202",
   "appId": "j7Tb2GcE9rN5oF6xP3A4qwer",
   "streamType": 2,
   "videoCodec": "",
   "reportSdkLog": false,
   "padCode": "AC22030010181",
   "msg": null,
   "signalServer": "LnBbVX4AD1CA4uyoN1kXp:P8H01PaGZDHEFDsnU6nRCbOFzvL2smbG9HxKh+XP5WHC",
   "stuns": "pL25iYgaA12RNmdCYR/:SUJD21Bz4S6HE88GzVN8rANlfL9925iaHW+ilJAaWldPpoBKqwoEq0Ggon0HhDc4a6v0pg=",
   "turns": "doF22kA7Z6OiVP1br29:rA1R4d6Vyk9efIFX6qPPMyKs7OhmxFA7xBr65P8NA/Rxb31Js6VOaO3Zrtd3h9uM/mNYUy5mJOQ4j8TJ8DjfBFaEHVNOAcF5tzgbg8iksGhNONfv8hHw=="
  }
 ]
}

Error Codes

Error codeMisstatementOperational advice
120005There are no instancesPlease check if the instance number is correct
120007This interface does not currently support this functionContact relevant personnel to change the streaming configuration

Apply for RTC Shared Room Token

Used to implement multiple instances in one room, where instances receive broadcast messages from rooms for processing and to obtain common streams

Room number generation rules: terimer + userId + paas user identifier For example: terimer = pc, userId=123, paas user identifier = qwer

Room number: PC123QWER

Interface Address

/rtc/open/room/share/applyToken

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
userId202StringYesThe caller business user ID
terminalpcStringYesTerminal
expire3600IntegerNoToken validity period: in seconds. The default is 1 hour
pushPublicStreamtrueBooleanNoWhether to push public streams (default false)
padsArrayYesList of instances that need to be added to the shared room
├─padCodeAC22010010842StringYesInstance ID
├─├─videoStreamObjectNoStreaming Configuration
├─├─├─videoStream1StringNo
├─├─├─frameRate30StringNo
├─├─├─bitrate2000StringNo

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject
├─roomToken00165b7AS149e52467a4016f050b8cQQBDjDJKuTAbStringRoom tokens
├─roomCodeandroid_12345StringRoom number
├─appId65b749e52467a4016f050b8cStringApp ID

Request Example

{
 "userId": "202",
 "terminal": "pc",
 "expire": 3600,
 "pushPublicStream": true,
 "pads": [
  {
   "padCode": "AC22010010842",
   "videoStream": {
    "resolution": "1",
    "frameRate": "30",
    "bitrate": "2000"
   }
  },
  {
   "padCode": "AC22030010181",
   "videoStream": {
    "resolution": "1",
    "frameRate": "30",
    "bitrate": "2000"
   }
  }
 ]
}

Response Examples

{
 "code": 200,
 "msg": null,
 "data": {
  "roomToken": "00165b7AS149e52467a4016f050b8cQQBDjDJKuTAbnZVwU52UOAENSTTExMDEwMDAwMDExAwAxMjMFAAAAXBTnZQEAXBTnZQIAXBTnZQMAXBTnZQQAAAAAACAADCbuyT9crLX9MNUCWyFhsFXwb4nuFPxfgE7MqHjv4yQ=",
  "roomCode": "android_12345",
  "appId": "65b749e52467a4016f050b8c"
 }
}

Modifying Instance Timezone

Interface Address

/openapi/open/pad/updateTimeZone

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
timeZoneAsia/ShanghaiStringYesUTC Standard Time
padCodesArrayYesList of instances

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
traceIdewc84g8si0oyStringLink Tracing ID
dataObject
├─taskId24LongTask ID
├─padCodeAC22030010001StringRoom number
├─vmStatusInstance statusIntegerInstance online status (0: offline; 1: Online)
├─taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
 "padCodes": [
  "AC32010140003"
 ],
 "timeZone": "Asia/Shanghai"
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1756313802157,
        "data": [
        {
            "taskId": 760460229,
            "padCode": "ACP250417QAGGQ3S",
            "vmStatus": 0,
            "taskStatus": 1,
            "dispatchCode": 200
        }
    ],
        "traceId": "ewab9p712ww0"
}

Modifying Example Language

Interface Address

/openapi/open/pad/updateLanguage

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
languagezhStringYesLanguage
countryCNStringNoCountry
padCodesArrayYesList of instances

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
traceIdewc84g8si0oyStringLink Tracing ID
dataObject
├─taskId24LongTask ID
├─padCodeAC22030010001StringRoom number
├─vmStatusInstance statusIntegerInstance online status (0: offline; 1: Online)
├─ taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─ dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
 "padCodes": [
  "AC32010140026"
 ],
 "language": "zh",
 "country": ""
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts": 1717570663080, 
 "traceId": "ewab9p712ww0",
 "data": [
  {
   "taskId": 24,
   "padCode": "AC32010140026",
   "vmStatus": 1, 
      "taskStatus": 1,
      "dispatchCode": 200

  }
 ]
}

Modifying Example SIM Card Information

Interface Address

/openapi/open/pad/updateSIM

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
imei868034031518269StringNoIMEI
imeisv00StringNoVersion number
operatorShortnamCMSSStringNoOperator abbreviation
operatorLongnameCHINA MOBILEStringNoFull name of the operator
iccid89860002191807255576StringNoThe SIM card is uniquely identified
imsi460074008004488StringNoPrefix for SIM card carrier number: MCC (3 digits) + MNC (2 or 3 digits)
phonenum18511112222StringNoPhone number
mcc502StringNoNetwork country to which it belongs
mnc146StringNoMobile device network code
padCodesArrayYesList of instances
type1StringYesNetwork type
tac871420StringYesTracking area codes
cellid870091003StringYesBase station ID
narfcn99240StringYesFrequency point numbering used to identify channels in 5G networks
physicalcellid6CStringYesUsed to identify specific cells in 5G or LTE networks

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject
├─taskId24LongTask ID
├─padCodeAC22030010001StringRoom number
├─vmStatusInstance statusIntegerInstance online status (0: offline; 1: Online)
├─dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
    "padCodes": ["AC32010230011"],
        "imei": "868034031518269",
        "imeisv": "00",
        "operatorLongname": "CHINA MOBILE",
        "operatorShortnam": "CMSS",
        "iccid": "89860002191807255576",
        "imsi": "460074008004488",
        "phonenum": "861234566",
        "type": "9",
        "mcc": "502",
        "mnc": "146",
        "tac": "871420",
        "cellid": "870091003",
        "narfcn": "99240",
        "physicalcellid": "6C"
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts": 1717570663080,
 "data": [
  {
   "taskId": 24,
   "padCode": "AC32010140033",
   "vmStatus": 1,
   "dispatchCode": 200
  }
 ]
}

Setting Example Latitude and Longitude

Interface Address

/openapi/open/pad/gpsInjectInfo

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
longitude116.397455FloatYesLongitude
latitude39.909187FloatYesLatitude
altitude8FloatNoElevation (requires updating to the latest image)
speed8FloatNoSpeed, m/s (Mirror after 20251024)
bearing0FloatNoVelocity direction, ° (mirror image after 20251024)
horizontalAccuracyMeters0.1FloatNoHorizontal accuracy (mirroring after 20251024)
padCodesArrayYesList of instances

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
traceIdewc84g8si0oyStringLink Tracing ID
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataBoolean

Request Example

{
 "padCodes": [
  "AC32010030001"
 ],
 "longitude": 116.397455,
 "latitude": 39.909187,
 "altitude": 8
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts": 1717570663080,
 "traceId": "ewab9p712ww0",
 "data": true
}

Task Execution: Querying Proxy Exit IP Information

This interface only creates tasks and returns information such as the task ID and execution status. The results need to be queried through /task-center/open/task/padTaskDetail to return fields taskResult corresponding pad_task.result.

Interface Address

/openapi/open/network/proxy/info

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesArrayYesList of instances

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
traceIdewc84g8si0oyStringLink Tracing ID
dataObject
├─taskId24LongTask ID
├─padCodeAC22030010001StringRoom number
├─vmStatusInstance statusIntegerInstance online status (0: offline; 1: Online)
├─ taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─ dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
  "padCodes": [
    "AC32010140012"
  ]
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1756348835040,
        "data": [
        {
            "taskId": 14294,
            "padCode": "ACP250820SBM4NEU",
            "vmStatus": 0,
            "taskStatus": 1,
            "dispatchCode": 200
        }
    ],
        "traceId": "ewbrcry0frb4"
}

One-Click New Phone ⭐

Note: One-click new account will clear all system data. Please use with caution!

One-click new device function to clear all current instance data and reset Android properties

  • The virtual machine directly sets Android properties, then clears all data
  • The cloud real device directly erases all data (equivalent to resetting) and adds SIM information. If there is an incoming template ID, it will replace the ADI template. If no template is passed and replacementRealAdiFlag is true, a template Id will be randomly selected
  • Note: If you do not send country information, or if the incoming country information service cannot find it, Singapore SIM information will be set by default
  • If the incoming country does not support it, error 500 will be returned, prompt: Country code XX is currently not supported

Explanation of path format conversion rules:

  1. /data/system/... -> /system/...
  2. /data/misc/... -> /misc/...
  3. /data/data/... -> /data/... (Remove the second data, for example: /data/data/com.xx -> /data/com.xx)
  4. Raw path completion prefix: system/... -> /system/...; misc/... -> /misc/...; data/... -> /data/...
  5. /sdcard/... -> /media/0/... (Convert paths starting with /sdcard to starting with /media/0)
  6. Other paths: remain unchanged

Interface Address

/openapi/open/pad/replacePad

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodes[]ArrayisList of instance IDs
countryCodeSGStringNoCountry code (see details for details:https://chahuo.com/country-code-lookup.html)
realPhoneTemplateId65LongNoTemplate ID (obtained from the /openapi/open/realPhone/template/list interface)
androidProp{"persist.sys.cloud.wifi.mac": "D2:48:83:70:66:0B"}ObjectNoRefer to the [Android Modification Attribute List] (./InstanceAndroidPropList.html)
replacementRealAdiFlagfalseBooleanNoIs the ADI template random on the real machine? (false not random, true random)
excludeRealPhoneTemplateIds[101,102]Long[]NoList of template IDs to exclude when using random ADI templates
certificateRefer to Mobile Root CertificateStringNoRoot certificate for the phone
wipeDatatrueBooleanNoWhether user data is erased, default is true (supported by CBS version 2.4.4 and above)
wipeSpecificData["/fonts","/media"]String[]NowipeData is false, this parameter takes effect; Which data needs to be erased
keepSpecificData["/fonts","/media"]String[]NowipeData is false, this parameter takes effect; What data needs to be retained (mutually exclusive with wipeSpecificData)
enableCpuCoreConfigtrueBooleanNoWhether to enable CPU and big-small core configurations, this feature is based on the Android cpuset mechanism, providing a static and staggered CPU resource allocation solution for multiple containers on the physical machine of the cloud phone. By finely dividing Little/Big Cores resources, it significantly improves the performance stability and user experience of a single container.
canvasConsistentWithVendortrueBooleanNoWhether to simulate Canvas to match the phone manufacturer's image. The default is true, true simulates consistency, false does not simulate consistency
certCodeACN631098529xxxxxStringNoCertificate code. Specify the use of the private certificate corresponding to the client's name and code for issuance to Yunzhenji; If not passed (null), certificates are automatically allocated according to the platform's default logic (backward compatible, no changes needed for stock calls). priority is lower than certificate, see the explanation below. If the code does not exist under the client's name (and no certificate is passed), the interface will report an error "Certificate not existing, certCode: xxx" during the acceptance phase and will not generate the task

certificate and certCode priority explanation: When both certificate (the entire certificate content) and certCode are passed in simultaneously, certificate is used as the standard, certCode is ignored and not verified; certCode only takes effect when certificate has not been sent (issued using a private certificate under the customer's name and corresponding to the code). If neither is transferred, certificates are automatically allocated according to the platform's default logic.

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1721739857317LongTimestamp
traceIdewc84g8si0oyStringLink trace ID
dataObject
├─taskId12818LongTask ID
├─padCodeAC22030010124StringCase number
├─vmStatusInstance statusIntegerInstance online status (0: offline; 1: Online)
├─taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─dispatchCode0IntegerThe task sends a status code: 200 indicates the instance was successfully sent, while 200 is the failure reason code (used for internationalization, distinct from interface layer codes). The values are shown at the end of the article in the PadTaskFailCode encoding table

Request Example

{
  "padCodes": ["AC32010250031"],
  "countryCode": "SG",
  "realPhoneTemplateId": 210,
  "androidProp": {
    "persist.sys.cloud.battery.level": "67",
    "persist.sys.cloud.gps.lat": "1.3657",
    "persist.sys.cloud.gps.lon": "103.6464",
    "persist.sys.cloud.imsinum": "525050095718767"
  },
  "replacementRealAdiFlag": true,
  "excludeRealPhoneTemplateIds": [101, 102],
  "certificate": "Root certificate for the phone",
  "wipeData": false,
  "wipeSpecificData": ["/fonts", "/media"],
  "canvasConsistentWithVendor": true
}

Response Example 1

{
  "code": 200,
  "msg": "success",
  "ts": 1732270378320,
  "data": {
    "taskId": 8405,
    "padCode": "AC32010250031",
    "vmStatus": 2,
    "taskStatus": 1,
    "dispatchCode": 200
  },
  "traceId": "ewab8qjqbaio"
}

Response Example 2

{
   "code": 500,
   "msg": "目前不支持国家编码: xx",
   "ts": 1753521350163,
   "data": null,
    "traceId": "ewab8qjqbaio"

}

Check the list of supported countries for new phones with one click

Interface Address

/openapi/open/info/country

Request Method

GET

Request Data Types

application/json

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1721739857317LongTimestamp
traceIdewc84g8si0oyStringLink trace ID
dataObject[]
├─codeADStringCountry code
├─nameAndorraStringCountry Name (English)

Response Examples

{
  "code": 200,
  "msg": "success",
  "ts": 1730192434383,
  "traceId": "ewab8qjqbaio",
  "data": [{
    "code": "AD",
    "name": "Andorra"
  }]
}

Update Contacts

fileUniqueId and info are required

Interface Address

/openapi/open/pad/updateContacts

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodes[]ArrayisList of instance IDs
fileUniqueIdcfca25a2c62b00e065b417491b0cf07ffcStringNoAddress book file ID
operateType-1IntergerNo-1 Add contact 0 Delete contact 1 Overwrite contact, default is -1
infoObject[]NoAddress book information
├─firstNametomStringNoName
├─phone13111111111StringNoMobile phone number
├─emailtom@gmail.comStringNoMailbox

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1721739857317LongTimestamp
traceIdewc84g8si0oyStringLink trace ID
dataObject
├─taskId12818LongTask ID
├─padCodeAC22030010124StringCase number
├─taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─dispatchCode0IntegerThe task sends a status code: 200 indicates the instance was successfully sent, while 200 is the failure reason code (used for internationalization, distinct from interface layer codes). The values are shown at the end of the article in the PadTaskFailCode encoding table
├─vmStatusInstance statusIntegerInstance online status (0: offline; 1: Online)

Request Example

{
  "fileUniqueId": "cfca25a2c62b00e065b417491b0cf07ffc",
  "info": [{
    "firstName": "tom",
    "phone": "13111111111",
    "email": "xxxxx@gmail.com"
  }],
  "padCodes": [
    "AC32010180326"
  ]
}

Response Examples

{
  "code": 200,
  "msg": "success",
  "ts": 1756373645105,
  "data": [
    {
      "taskId": 392077,
      "padCode": "ATP250822LBOD8V7",
      "vmStatus": 0,
      "taskStatus": 1,
      "dispatchCode": 200
    }
  ],
  "traceId": "ewcs8ow5u328"
}

Example Proxy Setup

Interface Address

/openapi/open/network/proxy/set

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
account2222StringNoAccount
password2222StringNoPassword
ip47.76.241.5StringNoIP
port2222IntegerNoPort
enabletrueBooleanYesActivated
padCodesArrayYesList of instances
proxyTypevpnStringNoSupported parameters: proxy, VPN
proxyNamesocks5StringNoSupported parameters: socks5, http-relay (including http and https)
modelbypassStringNoList validation mode, value bypass or limit; If no values are passed, null, or invalid values are passed, they are handled as bypass (compatible with older versions). bypass: bypass* No agents (direct connections) are on the list; others are agents; limit:limit* Use proxies within the list, and direct connections for others (see explanation below) (limit mode requires image support from 2026.06.05 onwards)
bypassPackageListArrayNoPackage Name: Set the package name without going through a proxy (valid when model=bypass)
bypassIpListArrayNoIP set without using proxies (effective when model=bypass)
bypassDomainListArrayNoDomain name: Set the domain name to be proxy-free (effective when model=bypass)
limitPackageListArrayNoThis package name is licensed by an agent (valid for model=limit, requires image support from 2026.06.05 onwards)
limitIpListArrayNoThis IP is proxy (valid for model=limit, requires image support after 2026.06.05)
limitDomainListArrayNoThis domain is proxy (valid at model=limit, requires image support from 2026.06.05 onward)
sUoTtrueBooleanNoWhether UDP connection is enabled default: false

Notes on model and Two Sets of Lists

model Decide which list to use in this setup, as well as the flow of traffic inside and outside the list, with values set to bypass or limit, which are mutually exclusive:

  • model = bypass (default): Use the bypassPackageList/bypassIpList/bypassDomainList list. Items in the list are not brokered (direct connection), while other traffic is proxy. If no model is passed, null is passed, or invalid values are not passed to bypass/limit, this mode is applied, which is exactly the same as the old version.
  • model = limit: Use the limitPackageList/limitIpList/limitDomainList list, only items within the list are handled by proxies, while other traffic is directly connected.

Please fill in the corresponding list according to the selected model: bypass* Three lists correspond to model=bypass, limit* three lists correspond to model=limit.

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
traceIdewc84g8si0oyStringLink Tracing ID
dataObject
├─taskId24LongTask ID
├─padCodeAC22030010001StringRoom number
├─vmStatusInstance statusIntegerInstance online status (0: offline; 1: Online)
├─taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
  "padCodes": [
    "AC32010140023"
  ],
  "account": "2222",
  "password": "2222",
  "ip": "47.76.241.5",
  "port": 2222,
  "enable": true,
  "model": "bypass",
  "bypassPackageList": [],
  "bypassIpList": [],
  "bypassDomainList": [],
  "limitPackageList": [],
  "limitIpList": [],
  "limitDomainList": [],
  "sUoT": true
}

Response Examples

{
  "code": 200,
  "msg": "success",
  "ts": 1756313787216,
  "data": [
    {
      "taskId": 22323879,
      "padCode": "ACN250828ED53YMG",
      "vmStatus": 0,
      "taskStatus": 1,
      "dispatchCode": 200
    }
  ],
  "traceId": "ewab8whwonb4"
}

Real-Time Query of Installed App Lists

Interface Address

/openapi/open/pad/listInstalledApp

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesAC32010250001String[]YesCase number
appNameStringNoApp name

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
traceIdewc84g8si0oyStringLink Tracing ID
ts1756021167163LongTimestamp
dataObject
├─padCodeAC32010250001StringCase number
├─appsObject[]Application collection
├─├─appNameTest the appStringApp name
├─├─packageNamecom.xxx.xxxStringPackage name
├─├─versionCode150600StringVersion number
├─├─versionName15.6.0StringVersion name
├─├─appState0Integer0 Completed 1 Installing 2 Downloading

Request Example

{
 "padCodes": ["AC32010250001"],
 "appName": ""
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1756313784076,
        "data": [
        {
            "padCode": "ACP250417KYBOAXK",
            "apps": [
                {
                    "appName": "WeChat",
                    "packageName": "com.tencent.mm",
                    "versionCode": "2900",
                    "versionName": "8.0.62",
                    "appState": 0
                }
            ]
        }
    ],
        "traceId": "ewab8qh6vwg1"
}

Set App Startup

Used for configuring the auto-start function on startup for a single or multiple instances. This API is for override modification. If you need to modify the auto-start application, use the new auto-start application list to overwrite the current auto-start application list before calling this interface.

  • When applyAllInstances=true, no task is assigned, configuration is saved to the database, only takes effect at the next startup, applies to all instances (including newly created instances in the future)
  • When applyAllInstances=false, assign tasks to the specified instance, the task takes effect immediately after execution
  • padCodes and applyAllInstances mutually exclusive, with applyAllInstances preferred

Currently, it only supports Android 13, 14, and 15

Interface Address

openapi/open/pad/setKeepAliveApp

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesAC32010250001String[]NoInstance ID (required when applyAllInstances=false)
applyAllInstancesfalseBooleanYesWhether all instance modes are applied (if true, no task is issued; it will only take effect at the next startup; mutually exclusive with padCodes, higher priority)
appInfosObject[]No
├─serverNamecom.example/com.example.service.TaskServiceStringYescom.xxx.xxx (package name)/com.xxx.xxx.service.DomeService (full path to the service to be started)

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
datanull

Request Example

{
 "padCodes": [
  "AC002",
  "AC001"
 ],
 "appInfos": [{
   "serverName": "com.example/com.example.service.TaskService"
  }
 ],
 "applyAllInstances": false
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1736326542985,
        "data": [{
        "taskId": 10074,
        "padCode": "AC32010250011",
        "errorMsg": null
    }]
}

Setting App Retention (New)

Used to configure app keepalive for single or multiple instances and to set up a list of saved apps. Once enabled, applications in the list will not be killed by the system if the instance runs out of memory. By default, application survival is persistently configured (the instance restarts also take effect) This interface is for overwrite modification. If you need to modify the live application, use the new live app list to overwrite the current active application list, then call this API.

Interface Address

openapi/open/pad/setKeepAliveApp/new

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesAC32010250001String[]YesInstance Number (up to 500)
appInfosObject[]YesSave the app list; empty arrays mean clearing (up to 3 apps can be kept alive)
├─packageNamecom.tencent.mmStringNoApply package names; leaving blank or empty arrays means clearing

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
datanull

Request Example

{
 "padCodes": [
  "AC002",
  "AC001"
 ],
 "appInfos": [{
   "packageName": "com.tencent.mm"
  }]
}

Example of Clearing a Saved List

{
 "padCodes": [
  "AC002",
  "AC001"
 ],
 "appInfos": []
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1736326542985,
    "data": null
}

Set App Hide

Send a list of hidden package names to a specified instance, allowing the package name list to be empty (if empty, clear the hidden list and send an empty list). Note: If the app is not installed, the settings will not take effect and will only take effect after restarting.

Interface Address

openapi/open/pad/setHideAppList

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesAC32010250001String[]YesCase number (up to 200)
appInfosObject[]YesHide the application list; empty arrays indicate clearing (0-200)
├─packageNamecom.tencent.mmStringNoApply package names; leaving blank or empty arrays means clearing

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
datanull

Request Example

{
 "padCodes": [
  "AC002",
  "AC001"
 ],
 "appInfos": [{
   "packageName": "com.tencent.mm"
  }]
}

Sample of Clearing Hidden Lists

{
 "padCodes": [
  "AC002",
  "AC001"
 ],
 "appInfos": []
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1736326542985,
    "data": null
}

Hidden Auxiliary Services

A list of applications requiring hidden auxiliary service permissions is sent to the specified instance. Once set, applications with hidden permissions will not be detected by other applications on the same instance for requesting accessibility. Explanation:

  1. Specify that the app itself can access accessibility itself
  2. Third-party apps cannot obtain accessibility enabled by the specified app
  3. This specified app is also not available in the accessibility list

Interface Address

/openapi/open/pad/setHideAccessibilityAppList

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodes["AC32010250001"]String[]YesInstance number array (up to 200)
appInfos[]Object[]YesHide the array of application list objects; passing an empty array[] means emptying (0-200)
├─packageNamecom.tencent.mmStringYes (when the array is not empty)App package name. Special values: passing * or ALL indicates hiding auxiliary service permissions for all applications

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
datanull

Request Example - Hide Specified Application

{
 "padCodes": [
  "AC002",
  "AC001"
 ],
 "appInfos": [{
   "packageName": "com.tencent.mm"
  }]
}

Request Example - Clear Hidden List

{
 "padCodes": [
  "AC002",
  "AC001"
 ],
 "appInfos": []
}

Request Example - Hide All Apps

{
 "padCodes": [
  "AC002",
  "AC001"
 ],
 "appInfos": [{
   "packageName": "*"
  }]
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1736326542985,
    "data": null
}

Modifying Real Device ADI Templates

Modify the instance cloud real machine ADI template and pass in the template ID

Requirements:

  1. When creating an instance, it must be created as a cloud real machine type
  2. The Android version used when the instance is created must match the target ADI Android version

Interface Address

/openapi/open/pad/replaceRealAdiTemplate

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesString[]Yes
├─AC21020010001StringYesCase number
wipeDatafalseBooleanYesWhether to erase data
realPhoneTemplateId186LongYesCloud Genuine Machine Template ID

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]
├─taskId1IntegerTask ID
├─padCodeAC21020010001StringCase number
├─vmStatus1IntegerInstance online status (0: offline; 1: Online)
├─taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)

Request Example

{
 "padCodes": ["AC32010250011"],
 "wipeData": true,
 "realPhoneTemplateId": 186
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts": 1736326542985,
 "data": [{
  "taskId": 10074,
  "padCode": "AC32010250011",
  "errorMsg": null,
   "taskStatus": 1
 }]
}

Error Codes

Error codeError ExplanationOperation Suggestions
110028The instance does not existContact the administrator
110064There are instances that do not meet the conditions for upgrading to a real machine. Please check the instanceCheck if the instance is a real device
110099The ADI template does not exist. Please check the parametersCheck the information about the ADI template

Asynchronous Execution of ADB Commands

Executes commands asynchronously in one or more cloud phone instances

Interface Address

/openapi/open/pad/asyncCmd

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesString[]Yes
├─AC22020020793StringYesCase number
scriptContentcd /root;lsStringYesADB commands: Multiple commands are separated by semicolons

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
traceIdewc84g8si0oyStringLink trace ID
ts1756021167163LongTimestamp
dataObject[]
├─taskId1IntegerTask ID, which is null, means the task creation failed
├─padCodeAC22020020793StringCase number
├─vmStatus1IntegerInstance online status (0: offline; 1: Online)
├─errorMsgnullStringError message, null on success

Request Example

{
    "padCodes": [
        "AC22020020793"
    ],
    "scriptContent": "cd /root;ls"
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts": 1717570297639,
  "traceId": "ewab8whwonb4",
  "data": [
  {
   "taskId": 14,
   "padCode": "AC22030010001",
   "vmStatus": 1,
   "errorMsg": null
  },
  {
   "taskId": 15,
   "padCode": "AC22030010002",
   "vmStatus": 0,
   "errorMsg": null
  }
 ]
}

Error Codes

Error codeError ExplanationOperation Suggestions
110003Failed to execute ADB commands Contact the administrator
110012Command execution timeoutPlease try again later

Toggle Root Permissions

Toggle root permissions on one or more cloud phone instances. To root a single application, you need to specify the package name; otherwise, an exception will be thrown. (For cloud real machine products, it is not recommended to set global root permissions when calling this interface, as it may be detected by risk control.) )

Interface Address

/openapi/open/pad/switchRoot

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesString[]Yes
├─AC22020020793StringYesCase number
globalRootfalseBooleanNoWhether global root access is enabled is not enabled by default
packageNamecom.exampleStringNoApplication package names (not required for global root): Multiple package names pass and connect
rootStatusRoot is enabledIntegerYesroot state: 0: Off, 1: On

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]
├─taskId1IntegerTask ID
├─padCodeAC22020020793StringCase number
├─vmStatus1IntegerInstance online status (0: offline; 1: Online)

Request Example

{
  "padCodes": [
    "AC32010250002"
  ],
  "globalRoot": false,
  "packageName": "com.android.ftpeasys",
  "rootStatus": 0
}


Response Examples

{
 "code": 200,
 "msg": "success",
 "ts": 1717570297639,
 "data": [
  {
   "taskId": 14,
   "padCode": "AC32010250002",
   "vmStatus": 1
  }
 ]
}

Error Codes

Error codeError ExplanationOperation Suggestions
110003Failed to execute ADB commands Contact the administrator
110089Enable a single root package name that cannot be emptyWhen opening a single application root, the package name cannot be empty

Local Screenshot

Example screenshot.

Interface URL

openapi/open/pad/screenshot

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesString[]Yes
├─AC21020010231StringYesCase number
rotation0IntegerYesScreenshot Horizontal and Vertical Rotation: 0: No processing of screenshot direction, default; 1: When the screenshot is rotated to portrait: a: Screenshot of the phone's vertical screen, do not process it. b: Screenshot of the phone's landscape screen, rotate the screenshot clockwise 90 degrees.
broadcastfalseBooleanNoWhether the event is broadcast (default false)
definitionfalseIntegerNoClarity: Value range 0-100
resolutionHeightfalseIntegerNoResolution - High greater than 1
resolutionWidthfalseIntegerNoResolution - width greater than 1

Response Parameters

Parameter nameExample valueParameter typerequiredParameter description
code200IntegerisStatus code
msgsuccessStringisRespond to the message
ts1756021167163LongisTimestamp
dataObject[]
├─taskId1IntegerNoTask ID
├─padCodeAC21020010231StringNoCase number
├─vmStatus1IntegerisInstance online status (0: offline; 1: Online)
├─dispatchCode0IntegerNoThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
 "padCodes": [
  "AC21020010231"
 ],
 "rotation": 0,
 "broadcast": false,
    "definition": 50,
    "resolutionHeight": 1920,
    "resolutionWidth": 1080
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts": 1717570337023,
 "data": [
  {
   "taskId": 16,
   "padCode": "AC22030010001",
   "vmStatus": 1,
   "dispatchCode": 200
  },
  {
   "taskId": 17,
   "padCode": "AC22030010002",
   "vmStatus": 0,
   "dispatchCode": 200
  }
 ]
}

Error Codes

Error codeError ExplanationOperation Suggestions
110001Screenshot failed Please try again
110004Failed to execute the restart command Restart later
110028The instance does not existPlease check if the instance exists

Get Real-Time Preview of Example Images

Get a screenshot of the specified instance at the current time. Calling this interface returns a URL and expiration date to the instance. During the validity period, accessing this URL can provide real-time cloud phone screenshots. Batch transfer of multiple instance IDs to batch obtain preview image URLs.

Interface Address

/openapi/open/pad/getLongGenerateUrl

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesString[]Yes
├─AC11010000031StringYesCase number (supports up to 100 instances)
formatpngStringNoImage format: enumeration values: png, jpg, webp (supported by CBS 2.3.7 and above), default is jpg
height50StringNoZoom height (pixels; if not transferred or exceeds the current device height, use the device's current height)
width50StringNoZoom width (pixels; if not transferred or exceeds the current device width, use the device's current width)
quality60StringNoImage quality (percentage: 0~100; if not transmitted or not within the parameter range, default is 60%)

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]
├─padCodeAC11010000031StringCase number
├─urlhttp://xxx.armcloud.pngStringAccess address
├─expireAt1756024767163LongURL expiration time (millisecond timestamp)
├─successtrueBooleanWhether the URL was successfully generated
├─reasonInstance status abnormalityStringReasons for failure (empty when successful)

Request Example

{
    "padCodes": [
        "AC11010000031",
        "AC11010000032"
    ], 
    "format": "png"
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1756021167163,
        "data": [
        {
            "padCode": "AC11010000031",
            "url": "http://xxx.armcloud.png",
            "expireAt": 1756024767163,
            "success": true,
            "reason": ""
        },
        {
            "padCode": "AC11010000032",
            "url": "",
            "expireAt": null,
            "success": false,
            "reason": "实例状态异常"
        }
    ]
}

Get Real-Time Preview Images of Instances (High Performance)

Note: By default, the new interface does not accept conversion parameters such as size, clarity, or format; output images retain the original cloud resolution and format. If customers have special requirements, please handle them yourself. Get a screenshot of the specified instance at the current time. Calling this interface returns a URL and expiration date to the instance. During the validity period, accessing this URL can provide real-time cloud phone screenshots. Batch transfer of multiple instance IDs to batch obtain preview image URLs. Interface Description: High-performance mode: CBS no longer performs any encoding, decoding, or transcoding on screenshots, only serving as a data transmission channel, reducing intermediary overhead Original output: Directly outputs the original screenshot data generated by the ROM, preserving the original cloud resolution and format Parameter simplification: does not accept conversion parameters such as size, clarity, or format Performance optimization comparison with the old interface: Reduced memory usage: Prevents the original image from being fully loaded into memory for software decoding, reducing double memory usage Improved response speed: Restoring streaming advantages and reducing system resource consumption.

Interface Address

/openapi/open/pad/getLongGenerateUrlRaw

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesString[]Yes
├─AC11010000031StringYesCase number (supports up to 100 instances)

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]
├─padCodeAC11010000031StringCase number
├─urlhttp://xxx.armcloud.pngStringAccess address
├─expireAt1756024767163LongURL expiration time (millisecond timestamp)
├─successtrueBooleanWhether the URL was successfully generated
├─reasonInstance status abnormalityStringReasons for failure (empty when successful)

Request Example

{
    "padCodes": [
        "AC11010000031",
        "AC11010000032"
    ]
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1756021167163,
        "data": [
        {
            "padCode": "AC11010000031",
            "url": "http://xxx.armcloud.png",
            "expireAt": 1756024767163,
            "success": true,
            "reason": ""
        },
        {
            "padCode": "AC11010000032",
            "url": "",
            "expireAt": null,
            "success": false,
            "reason": "实例状态异常"
        }
    ]
}

Upgrade Mirrors

Batch instance image upgrades

Interface Address

/openapi/open/pad/upgradeImage

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodesString[]is
├─AC22030010182StringisCase number
imageIdmg-24061124017StringisMirror ID
wipeDatafalseBooleanisWhether to clear instance data (data partition): Clear true, do not delete false
enableCpuCoreConfigtrueBooleanNoWhether to enable CPU and big-small core configurations, this feature is based on the Android cpuset mechanism, providing a static and staggered CPU resource allocation solution for multiple containers on the physical machine of the cloud phone. By finely dividing Little/Big Cores resources, it significantly improves the performance stability and user experience of a single container.

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
traceIdewc84g8si0oyStringLink trace ID
dataObject[]
├─padCodeAC22030010182StringCase number
├─taskId1IntegerTask ID
├─errorMsg“”StringFalse information

Request Example

{
    "padCodes": [
        "AC22030010182"
    ],
    "wipeData": false,
    "imageId": "mg-24061124017"
}

Response Examples

{
 "code": 200,
  "traceId": "ewab8whwonb4",
  "msg": "success",
 "ts": 1718594881432,
 "data": [
  {
   "taskId": 63,
   "padCode": "AC22030010182",
   "errorMsg": null
  }
 ]
}

Error Codes

Error codeError ExplanationOperation Suggestions
110041Mirroring does not existThe mirror ID is incorrect in passing parameters
110037Failed to execute the upgrade image command If the instance status is incorrect, contact the administrator
110038Failed to execute the upgrade image command If the instance status is incorrect, contact the administrator

Upgrading Real Device Mirrors

Batch instance real machine image upgrades

Interface Address

/openapi/open/pad/virtualRealSwitch

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodesString[]is
├─AC22030010182StringisCase number
imageIdmg-24061124017StringisMirror ID
wipeDatafalseBooleanisWhether to clear instance data (data partition): Clear true, do not delete false
realPhoneTemplateId178IntegerNoRequired when real machine template ID upgradeImageConvertType = real
upgradeImageConvertTypevirtualStringisConvert image types: virtual: virtual machine, real: cloud real machine
screenLayoutId14IntegerNoScreen layout ID upgradeImageConvertType=virtual is required
certificateRefer to Mobile Root CertificateStringNoCustomize the phone's root certificate
deviceAndroidProps{"persist.sys.cloud.wifi.mac": "D2:48:83:70:66:0B"}ObjectNoAndroid attribute configuration, refer to the Android Modification Attribute List (Note: CBS version 2.4.4 and below does not support )
enableCpuCoreConfigtrueBooleanNoWhether to enable CPU and big-small core configurations, this feature is based on the Android cpuset mechanism, providing a static and staggered CPU resource allocation solution for multiple containers on the physical machine of the cloud phone. By finely dividing Little/Big Cores resources, it significantly improves the performance stability and user experience of a single container.
certCodeACN631098529xxxxxStringNoCertificate code. Specify the use of the private certificate corresponding to the client's name and code for issuance to Yunzhenji; If not passed (null), certificates are automatically allocated according to the platform's default logic (backward compatible, no changes needed for stock calls). priority is lower than certificate, see the explanation below. If the code does not exist under the client's name (and no certificate is passed), the interface will report an error "Certificate not existing, certCode: xxx" during the acceptance phase and will not generate the task

certificate and certCode priority explanation: When both certificate (the entire certificate content) and certCode are passed in simultaneously, certificate is used as the standard, certCode is ignored and not verified; certCode only takes effect when certificate has not been sent (issued using a private certificate under the customer's name and corresponding to the code). If neither is transferred, certificates are automatically allocated according to the platform's default logic.

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
traceIdewc84g8si0oyStringLink trace ID
dataObject[]
├─padCodeAC22030010182StringCase number
├─taskId1IntegerTask ID
├─errorMsg“”StringFalse information

Request Example

{
    "padCodes": [
        "AC32010210023"
    ],
        "imageId": "img-24112653977",
        "wipeData": true,
        "realPhoneTemplateId": 178,
        "upgradeImageConvertType": "virtual",
        "screenLayoutId": 14
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts": 1718594881432,
 "traceId": "ewab8whwonb4",
    "data": [
  {
   "taskId": 63,
   "padCode": "AC22030010182",
   "errorMsg": null
  }
 ]
}

Error Codes

Error codeError ExplanationOperation Suggestions
110041Mirroring does not existThe mirror ID is incorrect in passing parameters
110037Failed to execute the upgrade image command If the instance status is incorrect, contact the administrator
110038Failed to execute the upgrade image command If the instance status is incorrect, contact the administrator
110064There are instances that do not meet the conditions for upgrading to a real machine. Please check the instanceThere are instances in the current instance that do not meet the upgrade conditions for a real device. Please check the instance

Creating Templates

Create a "Create Template" task for a specified Cloud Phone instance (taskBusinessType=1058), which is pulled and executed by the Cloud Phone side. After a task succeeds, an application resource package will be generated, which can be obtained via the download link (#create-template-task-callback) [Create Template Task Callback].

Interface Address

/openapi/open/pad/makeAppTemplate

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodeAC22030010182StringisThe cloud phone instance number must belong to the customer where the caller resides
packageNamecom.android.gpstestStringisApp package name
appNameGPSTestStringNoApp name (resource name). When left blank, the field corresponding to the callback and inventory entry is null
version3.10.5StringNoApplication version. When left blank, the field corresponding to the callback and inventory entry is null

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
traceIdewc84g8si0oyStringLink Tracing ID
dataObject[]
├─taskId12345IntegerCustomer Perspective Task ID (i.e., customerTaskId) can be used for subsequent task result queries, log association, and callback reconciliation
├─padCodeAC22030010182StringCase number
├─vmStatus1IntegerInstance online status (1: Online; 0: Offline)
├─dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
    "padCode": "AC22030010182",
    "packageName": "com.android.gpstest",
    "appName": "GPSTest",
    "version": "3.10.5"
}

Minimal form (required fields only):

{
    "padCode": "AC22030010182",
    "packageName": "com.android.gpstest"
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1718594881432,
    "traceId": "ewab8whwonb4",
    "data": [
        {
            "taskId": 12345,
            "padCode": "AC22030010182",
            "vmStatus": 1,
            "dispatchCode": 200
        }
    ]
}

Error Codes

Error codeError ExplanationOperational advice
  • | padCode is not currently a customer | Check padCode attribution, using OpenAPI common error codes

Paginated Access to Real Device Templates

Pagination to obtain real machine templates

Interface Address

/openapi/open/realPhone/template/list

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
pageIndex1IntegerNoPage number Default is 1
pageSize10IntegerNoDisplay quantity per page: Default is 10, value range is 1-100
androidImageVersion14StringNoAndroid mirror version
sourceOpenAPIStringNoTemplate source, optional values: OpenAPI / OPS / Manage
isCustomerUploadedtrueBooleanNoWhether the current customer originally uploaded the template: true = own uploads; false = other or unknown ownership; omitted/null = no ownership filter

Accepts only JSON true, false, null, or omission; numbers and strings are rejected. Ownership is based on the original uploader, not the source or authorization list.

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
traceIdewc84g8si0oyStringLink Tracing ID
dataObject[]Response data list
├─id178LongAccount ID
├─brandgoogleStringBrand
├─modelPixel 7 Pro(12G)StringModel
├─fingerprintMd5f5da7b97678ac19309f0cf0203e072d7StringAndroid MD5 (ro.build.fingerprint)
├─fingerprintgoogle/cheetah/cheetah:13/TQ3A.230901.001/10750268:user/release-keysStringAndroid: ro.build.fingerprint
├─resourceSpecificationCodem2-3StringSpecification number
├─screenLayoutCoderealdevice_1440x3120x560StringScreen layout coding
├─adiTemplateDownloadUrlhttps://example.com/file.zipStringThe download path for the adi template file
├─adiTemplatePwd123456StringADI template file password
├─propertyJson{"test": "testa"}JSONInstance properties
├─androidImageVersion13IntegerAndroid mirror version
├─deleteFlag0IntegerWhether to delete (1: Deleted; 0: Not deleted)
├─createTime2024-08-28 12:00:00TimestampCreation date
├─updateTime2024-08-28 12:30:00TimestampModify the time
├─deviceNamePixel ProStringModel Name (Alias/For Display Use)
├─isOfficial1IntegerIs it an official release? (0: Beta 1: Official release)
├─status1IntegerWhether to enable (0: disable 1: enable)
├─adiTemplateVersionv1.0.2Stringadi template version number
├─modelCodecheetahStringModel identification
├─isPublic1IntegerTemplate usage types (1=Public 0=Private)
├─aospVersion13.0.1StringAOSP version
├─testCasesDownloadUrlhttps://example.com/cases.zipStringTest case file download path
├─sourceOPSStringTemplate source: OpenAPI / OPS / Manage
├─isCustomerUploadedtrueBooleanWhether the current authenticated customer originally uploaded and created this template; false for other or unknown ownership

Request Example

{
    "pageIndex": 1,
    "pageSize": 10,
    "source": "OpenAPI",
    "isCustomerUploaded": true
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1756313820061,
        "data": [
        {
            "id": 202,
            "createTime": "2025-03-12T02:29:43.000+00:00",
            "updateTime": "2025-04-29T09:44:28.000+00:00",
            "brand": "HONOR(FIX)",
            "model": "ELZ-AN10(8G)",
            "fingerprint": "HONOR/ELZ-AN10/HNELZ:14/HONORELZ-AN10/8.0.0.185CHNC00E185R4P6:user/release-keys",
            "fingerprintMd5": "9bf2de4b6aa70466a6f76f66539c4613",
            "resourceSpecificationCode": "m2-4",
            "screenLayoutCode": "realdevice_1344x2772x476",
            "adiTemplateDownloadUrl": "https://oss-hk.armcloud.net/adi/35fdc068d6fdc32a691554989008160b_fix2.zip",
            "adiTemplatePwd": "XMDoxJgoKIZKoWbWlnmY",
            "propertyJSON": "{}",
            "androidImageVersion": 14,
            "deleteFlag": false,
            "deviceName": "ELZ-AN10(8G)",
            "isOfficial": 1,
            "status": 1,
            "adiTemplateVersion": null,
            "modelCode": null,
            "isPublic": 1,
            "testCasesDownloadUrl": null,
            "aospVersion": "android14",
            "source": "OpenAPI",
            "isCustomerUploaded": true
        }
    ],
        "traceId": "ewabantnnwn4"
}

Upload ADI Templates

Download the ADI file via URL, parse and process it, then create an ADI template. Only zip and tar formats are supported.

Interface Address

/openapi/open/realPhone/template/adi/upload

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
adiUrlhttps://example.com/adi-template.zipStringYesThe ADI file download URL only supports zip and tar formats
password123456StringNoThe compression package decompression password, which is null or an empty string, means no extraction password is needed

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
traceIdewc84g8si0oyStringLink Tracing ID
dataObjectResponse data
├─id256LongTemplate ID
├─brandgoogleStringBrand
├─modelPixel 7 Pro(12G)StringModel
├─deviceNamePixel ProStringModel name
├─fingerprintgoogle/cheetah/cheetah:13/TQ3A.230901.001/10750268:user/release-keysStringAndroid: ro.build.fingerprint
├─fingerprintMd5f5da7b97678ac19309f0cf0203e072d7StringThe MD5 value for Android fingerprints
├─androidImageVersion13IntegerAndroid mirror version
├─screenLayoutCoderealdevice_1440x3120x560StringScreen layout coding
├─status1IntegerTemplate status (0: Disable 1: Enable)
├─adiTemplateVersionv1.0.2StringADI template version number
├─sourceOpenAPIStringTemplate source: OpenAPI for newly created templates; unchanged when an existing template is reused

explanation

  • New templates record the current customer as the original uploader; reuse preserves ownership.
  • An undeleted template with the same fingerprintMd5 and authorization for the current customer is returned directly (code=200).
  • ADI files support up to 10MB, with a download timeout of 5 seconds
  • adiURLs must start with http or https, and file extensions only support .zip or .tar

Request Example

{
    "adiUrl": "https://example.com/adi-template.zip",
    "password": "123456"
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1756313820061,
    "data": {
        "id": 256,
        "brand": "google",
        "model": "Pixel 7 Pro(12G)",
        "deviceName": "Pixel Pro",
        "fingerprint": "google/cheetah/cheetah:13/TQ3A.230901.001/10750268:user/release-keys",
        "fingerprintMd5": "f5da7b97678ac19309f0cf0203e072d7",
        "androidImageVersion": 13,
        "screenLayoutCode": "realdevice_1440x3120x560",
        "status": 1,
        "adiTemplateVersion": "v1.0.2",
        "source": "OpenAPI"
    },
    "traceId": "ewabantnnwn4"
}

Error Codes

Error codeError ExplanationOperational advice
500The ADI file URL format is incorrectCheck whether adiUrl starts with http/https and has a .zip or .tar extension
500ADI file download failedCheck whether adiUrl is accessible properly and whether the file size exceeds 10MB
500ADI file parsing failedCheck whether the ADI file content is complete and valid
500Extraction password errorCheck if the password parameters are correct

Getting a List of Public Screen Layouts

Get a list of public screen layouts

Interface Address

/openapi/open/screenLayout/publicList

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756349808017LongTimestamp
traceIdewbssur1jbwgStringLink Tracing ID
dataObject[]Response data list
├─id12LongAccount ID
├─codesingle-portrait-basicStringScreen layout coding
├─screenWidth1080StringScreen width
├─screenHigh1920StringScreen height
├─pixelDensity320StringPixel density
├─screenRefreshRate60StringScreen refresh rate
├─status1IntegerStatus (0: Disabled; 1: Enable)
├─deleteFlag0IntegerWhether to delete (1: Deleted; 0: Not deleted)

Request Example


Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1756349808017,
        "data": [
        {
            "id": 12,
            "code": "single-portrait-basic",
            "screenWidth": "1080",
            "screenHigh": "1920",
            "pixelDensity": "320",
            "screenRefreshRate": "60",
            "status": 1,
            "deleteFlag": 0
        }
    ],
        "traceId": "ewbssur1jbwg"
}

Batch Acquisition of Instance Model Information

Batch obtain model information for corresponding instances based on instance numbers.

Interface Address

/openapi/open/pad/modelInfo

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodesString[]is
├─AC22030010182StringisCase number

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
traceIdewbssur1jbwgStringLink Tracing ID
ts1756021167163LongTimestamp
dataObject[]
├─padCodeAC22030010182StringCase number
├─imei524803173613682StringIMEI
├─serialno01NM5ON34M4OStringSerial number
├─wifimac04:3a:6c:e5:e9:8d:62:d6:4aStringWi-Fi Mac address
├─androididaa6bcedf1426546cStringThe unique identifier of the Android instance
├─modelMi 10 ProStringModel
├─brandXiaomiStringBrand
├─manufacturerXiaomiStringManufacturer
├─isRoot1StringIs it ROOT permission?
├─width720IntegerThe maximum width of cloud phones does not exceed 1080
├─height1280IntegerThe maximum height of cloud phones does not exceed 1920
├─memoryLimit1024IntegerMemory limit
├─bluetoothaddr3A:1F:4B:9C:2D:8EStringBluetooth address
├─phonenum1112341234StringMobile phone number
├─romVersionandroid13StringAndroid version
├─dataSize2367381504IntegerMemory size (b)
├─dataSizeAvailable365830144IntegerRemaining available (b)
├─dataSizeUsed10242001551360Used (b)
├─romVersionandroid14StringROM version

Request Example

{
    "padCodes": [
        "AC22030010182"
    ]
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1752845766596,
        "data": [
        {
            "padCode": "ACN250718J6ZLUYS",
            "imei": "237150320344334",
            "serialno": null,
            "wifimac": "44:5a:56:fb:6a:ec",
            "androidid": "ecb978a3cafff13",
            "model": "SM-A057F",
            "brand": "samsung",
            "manufacturer": "samsung",
            "isRoot": null,
            "width": 1080,
            "height": 2400,
            "memoryLimit": null,
            "bluetoothaddr": null,
            "phonenum": null,
            "dataSize": null,
            "dataSizeAvailable": null,
            "dataSizeUsed": null,
            "romVersion": "android14"
        }
    ],
        "traceId": "esb357am18n4"
}

Add to App Blacklist List

Add application blacklists based on instance specifications.

Interface Address

/openapi/open/appBlack/setUpBlackList

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padGradeq2-1StringisExample specifications
blackAppsObject[]isBlacklist list
├─appPkgcn.v8box.appStringisApp package name
├─appNamex8 sandboxStringisApp name

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1721647657112LongTimestamp
data“”String

Request Example

{
 "padGrade": "q2-1",
 "blackApps": [
  {
   "appPkg": "cn.v8box.app",
   "appName": "x8 sandbox"
  }
 ]
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts": 1721647657112,
 "data": null
}

Setting Example Blacklist

Set instance blacklists based on instance specifications.

Interface Address

/openapi/open/pad/triggeringBlacklist

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padGradeq2-1StringisExample specifications
padCodesString[]No
├─AC22030010124StringNoCase number

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1721739857317LongTimestamp
dataObject[]
├─taskId12818IntegerTask ID
├─padCodeAC22030010124StringCase number
├─vmStatus1IntegerInstance online status (0: offline; 1: Online)
├─dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
 "padGrade": "q2-4",
 "padCodes": [
  "AC22030010124"
 ]
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts": 1721739857317,
 "data": [
  {
   "taskId": 12818,
   "padCode": "AC22030010124",
   "vmStatus": 1,
   "dispatchCode": 200
  }
 ]
}

Error Codes

Error codeError ExplanationOperation Suggestions
110051This specification does not have an app blacklist configuration Specification applications must be added to the blacklist list
110028The instance does not existThe transmission of the censor was mistaken
110052Failed to execute the set application blacklist commandPlease try again

Setting Instance Bandwidth

Set instance bandwidth based on instance number.

Interface Address

/openapi/open/pad/setSpeed

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodesString[]is
├─AC22030010124StringisCase number
upBandwidth10.00floatisUplink bandwidth Mbps (0: no limit; -1: Internet access restricted)
downBandwidth10.00floatisDownlink bandwidth Mbps (0: no limit; -1: Internet access restricted)

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1721739857317LongTimestamp
traceIdewbssur1jbwgStringLink Tracing ID
dataObject[]
├─taskId679IntegerTask ID
├─padCodeAC32010140011StringCase number
├─vmStatus1IntegerInstance online status (0: offline; 1: Online)
├─taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─dispatchCode0IntegerThe task sends a status code: 200 indicates the instance was successfully sent, while 200 is the failure reason code (used for internationalization, distinct from interface layer codes). The values are shown at the end of the article in the PadTaskFailCode encoding table

Request Example

{
 "padCodes": [
  "AC32010140011"
 ],
 "upBandwidth": 10.00,
 "downBandwidth": 10.00
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "traceId": "ewab8qjqbaio",
 "ts": 1721640654237,
 "data": [
  {
   "taskId": 679,
   "padCode": "AC32010140011",
   "vmStatus": 1,
   "taskStatus": 1,
   "dispatchCode": 200
  }
 ]
}

Turn Off ADB

Enable or close instance ADB based on the instance number

Interface Address

/openapi/open/pad/openOnlineAdb

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodesString[]isInstance list (number of instances 1-200)
├─AC32010250032StringisCase number
openStatus1IntegerisTurn ADB status on or off (1 on, 0 or off by default)

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1721739857317LongTimestamp
dataObject[]
├─taskId16147IntegerTask ID
├─padCodeAC32010250032StringCase number
├─taskStatus3IntegerTask status (-1 All failures, -2 partial failures, -3 canceled, -4 Timeout, -5 Exceptions, 1, Awaiting execution, 2 Execution, 3 Completed)
├─taskResultsuccessStringMission results

Request Example

{   
    "padCodes":[
        "AC32010250032"
    ],
    "openStatus": 1
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1736920929306,
    "data": [
        {
        "taskId": 16147,
        "padCode": "AC32010250032",
        "taskStatus": 3,
        "taskResult": "success"
        }
    ]
}

Obtaining ADB Connection Information

Obtain ADB connection information based on the instance number If the response data (key, adb) is incomplete, please call [Turn ADB On/Off] (#pad_openOnlineAdb) enable ADB.

Interface Address

/openapi/open/pad/adb

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodeAC32010250032StringisExample number
enabletrueBooleanisADB status true: Enable false: Turn off

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
traceIdewbssur1jbwgStringLink Tracing ID
ts1736922808949LongTimestamp
dataObject[]
├─padCodeAC32010250032StringCase number
├─commandssh -oHostKeyAlgorithms=+ssh-rsa 10.255.3.2_001_1736922765389@156.59.80.166 -p 1824 -L 8572:adb-proxy:53728 -NfStringSSH connection command
├─expireTime2025-01-16 14:32:00StringADB link validity period
├─enabletrueBooleanADB status true: On, false: Off
├─key3CXr3FJZ6gbnGuJctDOpP9M6X6Rl786xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==StringConnection key
├─adbadb connect localhost:8577StringADB connection information

Request Example

{   
    "padCode": "AC32010250032",
    "enable": true
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "traceId": "ewab8qjqbaio",
    "ts": 1736922808949,
    "data": {
        "padCode": "AC32010250032",
        "command": "ssh -oHostKeyAlgorithms=+ssh-rsa 10.255.3.2_001_1736922765389@156.59.80.166 -p 1824 -L 8572:adb-proxy:53728 -Nf",
        "expireTime": "2025-01-16 14:32:00",
        "enable": true,
        "key": "3CXr3FJZ6gbnGuJctDOpP9M6X6Rl786xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==",
        "adb": "adb connect localhost:8577"
    }
}

Batch Acquisition of ADB Connection Information

Batch retrieves or closes ADB connection information based on the instance number list. If the connection information returned after successful activation is incomplete, please first call the [Enable or Disable ADB] interface (#pad_openOnlineAdb) re-enable ADB and try again. This interface supports up to 10 instances at a time.

Interface Address

/openapi/open/pad/batch/adb

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodes["AC32010250032","AC32010250033"]String[]isList of instance numbers, maximum of 10 instances
enabletrueBooleanisWhether ADB is enabled or not: true means it is enabled and returns connection information; false means ADB is off

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
traceIdewbssur1jbwgStringLink Tracing ID
ts1736922808949LongTimestamp
dataObject
├─successListObject[]List of successful batch execution results
│ ├─padCodeAC32010250032StringCase number
│ ├─commandssh -oHostKeyAlgorithms=+ssh-rsa 10.255.3.2_001_1736922765389@156.59.80.166 -p 1824 -L 8572:adb-proxy:53728 -NfStringSSH connection command
│ ├─expireTime2025-01-16 14:32:00StringADB link validity period
│ ├─enabletrueBooleanADB status: true: On, false: Off
│ ├─key3CXr3FJZ6gbnGuJctDOpP9M6X6Rl786xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==StringConnection key
│ ├─adbadb connect localhost:8577StringADB connection information
├─failedListObject[]List of batch execution failures
│ ├─padCodeAC32010250034StringCase number
│ ├─errorMsgThe instance did not runStringReasons for failure
│ ├─errorCodePAD_NOT_RUNNINGStringError code

Request Example

{
    "padCodes": [
        "AC32010250032",
        "AC32010250033"
    ],
    "enable": true
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "traceId": "ewbssur1jbwg",
    "ts": 1736922808949,
    "data": {
        "successList": [
            {
                "padCode": "AC32010250032",
                "command": "ssh -oHostKeyAlgorithms=+ssh-rsa 10.255.3.2_001_1736922765389@156.59.80.166 -p 1824 -L 8572:adb-proxy:53728 -Nf",
                "expireTime": "2025-01-16 14:32:00",
                "enable": true,
                "key": "3CXr3FJZ6gbnGuJctDOpP9M6X6Rl786xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==",
                "adb": "adb connect localhost:8577"
            }
        ],
        "failedList": [
            {
                "padCode": "AC32010250034",
                "errorMsg": "实例未运行",
                "errorCode": "PAD_NOT_RUNNING"
            }
        ]
    }
}

Simulated Touch

Simulate touch events in instances (press, lift, touch) by passing in xy coordinates.

Exception Check: If there is a duplicate request within 2 seconds, an error message will appear: Do not operate frequently

Interface Address

/openapi/open/pad/simulateTouch

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeParameter description
padCodes2200String[]The instance code that needs to be triggered by clicks
width120IntegerContainer width
height120IntegerContainer height
pointCount1IntegerMulti-touch (multiple fingers tap the cloud phone screen effect), default 1, range 1-10, other numbers use default values
positions[{"actionType":0,"x":100,"y":100,"nextPositionWaitTime":20}]Object[]Click on the coordinate group
├─ actionType1IntegerOperation type (0: Press; 1: to lift; 2: Touching)
├─ x100floatClick the X coordinate
├─ y100floatClick the y-coordinate of the point
├─ nextPositionWaitTime100IntegerWhen there are multiple coordinate groups, the waiting time in milliseconds for the next set of click coordinates is triggered
├─ swipe-1floatScroll distance -1, swipe down 1, swipe up
├─ touchTypegestureSwipeStringgestureSwipe event gesture touch event keystroke key event (default is pressing to raise)
├─ keyCode1IntegerUsed to identify the specific button the user presses or releases
├─ pressure0.5floatContact pressure
├─ size0.5floatThe proportion of contact area to the screen

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1736922808949LongTimestamp
traceIdewbssur1jbwgStringLink Tracing ID
dataObject[]
├─padCodeAC32032StringCase number
├─taskId10004759Longtask ID
├─vmStatus0StringThe instance is online
├─taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─dispatchCode0IntegerThe task sends a status code: 200 indicates the instance was successfully sent, while 200 is the failure reason code (used for internationalization, distinct from interface layer codes). The values are shown at the end of the article in the PadTaskFailCode encoding table

Request Example

{
  "padCodes": [
    "Case number"
  ],
  "width": 1080,
  "height": 1920,
  "pointCount":1,
  "positions": [
    {
      "actionType": 0,
      "x": 100,
      "y": 100,
      "nextPositionWaitTime": 20,
      "swipe":-1, 
      "touchType":"gestureSwipe",
      "keyCode":1,
        "pressure":0.5,
        "size":0.5
    },
    {
      "actionType": 2,
      "x": 110,
      "y": 110,
      "nextPositionWaitTime": 22
    },
    {
      "actionType": 2,
      "x": 120,
      "y": 120,
      "nextPositionWaitTime": 23
    },
    {
      "actionType": 1,
      "x": 120,
      "y": 120
    }
  ]
}

Response Examples

{
  "code": 200,
  "msg": "success",
  "ts": 1743676563784,
  "traceId": "ewab8qjqbaio",
    "data": [
    {
      "taskId": 100059,
      "padCode": "ACP00001",
      "vmStatus": 0,
      "taskStatus": 1,
      "dispatchCode": 200

    },
    {
      "taskId": 100060,
      "padCode": "ACP00001",
      "vmStatus": 0,            
      "taskStatus": 1,
      "dispatchCode": 200

    }
  ]
}

Detailed Task Instances

Query detailed execution results for specified instance operation tasks.

Interface Address

/task-center/open/task/padTaskDetail

Request Method

POST

Request Data Types

application/json

Request Query Parameters

Parameter nameExample valueParameter typeIs it requiredParameter description
taskIdsInteger[]is
├─taskId1IntegerYes, the task ID

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
traceIdewbssur1jbwgStringLink Tracing ID
dataObject []Details of the subtask list
├─ taskId1IntegerSubtask ID
├─ padCodeVP22020020793StringInstance identification
├─ taskStatus2String TODO type usage errorMission Status (-1: All failures; -2: Partial failure; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Completed; 9: Queue)
├─ endTime1713429401000LongSubtask end timestamp
├─ taskContent“”StringMission Details
├─ taskResult“”StringMission results
├─ errorMsg“”StringFalse information

Request Example

{
 "taskIds":[1,2]
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1756313781081,
        "data": [
        {
            "taskId": 22323794,
            "padCode": "ACN250828DYJE95Z",
            "taskStatus": 2,
            "endTime": null,
            "taskContent": null,
            "taskResult": null,
            "errorMsg": null
        }
    ],
        "traceId": "ewab8kpxb7k0"
}

Obtaining Instance Execution Script Results

Obtain the script execution result by executing the script task ID.

Interface Address

/task-center/open/task/executeScriptInfo

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
taskIdsInteger []isArray lengths range from 1 to 100
├─1IntegerNoTask ID

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
traceIdewc84g8si0oyStringLink trace ID
ts1756021167163LongTimestamp
dataObject[]
├─taskId1IntegerTask ID
├─padCodeAC22020020793StringCase number
├─taskStatus3IntegerMission Status (-1: All failures; -2: Partial failure; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
├─endTime1756021166163LongTask execution end time
├─taskContentSuccessStringMission Details
├─taskResultSuccessStringMission results
├─errorMsgThe instance does not existStringReasons for failure

Request Example

{
 "taskIds": [1]
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1752214432301,
        "data": [
        {
            "taskId": 49884,
            "padCode": "ATP250707FNSVRMC",
            "taskStatus": 3,
            "endTime": 1752214271000,
            "taskContent": null,
            "taskResult": null,
            "errorMsg": "调用Adb命令成功"
        }
    ],
        "traceId": "erl0i57h6v40"
}

Obtaining Example Screenshot Results

Obtain the screenshot result of the instance using the screenshot task ID.

Interface URL

/task-center/open/task/screenshotInfo

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
taskIdsInteger []is
├─1IntegerNoTask ID

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
traceIdewbssur1jbwgStringLink Tracing ID
ts1756021167163LongTimestamp
data-Object[]Task list details
├─ taskId1IntegerTask ID
├─ taskStatus3IntegerMission Status (-1: All failures; -2: Partial failure; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
├─ padCodeAC22020020793StringCase number
├─ taskContentSuccessStringMission Details
├─ taskResultSuccessStringMission results
├─ endTime1756121167163StringTask execution end time

Request Example

{
 "taskIds": [1]
}

Response Examples

{
 "code": 200,
 "msg": "success",
  "traceId": "ewab8qjqbaio",
  "ts":1713773577581,
 "data":[
    {
    "taskId": 1,
    "taskStatus": 3,
    "padCode": "AC22020020793",
    "taskContent": "Success",
    "taskResult": "Success",
    "endTime": 1756121167163
    }
   ]
}

Instance Restarts and Resets Execution Results

Retrieve the result of instance restart and reset execution through the task ID.

Interface Address

/task-center/open/task/padExecuteTaskInfo

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
taskIdsInteger []Yes
├─1IntegerYesTask ID

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
traceIdewbssur1jbwgStringLink Tracing ID
ts1756021167163LongTimestamp
dataObject[]
├─taskId1IntegerTask ID
├─padCodeAC21020010001StringCase number
├─taskStatus3IntegerQuest Status: (-1: All failures; -2: Partial failure; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
├─ endTime1756021166163LongTask execution end time
├─ taskContent“”StringMission Details
├─ taskResultSuccessStringMission results

Request Example

{
    "taskIds": [1]
}

Response Examples

{
    "code": 200,
    "msg": "success",  
    "traceId": "ewab8qjqbaio",
    "ts": 1756021167163
    "data":[
        {
            "taskId": 1,
            "padCode": "AC22030022911",
            "taskStatus": 3,
            "endTime": 1756021166163,
            "taskContent": null,
            "taskResult": "Success"
        }
    ]
}

Example List Information

Paginate instance list information according to query conditions.

Interface Address

/openapi/open/pad/infos

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
page1IntegerisPage number
rows10IntegerisNumber of items
filterSubCustomerFlag1IntegerNo0: Query both main and sub-accounts simultaneously; 1: Only query the main account; -1: Only queries sub-accounts. By default, query both main and sub-accounts simultaneously.
armServerCodeACS32010260000IntegerNoServer number
deviceCodeAC32010250020StringNoBoard number
netStorageResFlag1IntegerNo0: Local instance, 1: Net storage instance
padStatus10IntegerNoInstance status: 10-Running 11-Restarting 12-Resetting 13-Upgrading 14-Abnormal 15-Not Ready 16-Backup 17-Restoring 18-Shutdown 19-Shutdown 20-Booting 21-Shutdown Failed 22-Boot Failure
padTyperealStringNoInstance type (virtual: virtual machine; real: real device)
instanceTypesString[]NoList of example specifications
idc1StringNoData center ID
padCodesString[]No
├─AC22010020062StringNoCase number
groupIdsInteger[]No
├─1IntegerNoInstance group ID
orderByCreateTime_DESCStringNoSort fields, listing situations:
CreateTime_DESC: Create reverse chronological order;
any other value: Create chronological order

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200Integer
msgsuccessString
ts1713773577581Long
dataObject
├─page1IntegerCurrent page
├─rows10IntegerThe number per page
├─size1IntegerCurrent page count
├─total1IntegerTotal recorded count
├─totalPage1IntegerTotal pages
├─pageDataobject[]List
├─├─padCodeVP21020010391StringCase number
├─├─padGradeq1-2StringNumber of Instances (Q1-6 Six-Instance, Q1-2 Two-Instance)
├─├─padStatus10StringInstance status (10-Running, 11-Restarting, 12-Reset, 13-Upgrading, 14-Exception, 15-Not Ready)
├─├─groupId0IntegerGroup ID
├─├─idc1StringData center ID
├─├─deviceIp192.168.0.0StringCloud Phone IP
├─├─padIp192.168.0.0StringExample IP
├─├─customerAccountstar@testStringThe account to which the instance belongs
├─├─armServerCodeACS32010160000StringServer number
├─├─padTyperealStringInstance type (virtual: virtual machine; real: real device)
├─├─deviceCodeAC32010150070StringBoard number
├─├─createTime2025-09-15 14:11:21StringInstance creation time
├─├─imageVersionandroid14StringAndroid version
├─├─appsString[]List of installed applications
├─├─├─armcloud001StringInstalled applications

Request Example

{
        "page": 1,
        "rows": 10,
        "filterSubCustomerFlag": 0,
        "padCodes": [
        "AC21020010391"
    ],
        "armServerCode": "ACS32010260000",
        "deviceCode": "AC32010250020",
        "groupIds": [
        1
    ]
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1737625119669,
        "data": {
        "page": 1,
            "rows": 10,
            "size": 3,
            "total": 3,
            "totalPage": 1,
            "pageData": [
            {
                "padCode": "AC32010250021",
                "padGrade": "m2-3",
                "padStatus": 12,
                "groupId": 3,
                "idcCode": "1",
                "deviceIp": "172.31.3.3",
                "padIp": "10.255.3.5",
                "customerAccount": "star@test",
                "padType": "real",
                "adbOpenStatus": "0",
                "armServerCode": "ACS32010260000",
                "deviceCode": "AC32010250020",
                "apps": null,
                "imageId": "img-25012330968",
                "createTime": "2025-09-15 14:11:21", 
                "imageVersion": "android14"
            }
            // ... More instance objects
        ]
    }
}

Example List Information (Optimized Pagination Version)

Retrieve instance list information based on query criteria, using lastId + rows for pagination.

Interface Address

/openapi/open/pad/infos/new

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodesString[]NoCase number
├─AC22010020062StringNoCase number
deviceSubnet192.168.0.0/24StringNoPhysical machine subnet
armServerCodeACS32010260000StringNoServer number
clusterCodecluster-001StringNoCluster numbering
idc1StringNoData center ID
padTyperealStringNoInstance type (virtual: virtual machine; real: real device)
deviceCodeAC32010250020StringNoBoard number
groupIdsInteger[]NoInstance group ID
├─1IntegerNoInstance group ID
lastId0LongNoFor the last record ID of the last query, pass null or 0 for the first query
rows10IntegerisQuery quantity, range 1-1000, default 10
netStorageResFlag1IntegerNoIs it a network storage cluster 0 local cluster 1 network storage cluster 2 Magic Box?
instanceTypesString[]NoList of example specifications

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200Integer
msgsuccessString
ts1713773577581Long
dataObject
├─rows10IntegerThe number per page
├─size3IntegerCurrent page count
├─lastId123LongThe last record ID is used for the next page query
├─hasNexttrueBooleanIs there a next page?
├─pageDataobject[]List
├─├─padCodeVP21020010391StringCase number
├─├─padGradeq1-2StringNumber of Instances (Q1-6 Six-Instance, Q1-2 Two-Instance)
├─├─padStatus10StringInstance status (10-Running, 11-Restarting, 12-Reset, 13-Upgrading, 14-Exception, 15-Not Ready)
├─├─groupId0IntegerGroup ID
├─├─idc1StringData center ID
├─├─deviceIp192.168.0.0StringCloud Phone IP
├─├─padIp192.168.0.0StringExample IP
├─├─customerAccountstar@testStringThe account to which the instance belongs
├─├─armServerCodeACS32010160000StringServer number
├─├─padTyperealStringInstance type (virtual: virtual machine; real: real device)
├─├─deviceCodeAC32010150070StringBoard number
├─├─createTime2025-09-15 14:11:21StringInstance creation time
├─├─imageVersion14StringAndroid version
├─├─appsString[]List of installed applications
├─├─├─armcloud001StringInstalled applications
├─├─diskTotal32417603584LongTotal disk volume (bytes)
├─├─diskUsed19356405760LongDisk Used (bytes)

Request Example

{
    "lastId": 0,
    "rows": 10,
    "padCodes": [
        "AC21020010391"
    ],
    "armServerCode": "ACS32010260000",
    "deviceCode": "AC32010250020",
    "groupIds": [
        1
    ],
    "netStorageResFlag": 1
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1737625119669,
    "data": {
        "rows": 10,
        "size": 3,
        "lastId": 123,
        "hasNext": true,
        "pageData": [
            {
                "padCode": "AC32010250021",
                "padGrade": "m2-3",
                "padStatus": 12,
                "groupId": 3,
                "idcCode": "1",
                "deviceIp": "172.31.3.3",
                "padIp": "10.255.3.5",
                "customerAccount": "star@test",
                "padType": "real",
                "adbOpenStatus": "0",
                "armServerCode": "ACS32010260000",
                "deviceCode": "AC32010250020",
                "apps": null,
                "imageId": "img-25012330968",
                "createTime": "2025-09-15 14:11:21",
                "imageVersion": "14",
                "diskTotal": 32417603584,
                "diskUsed": 19356405760
            }
            // ... More instance objects
        ]
    }
}

Example Grouping List

Retrieves the current list of all instance group lists for the user (including: group ID, group name, number of instances under the group). Interface Address

/openapi/open/group/infos

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodeAC21020010391StringNoCase number
groupIdsInteger[]No
├─1IntegerNoGroup ID

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]
├─groupId1IntegerGroup ID
├─groupNameGroup 1StringGroup names
├─padCount1IntegerNumber of instances under the group

Request Example

{
 "padCode": "AC21020010391",
 "groupIds": [1]
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts":1713773577581,
 "data": [
   {
    "groupId": 1,
    "groupName": "Group One",
    "padCount": 1
   }
 ]
}

Batch Instance Batch Change/Grouping

Batch changes of a batch of instances (up to 200) to a specified target group. Both instances and target groups must belong to the current caller customer.

Interface Address

/openapi/open/group/movePad

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
groupId10086LongisThe target group ID must be a valid group under the current customer's name that has not been deleted
padCodesString[]isList of instance numbers for groups to be changed, up to 200 instances
├─AC32010xxxxx01StringisCase number

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObjectNone

Request Example

{
 "groupId": 10086,
 "padCodes": ["AC32010xxxxx01", "AC32010xxxxx02"]
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts": 1713773577581,
 "data": null
}

Error Codes

Error codeMisstatementOperational advice
100009Illegal requests, missing necessary customer informationCheck whether the request is carried by the gateway to carry the customer's identity
140007There are no groupingsConfirm that the target group belongs to the current customer and has not been deleted
110028There are no instancesCheck whether the instance number is correct and belongs to the current customer
140010Group move instance failsTry again later. If it continues to fail, please contact the administrator for assistance
100000The group ID cannot be emptyMake sure the groupId parameter is not empty
100000The instance number cannot be emptyMake sure the padCodes parameters are not empty
100000Instance numbers can be up to 200Ensure the number of instances does not exceed 200

Import Call Records

This interface allows you to import call log data into the cloud phone. During the import process, the interface automatically detects contacts saved in the cloud phone address book and displays their corresponding names in the call log, making it easy for users to quickly identify contacts.

Interface Address

/openapi/open/pad/addPhoneRecord

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesACP2505060777String[]YesInstance codes that need to be edited for call records
callRecords[{"number":"18009781201","inputType":1,"duration":30,"timeString":"2025-05-06 14:00:09"}]Object[]YesCall records
├─ number13900000000StringYesPhone number
├─ inputType1intYesCall types (1: Outbound; 2: Answer the call; 3: Not answered)
├─ duration60intYesCall duration; The unit is seconds, and missed calls are 0 seconds
├─ timeString2025-05-08 12:30:00StringNoTalk duration

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1736922808949LongTimestamp
dataObject[]
├─padCodeAC32032StringCase number
├─taskId10004759Longtask ID
├─vmStatus0StringThe instance is online
├─dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
  "padCodes": [
     "Case number"
  ],
  "callRecords": [
    {
      "number": "18009781201",
      "inputType": 1,
      "duration": 30,
      "timeString": "2025-05-06 14:00:09"
    },
    {
      "number": "18009781202",
      "inputType": 2,
      "duration": 60,
      "timeString": "2025-05-07 14:00:09"
    },
    {
      "number": "18009781203",
      "inputType": 3,
      "duration": 0
    }
  ]
}

Response Examples

{
  "code": 200,
  "msg": "success",
  "ts": 1743676563784,
  "data": [
    {
      "taskId": 100059,
      "padCode": "ACP00001",
      "vmStatus": 0,
      "dispatchCode": 200
    },
    {
      "taskId": 100060,
      "padCode": "ACP00001",
      "vmStatus": 0,
      "dispatchCode": 200
    }
  ]
}

Cloud Phone Text Information Input

Pre-focus the input box in the cloud phone, call this interface to input the specified text information, and the text will be displayed at the designated location on the cloud phone.

Interface Address

/openapi/open/pad/inputText

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesACP2505060777String[]YesExample coding
texthello123StringYesEnter text
Response Parameters
Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1736922808949LongTimestamp
dataObject[]
├─padCodeAC32032StringCase number
├─taskId10004759Longtask ID
├─vmStatus0StringThe instance is online
├─taskStatus1StringCurrent status of the task
├─dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
   "padCodes": [
      "ACP250509FECQN33",
      "ACP250509T1VME44",
      "ACP25050917AYX11"
   ], 
   "text": "12345678"
}

Response Examples

{
     "msg": "success",
     "code": 200,
     "data": [ 
      {
         "padCode": "ACP250509FECQN33",
         "vmStatus": 0,
         "taskId": 10013014,
         "taskStatus": 1,
         "dispatchCode": 200
      },
      {
         "padCode": "ACP250509T1VME44",
         "vmStatus": 0,
         "taskId": 10013015,
         "taskStatus": 1,
         "dispatchCode": 200
      },
      {
         "padCode": "ACP25050917AYX11",
         "vmStatus": 0,
         "taskId": 10013016,
         "taskStatus": 1,
         "dispatchCode": 200
      }
   ],
   "ts": 1746797852244
}

Simulated SMS Sending Message

Simulates sending a text message to an instance, supporting batch instances. (Temporarily limited to AOSP13 and 14)

Interface Address

/openapi/open/pad/simulateSendSms

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodes["ACN2505060777"]String[]YesExample code list, quantity 1-100
senderNumber13800000000StringYesSender number, does not support mainland numbers. (Format: length limit 16 bits, allowing numbers, English, spaces, + - . & ' !)
smsContentThis is a test text message.StringYesSMS content (length limit: 127 bits)

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1736922808949LongTimestamp
traceIdewb123abcStringTracking ID
datatrueBooleanWhether the call was successful

Request Example

{
  "padCodes": ["ACN2505060777"],
  "senderNumber": "13800000000",
  "smsContent": "This is a test text message."
}

Response Examples

{
  "code": 200,
  "msg": "success",
  "ts": 1736922808949,
  "traceId": "ewb123abc",
  "data": true
}

Reset GAID

Calling this interface to pass a specified instance number or instance group will reset the advertising ID in the cloud phone (Reset advertising ID)

Interface Address

/openapi/open/pad/resetGAID

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesString[]Yes
├─AC21020010001StringYesCase number
groupIdsInteger[]No
├─1IntegerNoInstance group ID
resetGmsTypeGAIDStringYesReset the GMS type, optional: GAID
oprByzhangsanStringNoOperator
taskSourceOPEN_PLATFORMStringYesTask source, optional: OPEN_PLATFORM

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]
├─taskId1IntegerTask ID
├─padCodeAC21020010001StringCase number
├─vmStatus1IntegerInstance online status (0: offline; 1: Online)
├─ dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
   "padCodes": [
      "ACPXXXXXXXXXXXXXXX"
   ],
  "taskSource": "OPEN_PLATFORM",
  "oprBy": "admin",
  "resetGmsType": "GAID"
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1717559681604,
    "data": [
         {
            "taskId": 88,
            "padCode": "AC22030010001",
            "vmStatus": 1,
            "dispatchCode": 200
         },
         {
            "taskId": 89,
            "padCode": "AC22030010002",
            "vmStatus": 0,
            "dispatchCode": 200
         }
      ]
}

Injecting Audio to Example Microphone

Injecting an audio file into the microphone of the instance to replace the microphone pickup interface Note: Currently, only PCM format audio files are supported for injection. Please convert the files properly before uploading

Interface Address

/openapi/open/pad/injectAudioToMic

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesACP2505060777String[]YesExample coding
urlhttp://localhost/abcStringNoAudio file download address (choose one of two between this field and fileUniqueId, pass the value)
fileUniqueId8fc73d05371740008ea27a2707496a82StringNoFile ID unique identifier (choose one of two fields and URLs)
enabletrueBooleanYesInjection switch
Response Parameters
Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1736922808949LongTimestamp
dataObject[]
├─padCodeAC32032StringCase number
├─taskId10004759Longtask ID
├─vmStatus0StringThe instance is online
├─taskStatus1StringCurrent status of the task
├─dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
  "padCodes": [
    "ACP250509FECQN33","ACP250509T1VME44","ACP25050917AYX11
  ],
  "url":"http://localhost/abc ",
  "fileUniqueId":"8a6d0df189ef4b0e83858fd9eeb7620c",
  "enable":true
}

Response Examples

{
     "msg": "success",
     "code": 200,
     "data": [ 
      {
         "padCode": "ACP250509FECQN33",
         "vmStatus": 0,
         "taskId": 10013014,
         "taskStatus": 1,
         "dispatchCode": 200
      },
      {
         "padCode": "ACP250509T1VME44",
         "vmStatus": 0,
         "taskId": 10013015,
         "taskStatus": 1,
         "dispatchCode": 200
      },
      {
         "padCode": "ACP25050917AYX11",
         "vmStatus": 0,
         "taskId": 10013016,
         "taskStatus": 1,
         "dispatchCode": 200
      }
   ],
   "ts": 1746797852244
}

Creating Local Instance Backups

Used to create a local instance backup interface.

Interface Address

/openapi/open/pad/local/pod/backup

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodePAD_001StringYesThe instance number cannot be empty, with a maximum of 64 characters
backupNamebacknameinfoStringNoBackup name, maximum 128 characters
backupPathbackup/dbStringNoDo not start with /. If omitted, the backup is saved under the root directory /{backup ID}/ by default. Maximum length: 256 characters.
ossConfig{...}ObjectNoObject storage configuration must support the S3 protocol, cannot be empty or permanently licensed
├─ endpointoss-cn-shanghai.aliyuncs.comStringossConfig != null-yesObject storage endpoint, maximum 128 characters
├─ bucketpad-backupStringossConfig != null-yesThe object stores the bucket name, with a maximum of 128 characters
├─ accessKeyAKIA123456StringossConfig != null-yesObject storage accessKey, maximum 128 characters
├─ secretKeyxxxxxxxStringossConfig != null-yesObject storage secretKey, maximum 128 characters
├─ protocolhttpsStringossConfig != null-yesObject storage access protocol: HTTP or HTTPS, maximum 16 characters
├─ regioncn-shanghaiStringossConfig != null-yesOSS region, maximum 32 characters
├─ securityTokenxxxxxxxxxStringcredentialType=2 - YesTemporary certificate token
├─ expiration2025-12-01T21:38:49zStringcredentialType=2 - YesExpiration date
credentialType1IntegerNoVoucher types: 1 - Permanent voucher, 2 - Temporary voucher

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1758271736814LongTimestamp
data{...}ObjectReturned task information objects
├─ taskId59LongTask ID
├─ padCodeACP250919HTTMIBQStringCase number
├─ vmStatus0IntegerInstance online status: 0 = offline, 1 = online
├─ taskStatus1IntegerTask status: -1 = Task exists (do not submit multiple times), 1 = Task added
├─ errMsgnullStringDescription or misinformation
├─ backupNamebackupNameStringBackup name
├─ backupIdbkp-ACP250919HTTMIBQ-1758271735910StringBackup ID
traceIdeyj68nk6dnuoStringRequest link trace IDs for troubleshooting

Request Example

{
  "padCode": "ACP25091XXXXXX15",
  "backupName": "backnameinfo",
  "backupPath": "backup/data/",
  "credentialType": 1,
  "ossConfig": {
    "endpoint": "oss-cn-xxxxx.xxxxx.com",
    "bucket": "armcloud-cn",
    "accessKey": "LTAI5txxxxxxxYC",
    "secretKey": "kjgvYxxxxxxxxxxx8URWU",
    "protocol": "httpxxxx",
    "region": "cn-xxxxx"
  }
}

Response Examples

{
  "code": 200,
  "msg": "success",
  "ts": 1758271736814,
  "data": {
    "taskId": 59,
    "padCode": "ACP25091XXXXXX15",
    "vmStatus": 0,
    "taskStatus": 1,
    "errMsg": null,
    "backupName": "backnameinfo",
    "backupId": "bkp-ACP25091XXXXXX15-1758271735910"
  },
  "traceId": "eyj68nk6dnuo"
}

Error Codes

Error codeMisstatementOperational advice
220025There are other tasks currently running or pending in the local instance. Please wait until the task finishes before trying again!Wait until the task is completed before attempting
220026Only supports local instance backup!Confirm that the operation instance is a local instance
220029The current instance state is not runningConfirm that the instance is running
220033The current instance's CBS version is too outdated and does not support backup or restoreContact your account manager to upgrade your board system to the latest version before trying again

Create Local Instance Restoration

Used to create a local instance backup file restoration interface.

Interface Address

/openapi/open/pad/local/pod/restore

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
backupIdbkp-ACP250917XSYESH3-1758097064458StringYesBackup ID up to 128 characters
padCodeACP250917CLAQJ15StringYesThe instance number cannot be empty, with a maximum of 64 characters
ossConfig{...}ObjectNoObject storage configuration must support the S3 protocol, cannot be empty or permanently licensed
├─ endpointoss-cn-shanghai.aliyuncs.comStringossConfig != null-yesObject storage endpoint, maximum 128 characters
├─ bucketpad-backupStringossConfig != null-yesThe object stores the bucket name, with a maximum of 128 characters
├─ accessKeyAKIA123456StringossConfig != null-yesObject storage accessKey, maximum 128 characters
├─ secretKeyxxxxxxxStringossConfig != null-yesObject storage secretKey, maximum 128 characters
├─ protocolhttpsStringossConfig != null-yesObject storage access protocol: HTTP or HTTPS, maximum 16 characters
├─ regioncn-shanghaiStringossConfig != null-yesOSS region, maximum 32 characters
├─ securityTokenxxxxxxxxxStringcredentialType=2 - YesTemporary certificate token
├─ expiration2025-12-01T21:38:49zStringcredentialType=2 - YesExpiration date
credentialType1IntegerNoVoucher types: 1 - Permanent voucher, 2 - Temporary voucher

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1758271736814LongTimestamp
data{...}ObjectReturned task information objects
├─ taskId59LongTask ID
├─ padCodeACP250919HTTMIBQStringCase number
├─ vmStatus0IntegerInstance online status: 0 = offline, 1 = online
├─ taskStatus1IntegerTask status: -1 = Task exists (do not submit multiple times), 1 = Task added
├─ errMsgnullStringDescription or misinformation
├─ dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table
traceIdeyj68nk6dnuoStringRequest link trace IDs for troubleshooting

Request Example

{
  "padCode": "ACP25091XXXXXJ15",
  "backupId": "bkp-ACP25091XXXXXJ15-1758097064458",
  "credentialType": 1
}

Response Examples

{
  "code": 200,
  "msg": "success",
  "ts": 1758271736814,
  "data": {
    "taskId": 59,
    "padCode": "ACP25091XXXXXX15",
    "vmStatus": 0,
    "taskStatus": 1,
    "errMsg": null,
    "dispatchCode": 200
  },
  "traceId": "eyj68nk6dnuo"
}

Error Codes

Error codeMisstatementOperational advice
220025There are other tasks currently running or pending in the local instance. Please wait until the task finishes before trying again!Wait until the task is completed before attempting
220027The local instance backup file does not exist. Please check the file before trying again!Check if the backup file exists
220030The current instance status is not in running or exceptionalConfirm that the instance is running or in an abnormal state
220031Backed files do not belong to the current userConfirm the privileges of the backup instance
220032The current backup ID instance does not exist, making it impossible to determine whether the current backup file belongs to the current userCheck if the backup ID is correct
220033The current instance's CBS version is too outdated and does not support backup or restoreTry after upgrading the instance CBS version

Local Instance Backup Result Query

Obtain available backups of local instances based on instance numbers.

Interface Address

/openapi/open/pad/local/pod/backupSelectPage

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
page1IntegerNoCurrent page
rows10IntegerNoThe number per page
padCodesString[]Yes
├─padCodeACP5C24S9G6xxxxxStringYesCase number, with a maximum of 100 instances supported

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObjectReturned data objects
├─ page1IntegerCurrent page
├─ rows10IntegerThe number per page
├─ size1IntegerCurrent page count
├─ total1IntegerTotal recorded count
├─ totalPage1IntegerTotal pages
├─ pageDataObject[]List
├─├─ padCodeACP5C24S9G6xxxxxStringCase number
├─├─ backupIdbkp-xxxxxS4QBMGEW1ZX-1764728535556StringBackup ID
├─├─ backupNamebackupNameStringBackup name
├─├─ backupPathbackup/dbStringBackup data save path
├─├─ endpointbackupNameStringBackup Name (Endpoint)
├─├─ bucketpad-backupStringThe object stores the bucket name, with a maximum of 128 characters
├─├─ protocolhttpsStringObject storage access protocol: HTTP or HTTPS, maximum 16 characters
├─├─ regioncn-shanghaiStringOSS region, maximum 32 characters
traceIdeyj68nk6dnuoStringRequest link trace IDs for troubleshooting

Request Example

{
  "padCodes":["ACP5C24S9G6xxxxx"],
  "page":1,
  "rows":10
}

Response Examples

{
  "code": 200,
  "msg": "success",
  "ts": 1764819200220,
  "data": {
    "page": 1,
    "rows": 10,
    "size": 1,
    "total": 1,
    "totalPage": 1,
    "pageData": [
      {
        "padCode": "ACP5C24S9G6xxxxx",
        "backupId": "bkp-xxxxxS4QBMGEW1ZX-1764728535556",
        "backupName": "android13-xxxx-virtual machine-img-25112665572-Honor of Kings + Douyin",
        "backupPath": "backup/data/",
        "endpoint": "oss-cn-xxxxxx.xxxxxxx.com",
        "bucket": "armcloud-xx",
        "protocol": "https",
        "region": "cn-hongkong"
      }
    ]
  },
  "traceId": "f61kq5vu5ts0"
}

Local Instance Calculation Backup Size

Used to calculate the size of storage space required for local instance backup.

Interface Address

/openapi/open/pad/local/pod/backupCalculate

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodeACP250919HTTMIBQStringYesThe instance number cannot be empty, with a maximum of 64 characters

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code (200 means successful)
msgsuccessStringInterface request status information
ts1758271736814LongTimestamp
data{...}ObjectReturned task information objects
├─ taskId59IntegerTask ID
├─ padCodeACP250919HTTMIBQStringCase number
├─ vmStatus1IntegerInstance online status: 0 = offline, 1 = online
├─ dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table
traceIdeyj68nk6dnuoStringRequest link trace IDs for troubleshooting

Request Example

{
  "padCode": "ACP250919HTTMIBQ"
}

Response Examples

{
  "code": 200,
  "msg": "success",
  "ts": 1758271736814,
  "data": {
    "taskId": 59,
    "padCode": "ACP250919HTTMIBQ",
    "vmStatus": 1,
    "dispatchCode": 200
  },
  "traceId": "eyj68nk6dnuo"
}

Error Codes

Error codeMisstatementOperational advice
220025There are other tasks currently running or pending in the local instance. Please wait until the task finishes before trying again!Wait until the task is completed before attempting
220026Only supports local instance backup!Confirm that the operation instance is a local instance
220029The current instance state is not runningConfirm that the instance is running
220033The current instance's CBS version is too outdated and does not support backup or restoreContact your account manager to upgrade your board system to the latest version before trying again

Clear Process and Return to Desktop

Clear all processes outside the phone's system and return to the home screen

Interface Address

/openapi/open/pad/cleanAppHome

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesATP250814USYXXXXString[]YesExample coding

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1736922808949LongTimestamp
traceIdeuz60azzc7i8StringTracking ID
dataObject[]
├─padCodeAC32032StringCase number
├─taskId10004759Longtask ID
├─vmStatus0StringThe instance is online
├─taskStatus1StringCurrent status of the task
├─dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
    "padCodes": [
        "ATP250814USYXXXX"
    ]
}

Response Examples

{
    "msg": "success",
        "traceId": "euz60azzc7i8",
        "code": 200,
        "data": [
        {
            "padCode": "ATP250814USYXXXX",
            "vmStatus": 0,
            "taskId": 68951,
            "taskStatus": 1,
            "dispatchCode": 200
        }
    ],
        "ts": 1755172215886
}

Unattended Live Streaming

Instance injected into the video interface. Supports injectUrls injection via a single video address injectUrl or address list, with at least one input and no simultaneous input; injectUrls supports up to 5 addresses.

Video Encoding Recommendations: For better playback smoothness and latency, it is recommended to use H.264 or H.265 encoding for the source video; Using other video codecs may cause playback lag or increased latency.

Interface Address

/openapi/open/pad/unmanned/live

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesACN384345141346304String[]YesExample coding (1-100 items)
injectSwitchtrueBooleanNoWhether to enable video injection (true: enable false, cancel) is by default: false
injectLoopfalseBooleanNoLoop playback (true: yes, false: no) by default: false
injectUrlhttps://file.vmoscloud.com/userFile/1eea385b2a6ba3942ebf642badf39aa0.mp4StringNoA single video injection address supports http/https/rtmp:// and local paths, passing at least one of injectUrls
injectUrls["https://file.vmoscloud.com/userFile/1eea385b2a6ba3942ebf642badf39aa0.mp4","rtmp://example.com/live"]String[]NoVideo injection address list (up to 5), supports http/https/rtmp:// and local paths, and passes at least one with injectUrl

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1759134336311LongTimestamp
traceIdezispr1m30n4StringTracking ID
dataObject[]
├─padCodeACN384345141346304StringCase number
├─taskId20503Longtask ID
├─vmStatus0StringThe instance is online
├─taskStatus1StringCurrent status of the task
├─errMsgnullStringError message
├─dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
        "padCodes": ["ACN384345141346304"],
        "injectSwitch": true,
        "injectLoop": false,
        "injectUrl": "https://file.vmoscloud.com/userFile/1eea385b2a6ba3942ebf642badf39aa0.mp4",
        "injectUrls": [
          "https://file.vmoscloud.com/userFile/1eea385b2a6ba3942ebf642badf39aa0.mp4",
          "rtmp://example.com/live/unmanned01"
        ]
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1759134336311,
        "data": [
        {
            "taskId": 20503,
            "padCode": "ACN384345141346304",
            "vmStatus": 0,
            "taskStatus": 1,
            "errMsg": null,
            "dispatchCode": 200
        }
    ],
        "traceId": "ezispr1m30n4"
}

Image Injection

Instance Injection Image Interface

Interface Address

/openapi/open/pad/inject/picture

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesACN2510166WZUPCJString[]YesExample coding (1-100 items)
injectSwitchtrueBooleanNoWhether to enable image injection (true: on, false: cancel): default is false
injectLoopfalseBooleanNoLoop playback (true: yes, false: no) by default: false
injectUrlhttps://file.vmoscloud.com/userFile/ac4e112d72f9ed724101f510e774001f.JPGStringYesImage injection address, supports http https rtmp://

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1759134336311LongTimestamp
traceIdezispr1m30n4StringTracking ID
dataObject[]
├─padCodeACN384345141346304StringCase number
├─taskId20503Longtask ID
├─vmStatus0StringThe instance is online
├─taskStatus1StringCurrent status of the task
├─errMsgnullStringError message
├─dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
        "padCodes": ["ACN2510166WZUPCJ"],
        "injectSwitch": true,
        "injectLoop": false,
        "injectUrl": "https://file.vmoscloud.com/userFile/ac4e112d72f9ed724101f510e774001f.JPG"
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1759134336311,
        "data": [
        {
            "taskId": 28247,
            "padCode": "ACN2510166WZUPCJ",
            "vmStatus": 0,
            "taskStatus": 1,
            "errMsg": null,
            "dispatchCode": 200
        }
    ],
        "traceId": "ezispr1m30n4"
}

Real-Time Sensor Injection

Injecting sensor data into designated instances, supporting various sensor types such as accelerometers, gyroscopes, magnetometers, and device orientation. It supports three modes: single injection, continuous injection, and stopped injection.

Interface Address

/openapi/open/pad/injectSensor

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodes["ACN2510166WZUPCJ"]String[]YesCase Number (1-200)
modecontinuousStringYesInjection mode: continuous - continuous injection, stop - stop injection
sensors[{...}]Object[]NoSensor data list; when mode=stop, it can be empty
├─sensorTypeaccelerationStringYesSensor types, see the explanation below
├─x0.5FloatNoX-axis data, default 0
├─y9.8FloatNoY-axis data, default 0
├─z0.3FloatNoZ-axis data, default 0
interval50IntegerNoInjection interval (milliseconds), only for continuous mode, default 50
duration-1IntegerNoDuration (seconds): -1 means infinite, default -1
addNoisetrueBooleanNoWhether Gaussian noise is added to make data more realistic is true by default

Supported Sensor Types (sensorType)

ValueExplanation
accelerationAccelerometer
gyroscopeGyroscope
magnetic-fieldMagnetometer
orientationEquipment direction
gravityGravity sensor
linear-accelerationLinear acceleration
rotation-vectorRotation vector

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1759134336311LongTimestamp
traceIdezispr1m30n4StringTracking ID
dataObject[]
├─padCodeACN2510166WZUPCJStringCase number
├─taskId20503LongTask ID
├─vmStatus0StringThe instance is online
├─taskStatus1StringCurrent status of the task
├─errMsgnullStringError message
├─dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Example of Request (Single Injection Accelerometer + Gyroscope)

{
  "padCodes": ["ACN2510166WZUPCJ"],
  "mode": "continuous",
  "sensors": [
    { "sensorType": "acceleration", "x": 0.5, "y": 9.8, "z": 0.3 },
    { "sensorType": "gyroscope", "x": 0.01, "y": -0.02, "z": 0.005 }
  ],
  "addNoise": true
}

Example of Request (Continuous Injection of Magnetometer, 100ms Interval)

{
  "padCodes": ["ACN2510166WZUPCJ"],
  "mode": "continuous",
  "sensors": [
    { "sensorType": "magnetic-field", "x": 25.0, "y": -10.5, "z": 45.0 }
  ],
  "interval": 100,
  "duration": 60,
  "addNoise": true
}

Example of Request (Stop Injection)

{
  "padCodes": ["ACN2510166WZUPCJ"],
  "mode": "stop"
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1759134336311,
    "data": [
        {
            "taskId": 28250,
            "padCode": "ACN2510166WZUPCJ",
            "vmStatus": 0,
            "taskStatus": 1,
            "errMsg": null,
            "dispatchCode": 200
        }
    ],
    "traceId": "ezispr1m30n4"
}

Exercise Data Injection (Step Count)

Injecting motion data interfaces supports injecting motion data into specified instances. Since different third-party applications have different motion data acquisition rules, their accuracy may vary somewhat.

Interface Address

/openapi/open/pad/stepData

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodes["ACN519141428559881"]String[]isCase Numbering: The case number that requires inputting motion data, with a maximum of 500 instances per batch, and multiple instance numbers separated by commas
stepCount60IntegerYesSteps Only supports positive integers greater than 0, with RMS greater than 0 but less than 45,000
motorPattern0IntegerNoExercise mode set 0-slow, step frequency 60 steps/min; 1-medium, step frequency 120 steps/min; 2-fast, step frequency 180 steps/min. Default value is 0
addNoisetrueBooleanNoWhether to add noise: Adding noise can make the data more realistic, but it may increase the corresponding task time. False-no-true-yes is the default false value

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1759134336311LongTimestamp
traceIdezispr1m30n4StringTracking ID
dataObject[]
├─padCodeACN384345141346304StringCase number
├─taskId20503Longtask ID
├─vmStatus0StringThe instance is online
├─taskStatus1StringCurrent status of the task
├─errMsgnullStringError message
├─dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
    "padCodes": [
        "ACN519141428559881"
    ], 
    "stepCount": 60,
    "motorPattern": 1,
    "addNoise": false
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1759134336311,
        "data": [
        {
            "taskId": 20503,
            "padCode": "ACN384345141346304",
            "vmStatus": 0,
            "taskStatus": 1,
            "errMsg": null,
            "dispatchCode": 200
        }
    ],
        "traceId": "ezispr1m30n4"
}

Local Instance Migration

Note: Local instance migration will overwrite all data from source instance (A) to target instance (B), and the original data of the target instance will be cleared. Please use with caution! retainOriginalData Only controls whether the original data of the source instance (A) is retained after migration; it does not change the overwriting behavior of the target instance (B). retainOriginalData Requires the CB>S version of the CBS board where the source instance is running to take effect; The default value false represents the data for clearing source instance (A) data after migration.

Migrate the data of source instance A (images, Android properties, ADI, etc.) to the target instance B, and after migration, the configuration of target instance B matches that of source instance A.

Usage Restrictions:

  • The number of instances between the source instance and the target instance must be the same.
  • Both instances must be local instances (non-net storage instances)
  • The CBS version of the board where the source instance and target instance are located must be >= 2.6.7
  • Both instances must be in running state
  • The same target instance can only be used by one migration task at a time (mutually exclusive)

Interface Address

/openapi/open/pad/movePad

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
sourcePadCodeACP63463L11FZZ7PStringYesSource instance number (Example A, the provider of the data)
targetPadCodeACP63463L2ZX7NK5StringYesTarget instance number (Example B, the receiving party, the original data will be cleared)
retainOriginalDatafalseBooleanNoWhether to retain the original data of the source instance (A). Requires the CBS version of the source instance to be valid at CBS version >= 2.6.17; The default value false means clearing source instance data after migration

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1721739857317LongTimestamp
traceIdewc84g8si0oyStringLink Tracing ID
dataObject
├─taskId12818LongTask ID
├─padCodeACP63463L11FZZ7PStringInstance Number (Source Instance Number)
├─vmStatus1IntegerInstance online status (0: offline; 1: Online)
├─taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
  "sourcePadCode": "ACP63463L11FZZ7P",
  "targetPadCode": "ACP63463L2ZX7NK5",
  "retainOriginalData": false
}

Response Examples

{
  "code": 200,
  "msg": "success",
  "ts": 1741651200000,
  "data": {
    "taskId": 12818,
    "padCode": "ACP63463L11FZZ7P",
    "vmStatus": 1,
    "taskStatus": 1,
    "dispatchCode": 200
  },
  "traceId": "ewc84g8si0oy"
}

Local Instance Queue Migration

Note: Queue migration will sequentially overwrite data from source instance (A) to multiple target instances, and the original data of the target instance will be cleared. Please use with caution! retainOriginalData Only controls whether the original data of the source instance (A) is retained after migration; it does not change the behavior of the target instance being overwritten.

Migrate source instance A in targetPadCodeList order to cover multiple target instances in sequence. The service creates a migration task for each target instance: the first task starts immediately, subsequent tasks enter the queue, and wait for the previous task to finish before continuing execution.

Usage Restrictions:

  • The target instance list cannot be empty and cannot contain null values or duplicate instances
  • The source instance cannot have unfinished migration tasks or ongoing queue migration tasks
  • The source instance cannot be identical to any target instance
  • Both the source instance and the destination instance must exist, belong to the same customer, and the caller must own these instances
  • Both the source instance and the destination instance must be local instances (non-in-store instances)
  • The number of instances between the source instance and the target instance must be the same.
  • The CBS version of the board where the source instance and target instance are located must be >= 2.6.18
  • Both the source instance and the target instance must be in running state
  • The same target instance cannot be occupied by other migration tasks at the same time

Interface Address

/openapi/open/pad/movePadQueue

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
sourcePadCodeACP63463L11FZZ7PStringYesSource instance number (Example A, the provider of the data)
targetPadCodeList["ACP63463L2ZX7NK5","ACP63463L2ZX7NK6"]String[]YesList of target instance IDs (queued and migrated in order passed)
retainOriginalDatafalseBooleanNoWhether the original data of the source instance (A) is retained; The default value false means clearing source instance data after migration

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1741651200000LongTimestamp
traceIdewc84g8si0ozStringLink Tracing ID
dataObject[]The list of queued migration tasks created returns in the same order as targetPadCodeList
├─taskId12818IntegerTask ID
├─padCodeACP63463L11FZZ7PStringInstance number (returns the source instance number)
├─vmStatus1IntegerInstance online status (0: offline; 1: Online)
├─dispatchCode0IntegerThe task sends a status code: 200 means the instance was successfully sent; a non-200 is the failure cause code (used for internationalization, distinct from interface layer code). The values are listed at the end of the article in the PadTaskFailCode encoding table

Request Example

{
  "sourcePadCode": "ACP63463L11FZZ7P",
  "targetPadCodeList": [
    "ACP63463L2ZX7NK5",
    "ACP63463L2ZX7NK6"
  ],
  "retainOriginalData": false
}

Response Examples

{
  "code": 200,
  "msg": "success",
  "ts": 1741651200000,
  "data": [
    {
      "taskId": 12818,
      "padCode": "ACP63463L11FZZ7P",
      "vmStatus": 1,
      "dispatchCode": 200
    },
    {
      "taskId": 12819,
      "padCode": "ACP63463L11FZZ7P",
      "vmStatus": 1,
      "dispatchCode": 200
    }
  ],
  "traceId": "ewc84g8si0oz"
}

Callback Management

Configuration Instructions: Customers need to configure callback addresses on the customer open platform. If the address is successfully configured, receiving callback messages is enabled by default

Types of Callbacks Supported by Querying

Interface Address

/openapi/open/config/selectList

Request Method

GET

Request Data Types

No parameters

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200Integer
msgsuccessString
ts1713773577581Long
dataObject
├─callbackName"File Upload Task"StringCallback type name
├─callbackType"4"StringTypes of callbacks
├─id14LongCallback type ID (this parameter will be passed in for future additions and modifications)

Request Example

/openapi/open/config/selectList

Response Examples

{
    "code": 200,
        "data": [
        {
            "callbackName": "File upload task",
            "callbackType": "4",
            "id": 14
        },
        {
            "callbackName": "File upload instance task",
            "callbackType": "5",
            "id": 15
        },
        {
            "callbackName": "App synchronization tasks",
            "callbackType": "6",
            "id": 16
        }
    ],
    "msg": "success",
    "ts": 1734500966127
}

Query Configuration Callback Address

Interface Address

/openapi/open/config/selectCallback

Request Method

GET

Request Data Types

No parameters

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200Integer
msgsuccessString
ts1713773577581Long
datahttp://www.baidu.comStringConfigured callback address (returns the first one)

Request Example

/openapi/open/config/selectCallback

Response Examples

{
 "code" : 200,
 "data" : "http://www.baidu.com",
 "msg" : "success",
 "ts" : 1734501602763
}

Querying All Configured Callback Addresses

When multiple callback addresses are configured, this interface is used to query all callback addresses.

Interface Address

/openapi/open/config/selectCallbackUrls

Request Method

GET

Request Data Types

No parameters

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200Integer
msgsuccessString
ts1713773577581Long
data["http://a.com", "http://b.com"]String[]A list of callback addresses for all configurations

Request Example

/openapi/open/config/selectCallbackUrls

Response Examples

{
 "code" : 200,
 "data" : ["http://www.baidu.com", "http://www.example.com/callback"],
 "msg" : "success",
 "ts" : 1734501602763
}

New Callback Address Configuration

Interface Address

/openapi/open/config/insertCallback

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
callbackIdList[1,2,3]Long[]YesCallback type ID collection (obtained from callback type interfaces supported by queries)
callbackUrls["http://a.com/cb", "http://b.com/cb"]String[]NoCallback address list, up to 3 (choose either callbackUrl or callbackUrl, preferably using callbackUrls)
callbackUrlhttp://192.168.1.1/callbackStringNoSingle callback address (compatible with older versions; if callbackurls are passed, this field is ignored)

Note: Added as incremental addition; existing configurations will not be reinserted. Each customer can configure up to 3 callback addresses; if exceeded, they must be deleted before adding new addresses.

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1713773577581LongTimestamp
data2IntegerConfigured number of successful types

Request Example

{
  "callbackIdList": [21, 14],
  "callbackUrls": ["http://localhost:8080/callback", "http://localhost:9090/callback"]
}

Response Examples

{"code":200,"data":2,"msg":"success","ts":1734502541732}

Modifying Callback Address Configuration

Interface Address

/openapi/open/config/updateCallback

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
callbackIdList[1,2,3]Long[]YesCallback type ID collection (obtained from callback type interfaces supported by queries)
callbackUrls["http://a.com/cb", "http://b.com/cb"]String[]NoCallback address list, up to 3 (choose either callbackUrl or callbackUrl, preferably using callbackUrls)
callbackUrlhttp://192.168.1.1/callbackStringNoSingle callback address (compatible with older versions; if callbackurls are passed, this field is ignored)

Note: Modify to full replacement, first delete all configured callback addresses for that client, then rewrite.

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1713773577581LongTimestamp
data2IntegerNumber of successful types updated

Request Example

{
  "callbackIdList": [21, 14],
  "callbackUrls": ["http://localhost:8080/callback", "http://localhost:9090/callback"]
}

Response Examples

{
 "code" : 200,
 "data" : 2,
 "msg" : "success",
 "ts" : 1734502541732
}

Delete the Callback Address of the Configuration

Interface Address

/openapi/open/config/deleteCallback

Request Method

POST

Request Data Types

No parameters

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200Integer
msgsuccessString
ts1713773577581Long
data4Long

Request Example

{}

Response Examples

{
 "code" : 200,
 "data" : 22,
 "msg" : "success",
 "ts" : 1734503029282
}

Instance State Callback

Usage Scenarios

Instance status changes are notified to customers through this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger999Task business types
padCodeString212254Instance identification
padStatusInteger1Instance Status: Instance Status: -1 Deleted 10 - Running 11 - Restarting 12 - Reset 13 - Upgrading 14 - Abnormal 15 - Not Ready 16 - Backup 17 - Restoring 18 - Shutdown 19 - Shutting down 20 - Starting up 21 - Shutdown failed 22 - Boot failed
padConnectStatusInteger1Instance connection status: 1: Online, 0: Offline

Instance Restart Task Callback

Usage Scenarios

When an instance restarts a task, it is notified to the customer via this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1000Task business types
padCodeString212254Case number
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
taskIdInteger1Task ID
taskContentStringMission Details
endTimeLong1756021166163End time
taskResultStringSuccessMission results

Instance Reset Task Callback

Usage Scenarios

The instance resets the task is notified to the client via this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1001Task business types
padCodeString212254Case number
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
taskIdInteger1Task ID
taskContentStringMission Details
endTimeLong1756021166163End time
taskResultStringSuccessMission results

Asynchronous Execution of ADB Task Callbacks

Usage Scenarios

When the customer calls the ADB command asynchronously, it will notify the customer through this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1002Task business types
padCodeStringAC22030022001Instance identification
taskIdInteger1Task ID
taskStatusInteger3Mission Status (-1: All failures; -2: Partial failure; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
endTimeLong1756021166163Task execution end time
taskResultStringSuccessMission results
taskContentStringMission Details
cmdStringcd /root;lsExecution of orders
cmdResultString/wsThe executed command returns

App Installation Task Callbacks

Usage Scenarios

When customers call for app installation, the installation status of the application is notified to the customer via this callback interface.

FieldTypeExampleExplanation
taskIdInteger1Task ID
padCodeStringAC22030022001Case number
taskBusinessTypeInteger1004Task business types
endTimeLong1756021166163End time
appsObject[]Application information
├─ appIdInteger10001Application ID
├─ appNameStringdemoApp name
├─ pkgNameStringcom.xxx.demoPackage name
├─ padCodeStringAC22030022001Case number
├─ resultbooleantrueIdentification of the installation results. true: success, false: failure
├─ failMsgStringThis app has been added to the blacklist and is prohibited from installationFailure information
├─ versionCode150600StringVersion number
├─ versionName15.6.0StringVersion name

App Uninstall Task Callback

Usage Scenarios

When customers call an app to uninstall, the status of the uninstall is notified to the customer via this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1004Task business types
taskIdInteger1Task ID
appsObjectApplication information
├─ appIdInteger10001Application ID
├─ appNameStringdemoApp name
├─ pkgNameStringcom.xxx.demoPackage name
├─ padCodeStringAC22030022001Case number
├─ resultbooleantrueIdentification of the installation results. true: success, false: failure

Application Stops Task Rollback

Usage Scenarios

When a customer calls an application and stops, the situation of the application stop is notified to the customer via this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1005Task business types
padCodeStringAC22030022001Instance identification
taskIdInteger1Task ID
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
packageNameStringxxx.test.comPackage name

App Launch Task Callback

Usage Scenarios

When the customer calls the application to start, the status of the application launch is notified to the customer via this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1007Task business types
padCodeStringAC22030022001Instance identification
taskIdInteger1Task ID
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
packageNameStringxxx.test.comPackage name

File Upload Example Task Callback

Usage Scenarios

When the client calls the instance file upload API, it will notify the customer via this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1009Task business types
padCodeStringAC22030022001Case number
taskIdInteger1Task ID
resultbooleantrueExecution result: true - success, false - failure
errorCodeStringError code
fileIdStringcf08f7b685ab3a7b6a793b30de1b33ae34File ID

Query Example Application List Callback

Usage Scenarios

The client calls the instance to install the application list, and the instance notifies the installed application list via this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1011Task business types
padCodeStringAC22030022001POD logo
taskIdInteger1Task ID
taskStatusInteger1Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
appsObject[]
├─appNameStringtestApp name
├─appState0Integer0 Completed 1 Installing 2 Downloading
├─pkgNameStringtext.xx.comPackage name
├─versionCode150600StringVersion number
├─versionName15.6.0StringVersion name

Instance Upgrade Mirror Task Callback

Usage Scenarios

Changes in the status of instance upgrade mirror tasks are notified to customers through this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1012Task business types
padCodeString212254Case number
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
taskIdInteger1Task ID
taskContentStringMission Details
endTimeLong1756021166163End time
taskResultStringSuccessMission results

Example Blacklist Task Callback

Usage Scenarios

If the instance settings apply blacklist task status changes, the customer is notified through this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1015Task business types
padCodeString212254Case number
taskIdInteger1Task ID
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)

Template Task Callback

Usage Scenarios

After the customer calls the Creating Template interface to create a task (taskBusinessType=1058), when the task enters its terminal state (success/failure/cancel/timeout), the callback interface will notify the customer. Executing (taskStatus=1 pending / 2 executing) will not trigger a callback.

Subscription method: Customers can enable a 'Template Creation Task' callback on the 'Callback Subscription' page in the PaaS console.

FieldTypeExampleExplanation
taskBusinessTypeInteger1058Task business type, fixed 1058
padCodeStringAC22030010182Case number
taskIdInteger12345Customer View Task ID (taskId returned by the creation interface)
taskStatusInteger3Task terminal status code (3: Success; -1: Failure; -3: Cancel; -4: Timeout)
packageNameStringcom.android.gpstestApplication package name (passed in when creating the task, returned as-is)
appNameStringGPSTestApp name (passed when creating the task, may be null)
versionString3.10.5Application version (passed in when creating the task, may be null)
downloadUrlStringhttps://oss-example.armcloud.net/game-res/com.android.gpstest/3.10.5/template.zipResource pack download link: Success (taskStatus=3) required but not blank; Failure/cancel/timeout is null
fileMd5String73e1146365fbe02615a6d1f7829ddcf7Resource Package MD5: Successfully (taskStatus=3) extracted from the data reported from the cloud mobile end; Failure/cancel/timeout is null
fileSizeLong3567264256Number of resource package bytes: successful (taskStatus=3) not empty (note type Long, may exceed int32 limit); Failure/cancel/timeout is null

Example of successful callback

{
  "taskBusinessType": 1058,
  "padCode": "AC22030010182",
  "taskId": 12345,
  "taskStatus": 3,
  "packageName": "com.android.gpstest",
  "appName": "GPSTest",
  "version": "3.10.5",
  "downloadUrl": "https://app-image.vmos.cn/userFile/com.netease.dhxy/2.1.432/73e1146365fbe02615a6d1f7829ddcf7.respack",
  "fileMd5": "73e1146365fbe02615a6d1f7829ddcf7",
  "fileSize": 3567264256
}

Example of Failed Callback

{
  "taskBusinessType": 1058,
  "padCode": "AC22030010182",
  "taskId": 12345,
  "taskStatus": -1,
  "packageName": "com.android.gpstest",
  "appName": "GPSTest",
  "version": "3.10.5",
  "downloadUrl": null,
  "fileMd5": null,
  "fileSize": null
}

Compatibility Notes

If the old version of the Cloud Mobile (GS) has not been upgraded, the reported results may not include the fileMd5 / fileSize fields. In this case, if these two fields are null in the callback, downloadUrl can still be returned correctly.

Explanation of Power Orders

On the server side, distributed lock deduplication was performed for 10 minutes based on dimensions (customerId, taskId, taskStatus, taskBusinessType), and the same terminal state would not be pushed repeatedly within 10 minutes; If resend occurs after more than 10 minutes (very rare), please press the above key on the client and perform idempotent processing itself.

Retrying

The server performs a limited number of retries if the customer fails the callback (the specific policy follows the existing common callback retry rules). The client recommends returning HTTP 200 to indicate that the order has been received.

//: # (The instance backup instance status will be notified to the customer via this callback interface.) )

//: # (| taskStatus | Integer | 3 | Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)|)

//: # (The status of restoring backup data will be notified to the customer via this callback interface.) )

//: # (| taskStatus | Integer | 3 | Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)|)

Local Instance Migration Callback

Usage Scenarios

After the local instance migration task (taskBusinessType=1122 or 1123) is completed, the customer is notified via this callback interface. The callback includes both the source instance and the destination instance number, making it easier for customers to perceive the migration results.

taskBusinessType value explanation:

  • 1122 (Queue Migration): Suitable for batch migration scenarios, where multiple migration tasks are executed sequentially in queue order. The callback carries the fields index (current serial number) and total (total) to facilitate tracking the overall progress of batch migrations.
  • 1123 (Single Migration): Suitable for single-instance migration scenarios, executed immediately after committing.
FieldTypeExampleExplanation
taskBusinessTypeInteger1122 or 1123Task business types. 1122: Queue migration (batch scenarios, executed in queue order); 1123: Single migration (single instance migration)
taskIdLong12818Task ID
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
endTimeLong1741651200000Task execution end time (millisecond timestamp)
taskContentStringMission Details
taskResultStringSuccessDescription of the task results
sourcePadCodeStringACP63463L11FZZ7PSource instance number (Example A providing data)
targetPadCodeStringACP63463L2ZX7NK5Target instance number (Instance B receiving data)

Example Content

{
  "taskBusinessType": 1123,
  "taskId": 12818,
  "taskStatus": 3,
  "endTime": 1741651200000,
  "taskContent": "",
  "taskResult": "Success",
  "sourcePadCode": "ACP63463L11FZZ7P",
  "targetPadCode": "ACP63463L2ZX7NK5"
}

One-Click New Device Callback

Usage Scenarios

One-click notifications of new device status are sent to customers via this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1124Task business types
padCodeString212254Case number
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
taskIdInteger1Task ID
taskContentStringMission Details
endTimeLong1756021166163End time
taskResultStringSuccessMission results

Memory Instance Boot Callback

Usage Scenarios
The power on of the network storage instance is notified to the customer through this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1201Task business types
padCodeStringACN250427352B7WUCase number
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
taskIdInteger10001661Task ID
taskContentString(Null string)Mission Details
endTimeLongnullEnd time (timestamp, unit: milliseconds)
taskResultString(Null string)Mission results

Example Content

{
  "endTime": null,
  "padCode": "ACN250427352B7WU",
  "taskBusinessType": 1201,
  "taskContent": "",
  "taskId": 10001661,
  "taskResult": "",
  "taskStatus": 3
}

Network Storage Instance Shutdown Callback

Usage Scenarios
When a network storage instance shuts down, it is notified to the customer via this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1202Task business types
padCodeStringACN250427352B7WUCase number
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
taskIdInteger10001662Task ID
taskContentString(Null string)Mission Details
endTimeLongnullEnd time (timestamp, unit: milliseconds)
taskResultString(Null string)Mission results

Example Content

{
  "endTime": null,
  "padCode": "ACN250427352B7WU",
  "taskBusinessType": 1202,
  "taskContent": "",
  "taskId": 10001662,
  "taskResult": "",
  "taskStatus": 3
}

Forced Shutdown Callback for Network Storage Instances

Usage Scenarios
Forced shutdown (shutdown and data deletion) in NetStorage 1.0 instances is notified to customers via this callback interface. Corresponding interfaces /openapi/open/pad/net/storage/forceOff.

FieldTypeExampleExplanation
taskBusinessTypeInteger1208Task business types
padCodeStringACN250427352B7WUCase number
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
taskIdInteger10001662Task ID
taskContentString(Null string)Mission Details
endTimeLongnullEnd time (timestamp, unit: milliseconds)
taskResultString(Null string)Mission results

Example Content

{
  "endTime": null,
  "padCode": "ACN250427352B7WU",
  "taskBusinessType": 1208,
  "taskContent": "",
  "taskId": 10001662,
  "taskResult": "",
  "taskStatus": 3
}

Deleted Callback from Network Storage Instances

Usage Scenarios
When a network storage instance is deleted, it is notified to the customer through this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1203Task business types
padCodeStringACN250427352B7WUCase number
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
taskIdInteger10001662Task ID
taskContentString(Null string)Mission Details
endTimeLongnullEnd time (timestamp, unit: milliseconds; null means not yet finished)
taskResultString(Null string)Mission results

Example Content

{
  "endTime": null,
  "padCode": "ACN250427352B7WU",
  "taskBusinessType": 1203,
  "taskContent": "",
  "taskId": 10001672,
  "taskResult": "",
  "taskStatus": 3
}


Network Storage Backup Callback

Usage Scenarios
The status of network storage backups is notified to customers via this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1204Task business types
padCodeStringACN250427352B7WUCase number
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
taskIdInteger10001664Task ID
taskContentString(Null string)Mission Details
endTimeLongnullEnd time (timestamp, unit: milliseconds; null means not yet finished)
taskResultString(Null string)Mission results

Example Content

{
  "endTime": null,
  "padCode": "ACN250427352B7WU",
  "taskBusinessType": 1204,
  "taskContent": "",
  "taskId": 10001664,
  "taskResult": "",
  "taskStatus": 3
}


Deletes Callbacks in NetStorage

Usage Scenarios
Deleted network storage is notified to customers via this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1205Task business types
padCodeStringACN250427352B7WUCase number
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
taskIdInteger10001665Task ID
taskContentString(Null string)Mission Details
endTimeLongnullEnd time (timestamp, unit: milliseconds; null means not yet finished)
taskResultString(Null string)Mission results

Example Content

{
  "endTime": null,
  "padCode": "ACN250427352B7WU",
  "taskBusinessType": 1205,
  "taskContent": "",
  "taskId": 10001665,
  "taskResult": "",
  "taskStatus": 3
}

File Upload Task Callback

Usage Scenarios

When the customer calls to upload a file, the status of the upload is notified to the customer via this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger2000Task business types
taskIdInteger1Task ID
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
originFileUrlString<www.xxx.com/xxx.apk>Original file download link
fileUniqueIdStringtest001File ID

Network Storage 2.0 Boot Callback

Usage Scenarios
The power on of the network storage instance is notified to the customer through this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1301Task business types
padCodeStringACN317629292153649Case number
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
taskIdInteger10001085Task ID
taskContentString(Null string)Mission Details
endTimeLongnullEnd time (timestamp, unit: milliseconds)
taskResultString(Null string)Mission results

Example Content

{
  "endTime": null,
  "padCode": "ACN317629292153649",
  "taskBusinessType": 1301,
  "taskContent": "",
  "taskId": 10001085,
  "taskResult": "Success",
  "taskStatus": 3
}

NetStorage 2.0 Shutdown Callback

Usage Scenarios
When a network storage instance shuts down, it is notified to the customer via this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1302Task business types
padCodeStringACN317629292153649Case number
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
taskIdInteger10001086Task ID
taskContentString(Null string)Mission Details
endTimeLongnullEnd time (timestamp, unit: milliseconds)
taskResultString(Null string)Mission results

Example Content

{
  "endTime": 1755141290862,
  "padCode": "ACN317629292153649",
  "taskBusinessType": 1302,
  "taskContent": "",
  "taskId": 10001086,
  "taskResult": "Success",
  "taskStatus": 3
}

NetStorage 2.0 Forced Shutdown Callback

Usage Scenarios
When a network storage instance forcibly shuts down (shuts down and deletes data), it is notified to the customer via this callback interface. Corresponding interfaces /openapi/open/pad/v2/net/storage/batch/forceOff.

FieldTypeExampleExplanation
taskBusinessTypeInteger1308Task business types
padCodeStringACN317629292153649Case number
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
taskIdInteger10001086Task ID
taskContentString(Null string)Mission Details
endTimeLongnullEnd time (timestamp, unit: milliseconds)
taskResultString(Null string)Mission results

Example Content

{
  "endTime": 1755141290862,
  "padCode": "ACN317629292153649",
  "taskBusinessType": 1308,
  "taskContent": "",
  "taskId": 10001086,
  "taskResult": "Success",
  "taskStatus": 3
}

NetStorage 2.0 Instance Deletion Callback

Usage Scenarios
When a network storage instance is deleted, it is notified to the customer through this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1303Task business types
padCodeStringACN317629292153649Case number
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
taskIdInteger10001087Task ID
taskContentString(Null string)Mission Details
endTimeLongnullEnd time (timestamp, unit: milliseconds; null means not yet finished)
taskResultString(Null string)Mission results

Example Content

{
  "endTime": 1755141290862,
  "padCode": "ACN317629292153649",
  "taskBusinessType": 1303,
  "taskContent": "",
  "taskId": 10001087,
  "taskResult": "",
  "taskStatus": 3
}


NetStorage 2.0 Storage Backup Callback

Usage Scenarios
The status of network storage backups is notified to customers via this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1304Task business types
padCodeStringACN317629292153649Case number
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
taskIdInteger10001088Task ID
taskContentStringjson string, containing a newly cloned collection of instances (requires parsing)Mission Details
endTimeLongnullEnd time (timestamp, unit: milliseconds; null means not yet finished)
taskResultString(Null string)Mission results

Example Content

{
  "endTime": 1755001588956,
  "padCode": "ACN317629292153649",
  "taskBusinessType": 1304,
  "taskContent": "[\"ACN317629292153650\"]",
  "taskId": 10001088,
  "taskResult": "Success",
  "taskStatus": 3
}

Subscription Event Callbacks

Usage Scenarios
After a customer subscribes to an event, when the event is triggered, the platform notifies the customer via this callback interface. ( Note: IMG-25111133267 mirror version has now taken effect )

FieldTypeExampleExplanation
eventTypeInteger50Subscription Event Type Valid Value: 50 Application Start (subscribe by package name) 51 Application Stop (subscribe by package name) 61 Application Start (subscribe by application Name) 62 Application Stop (subscribe by app name)
timestampLong1762221316Timestamp for pullback
eventDetailObjectDetails of the incident: The following content is JSON
├─padCodeStringACN000000Case number
├─packageNameStringCOM.BAIDUApp package name
├─appNameStringAA PokerApplication name, only the 61/62 event returns this field
├─eventTimeLong1762221362Event timestamp

Event Type Description

50/51 and 61/62 correspond to the same underlying application start/stop event. The difference lies in the subscription configuration matching dimension. Which event code you receive depends on the matching method at the time of subscription:

Event codeMeaningSubscribe to matching dimensionseventDetail field
50App launchMatch the subscription list by packageNamepadCode、packageName、eventTime
51The app stoppedMatch the subscription list by packageNamepadCode、packageName、eventTime
61App launchMatch subscription lists by appNamepadCode、packageName、appName、eventTime
62The app stoppedMatch subscription lists by appNamepadCode、packageName、appName、eventTime

eventDetail at 61/62 returns one more appName field than at 50/51.

Sample Content (50/51, subscribe by package name)

{
  "eventType": 50,
  "timestamp": "1762221316",
  "eventDetail": {
    "padCode": "ACN000000",
    "packageName": "COM.BAIDU",
    "eventTime": "1762221362"
  }
}

Example Content (61/62, subscribe by app name)

{
  "eventType": 61,
  "timestamp": 1783694538138,
  "eventDetail": {
    "padCode": "ATP25091952UH7FY",
    "packageName": "com.ty.aapk",
    "appName": "AA Poker",
    "eventTime": 1783694538137
  }
}

Unattended live streaming task callback

Usage Scenarios When the cloud phone performs unmanned live streaming tasks, the task completion (success/failure/cancellation/timeout, etc.) is notified to the customer via this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1052Task business types
padCodeStringACN3176292921xxxxxxxCase number
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
taskIdInteger10001088Task ID
taskContentStringjson string, containing a newly cloned collection of instances (requires parsing)Mission Details
endTimeLongnullEnd time (timestamp, unit: milliseconds; null means not yet finished)
taskResultString(Null string)Mission results

Example Content

{
  "endTime": 1755001588956,
  "padCode": "ACN3176292921xxxxxxx",
  "taskBusinessType": 1052,
  "taskContent": "[\"ACN3176292921xxxxxxx\"]",
  "taskId": 10001088,
  "taskResult": "Success",
  "taskStatus": 3
}

Local Instance Calculation Backup Size Callback

Usage Scenarios

After the local instance calculates the backup size task (taskBusinessType=1403) and completes execution, it notifies the customer via this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1403Task business types
padCodeStringACP250919HTTMIBQCase number
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
taskIdInteger59Task ID
endTimeLong1758271736814End time (timestamp, unit: milliseconds)
taskResultObjectTask results, including backup size information
├─ dataImgSizeLong1073741824Data image size (bytes)
├─ debugSizeLong10485760debug Partition size (bytes)
├─ totalSizeLong1084227584Total size (bytes)

Example Content

{
  "taskBusinessType": 1403,
  "padCode": "ACP250919HTTMIBQ",
  "taskStatus": 3,
  "taskId": 59,
  "endTime": 1758271736814,
  "taskResult": {
    "dataImgSize": 1073741824,
    "debugSize": 10485760,
    "totalSize": 1084227584
  }
}

Stop Pushing Traffic Pullback

Usage Scenarios

After stopping the push task (taskBusinessType=1044) is completed, the customer will be notified via this callback interface.

FieldTypeExampleExplanation
taskBusinessTypeInteger1044Task business types
padCodeStringAC11010000031Case number
taskStatusInteger3Mission Status (-1: All failures; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
taskIdLong10001088Task ID
taskContentStringMission Details
endTimeLong1758271736814End time (timestamp, unit: milliseconds)

Example Content

{
  "taskBusinessType": 1044,
  "padCode": "AC11010000031",
  "taskStatus": 3,
  "taskId": 10001088,
  "taskContent": "",
  "endTime": 1758271736814
}

File Management

Upload Files to Cloud Drive

Perform file upload operations and upload them to the cloud drive

Interface Address query instance status

/file-center/open/file/cache

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
fileUrlhttp://xxx.armcloud.apkStringisFile download link
fileNameDeep in the Peach Blossom Spring, Official Version of 'Someone Family' Game .apkStringisFile name
fileMd532e1f345f209a7dc1cc704913ea436d3StringisFile expected md5, used to download files with a maximum length of 32

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]
├─taskId1IntegerTask ID
├─fileUniqueId6865b417b7257d782afd5ac8bee4d311StringUnique file identification

Request Example


{
    "fileUrl": "http://down.s.qq.com/download/11120898722/apk/10043132_com.tencent.fiftyone.yc.apk",
    "fileName": "Deep within the Peach Blossom Spring, there is an official version of the 'Someone's Home' game .apk",
    "fileMd5": "c52585e13a67e13128d9963b2f20f69678a86ee8b5551ca593327d329719a5"
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts": 1713773577581,
 "data": {
  "taskId":1,
  "fileUniqueId": "6865b417b7257d782afd5ac8bee4d311"
 }
}

Deleting Example Files

Instance file deleted

Interface Address

/file-center/open/file/batch/del

Request Method

POST (supports batch deletion, up to 200 items can be deleted at once)

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
fileUniqueIdscfc280111c435823c5409ddb9a4186420dString[]isunique_id→ file ID identification

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
datatrueBoolean

Request Example


{
 "fileUniqueIds": [
  "cfc280111c435823c5409ddb9a4186420d",
  "cf77f930acbbe1707fffc661f2c4380a71"
 ]
}

Response Example (All Successful)

{
  "code": 200,
  "msg": "success",
  "ts": 1734677342300, 
  "data": true
}

Response Example (Partial Success)

{
    "code": 200,
        "msg": "success",
        "ts": 1734935677246,
        "data": [
        "cfc280111c435823c5409ddb9a4186420d"
    ]
}

File Upload Example V3 Version

Push files from the File Management Center to one or more cloud phone instances (asynchronous tasks)

Interface Address

/openapi/open/pad/v3/uploadFile

  • If the corresponding file can be found using the md5 value or file ID, it will be sent directly to the instance via the OSS path
  • If OSS does not have a corresponding file, it will directly send the URL to the instance for download, and upload the URL content to OSS
  • If you choose to install an application, it checks whether the package name has a value; if not, an exception is thrown. (By default, installing an app grants all permissions; you can choose not to authorize them using the isAuthorization field.) Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodesString[]is
├─AC22030023061StringisCase number
autoInstall1IntegerNoWhether automatic installation is required: 1 Yes, 0 No. If not filled in, default is not required. Only applies to apk-type files
fileUniqueId1e5d3bf00576ee8f3d094908c0456722StringNoFile ID is uniquely identified.
customizeFilePath/Documents/StringNoCustom path. Supported file paths include the following directories: /DCIM/, /Documents/, /Download/, /Movies/, /Music/, /Pictures/.
fileNamethreadsStringNoFile name
packageNamecom.zhiliaoapp.musicallyStringNoPackage name
urlhttps://oss.domain.com/appMarket/2/apk/fe1f75df23e6fe3fd3b31c0f7f60c0af.apkStringNoFile installation path
md5d41d8cd98f00b204e980xxxxxxxxxxxStringNoFile MD5 value (used to verify file integrity, can be used to find uploaded files via MD5)
isAuthorizationfalseBooleanNoAuthorization (default is full authorization)
iconPathhttps://oss.domain.com/appMarket/2/apk/fe1f75df23e6fe3fd3b31c0f7f60c0af.pngstringNoIcon display during installation

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]
├─padCodeAC22010020062StringCase number
├─taskId1IntegerTask ID
├─vmStatus1IntegerInstance online status (0: offline; 1: Online)
├─taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─dispatchCode0IntegerThe task sends a status code: 200 indicates the instance was successfully sent, while 200 is the failure reason code (used for internationalization, distinct from interface layer codes). The values are shown at the end of the article in the PadTaskFailCode encoding table

Request Example

{
    "padCodes":["AC32010250022"],
        "customizeFilePath":"/DCIM/",
        "md5":"d97fb05b3a07d8werw2341f10212sdfs3sdfs24",
        "url":"https://oss.domain.com/appMarket/2/apk/fe1f75df23e6fe3fd3b31c0f7f60c0af.apk ",
        "autoInstall":1,
        "packageName":"com.zhiliaoapp.musically",
        "fileName":"market",
        "isAuthorization":false
}


Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1737431505379,
        "data": [
        {
            "taskId": 13469,
            "padCode": "AC32010250022",
            "vmStatus": 0,
            "taskStatus": 1,
            "dispatchCode": 200
        }
    ]
}

Error Codes

Error codeError ExplanationOperation Suggestions
140006The file storage path is incorrectCustom paths must start with /
140005Files are unavailableThe file path is empty
110006Download failed File paths cannot be downloaded

File Uploaded to Example

Push files from the File Management Center to one or more cloud phone instances (asynchronous tasks)

Interface Address

/openapi/open/pad/v2/uploadFile

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodesString[]is
├─AC22030023061StringisCase number
autoInstall0IntegerNoWhether automatic installation is required: 1 Yes, 0 No. Only applies to apk-type files. If not needed, please do not fill in or fill in 0
fileUniqueId1e5d3bf00576ee8f3d094908c0456722StringisFile ID is uniquely identified.
customizeFilePath/Documents/StringNoCustom path. Supported file paths include the following directories: /DCIM/, /Documents/, /Download/, /Movies/, /Music/, /Pictures/.
isAuthorizationfalseBooleanNoAuthorization of the app (default permission)

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
traceIdewc84g8si0oyStringLink trace ID
dataObject[]
├─padCodeAC22010020062StringCase number
├─taskId1IntegerTask ID
├─vmStatus1IntegerInstance online status (0: offline; 1: Online)
├─taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─dispatchCode0IntegerThe task sends a status code: 200 indicates the instance was successfully sent, while 200 is the failure reason code (used for internationalization, distinct from interface layer codes). The values are shown at the end of the article in the PadTaskFailCode encoding table

Request Example

{
 "padCodes": [
  "AC22030023061"
 ],
 "isAuthorization":false,
 "autoInstall": 0,
 "fileUniqueId": "1e5d3bf00576ee8f3d094908c0456722",
 "customizeFilePath": "/Documents/"
}

Response Examples

{
 "code": 200,
 "msg": "success",
        
 "ts": 1717571059834,
 "data": [
  {
   "taskId": 39,
   "padCode": "AC22030010001",
   "vmStatus": 1,
      "taskStatus": 1,
      "dispatchCode": 200

  },  
  "traceId": "ewab8qjqbaio"

]
}

Error Codes

Error codeError ExplanationOperation Suggestions
140006The file storage path is incorrectCustom paths must start with /
140005Files are unavailableThe file path is empty
110006Download failed File paths cannot be downloaded

File List

Query the list of uploaded files

Interface Address

/file-center/open/file/list

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
page1IntegerisStart page, default 1
rows10IntegerisQuery quantity, default 10
fileName"33"StringNoSearch by file name

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
traceIdewc84g8si0oyStringLink trace ID
dataObject
├─page1IntegerCurrent page
├─rows10IntegerThe number per page
├─size2IntegerCurrent page count
├─total2IntegerTotal recorded count
├─totalPage1IntegerTotal pages
├─pageDataobject[]List
├─├─fileUniqueIdc417cdf30cd13437a60a494f2fcee616StringFile ID identification
├─├─fileName15b18072b01049dfa30da046aaf5b213.apkStringFile name
├─├─fileMd549f526ec07f261ef6c22081fd61fb6b2836b84214ab6f4620e89d2f2d454253StringFile content value
├─├─fileSize165936779IntegerFile size (unit: bytes)
├─├─originUrlhttps://xxx.armcloud.apkStringOriginal file address
├─├─createTime1713884498000LongCreation date
├─├─Id134LongFile id

Request Example


{
    "page": 1,
    "rows": 10,
    "fileName":"33"
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1750616581943,
        "data": {
        "page": 1,
            "rows": 10,
            "size": 10,
            "total": 466,
            "totalPage": 47,
            "pageData": [
            {
                "fileName": "xx-xx-xxx.apk",
                "fileSize": 12957234,
                "fileUniqueId": "f3b9afb69c8e4953b171950766ebbb9a",
                "originUrl": null,
                "createdTime": 1750162347000,
                "id": 487451,
                "fileMd5": "9fe3cfc677baaff554eb4c2506234d0f"
            }
            // ... More file objects
        ]
    },
    "traceId": "epr0w079xc00"
}

File Task Details

Query detailed execution results for specified file tasks.

Interface Address

/task-center/open/task/fileTaskDetail

Request Method

POST

Request Data Types

application/json

Request Query Parameters

Parameter nameExample valueParameter typeIs it requiredParameter description
taskIdsInteger[]is
├─taskId1IntegerYes, the task ID

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]Task list details
├─ taskId1IntegerSubtask ID
├─ appId134LongApp ID
├─ fileUniqueIde2c07491309858c5cade4bfc44c03724StringUnique file identification
├─ fileNamexx.apkStringFile name
├─ taskStatus2IntegerMission Status (-1: All failures; -2: Partial failure; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
├─ endTime1713429401000LongSubtask end timestamp

Request Example

{
 "taskIds":[
  1,2
 ]
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts": 1716283460673,
 "data": [
  {
   "taskId": 1,
   "appId": 134,
   "fileUniqueId": "e2c07491309858c5cade4bfc44c03724",
   "fileName": "xx.apk",
   "taskStatus": 2,
   "endTime": 1713429401000
  },
  {
   "taskId": 2,
   "appId": 135,
   "fileUniqueId": "e2c07491309858c5cade4bfc43c03725",
   "fileName": "xx.apk",
   "taskStatus": 2,
   "endTime": 1713429401001
  }
 ]
}

Application Management

App Upload

Upload the application installation file to the application management center of the specified business (asynchronous task).

Interface Address

/file-center/open/app/cache

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
parsetrueBooleanisWhether to cache and parse (parse and cache) If parsed, no package information is required
appsObject[]isApplication list
├─ appId1243IntegerNoCustom application ID
├─ urlhttps://xxx.armcloud.apkStringisSource file download link
├─ appNamekuaishouStringNoApp name
├─ pkgNamecom.smile.gifmakerStringNoPackage name
├─ signMd50F938C4F0995A83C9BF31F0C64322589StringNoApplication signature MD5
├─ versionNo36000IntegerNoVersion number
├─ versionName12.3.20.36000StringNoVersion name
├─ descriptionkuaiStringNoDescription
├─ md5sume673a204b8f18a0f6482da9998StringNoApply unique identifiers

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
traceIdewc84g8si0oyStringLink trace ID
dataObject[]
├─ taskId12IntegerTask ID
├─ appId1243IntegerApplication ID
├─ urlhttps://xxx.armcloud.apkStringis
Request Example
{
 "parse": true,
 "apps": [
  { 
   "appId": 1243,
   "appName": "kuaishou",
   "url": "https://xxx.armcloud.apk",
   "pkgName": "com.smile.gifmaker",
   "signMd5": "0F938C4F0995A83C9BF31F0C64322589",
   "versionNo": 36000,
   "versionName": "12.3.20.36000",
   "description": "kuai",
   "md5sum": "e673a204b8f18a0f6482da9998"
  }
 ]
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1755603598157,
        "data": [
        {
            "appId": 996875143,
            "url": "https://xxx.abc.com/app/b66bbdb93f404cfdac955bc35ace809a.apk",
            "taskId": 197136930
        }
    ],
    "traceId": "evgzda3b7f9c"
}

Error Codes

Error codeError ExplanationOperation Suggestions
100001No access permissionWhether you haven't ordered a data center

Application List

You can query the list of application information based on the application ID.

Interface Address

/file-center/open/app/list

Request Method

POST

Request Data Types

application/json

Request Query Parameters

Parameter nameExample valueParameter typeIs it requiredParameter description
page1IntegerisStart page, default 1
rows10IntegerisQuery quantity, default 10
appIds1,2Integer[]NoApp ID
packageNamecom.ss.android.ugc.awemeStringNoApp package name

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
packageNamecom.ss.android.ugc.awemeStringPackage name
traceIdewc84g8si0oyStringLink trace ID
pageDataObject
├─page1IntegerCurrent page
├─rows10IntegerNumbers are displayed per page
├─size10IntegerCurrent page count
├─total2IntegerTotal quantity
├─totalPage1IntegerTotal pages
├─pageDataObject[]
├─├─originUrldownloadUrl_tr0biStringOriginal file download link
├─├─appIddwadawdfIntegerCustom application ID
├─├─descriptiondescription_1cq3mStringDescription
├─├─packageNamepackageName_e6lw8StringPackage name
├─├─appNameappName_o4mhnStringApp name
├─├─versionNameversionName_s4o2iStringVersion name
├─├─versionNo1IntegerVersion number
├─├─signMd50F938C4F0995A83C9BF31F0C64322589StringMD5
├─├─availabletrueBooleanIs the current file available?
├─├─createTime1709895492000IntegerCreation date
├─├─fileIdFile idIntegerFile ID
├─├─iconPathhttp://192.168.230.80:18100/icon/110_6ca4d3e6e5111ec38e8eca6c1998ce89..pngStringApp icon
├─├─newAppClassifyListApplication ClassificationObject[]Application classification
├─├─├─classifyNametestStringApplication classification name
├─├─├─classifyId1LongApplication category ID
├─├─├─descriptionThis app is of very high qualityStringApplication Description Remarks
├─├─├─sortNum1IntegerSort - Input Box - Only integer input is supported, with a maximum limit of 10,000. The list is sorted by value from smallest to largest

Request Example


{
    "rows": 10,
    "page": 1,
    "appIds": [
        1,2
    ],
    "packageName":"com.ss.android.ugc.aweme"
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts":1713773577581,
 "traceId": "ewab8qjqbaio", 
 "data": {
  "page": 1,
  "rows": 10,
  "size": 10,
  "total": 30,
  "totalPage": 3,
  "pageData": [
   {
    "originUrl": "downloadUrl_tr0bi",
    "appId": 1,
    "description": "description_1cq3m",
    "packageName": "packageName_e6lw8",
    "appName": "appName_o4mhn",
    "versionName": "versionName_s4o2i",
    "versionNo": 1,
    "signMd5": "0F938C4F0995A83C9BF31F0C64322589",
    "available": true,
    "createTime": 1709895492000,
                "iconPath": "http://192.168.230.80:18100/icon/110_6ca4d3e6e5111ec38e8eca6c1998ce89..png",
                "fileId": 1,
                "newAppClassifyList": [
                    {
                        "classifyName": "f1",
                        "classifyId": 3
                    }
                ]
   }
   // ... More applications
  ]
 }
}

App Details

Check the application installation status on the specified instance

Interface Address

/file-center/open/app/detail

Request Method

POST

Request Data Types

application/json

Request Query Parameters

Parameter nameExample valueParameter typeIs it requiredParameter description
appId1IntegerisApp ID

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756076880250LongTimestamp
traceIdew0j0vipc3y8StringLink Tracing ID
dataObjectApp details
├─appId1178436326LongAPP ID
├─originalUrlhttps://file.vsphone.com/appMarket/null/apk/2d12187c91cf0f2024b3015777175.apkStringOriginal file download link
├─descriptionnullStringDocument notes/application description
├─packageNamecom.truedevelopersstudio.automatictap.autoclickerStringAndroid package name
├─appNameAuto ClickerStringApp name
├─versionName2.1.4StringVersion name
├─versionNo81IntegerVersion number
├─signMd5f282d5b8aa801ab13517ad1fe9dbc2b1StringSignature MD5
├─createTime1751009986000LongFile creation time
├─minSdkVersion24IntegerMinimum SDK version
├─targetSdkVersion31IntegerTarget SDK version

Request Example

{
 "appId":1
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1756076880250,
        "data": {
        "minSdkVersion": 24,
            "createTime": 1751009986000,
            "appName": "Auto Clicker",
            "appId": 1178436326,
            "versionNo": 81,
            "description": null,
            "signMd5": "f282d5b8aa801ab13517ad1fe9dbc2b1",
            "originalUrl": "https://file.vsphone.com/appMarket/null/apk/2d12187c91cf0f2024b3015777175.apk",
            "packageName": "com.truedevelopersstudio.automatictap.autoclicker",
            "targetSdkVersion": 31,
            "versionName": "2.1.4"
    },
    "traceId": "ew0j0vipc3y8"
}

Query Example Application List

Query the list of uploaded files

Interface Address

/openapi/open/pad/listApp

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodesString[]No
├─AC22010020062StringisCase number

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
traceIdewc84g8si0oyStringLink trace ID
dataObject[]
├─taskId1IntegerTask ID
├─padCodeAC22010020062StringCase number
├─vmStatus1IntegerInstance online status (0: offline; 1: Online)
├─taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─dispatchCode0IntegerThe task sends a status code: 200 indicates the instance was successfully sent, while 200 is the failure reason code (used for internationalization, distinct from interface layer codes). The values are shown at the end of the article in the PadTaskFailCode encoding table

Request Example

{
    "padCodes": [
        "AC22010020062"
    ]
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1756077327794,
        "data": [
        {
            "taskId": 13462859,
            "padCode": "ACN250823P61EWV1",
            "vmStatus": 0,
            "taskStatus": 1,
            "dispatchCode": 200
        }
    ],
        "traceId": "ew0jotsvw83k"
}

Error Codes

Error codeError ExplanationOperation Suggestions
100010Processing failure Please reinstall

App Installation

Allows single or multiple instances to install one or more apps simultaneously. This interface is operated asynchronously. Added blacklist and whitelist logic.

Interface Address

/openapi/open/pad/installApp

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
appsObject[]isApplication list
├─appId124IntegerisApplication ID
├─appNameHulu HeroStringNoApp name
├─pkgNamecom.huluxia.gametoolsStringNoApp package name
├─isGrantAllPermfalseBooleanNoWhether to grant full permission Default is true
├─padCodesString[]is
├─├─AC22010020062StringisCase number

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
traceIdewc84g8si0oyStringLink trace ID
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]
├─taskId1IntegerTask ID
├─padCodeAC22010020062StringInstance number
├─vmStatus1IntegerInstance online status (0: offline; 1: Online)
├─taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─dispatchCode0IntegerThe task sends a status code: 200 indicates the instance was successfully sent, while 200 is the failure reason code (used for internationalization, distinct from interface layer codes). The values are shown at the end of the article in the PadTaskFailCode encoding table

Request Example

{
 "apps":[
  {
   "appId":124,
   "appName":"Hulu Hero",
   "pkgName":"com.huluxia.gametools",
   "isGrantAllPerm":false,
   "padCodes":["AC22010020062"]
  }
 ]
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts": 1717570991004,
 "data": [
  {
   "taskId": 37,
   "padCode": "AC22030010001",
   "vmStatus": 1,
      "taskStatus": 1,
      "dispatchCode": 200
      
  },
  {
   "taskId": 38,
   "padCode": "AC22030010002",
   "vmStatus": 1, 
   "taskStatus": 1,
   "dispatchCode": 200
  }
 ],  
 "traceId": "ewab8qjqbaio"

}

Error Codes

Error codeError ExplanationOperation Suggestions
140005File not availableCheck if the file exists

App Uninstaller

Uninstall one or more apps simultaneously on a single or multiple instances. This interface is operated asynchronously.

Interface Address

/openapi/open/pad/uninstallApp

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
appsObject[]isApplication list
├─appId124IntegerNoApplication ID
├─appNameHulu HeroStringNoApp name
├─pkgNamecom.huluxia.gametoolsStringisApp package name
├─padCodesString[]is
├─├─AC22010020062StringisCase number

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
traceIdewc84g8si0oyStringLink trace ID
dataObject[]
├─taskId2IntegerTask ID
├─padCodeAC22010020062StringCase number
├─vmStatus1IntegerInstance online status (0: offline; 1: Online)
├─taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─dispatchCode0IntegerThe task sends a status code: 200 indicates the instance was successfully sent, while 200 is the failure reason code (used for internationalization, distinct from interface layer codes). The values are shown at the end of the article in the PadTaskFailCode encoding table

Request Example

{
 "apps":[
  {
   "appId":124,
   "appName":"demo",
   "pkgName":"com.demo",
   "padCodes":["AC22010020062"]
  }
 ]
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts": 1717570615524,
  "traceId": "ewab8qjqbaio",
  "data": [
  {
   "taskId": 22,
   "padCode": "AC22030010001",
   "vmStatus": 1,
   "taskStatus": 1,
   "dispatchCode": 200
  },
  {
   "taskId": 23,
   "padCode": "AC22030010002",
   "vmStatus": 0,
   "taskStatus": 1,
   "dispatchCode": 200
  }
 ]
}

Error Codes

Error codeError ExplanationOperation Suggestions
110007Uninstalling the app failed Please retake the test later

App Launch

Perform application startup operations based on the instance number and application package name.

Interface Address

/openapi/open/pad/startApp

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodesString[]Yes
├─AC22010020062StringYesCase number
pkgNamexxx.test.comStringYesPackage name

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
traceIdewc84g8si0oyStringLink trace ID
dataObject[]
├─taskId1IntegerTask ID
├─padCodeAC22020020793StringCase number
├─vmStatus1IntegerInstance online status (0: offline; 1: Online)
├─taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─dispatchCode0IntegerThe task sends a status code: 200 indicates the instance was successfully sent, while 200 is the failure reason code (used for internationalization, distinct from interface layer codes). The values are shown at the end of the article in the PadTaskFailCode encoding table

Request Example

{
 "padCodes": [
  "AC22030022693"
 ],
 "pkgName": xxx.test.com
}

Response Examples

{
 "code": 200,
 "msg": "success", 
 "traceId": "ewab8qjqbaio",
 "ts": 1717570663080,
 "data": [
  {
   "taskId": 24,
   "padCode": "AC22030010001",
   "vmStatus": 1,
   "taskStatus": 1,
   "dispatchCode": 200
  },
  {
   "taskId": 25,
   "padCode": "AC22030010002",
   "vmStatus": 0,
      "taskStatus": 1,
      "dispatchCode": 200
  }
 ]
}

Error Codes

Error codeError ExplanationOperation Suggestions
110008Application startup failedAfter restarting the cloud phone, start the application again

App Stopped

Perform application stop operations on instances based on instance numbers and application package names.

Interface Address

/openapi/open/pad/stopApp

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodesString[]is
├─AC22010020062StringisCase number
pkgNamexxx.test.comStringisPackage name

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
traceIdewc84g8si0oyStringLink trace ID
ts1756021167163LongTimestamp
dataObject[]
├─taskId1IntegerTask ID
├─padCodeAC22010020062StringCase number
├─vmStatus1IntegerInstance online status (0: offline; 1: Online)
├─taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─dispatchCode0IntegerThe task sends a status code: 200 indicates the instance was successfully sent, while 200 is the failure reason code (used for internationalization, distinct from interface layer codes). The values are shown at the end of the article in the PadTaskFailCode encoding table

Request Example

{
 "padCodes": [
  "AC22010020062"
 ],
 "pkgName": xxx.test.com
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "traceId": "ewab8qjqbaio",
 "ts": 1717570700415,
 "data": [
  {
   "taskId": 26,
   "padCode": "AC22030010001",
   "vmStatus": 1,
   "taskStatus": 1,
   "dispatchCode": 200
  },
  {
   "taskId": 27,
   "padCode": "AC22030010002",
   "vmStatus": 0,
   "taskStatus": 1,
   "dispatchCode": 200
  }
 ]
}

Error Codes

Error codeError ExplanationOperation Suggestions
110010Stop application failureRestart the cloud phone and close the application

App Restart

Perform application restart operations on instances based on instance numbers and application package names.

Interface Address

/openapi/open/pad/restartApp

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodesString[]is
├─AC22010020062StringisCase number
pkgNamexxx.test.comStringisPackage name

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
traceIdewc84g8si0oyStringLink trace ID
ts1756021167163LongTimestamp
dataObject[]
├─taskId1IntegerTask ID
├─padCodeAC22010020062StringCase number
├─vmStatus1IntegerInstance online status (0: offline; 1: Online)
├─taskStatus1IntegerTask Status (-1: The task already exists, please do not submit multiple times; 1: Task added)
├─dispatchCode0IntegerThe task sends a status code: 200 indicates the instance was successfully sent, while 200 is the failure reason code (used for internationalization, distinct from interface layer codes). The values are shown at the end of the article in the PadTaskFailCode encoding table

Request Example

{
 "padCodes": [
  "AC22030022693"
 ],
 "pkgName": xxx.test.com
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "traceId": "ewab8qjqbaio",
 "ts": 1717570855874,
 "data": [
  {
   "taskId": 33,
   "padCode": "AC22030010001",
   "vmStatus": 1,
   "taskStatus": 1,
   "dispatchCode": 200
  },
  {
   "taskId": 34,
   "padCode": "AC22030010002",
   "vmStatus": 0,
   "taskStatus": 1,
   "dispatchCode": 200
  }
 ]
}

Error Codes

Error codeError ExplanationOperation Suggestions
110009Failed to restart the applicationAfter restarting the cloud phone, start the application again

List of Black and White Lists

Paginated query of blacklist and whitelist lists

Interface Address

/openapi/open/appClassify/pageList

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
classifyNametestStringNoBlacklist and White List Names (Fuzzy Lookup)
classifyType1IntegerNoBlacklist types: 1. Whitelist 2. Blacklist
page1IntegerNoPage number Default is 1
rows10IntegerNoNumber of pages per page: default 10, maximum value 100

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]
├─id8IntegerBlacklist and whitelist IDs
├─classifyNameWhitelist Group A 1StringBlacklist names
├─classifyType1IntegerBlacklist types: 1. Whitelist 2. Blacklist
├─appNum3IntegerNumber of associated apps
├─remarkWhitelist Group A Test 1StringDescription
├─applyAllInstancesfalseBooleanWhether all instance patterns are applied

Request Example

{
    "classifyName": "",
    "classifyType": 1,
    "page": 1,
    "rows": 10
}

Response Examples

{
     "code": 200,
     "msg": "success",
     "ts": 1735019791977,
     "data": [
          {
               "id": 8,
               "classifyName": "Whitelist Group A 1",
               "classifyType": 1,
               "appNum": 3,
               "remark": "Whitelist Group A Test 1",
               "applyAllInstances": false
          }
     ]
}

Save to Black and Whitelist

Save the blacklist and associated apps. If the parameter id is not null, it means the update is done. This operation will overwrite all associated apps under that category

Interface Address

/openapi/open/appClassify/save

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
id123LongNoBlacklist and whitelist IDs (if not empty, modify; if empty, add new)
classifyNameWhitelist Group AStringisBlacklist names
classifyType1IntegerisBlacklist types: 1. Whitelist 2. Blacklist
applyAllInstancesfalseBooleanNoWhether to apply all instances Default false
remark10StringNoBlacklist description
appInfosObject[]NoAssociated application collections: range from 0 to 500
├─fileId1IntegerNoFile ID
├─appId1IntegerNoApp ID
├─appNameTest appStringNoApp name
├─packageNamecom.xxx.xxxStringisPackage name
├─appVersionNo123IntegerNoVersion number
├─appVersionName1.2.3StringNoVersion name

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
data1LongBlacklist and whitelist IDs

Request Example

{
 "id": null,
 "classifyName": "Whitelist Group A 1",
 "classifyType": 1,
    "applyAllInstances": false,    
 "remark": "Whitelist Group A Test 1",
 "appInfos": [
  {
   "fileId": 1,
   "appId": 1,
   "appName": "Test the app",
   "packageName": "com.xxx.xxx",
   "appVersionNo": 123,
   "appVersionName": "1.2.3"
  }
 ]
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1735019933306,
    "data": 1
}

Error Codes

Error codeError ExplanationOperation Suggestions
110080The blacklist and whitelist do not existThere is no blacklist or whitelist
110085Duplicate blacklist namesThe blacklist names are duplicated

Details of the Black and White List

Query details of the blacklist and whitelist and related apps

Interface Address

/openapi/open/appClassify/detail

Request Method

POST

Request Data Types

application/json

Request Query Parameters

Parameter nameExample valueParameter typeIs it requiredParameter description
id1IntegerisBlacklist and whitelist IDs

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]
├─id8IntegerBlacklist and whitelist IDs
├─classifyNameWhitelist Group A 1StringBlacklist names
├─classifyType1IntegerBlacklist types: 1. Whitelist 2. Blacklist
├─applyAllInstancesfalseBooleanWhether all instance patterns are applied
├─appNum3IntegerNumber of associated apps
├─remarkWhitelist Group A Test 1StringDescription
├─appInfosObject[]Associate the application collection
├─├─fileId1IntegerFile ID
├─├─appId1IntegerApp ID
├─├─appNameTest appStringApp name
├─├─packageNamecom.xxx.xxxStringPackage name
├─├─appVersionNo123IntegerVersion number
├─├─appVersionName1.2.3StringVersion name

Request Example

{"id":153858}

Response Examples

{
     "code": 200,
     "msg": "success",
     "ts": 1735020014142,
     "data": {
          "id": 8,
          "classifyName": "Whitelist Group A 1",
          "classifyType": 1,
          "applyAllInstances": false,  
          "appNum": 3,
          "remark": "Whitelist Group A Test 1",
          "appInfos": [
               {
                    "fileId": 1,
                    "appId": 1,
                    "appName": "Test the app",
                    "packageName": "com.xxx.xxx",
                    "appVersionNo": 123,
                    "appVersionName": "1.2.3"
               }
          ]
     }
}

Error Codes

Error codeError ExplanationOperation Suggestions
110080The blacklist and whitelist do not existThere is no blacklist or whitelist

Saving Blacklist and Whitelist Instances

Save the associated instance; this operation will delete all original associated instances under that category

Interface Address

/openapi/open/appClassify/padSave

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
id123LongisBlacklist and whitelist IDs (obtained from the pageList interface)
appPadInfosObject[]NoAssociated example sets: range from 0 to 500
├─padCodeAC32010230001StringisCase number
├─deviceLevelm2-4StringNoSpecifications
├─padIp10.255.3.1StringNoExample IP

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
datanull

Request Example

{
 "id": 1,
 "appPadInfos": [
  {
   "padCode": "AC32010230001",
   "deviceLevel": "m2-4",
   "padIp": "10.255.3.1"
  }
 ]
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1735019933306,
    "data": null
}

Error Codes

Error codeError ExplanationOperation Suggestions
110080The blacklist and whitelist do not existThere is no blacklist or whitelist

Details of Blacklist and Whitelist Example Associations

Query details of the blacklist and whitelist and related instances

Interface Address

/openapi/open/appClassify/padDetail

Request Method

POST

Request Data Types

application/json

Request Query Parameters

Parameter nameExample valueParameter typeIs it requiredParameter description
id1IntegerisBlacklist and whitelist IDs

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
traceIdewc84g8si0oyStringLink trace ID
ts1756021167163LongTimestamp
dataObject[]
├─id8IntegerBlacklist and whitelist IDs
├─classifyNameWhitelist Group A 1StringBlacklist names
├─classifyType1IntegerBlacklist types: 1. Whitelist 2. Blacklist
├─appNum3IntegerNumber of associated apps
├─applyAllInstancesfalseBooleanis
├─appPadInfosObject[]Associate the instance set
├─├─padCodeAC111StringCase number
├─├─deviceLevelm2-3StringSpecifications
├─├─padIp127.0.0.1StringExample IP

Request Example

{"id":153858}

Response Examples

{
     "code": 200,
     "msg": "success",
     "ts": 1735020251631,
     "data": {
          "id": 8,
          "classifyName": "Whitelist Group A 1",
          "classifyType": 1,
          "appNum": 3, 
          "applyAllInstances": false,
          "appPadInfos": [
               {
                    "padCode": "AC111",
                    "deviceLevel": "m2-3",
                    "padIp": "127.0.0.1"
               }
          ]
     },
    "traceId": "ewab8qjqbaio"
}

Error Codes

Error codeError ExplanationOperation Suggestions
110080The blacklist and whitelist do not existThere is no blacklist or whitelist

Delete Blacklist and Whitelist

Delete the blacklist and whitelist and remove all associated applications and instances

Interface Address

/openapi/open/appClassify/del

Request Method

POST

Request Data Types

application/json

Request Query Parameters

Parameter nameExample valueParameter typeIs it requiredParameter description
id1IntegerisBlacklist and whitelist IDs

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
datanull

Request Example

{"id":153858}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1735020371601,
    "data": null
}

Error Codes

Error codeError ExplanationOperation Suggestions
110084The blacklist does not exist or has been deletedThe blacklist does not exist or has been deleted

Add Blacklist and Whitelist App

Add an associated application. This operation will not overwrite all related apps under that category and will be directly added to the category

Interface Address

/openapi/open/appClassify/addApp

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
id123LongisBlacklist and whitelist IDs (obtained from the pageList interface)
appInfosObject[]isAssociated application collections: range from 1 to 500
├─fileId1IntegerNoFile ID
├─appId1IntegerNoApp ID
├─appNameTest appStringNoApp name
├─packageNamecom.xxx.xxxStringisPackage name
├─appVersionNo123IntegerNoVersion number
├─appVersionName1.2.3StringNoVersion name

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
datanull

Request Example

{
 "id": 1,
 "appInfos": [
  {
   "fileId": 1,
   "appId": 1,
   "appName": "Test the app",
   "packageName": "com.xxx.xxx",
   "appVersionNo": 123,
   "appVersionName": "1.2.3"
  }
 ]
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1735019933306,
    "data": null
}

Error Codes

Error codeError ExplanationOperation Suggestions
110080The blacklist and whitelist do not existThere is no blacklist or whitelist

Adding Blacklist and Whitelist Instance Associations

Add an associated instance. This operation does not overwrite all associated instances under that category and will be directly added to the category

Interface Address

/openapi/open/appClassify/addPad

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
id123LongisBlacklist and whitelist IDs (obtained from the pageList interface)
appPadInfosObject[]isAssociated instance set: range: 1-500 items
├─padCodeAC32010230001StringisCase number
├─deviceLevelm2-4StringNoSpecifications
├─padIp10.255.3.1StringNoExample IP

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
datanull

Request Example

{
 "id": 1,
 "appPadInfos": [
  {
   "padCode": "AC32010230001",
   "deviceLevel": "m2-4",
   "padIp": "10.255.3.1"
  }
 ]
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1735019933306,
    "data": null
}

Error Codes

Error codeError ExplanationOperation Suggestions
110080The blacklist and whitelist do not existThere is no blacklist or whitelist

Example of Deleting Blacklist Associations

Delete instances associated with the blacklist or whitelist, i.e., specify instances to unbind the black/whitelist

Interface Address

/openapi/open/appClassify/delPad

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
id123LongisBlacklist and whitelist IDs (obtained from the pageList interface)
padCodesString[]isCollection of associated instances: range: 1-200

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
datanull

Request Example

{
 "id": 100,
 "padCodes": ["AC32010250003"]
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1735019933306,
    "data": null
}

Error Codes

Error codeError ExplanationOperation Suggestions
110080The blacklist and whitelist do not existThere is no blacklist or whitelist

Query Associated Black/White List by Instance

Query the list of blacklist policy groups associated with the instance by instance

Interface Address

/openapi/open/appClassify/padClassifyList

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
padCodes["AC32010230001","AC32010230002"]String[]isExample number collection, quantity range from 0 to 100

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]The instance is associated with a list of blacklists and whitelists
├─padCodeAC32010230001StringCase number
├─classifyCount2IntegerNumber of associated strategy groups
├─classifyListObject[]Detailed information of the affiliated strategy group
├─├─id8LongPolicy group ID
├─├─classifyNameWhitelist Group A 1StringStrategy group name
├─├─classifyType1IntegerStrategy group types: 1. Whitelist 2. Blacklist
├─├─appNum3IntegerNumber of associated apps
├─├─padNum5IntegerNumber of associated instances
├─├─remarkWhitelist Group A Test 1StringDescription
├─├─applyAllInstancesfalseBooleanWhether to apply all instances

Request Example

{
  "padCodes": [
    "AC32010230001",
    "AC32010230002"
  ]
}

Response Examples

{
  "code": 200,
  "msg": "success",
  "ts": 1735883927104,
  "data": [
    {
      "padCode": "AC32010230001",
      "classifyCount": 2,
      "classifyList": [
        {
          "id": 8,
          "classifyName": "Whitelist Group A 1",
          "classifyType": 1,
          "appNum": 3,
          "padNum": 5,
          "remark": "Whitelist Group A Test 1",
          "applyAllInstances": false
        },
        {
          "id": 9,
          "classifyName": "Blacklist Group B 1",
          "classifyType": 2,
          "appNum": 6,
          "padNum": 5,
          "remark": "Blacklist Group B Test 1",
          "applyAllInstances": true
        }
      ]
    },
    {
      "padCode": "AC32010230002",
      "classifyCount": 1,
      "classifyList": [
        {
          "id": 8,
          "classifyName": "Whitelist Group A 1",
          "classifyType": 1,
          "appNum": 3,
          "padNum": 5,
          "remark": "Whitelist Group A Test 1",
          "applyAllInstances": false
        }
      ]
    }
  ]
}

Error Codes

Error codeError ExplanationOperation Suggestions
110028The instance does not existCheck whether the instance number is correct
110042There exists instances that do not belong to the current userRetry after confirming the instance's attribution

Application Category List

Paginated query application categories

Interface Address

/openapi/open/newAppClassify/pageList

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
enabletrueBooleanNoWhether to enable it
page1IntegerNoPage number Default is 1
rows10IntegerNoNumber of pages per page: default 10, maximum 100

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]
├─id3IntegerApplication category ID
├─classifyNamef1StringApplication classification name
├─appNum4IntegerNumber of applications
├─enabletrueBooleanWhether to enable it
├─remarktestStringDescription
├─createByadminStringFounder
├─createTime2024-12-27 17:16:20StringCreation date

Request Example

{
    "enable":true,
    "page":1,
    "rows":10
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1735883927104,
        "data": [
        {
            "id": 3,
            "classifyName": "f1",
            "appNum": 4,
            "enable": true,
            "remark": "Hello",
            "createBy": "admin",
            "createTime": "2024-12-27 17:16:20"
        }
    ]
}

Application Start/Stop Execution Results

Obtain the application start-stop result of the instance by applying the start-stop task ID

Interface Address

/task-center/open/task/appOperateInfo

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
taskIdsInteger []is
├─1IntegerisTask ID

Response Parameters

Parameter nameExample valueParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1756021167163LongTimestamp
dataObject[]
├─taskId1IntegerTask ID
├─padCodeAC22020020793StringCase number
├─taskStatus3IntegerMission Status (-1: All failures; -2: Partial failure; -3: Cancel; -4: Timeout; 1: Pending execution; 2: In Execution; 3: Done)
├─endTime1756021166163LongTask execution end time
├─taskContentSuccessStringMission Details
├─taskResultSuccessStringMission results
├─errorMsgThe instance does not existStringReasons for failure

Request Example

{
 "taskIds": [1]
}

Response Examples

{
 "code": 200,
 "msg": "success",
 "ts":1713773577581,
 "data":[
    {
    "taskId": 1,
    "taskStatus": 3,
    "padCode": "AC22020020793",
    "taskContent": "Success",
    "taskResult": "Success",
    "endTime": 1756121167163,
    "errorMsg": null
    }
   ]
}

Mirror Management

Get the Image List

Get a list of available images.

Interface Address

/openapi/open/image/queryImageList

Request Method

POST

Request Data Types

application/json

Request Query Parameters

Parameter nameExample valueParameter typeIs it requiredParameter description
imageType1IntegerNoImage types: 1: Public image, 2: Custom image
releaseType1IntegerNoMirror 1 Beta 2 Official Version
playServices26.04.38 (190400-867839860)StringNoGoogle Play Services version
playStore50.0.24-23 [0] [PR] 866011110StringNoGoogle Play Store version
servicesFramework1StringNoGoogle Service Framework version
romVersionandroid13StringNoAOSP version (Android 13, Android 14)
createTimeStart2025-03-11 00:00:00StringNoStart time of creation (format: yyyy-MM-dd HH:mm:ss)
createTimeEnd2025-03-11 00:00:00StringNoEnd time of creation (format: yyyy-MM-dd HH:mm:ss)
page1IntegerNoPage number, default is 1
rows10IntegerNoNumber of entries per page, default 10, maximum 100

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1717643679112LongTimestamp
dataObject
├─recordsObject[]Record list
├─├─imageIdimg-25030796215StringMirror ID
├─├─imageName20250307_4StringMirror name
├─├─imageTag20250307_4StringMirror Tag
├─├─serverTypeCruise10StringSOC type
├─├─romVersionandroid13StringROM version
├─├─imageDescWiFi custom versionStringDescription
├─├─releaseType1IntegerRelease version: 1 beta version, 2 official version
├─├─supportF2fs1IntegerWhether f2fs is supported (1: supported, 0: not supported), deprecated, please use imageParameterInfo.supportF2fs
├─├─fileTag0IntegerFile tags (1: deletable 0: cannot be deleted)
├─├─imageParameterInfoObjectMirror parameter information
├─├─├─supportF2fs1IntegerDoes F2FS support (1: Support 0: Not supported)
├─├─├─supportAppBootOnStarttrueBooleanDoes it support auto-start on startup? (true: supported, false: not supported)
├─├─├─supportSetSensorFile1IntegerWhether sensor file settings are supported (1: Supported 0: Not supported)
├─├─├─certLevel1IntegerCertificate random assignment level (can be null)
├─├─gmsPlayServicesVersion26.04.38 (190400-867839860)StringGoogle Play Services version
├─├─gmsPlayStoreVersion50.0.24-23 [0] [PR] 866011110StringGoogle Play Store version
├─├─gmsServicesFrameworkVersion12StringGoogle Service Framework version
├─totalIntegerTotal number of records
├─sizeIntegerPage size
├─currentIntegerCurrent page number
├─pagesIntegerTotal pages

Request Example

{
    "imageType":1,
        "releaseType":1,
        "romVersion":"android13",
        "createTimeStart":"2025-02-11 00:00:00",
        "createTimeEnd":"2025-03-11 00:00:00",
        "page":1,
        "rows":10
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1741688704152,
        "data": {
        "records": [
            {
                "imageId": "img-25030796215",
                "imageName": "20250307_4",
                "imageTag": "20250307_4",
                "serverType": "Cruise10",
                "romVersion": "android13",
                "imageDesc": "",
                "releaseType": 1,
                "fileTag": 1,
                "supportF2fs": 1,
                "imageParameterInfo": {
                    "supportF2fs": 1,
                    "supportAppBootOnStart": true,
                    "supportSetSensorFile": 1,
                    "certLevel": 1
                },
                "gmsPlayServicesVersion": "26.04.38 (190400-867839860)",
                "gmsPlayStoreVersion": "50.0.24-23 [0] [PR] 866011110",
                "gmsServicesFrameworkVersion": "12"
            }
        ],
            "total": 4,
            "size": 10,
            "current": 1,
            "pages": 1
    }
}

Account Management

Batch Adding Sub-Accounts

Client accounts are used to create sub-accounts.

Interface Address

/openapi/open/subCustomer/batchAdd

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
addDTOListObject[]isSub-account parameter list (1-30 items added at a time)
├─ customerAccountTest Account 1StringisAccount
├─ customerNameTest Name 1StringisName
├─ customerTel15580887450StringisContact phone number

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1760097337371LongTimestamp
dataObject[]Sub-account information
├─id972LongSub-account primary key ID
├─customerAccountTest account 1@zengStringSub-account login
├─passwordo32kqvn152njStringSub-account login password
├─accessKeyIdjxurdk0uptvm2ztt3urs57jx2o2p4824StringSub-account AK
├─secretAccessKeyn927izl0bkonsw7znh6c5vnsStringSub-account SK
├─errorMsgSystem anomalyStringFalse information

Request Example

{
    "addDTOList": [
        {
            "customerName": "Sub-account name 1",
            "customerAccount": "Test Account 1",
            "customerTel": "15580887450"
        },
        {
            "customerName": "Sub-account name 2",
            "customerAccount": "Test Account 2",
            "customerTel": "15580887459"
        }
    ]
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1760097337371,
        "data": [
        {
            "id": 972,
            "customerAccount": "Test account 1@zeng",
            "password": "o32kqvn152nj",
            "accessKeyId": "jxurdk0uptvm2ztt3urs57jx2o2p4824",
            "secretAccessKey": "n927izl0bkonsw7znh6c5vns",
            "errorMsg": null
        },
        {
            "id": 973,
            "customerAccount": "Test account 2@zeng",
            "password": "l63g1dtoujbs",
            "accessKeyId": "gia3tj3lvtdfiiw6m5i2pmmqkzuejstt",
            "secretAccessKey": "1pwk6pxvm59fjaefvrjy8b6i",
            "errorMsg": null
        }
    ]
}

Sub-Account List Paginated Query

Paginated query of sub-accounts under customer accounts.

Interface Address

/openapi/open/subCustomer/pageList

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
page1IntegerisPage number
rows10IntegerisNumber of items
status1IntegerNoEnabled status: 0 - Disabled; 1 - Enable
customerAccountTest Account 1StringNoCustomer account
customerTel15580887450StringNoCustomer phone numbers

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200Integer
msgsuccessString
ts1713773577581Long
dataObject
├─page1IntegerCurrent page
├─rows10IntegerThe number per page
├─size1IntegerCurrent page count
├─total1IntegerTotal recorded count
├─totalPage1IntegerTotal pages
├─pageDataobject[]List
├─├─id972IntegerPrimary key ID
├─├─customerAccountTest account 1@zengStringSub-account login
├─├─subCustomerPasswordo32kqvn152njStringSub-account login password
├─├─customerNameSub-account name 1StringSub-account name
├─├─customerTel15580887450StringSub-account phone numbers
├─├─accessKeyIdjxurdk0uptvm2ztt3urs57jx2o2p4824StringSub-account AK
├─├─secretAccessKeyn927izl0bkonsw7znh6c5vnsStringSub-account SK
├─├─status1IntergeEnabled status: 0 - Disabled; 1 - Enable

Request Example

{
    "page": 1,
    "rows": 10,
    "status": 1,
    "customerAccount": "Test Account 1",
    "customerTel": "15580887450"
}

Response Examples

{
    "code": 200,
        "msg": "success",
        "ts": 1760152734156,
        "data": {
        "page": 1,
            "rows": 10,
            "size": 1,
            "total": 1,
            "totalPage": 1,
            "pageData": [
            {
                "id": 972,
                "customerAccount": "Test account 1@zeng",
                "subCustomerPassword": "o32kqvn152nj",
                "customerName": "Sub-account name 1",
                "customerTel": 15580887450,
                "status": 1,
                "accessKeyId": "jxurdk0uptvm2ztt3urs57jx2o2p4824",
                "secretAccessKey": "n927izl0bkonsw7znh6c5vns"
            }
        ]
    }
}

Batch Deletion of Sub-accounts

Batch delete sub-accounts under customer accounts.

Interface Address

/openapi/open/subCustomer/batchDelete

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
ids[972]Long[]YesThe primary key ID of the sub-account that needs to be deleted

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1760154208875LongTimestamp

Request Example

{
    "ids": [972]
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1760154208875
}

Main Account Board List Paginated Query

Paginated query of the list of boards owned by customer accounts.

Interface Address

/openapi/open/subCustomer/resource/masterCustomer/pageList

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
page1IntegerisPage number
rows10IntegerisNumber of items
netStorageResFlag1IntegerNoNetwork storage board marking: 0 - local board; 1 - Network storage board
deviceCodeACD250411WU3CF2UStringNoBoard number
deviceCreatePadStatus1IntegerNoBoard instance status -1 No instance created 0 All boards 1 Instance created Defaults all boards are returned

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1760097337371LongTimestamp
dataObject[]Board information
├─deviceId12376LongPrimary key ID of the board
├─deviceCodeACD250411WU3CF2UStringBoard number
├─netStorageResFlag1IntegerNetwork storage board marking: 0 - local board; 1 - Network storage board
├─deviceCreatePadStatus1IntegerBoard instance status -1 Instance not created 1 Instance created 1. Instance created

Request Example

{
     "page": 1,
     "rows": 10,
     "netStorageResFlag":1, 
     "deviceCode":"ACD250411WU3CF2U",
     "deviceCreatePadStatus":1
}

Response Examples

{
        "code": 200,
        "msg": "success",
        "ts": 1760163320924,
        "data": [
        {
            "deviceCreatePadStatus":1,
            "deviceCode": "ACD250411WU3CF2U",
            "deviceId": 12376,
            "netStorageResFlag": 1
        }
    ]
}

Sub-account Board List Query

Customer account inquiry into the list of boards allocated under their sub-accounts.

Interface Address

/openapi/open/subCustomer/resource/list

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
subCustomerId862LongisSub-account primary key ID
netStorageResFlag1IntegerNoNetwork storage board marking: 0 - local board; 1 - Network storage board
deviceCodeACD250411WU3CF2UStringNoBoard number

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1760097337371LongTimestamp
dataObject[]Board information
├─deviceId12376LongPrimary key ID of the board
├─deviceCodeACD250411WU3CF2UStringBoard number
├─netStorageResFlag1IntegerNetwork storage board marking: 0 - local board; 1 - Network storage board

Request Example

{
     "subCustomerId":862, 
     "netStorageResFlag":1, 
     "deviceCode":"ACD250411WU3CF2U"
}

Response Examples

{
        "code": 200,
        "msg": "success",
        "ts": 1760163320924,
        "data": [
        {
            "deviceCode": "ACD250411WU3CF2U",
            "deviceId": 12376,
            "netStorageResFlag": 1
        }
    ]
}

Sub-account Board Authorization

The client account authorizes a board for a sub-account under it.

Interface Address

/openapi/open/subCustomer/resource/allocate

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
subCustomerId862LongisThe primary key ID of the sub-account for the authorization board is required
allocateDeviceIds[12376]Long[]isA set of board IDs that need authorization

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1760154208875LongTimestamp

Request Example

{
    "subCustomerId": 862,
     "allocateDeviceIds": [
        12376
    ]
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1760168978928
}

Sub-Account Board Unbinding

The client account unbinds the board authorized by a sub-account under it. After successful unbinding, the board is reassigned to the client's account.

Interface Address

/openapi/open/subCustomer/resource/unbind

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valueParameter typeIs it requiredParameter description
subCustomerId862LongisThe primary key ID of the sub-account that needs to be unbound to the board
unbindDeviceIds[12376]Long[]isA collection of board IDs to be unbound

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1760154208875LongTimestamp

Request Example

{
     "subCustomerId": 862,
     "unbindDeviceIds": [
        12376
    ]
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1760168978928
}

Event Log

The query interface for application startup and exit logs, used to obtain event records for applications on instances, such as startup, exit, and crash.

Query App Start/Exit Log List

Query the list of application start/exit logs for a specified instance, returning only data from the last 24 hours, up to 2000 records, without pagination.

Interface Address

/event/open/info/crashLog/list

Request Method

POST

Request Data Types

application/json

Request Body Parameter

Parameter nameExample valuesParameter typeIs it required?Parameter description
padCodeACP250331GLMP7YXStringYesCase number
packageNamecom.tencent.mmStringNoApp package name (optional filter)

Response Parameters

Parameter nameExample valuesParameter typeParameter description
code200IntegerStatus code
msgsuccessStringRespond to the message
ts1760154208875LongTimestamp
dataObject[]Response data (up to 2,000 entries)
├─ eventNameapp_process_diedStringEvent Name (app_process_died=Application Exit, app_process_start=App Start)
├─ padCodeACP250331GLMP7YXStringInstance Number (Redundancy)
├─ appNameWeChatStringApp name (possibly empty)
├─ packageNamecom.tencent.mmStringPackage name
├─ packageVersionName8.0.62StringApp version name (possibly empty)
├─ startTime2026-04-08 10:15:23.123StringStart time, format: yyyy-MM-dd HH:mm:ss. SSS (System Local Time)
├─ closeTime2026-04-08 11:22:03.456StringClosing time, format the same as above; Only app_process_died events have value
├─ exceptionTime2026-04-08 11:21:59.789StringAbnormality occurrence time, format the same as above; Normal exit is usually empty/null; Only app_process_died events have value
├─ closeReasonCollapseStringReasons for closure, such as stop/crash/crash/ANR; Only app_process_died events have value
├─ exceptionTypeCollapseStringException type: crash/crash/ANR, normally an empty string; Only app_process_died events have value
├─ durationSec4000StringUsage time (seconds); Only app_process_died events have value
├─ logWriteTime2026-04-08 11:22:04.001StringLog entry time, same format as above; Only app_process_died events have value
├─ isException1StringWhether it is abnormal (0 normal, 1 abnormal); Only app_process_died events have value

Request Example

{
    "padCode": "ACP250331GLMP7YX",
    "packageName": "com.tencent.mm"
}

Response Examples

{
    "code": 200,
    "msg": "success",
    "ts": 1760154208875,
    "data": [
        {
            "eventName": "app_process_died",
            "padCode": "ACP250331GLMP7YX",
            "appName": "WeChat",
            "packageName": "com.tencent.mm",
            "packageVersionName": "8.0.62",
            "startTime": "2026-04-08 10:15:23.123",
            "closeTime": "2026-04-08 11:22:03.456",
            "exceptionTime": "2026-04-08 11:21:59.789",
            "closeReason": "Collapse",
            "exceptionType": "Collapse",
            "durationSec": "4000",
            "logWriteTime": "2026-04-08 11:22:04.001",
            "isException": "1"
        },
        {
            "eventName": "app_process_start",
            "padCode": "ACP250331GLMP7YX",
            "appName": "WeChat",
            "packageName": "com.tencent.mm",
            "packageVersionName": "8.0.62",
            "startTime": "2026-04-08 12:05:10.222",
            "closeTime": null,
            "exceptionTime": null,
            "closeReason": null,
            "exceptionType": null,
            "durationSec": null,
            "logWriteTime": null,
            "isException": null
        }
    ]
}

PadTaskFailCode encoding table

Batch Distribution of Multiple Instances Task Class Interface Return Results (GeneratePadTaskVO / List<GeneratePadTaskVO>, one per instance, including taskId/padCode/vmStatus/taskStatus/errMsg) Added dispatchCode fields to structurally identify why a particular instance failed to be issued. This facilitates classification and internationalization at the upper level.

dispatchCode Deliberately separated from interface layer code (Result#code): code indicates whether the entire API call succeeded (interface/transport level), dispatchCode indicates why a particular instance was not successfully issued (business/instance level). The two belong to different number ranges and are not confused with each other. dispatchCode 200 means the instance was successfully sent; The original errMsg copy remains unchanged, serving as a showcase detail and a safety net. For upper-level internationalization, it is recommended to use dispatchCode as the standard, with errMsg as the bottom line.

Number range agreement: 200 = successful (issued successfully), non-200 means failed issuance code (1xxx = instance status, 2xxx = device/board, 3xxx = capability/version, 4xxx = risk control/flow control, 9xxx = system).

dispatchCodeEnumerateMeaning (default copy)Trigger scene
200SUCCESSSuccess (Successful Distribution)Instance sent successfully (dispatchCode is 200)
1001PAD_NOT_EXISTThere are no instancesNo risk control cases found
1002PAD_OFFLINEThe instance is offlineOnline verification is required, but instances are offline
1003PAD_ABNORMALThe instance is marked as an exceptionThe instance is marked as an abnormal state
1004PAD_STATUS_NOT_ALLOWEDThe current state of the instance does not allow this operationProhibited status (reset/restarting), state mismatches, mutually exclusive task conflicts (dynamic copywriting splicing)
1005NET_STORAGE_PAD_STATUS_ABNORMALThe database instance status is abnormal and cannot be performedAbnormal status of the network memory instance prohibits this operation
2001DEVICE_OFFLINEThe device is offlineRequires online equipment calibration but offline equipment
2002BOARD_OFFLINEOffline boardsOffline boards
3001CBS_VERSION_NOT_SUPPORTThe CBS version does not support this operationThe CBS version does not meet the operational requirements (the script updates include the current version).
4001RATE_LIMITEDHit the flow limiting strategyHit rate limiting strategy / Edge traffic rate limit abnormality
4002CEPH_MAINTENANCENetwork storage is under maintenance; related storage is temporarily unavailable. Please try again laterNetwork storage maintains blacklist interception
4003DUPLICATE_TASKRepeat the task and return the previous task IDRepeat the issue and return the previous task ID
9001SYSTEM_UNAVAILABLESystem services cannot connectWhen the command is issued, the system service is unreachable
9002TASK_PROCESS_FAILEDTask processing failed, please try again laterBackup for Batch Failures (when specific codes are missing)
9999UNKNOWNUnknown errorsThe safety net that does not match the specific code

Note: Failure points in the "dynamic stitching" form (some scenarios 1004, rate limit anomalies in 1005, 3001, 4001) return errMsg with specific context, which is not exactly the same as the default text in the table—dispatchCode for classification/internationalization, errMsg for detailing.

Prev
API Signature v1.0
Next
Error Codes