Skip to content

Container API Documentation

Updated: Jan 22, 2026


Introduction

Container API provides a set of container and host management capabilities, covering host information queries, image management, system control, instance lifecycle management, and more.

Usage

1. HTTP Call

Call from the host machine or other devices in the network:

  • URL Format: http://{Host_IP}:18182/{Interface_Path}
  • Example: http://192.168.1.100:18182/v1/get_hardware_cfg

Common Response Structure

All interfaces return a standard JSON format with the following structure:

json
{
    "code": 200,            // Status code, 200 for success
    "data": { ... },        // Specific business data
    "msg": "OK"             // Status description
}

Host Management (Host)

Get Host Configuration Information

Returns device hardware and basic operation information.

  • URL: /v1/get_hardware_cfg
  • Method: GET
  • Response Example:
    json
    {
      "code": 200,
      "message": "success",
      "data": {
        "cpuload": "0%",
        "cputemp": 33,
        "device_id": "93508a1ed52c4e1dee17320ec78f806a",
        "hwaddr": "82:C1:32:C6:E4:34",
        "ip": "192.168.10.20",
        "mem_total": "15943",
        "mem_use": "689",
        "mmc_total": "239281",
        "mmc_use": "20691",
        "ssd_total": "",
        "ssd_use": "",
        "model": "c1_10",
        "version": "QL-c1-2025.v0.3.0.202503311512"
      }
    }

Get Host System Information

Returns CPU usage, disk/memory usage, temperature, swap and other indicators.

  • URL: /v1/systeminfo
  • Method: GET
  • Response Example:
    json
    {
      "code": 200,
      "msg": {
        "cpu": 5.4,
        "disk_percent": 39.3,
        "disk_total": 250903556096,
        "mem_percent": 63.9,
        "mem_total": 16720510976,
        "temperatures": 29.615,
        "swap_total": 0,
        "swap_percent": 0
      }
    }

Get Host Network Configuration

Returns host current gateway, subnet mask and subnet.

  • URL: /v1/net_info
  • Method: GET
  • Response Example:
    json
    {
      "code": 200,
      "msg": "success",
      "data": {
        "host_ip": "192.168.10.20",
        "gateway": "192.168.10.1",
        "netmask": "255.255.254.0",
        "subnet": "192.168.10.0/23"
      }
    }

Host Heartbeat Check

Check host HTTP/Docker/Ping availability.

  • URL: /v1/heartbeat
  • Method: GET
  • Response Example:
    json
    {
      "code": 200,
      "message": "Host normal",
      "data": {
        "docker_status": true,
        "http_status": true,
        "ping_status": true
      }
    }

Get Host Image List

Returns docker images list repository and image_id.

  • URL: /v1/get_img_list
  • Method: GET
  • Response Example:
    json
    {
      "code": 200,
      "msg": "success",
      "data": [
        {
          "repository": "armcloud/demo:latest",
          "image_id": "sha256:..."
        }
      ]
    }

Clean Unused Images

Clean unused Docker images on host.

  • URL: /v1/prune_images
  • Method: GET
  • Return Value Descriptions:
    codeDescription
    200Success
    201Failed
    1Host unreachable
  • Response Example:
    json
    {
      "code": 200,
      "msg": "success",
      "data": {
        "host_ip": "192.168.10.20",
        "freed_mb": "542.15",
        "images": [
          "vcloud_android13_edge_20250925011125",
          "vcloud_android12_edge_20250920010230"
        ]
      }
    }

Import Image

Upload image file to host and load image.

  • URL: /v1/import_image
  • Method: POST
  • Content-Type: multipart/form-data
  • Parameters:
    ParameterTypeRequiredDescription
    filefileYesImage file (.tar.gz or .tar format)
  • Stream Return Progress (NDJSON format):
    • Stage Descriptions:
      1. Uploading: Uploading (upload_progress=100%, load_progress=0%)
      2. Loading: Loading (upload_progress=100%, load_progress=1-99%)
      3. Success: Success (upload_progress=100%, load_progress=100%)
      4. Failed: Failed (upload_progress=100%, load_progress=0%)
  • Return Value Descriptions:
    codeDescription
    200Success (stream return)
    0Failed (file format error, upload failed, load failed, etc.)

Set Swap Switch

Set host swap partition status: 1 = enable, 0 = disable. Default is disabled; can be enabled after inserting SSD; swap partition default size is 8G (located at /container_nswc_lv/.swapfile).

  • URL: /v1/swap/{enable}
  • Method: GET
  • Parameters:
    ParameterTypeRequiredDescription
    enablestringYes1=Enable 0=Disable
  • Response Example:
    json
    {
      "code": 200,
      "msg": {
        "swap_total": 2147483648,
        "swap_percent": 0
      }
    }

Reboot Host

Asynchronously reboot host after issuing command.

  • URL: /v1/reboot_for_arm
  • Method: GET
  • Response Example:
    json
    {
      "code": 200,
      "msg": "rebooting"
    }

Shutdown Host

Asynchronously shutdown host after issuing command. Executes shutdown -h now command.

  • URL: /v1/shutdown
  • Method: GET
  • Response Example:
    json
    {
      "code": 200,
      "msg": "shutting down",
      "data": {
        "host_ip": "192.168.1.100"
      }
    }

Reset Host

Destroy containers, clean mappings, format and mount data disk, clean root partition and reboot.

  • URL: /v1/reset
  • Method: GET
  • Response Example:
    json
    {
      "code": 200,
      "msg": "resetting and rebooting"
    }

Discovery Service Status

Return UDP responder status.

  • URL: /v1/discover
  • Method: GET
  • Response Example:
    json
    {
      "code": 200,
      "msg": "UDP discovery service status",
      "data": {
        "udp_responder": {
          "running": true
        }
      }
    }

Import Device Template

Import device template to host.

  • URL: /v1/import_adi
  • Method: POST
  • Content-Type: multipart/form-data
  • Parameters:
    ParameterTypeRequiredDescription
    adiZipfileYesADI template file (must be .zip format)
  • Return Value Descriptions:
    FieldDescription
    code200 Success; 0/1 Failed
    msgOperation result description
    data.host_ipHost IP
    data.filenameSaved filename
  • Response Example:
    json
    {
      "code": 200,
      "msg": "success",
      "data": {
        "host_ip": "192.168.10.20",
        "filename": "template.zip"
      }
    }

Get Host Device Template List

List all device templates uploaded and existing in template.json on host, supports filtering by brand and AOSP version, query all templates without parameters. Only returns actually existing files.

  • URL: /v1/get_adi_list
  • Method: GET
  • Parameters:
    ParameterTypeRequiredDescription
    brandstringNoFilter brand (e.g., vivo, google, samsung)
    aosp_versionstringNoFilter AOSP version (e.g., 13, 14)
  • Return Value Descriptions:
    FieldDescription
    code200 Success; 0 Failed
    msgOperation result description
    data.host_ipHost IP
    data.listDevice template list (object array, only returns actually existing files)
    data.list[].adiIDTemplate ID
    data.list[].brandBrand
    data.list[].modelModel
    data.list[].model_nameModel name
    data.list[].aosp_versionAOSP version
    data.list[].layoutLayout (width×height×DPI)
    data.list[].adiNameTemplate filename (ZIP filename)
    data.list[].adiPassTemplate extraction password
  • Response Example:
    json
    {
      "code": 200,
      "msg": "success",
      "data": {
        "host_ip": "192.168.10.20",
        "list": [
          {
            "adiID": 2001,
            "brand": "google",
            "model": "Pixel 7 Pro(12G)",
            "model_name": "Pixel 7 Pro",
            "aosp_version": "13",
            "layout": "1440x3120x560",
            "adiName": "59ddfc6374723e2bea36a84792238063.zip",
            "adiPass": ""
          }
        ]
      }
    }

Instance Management (Instance)

Create Instance

Create Android instance (bridge network, sandbox storage, dynamic port allocation).

  • URL: /container_api/v1/create
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    user_namestringYesInstance username, length greater than 2, supports numbers/letters/underscore/dot/dash
    countintegerNoBatch creation quantity, default 1, maximum 12
    bool_startbooleanNoWhether to start instance immediately, default false
    bool_macvlanbooleanNoWhether to enable macvlan dual network card mode (bridge+macvlan), default false. After enabled, instance will get independent LAN IP
    macvlan_networkstringNomacvlan network name, default macvlan100. Only valid when bool_macvlan=true
    macvlan_start_ipstringNomacvlan start IP address, only valid when bool_macvlan=true. When count=1, directly use specified IP (requires ARP detection), when count>1, incrementally allocate from start IP
    image_repositorystringNoLocal image name (without tag), default value is vcloud_android13_edge_20250925011125
    bool_gms_disabledbooleanNoWhether to disable GMS when creating container, true=disable, false=do not disable, if not passed use value in game.info
    bool_gms_upgrade_enablebooleanNoWhether to allow GMS upgrade, true=allow, false=disallow, default false
    resolutionobjectNoResolution configuration object, contains dpi, fps, height, width
    selinuxbooleanNoWhether to enable SELinux
    dnsarray<string>NoDNS server list
    adiIDintegerNoADI template ID (highest priority, get available template IDs via /v1/get_adi_list), system will automatically find corresponding template file and password
    adiNamestringNoADI template filename (if adiID is passed, adiName and adiPass can be omitted)
    adiPassstringNoADI extraction password (if adiID is passed, adiName and adiPass can be omitted)
    lonfloatNoLongitude. e.g. 121.5
    latfloatNoLatitude. e.g. 31.2
    localestringNoLanguage. e.g. zh-CN
    timezonestringNoTimezone. e.g. Asia/Shanghai
    countrystringNoCountry code (ISO Alpha-2) used when randomly generating Android properties. Defaults to CN when not filled
    userPropstringNoCustom Android properties (JSON format string)
    cert_hashstringNoCertificate file hash value (priority use). Must be imported to system through certificate management interface
    cert_contentstringNoBase64 encoded certificate content (used when cert_hash is not provided). Only used for this creation, not saved to database or disk. Note: When using cert_content, bool_start must be true
    device_typestringNoDevice type. virtual indicates virtual machine, real indicates real device. Default is real. Note: When device_type is virtual, the system will forcibly clear the three parameters adiID, adiName, and adiPass
    remarkstringNoInstance remark information
  • Request Example:
    json
    {
      "user_name": "test-001",
      "bool_start": false,
      "image_repository": "vcloud_android13_edge_20250925011125",
      "adiID": 1039,
      "resolution": {
        "dpi": 560,
        "fps": 60,
        "height": 3040,
        "width": 1440
      },
      "selinux": false,
      "dns": ["8.8.8.8", "1.1.1.1"],
      "bool_gms_disabled": false,
      "bool_gms_upgrade_enable": false
    }

Batch Start Instances (Async)

Batch start instances asynchronously.

  • URL: /container_api/v1/run
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    db_idsarray<string>YesInstance ID array
  • Return Value Descriptions:
    codeDescription
    200Success, task queued
    460Another start task in progress
    203Running instance count will exceed limit
    1db_id does not exist
    2Instance not in stopped state

Batch Stop Instances (Async)

Batch stop instances asynchronously.

  • URL: /container_api/v1/stop
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    db_idsarray<string>YesInstance ID array

Batch Reboot Instances (Async)

Batch reboot instances asynchronously.

  • URL: /container_api/v1/reboot
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    db_idsarray<string>YesInstance ID array

Batch Reset Instances (Async)

Batch reset instances asynchronously.

  • URL: /container_api/v1/reset
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    db_idsarray<string>YesInstance ID array

Batch Delete Instances (Async)

Batch delete instances asynchronously.

  • URL: /container_api/v1/delete
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    db_idsarray<string>YesInstance ID array

Upgrade Instance Image

Upgrade specified instances to new image version. Upgrade process: stop container → delete container → rebuild with new image → start container. Data will be preserved.

  • URL: /container_api/v1/upgrade_image
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    db_idsarray<string>Yesdb_id array
    repositorystringYesImage repository name (without tag, defaults to latest)
    adiIDintegerNoADI template ID (highest priority)
    adiNamestringNoADI template filename
    adiPassstringNoADI extraction password

Rename Instance

Only modify user_name, do not modify db_id/Name (container name).

  • URL: /container_api/v1/rename/{db_id}/{new_user_name}
  • Method: GET
  • Parameters:
    ParameterTypeRequiredDescription
    db_idstringYesInstance unique identifier
    new_user_namestringYesNew user_name (display name, length > 2)

Update Certificate Configuration

Update certificate configuration for specified instance. Priority use cert_hash (must be imported to system through certificate management interface). If not provided, use cert_content (base64 encoded, only used this time, not saved to database or disk). Certificate will be written to instance's debug_ramdisk/secure.prop file.

  • URL: /container_api/v1/update_cert
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    db_idstringYesInstance unique identifier (EDGE + 12 random characters)
    cert_hashstringNoCertificate file hash value (priority use). Must be imported to system through certificate management interface, and file must exist at /etc/secure/<cert_hash> path. If both cert_hash and cert_content are provided, priority use cert_hash
    cert_contentstringNoBase64 encoded certificate content (used when cert_hash is not provided). Only used for this operation, not saved to database or disk, will be directly written to instance's debug_ramdisk/secure.prop file. Supports secure.prop format or XML format (will be automatically converted to prop format)
  • Note: One of cert_hash and cert_content must be provided
  • Request Example:
    json
    {
      "db_id": "EDGE0A1B2C3D4E5",
      "cert_hash": "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"
    }

Update User Properties

Batch update user-defined Android properties of specified instances.

  • URL: /container_api/v1/update_user_prop
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    db_idsarray<string>YesInstance unique identifier list (EDGE + 12 random characters, supports batch operation)
    user_propstringYesUser-defined Android properties (JSON format string). e.g.: {"ro.product.model":"CustomModel","ro.build.version.sdk":"33"}
    isRestartbooleanNoWhether to restart instance after updating properties (optional, default false). When set to true, will asynchronously restart all instances in background
  • Request Example:
    json
    {
      "db_ids": ["EDGE0A1B2C3D4E5", "EDGE6F7G8H9I0J1"],
      "user_prop": "{\"ro.product.model\":\"CustomModel\",\"ro.build.version.sdk\":\"33\"}",
      "isRestart": false
    }

Set IP

Modify instance IP (macvlan only). Only accepts instances in macvlan mode, modify their LAN IP. Before modification, will check if db_id exists and if IP is already occupied.

  • URL: /container_api/v1/set_ip
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    db_idstringYesInstance unique identifier (EDGE + 12 random characters)
    ipstringYesNew LAN IP, must be within macvlan network segment
  • Request Example:
    json
    {
      "db_id": "EDGE0A1B2C3D4E5",
      "ip": "192.168.10.120"
    }

Get Instance Details

Get detailed information for specified instance.

  • URL: /container_api/v1/get_android_detail/{db_id}
  • Method: GET
  • Parameters:
    ParameterTypeRequiredDescription
    db_idstringYesInstance unique identifier

Get Instance List

Get list of all instances.

  • URL: /container_api/v1/get_db
  • Method: GET

Get ADB Command

Get ADB connection command for specified instance.

  • URL: /container_api/v1/adb_start/{db_id}
  • Method: GET
  • Parameters:
    ParameterTypeRequiredDescription
    db_idstringYesInstance unique identifier

Screenshot

Get screenshot for specified instance.

  • URL: /container_api/v1/screenshots/{db_id}
  • Method: GET
  • Parameters:
    ParameterTypeRequiredDescription
    db_idstringYesInstance unique identifier

Clone Instance

Clone specified instance.

  • URL: /container_api/v1/clone
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    user_namestringYesCloned instance name
    db_idstringYesCloned container db_id
    countintegerYesClone quantity, maximum is 12
    update_propbooleanNoWhether to automatically refresh Android properties after cloning, default false. When true, generate random androidProp based on source instance country
  • Request Example:
    json
    {
      "user_name": "test-001",
      "db_id": "EDGE0A1B2C3D4E5",
      "count": 1,
      "update_prop": true
    }

Clone Instance Task Status

Query clone instance task status.

  • URL: /container_api/v1/clone_status
  • Method: GET

Get ROM Status

Query whether instance ROM has started and is ready.

  • URL: /container_api/v1/rom_status/{db_id}
  • Method: GET
  • Parameters:
    ParameterTypeRequiredDescription
    db_idstringYesInstance unique identifier
  • Return Value Description:
    codemsgDescription
    0Instance not startedInstance not started
    1ROM not readyInstance running but ROM not ready
    200ROM readyROM ready

Query All Container IDs

Return db_id/user_name/adb list of all instances.

  • URL: /container_api/v1/list_names
  • Method: GET

Sync Instance Status

Sync instance status.

  • URL: /container_api/v1/sync_status
  • Method: GET

Batch One-Click Reset (Async)

Only allow running or stopped. Set state=renewing then asynchronously execute stop → clear data → start; preserve db_id and user_name.

  • URL: /container_api/v1/replace_devinfo
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    db_idsarray<string>YesInstance unique identifier list
    adiIDintegerNoADI template ID (highest priority, get available template IDs via /v1/get_adi_list), system will automatically find corresponding template file and password
    adiNamestringNoADI template filename (if adiID is passed, adiName and adiPass can be omitted)
    adiPassstringNoADI extraction password (if adiID is passed, adiName and adiPass can be omitted)
    countrystringNoCountry code (ISO Alpha-2) used when randomly generating Android properties, e.g. CN. When not filled, priority based on instance locale, otherwise defaults to CN
    userPropstringNoCustom Android properties (JSON format string)
    wipeDatabooleanNoWhether to clear data disk and reset debug_ramdisk, default true. When false, only refresh configuration and preserve data
    lonfloatNoLongitude. e.g. 121.5
    latfloatNoLatitude. e.g. 31.2
    localestringNoLanguage. e.g. zh-CN
    timezonestringNoTimezone. e.g. Asia/Shanghai
    cert_hashstringNoCertificate file hash value (priority use). Must be imported to system through certificate management interface
    cert_contentstringNoBase64 encoded certificate content (used when cert_hash is not provided). Only used for this operation, not saved to database or disk
  • Request Example:
    json
    {
      "db_ids": ["EDGE0A1...", "EDGE6F7..."],
      "adiID": 1039,
      "country": "CN",
      "wipeData": true,
      "userProp": "{\"persist.sys.country\":\"CN\"}",
      "lon": 121.5,
      "lat": 31.2,
      "locale": "zh-CN",
      "timezone": "Asia/Shanghai",
      "cert_hash": "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"
    }

Batch Update Stopped Instance Image Information

Batch update image information for stopped instances. Only processes instances in stopped/failed state.

  • URL: /container_api/v1/update_stopped_image
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    db_idsarray<string>Yesdb_id array (supports single or multiple)
    repositorystringYesImage repository name (without tag, default uses latest)
  • Request Example:
    json
    {
      "db_ids": ["EDGE0A1...", "EDGE6F7..."],
      "repository": "vcloud_android13_edge_20250925011125"
    }

Update Screen Projection Service

Update screen projection service.

  • URL: /container_api/v1/refreshScreenService
  • Method: POST
  • Content-Type: multipart/form-data
  • Parameters:
    ParameterTypeRequiredDescription
    filearray<file>YesUploaded files (supports scd or scd.sh, can upload multiple at once)
    db_idstringNoInstance ID (optional, choose one with user_name)
    user_namestringNoUsername (optional, choose one with db_id)

Enable GMS

Enable GMS service for all instances.

  • URL: /container_api/v1/gms_start
  • Method: GET

Disable GMS

Disable GMS service for all instances.

  • URL: /container_api/v1/gms_stop
  • Method: GET

API Logs

Query Recent API Logs

Returns the last 20 API execution records.

  • URL: /interface_logs/recent
  • Method: GET

Show Log Details

Show log details.

  • URL: /interface_logs/detail
  • Method: GET

API Success Rate Query

Statistics on API execution count and success rate.

  • URL: /interface_logs/stats
  • Method: GET

App Management (App)

Get Application List

Get list of third-party app package names installed in instance.

  • URL: /android_api/v1/app_get/{db_id}
  • Method: GET
  • Parameters:
    ParameterTypeRequiredDescription
    db_idstringYesInstance unique identifier

Start App in Instance (Batch)

Batch start apps in specified instances.

  • URL: /android_api/v1/app_start
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    db_idsarray<string>YesInstance ID list, supports batch operation
    appstringYesApplication package name (single)
  • Request Example:
    json
    {
      "db_ids": ["EDGE0A1B2C3D4E5", "EDGE6F7G8H9J0K1"],
      "app": "com.chartcross.gpstest"
    }

Stop App in Instance (Batch)

Batch close apps in specified instances.

  • URL: /android_api/v1/app_stop
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    db_idsarray<string>YesInstance ID list, supports batch operation
    appstringYesApplication package name (single)
  • Request Example:
    json
    {
      "db_ids": ["EDGE0A1B2C3D4E5", "EDGE6F7G8H9J0K1"],
      "app": "com.tencent.mm"
    }

Set App Root Permission

Batch grant Root permission to specified apps in instances. App needs to be restarted after operation to take effect.

  • URL: /android_api/v1/root_app
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    db_idsstringYesInstance ID list, supports Chinese comma (,) and English comma (,) separated, e.g. EDGE0A1B2C3D4E5,EDGE6F7G8H9J0K1 or EDGE0A1B2C3D4E5,EDGE6F7G8H9J0K1
    appstringYesPackage name that needs Root permission (must be installed)
  • Request Example:
    json
    {
      "db_ids": "EDGE0A1B2C3D4E5,EDGE6F7G8H9J0K1",
      "app": "com.chartcross.gpstest"
    }

Add Display Over Other Apps Permission

Enable permission to display on top of other apps for specified app (overlay permission).

  • URL: /android_api/v1/add_show_other_app_over_permission
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    db_idstringYesInstance ID
    appstringYesApplication package name
  • Request Example:
    json
    {
      "db_id": "EDGEH06HF5E52NQL",
      "app": "com.zhiliaoapp.musically"
    }

File Operations (File)

Batch Install APK

Batch install to specified Android containers by uploading files. Supports single package APK and Split APK (multiple packages).

  • URL: /android_api/v1/upload_file_android_batch
  • Method: POST
  • Content-Type: multipart/form-data
  • Parameters:
    ParameterTypeRequiredDescription
    db_idsstringYesInstance ID list, multiple separated by comma, e.g. EDGE123,EDGE456
    filefileYesInstallation package file: supports single package .apk; or split apk's .zip/.xapk/.tar/.tar.gz/.tgz (after extraction contains multiple .apk, xapk format extraction same as zip)

Batch Upload Files

Batch copy to specified instance directory by uploading local files.

  • URL: /android_api/v1/upload_file_android_upload
  • Method: POST
  • Content-Type: multipart/form-data
  • Parameters:
    ParameterTypeRequiredDescription
    db_idsstringYesInstance ID list, multiple separated by comma (supports Chinese comma,and English comma,), e.g. EDGE123,EDGE456 or EDGE123,EDGE456
    filefileYesFile to upload
    pathstringNoOptional, target directory, default /storage/emulated/0/Download

Batch Install APK (URL)

Download APK files via URL and batch install to specified Android containers.

  • URL: /android_api/v1/install_apk_from_url_batch
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    urlstringYesAPK file download URL
    db_idsstringYesInstance ID list, multiple separated by comma (supports Chinese comma,and English comma,), e.g. EDGE123,EDGE456 or EDGE123,EDGE456
  • Request Example:
    json
    {
      "url": "https://example.com/app.apk",
      "db_ids": "EDGE0A1B2C3D4E5,EDGE6F7G8H9J0K1"
    }

Batch Upload Files (URL)

Download files via URL and batch copy to specified instance directory.

  • URL: /android_api/v1/upload_file_from_url_batch
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    urlstringYesFile download URL
    db_idsstringYesInstance ID list, multiple separated by comma (supports Chinese comma,and English comma,), e.g. EDGE123,EDGE456 or EDGE123,EDGE456
    pathstringNoOptional, target directory, default /storage/emulated/0/Download
  • Request Example:
    json
    {
      "url": "https://example.com/file.zip",
      "db_ids": "EDGE0A1B2C3D4E5,EDGE6F7G8H9J0K1",
      "path": "/storage/emulated/0/Download"
    }

Export Phone APK

Export APK files of installed apps from specified instance, download through browser.

  • URL: /android_api/v1/export_phone_apk
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    db_idstringYesInstance ID
    appstringYesApplication package name
  • Note:
    • Single APK: returns [app].apk
    • Split APK (multi-package): returns [app]_apks.zip (contains multiple APKs)
    • Browser will automatically trigger download, user can choose save path
  • Request Example:
    json
    {
      "db_id": "EDGEH06HF5E52NQL",
      "app": "com.zhiliaoapp.musically"
    }

System Control (System)

Execute ADB Command

Execute custom ADB Shell commands.

  • URL: /android_api/v1/shell/{db_id}
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    db_idstringYesInstance unique identifier
    cmdstringYesShell command to execute (request body)

Disable Current Window Application

Automatically get the package name of the current foreground app and use the am force-stop command to force disable the application.

  • URL: /android_api/v1/stop_front_app/{db_id}
  • Method: GET
  • Parameters:
    ParameterTypeRequiredDescription
    db_idstringYesInstance unique identifier

Set Instance Coordinates (GPS Location Injection)

Inject GPS location information into Android container.

  • URL: /android_api/v1/gps_inject/{db_id}
  • Method: POST
  • Path Parameters:
    ParameterTypeRequiredDescription
    db_idstringYesInstance unique identifier (EDGE + 12 random characters)
  • Request Body Parameters:
    ParameterTypeRequiredDescription
    longitudefloatYesLongitude. Range: -180.0 ~ 180.0, positive for east longitude, negative for west longitude. Example: 116.397455 (Beijing Tiananmen)
    latitudefloatYesLatitude. Range: -90.0 ~ 90.0, positive for north latitude, negative for south latitude. Example: 39.909187 (Beijing Tiananmen)
    altitudefloatNoAltitude. Unit: meters (m). Represents height relative to sea level. Example: 8
    speedfloatNoMovement speed. Unit: meters/second (m/s). Represents device movement speed. Example: 8 (approximately 28.8 km/h)
    bearingfloatNoBearing/heading. Unit: degrees (°). Range: 0.0 ~ 360.0, represents device movement direction. 0° is north, 90° is east, 180° is south, 270° is west
    horizontalAccuracyMetersfloatNoHorizontal positioning accuracy. Unit: meters (m). Represents positioning precision, smaller value means more precise. Example: 0.1 (10 cm precision)
  • Request Example:
    json
    {
      "longitude": 116.397455,
      "latitude": 39.909187,
      "altitude": 43.5,
      "speed": 0,
      "bearing": 0,
      "horizontalAccuracyMeters": 5.0
    }

Set Video Injection

Set video injection.

  • URL: /android_api/v1/video_inject/{db_id}
  • Method: POST
  • Path Parameters:
    ParameterTypeRequiredDescription
    db_idstringYesContainer ID
  • Request Body Parameters:
    ParameterTypeRequiredDescription
    urlstringYesVideo URL
  • Request Example:
    json
    {
      "url": "https://example.com/demo.mp4"
    }

Disable Video Injection

Disable video injection.

  • URL: /android_api/v1/video_inject_off/{db_id}
  • Method: GET
  • Parameters:
    ParameterTypeRequiredDescription
    db_idstringYesInstance unique identifier

Set Instance Timezone

Set instance timezone.

  • URL: /android_api/v1/timezone_set/{db_id}
  • Method: POST
  • Path Parameters:
    ParameterTypeRequiredDescription
    db_idstringYesContainer ID
  • Request Body Parameters:
    ParameterTypeRequiredDescription
    timeZonestringYesTimezone, e.g. Asia/Shanghai
  • Request Example:
    json
    {
      "timeZone": "Asia/Shanghai"
    }

Set Instance Country

Update instance country.

  • URL: /android_api/v1/country_set/{db_id}
  • Method: POST
  • Path Parameters:
    ParameterTypeRequiredDescription
    db_idstringYesInstance unique identifier (EDGE + 12 random characters)
  • Request Body Parameters:
    ParameterTypeRequiredDescription
    countrystringYesCountry code (country_info.json country_code), e.g. CN, US, JP, etc.
  • Common Country Codes:
    CountryCodeCountryCode
    ChinaCNUnited StatesUS
    GermanyDEIndiaIN
    JapanJPUnited KingdomGB
    FranceFRItalyIT
    CanadaCABrazilBR
    AustraliaAUSpainES
    South KoreaKRNetherlandsNL
  • Request Example:
    json
    {
      "country": "CN"
    }

Set Instance Language

Set instance language.

  • URL: /android_api/v1/language_set/{db_id}
  • Method: POST
  • Path Parameters:
    ParameterTypeRequiredDescription
    db_idstringYesContainer ID
  • Request Body Parameters:
    ParameterTypeRequiredDescription
    countrystringYesCountry code, e.g. CN
    languagestringYesLanguage code, e.g. zh
  • Request Example:
    json
    {
      "country": "CN",
      "language": "zh"
    }

Query Instance Country, Language, Timezone

Get country, language, timezone information of instance.

  • URL: /android_api/v1/get_timezone_locale/{db_id}
  • Method: GET
  • Parameters:
    ParameterTypeRequiredDescription
    db_idstringYesInstance unique identifier

Get Coordinates by IP

Query coordinates by instance or proxy IP.

  • URL: /android_api/v1/ip_geo/{db_id}
  • Method: GET
  • Parameters:
    ParameterTypeRequiredDescription
    db_idstringYesContainer ID
    ipstringNoOptional, IP to override query

Certificate Management (Certificate)

Import Certificate from File

Import certificate to system by uploading certificate file. Supports uploading multiple certificate files at once, system will automatically calculate SHA-256 hash value of certificate content as filename to save.

  • URL: /certificate_manage/file_import_cert
  • Method: POST
  • Content-Type: multipart/form-data
  • Supported File Formats: .crt, .pem, .cer, .cert (standard certificate format), .key (private key file), .prop (secure.prop format), .xml (XML format, will be automatically converted to prop format)
  • Parameters:
    ParameterTypeRequiredDescription
    filearray<file>YesCertificate file (supports multiple files)
    filenamestringNoFilename (optional, supports single or multiple, multiple separated by comma, supports Chinese comma,and English comma,)

Import Certificate from Text

Import certificate to system by passing certificate text content (base64 encoded). System will automatically detect certificate format (XML or prop format), XML format will be automatically converted to prop format.

  • URL: /certificate_manage/content_import_cert
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    contentstringYesBase64 encoded certificate content (required)
  • Supported Content Formats: secure.prop format (standard format), XML format (will be automatically converted to prop format)
  • Request Example:
    json
    {
      "content": "cm8uYnVpbGQuY2xvdWQuZ21zX3N1aXRlX2Rpc2FibGVkPTE="
    }

SSD Management (SSD)

Storage Status

Returns storage status scanned at startup: trial (trial, no SSD), new_ssd (new SSD found, action required), ssd (registered and mounted).

  • URL: /storage/status
  • Method: GET

Format as Data Disk and Mount

Format specified device as ext4 and mount to /container_nswc_lv, write to fstab(UUID).

  • URL: /storage/format
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    devicestringYesDevice path, e.g. /dev/nvme0n1 or its partition
    confirmbooleanYesConfirm operation
  • Request Example:
    json
    {
      "device": "/dev/nvme0n1",
      "confirm": true
    }

Import Existing Data Disk and Mount

No formatting, directly mount specified device as /container_nswc_lv.

  • URL: /storage/import
  • Method: POST
  • Parameters:
    ParameterTypeRequiredDescription
    devicestringYesDevice path
    confirmbooleanYesConfirm operation
  • Request Example:
    json
    {
      "device": "/dev/nvme0n1",
      "confirm": true
    }

Version Update (Update)

CBS Version Update

Upload CBS executable file and update service, please refresh page after update.

  • URL: /v1/update_cbs
  • Method: POST
  • Content-Type: multipart/form-data
  • File Naming Requirements: Must be cbs_go_edge_version format, supports 'executable file without suffix' or .cbs suffix; does not support .exe
  • Parameters:
    ParameterTypeRequiredDescription
    filefileYesCBS executable file (filename must be cbs_go_edge_version format; supports no suffix or .cbs, does not support .exe)
  • Return Value Description:
    FieldDescription
    code200 success; 0 failed
    msgOperation result description
    data.host_ipHost IP
    data.current_versionCurrently running version number

Kernel Version Update

Upload kernel image file and update system kernel, host will automatically reboot after update.

  • URL: /v1/update_kernel
  • Method: POST
  • Content-Type: multipart/form-data
  • File Naming Requirements: Must be .img format image file
  • Execution Flow:
    1. Uploaded .img file saved to /userdata/new_boot.img
    2. Automatically set file executable permission (0755)
    3. Execute kernel flash command and reboot system
  • Parameters:
    ParameterTypeRequiredDescription
    filefileYesKernel image file (must be .img format)
  • Return Value Description:
    FieldDescription
    code200 success; 0 failed
    msgOperation result description
    data.host_ipHost IP


Powered by VMOS Edge Team