CLOUSD
注册账户

云手机API:REST接口、Webhook和ADB中继

Clousd API是面向安卓云手机的REST API,地址为https://api.clousd.com/v1,管的是手机,不是电话线路。控制台里的每个操作,你都可以自己调用:创建设备、更换网络、安装应用、快照和克隆。耗时任务返回202,密钥有权限范围,Webhook带签名,ADB一条命令就能连上。

REST基于HTTPS的JSON 202+任务,处理耗时操作 Webhook
GET /v1/devices
curl https://api.clousd.com/v1/devices \
  -H "Authorization: Bearer cl_live_••••••••"
200 OK响应
{ "devices": [
  { "name": "c3f9a41d2", "model": "Galaxy A16 5G",
    "android": "15", "state": "running",
    "exit": { "type": "mobile", "country": "DE",
              "timezone": "Europe/Berlin" },
    "uptime": 7740, "minutes_today": 129 }
] }

权限一目了然的密钥。

在“设置 → API密钥”中创建密钥。每个密钥都有权限范围和可操作的设备列表,只显示一次。需要时随时在同一处吊销。

  • 只读或控制只读密钥只能查看,不能改动任何东西;控制密钥可以执行操作。
  • 限定到指定设备密钥只能看到列表里的设备,以及它自己创建或克隆的新设备。
  • 按密钥限流每分钟60次请求;设备相关接口每台设备每分钟最多120次。
基础URL与认证
# 每个请求
https://api.clousd.com/v1
Authorization: Bearer cl_live_your_key

# 耗时操作返回 202 和一个任务
POST /v1/devices/c3f9a41d2/restart
→ 202 { "job": { "id": "3f9c…", "kind": "restart", "state": "running" } }
GET  /v1/jobs/3f9c…
→ 200 { "job": { "state": "done" } }

你会用到的调用。

大多数脚本都从这些开始;API v1全部接口及所有字段见参考文档。第一次用?从五步快速入门开始。

设备

生命周期
GET/v1/models可创建的机型
POST/v1/devices创建设备
GET/v1/devices设备列表
POST/v1/devices/{name}/start开机 · 关机 · 重启
DELETE/v1/devices/{name}永久删除

屏幕与输入

控制
GET/v1/devices/{name}/screenshotPNG或小尺寸JPEG
POST/v1/devices/{name}/action打开应用、点击、输入、查找文字
POST/v1/devices/{name}/input原始触控与按键
GET/v1/devices/{name}/logs最近的logcat

网络

出口
GET/v1/network/options在售的类型和国家
POST/v1/devices/{name}/network更换出口
POST/v1/devices/{name}/network/rotate换新IP
POST/v1/network/check检测自有代理

应用

像从Play安装一样
GET/v1/apps应用库
POST/v1/devices/{name}/apps从应用库安装
GET/v1/devices/{name}/apps已安装的应用
POST/v1/devices/{name}/apk上传你的APK

快照

状态
POST/v1/devices/{name}/snapshots保存状态
POST/v1/devices/{name}/snapshots/{id}/restore回滚
POST/v1/devices/{name}/snapshots/{id}/clone从快照新建设备

机群

多台设备
POST/v1/groups在多台设备上执行步骤
GET/v1/schedules每周计划
GET/v1/health设备健康状况
GET/v1/usage每台设备的分钟数

按任务查看:快照与克隆、更换手机网络、从CI运行测试。

ADB,无需开放端口。

没有任何设备把ADB暴露在公网上。你连接到我们的中继,用一次性验证码登录,中继只把你的会话转发到那一台设备,别的什么都不碰。在你开启之前,它始终关闭。

  • 只限你的IP开启前必须设置白名单,最多20个地址或网段。
  • 限时开放默认24小时,最长7天,到期自动关闭。
  • 功能一样不少install、shell、logcat、push和pull都能用。root、reboot这类危险命令会被拒绝。
终端
# the dashboard or POST /v1/devices/{name}/adb gives host, port and code
adb connect relay.clousd.com:27001
adb -s relay.clousd.com:27001 shell clousd-login a1b2c3
login ok

adb -s relay.clousd.com:27001 install app-release.apk
adb -s relay.clousd.com:27001 logcat -d | tail -40
防护项触发后上限
允许的地址来自其他地址的连接立即断开最多20个IP或网段
到期该设备的中继关闭,验证码清除默认24小时,最长7天
会话第四个连接会被拒绝每台设备同时3个
验证码错误会话断开;累计20次后该设备的中继关闭每会话5次 · 每10分钟20次
空闲会话自动断开;正在运行的shell和logcat不算空闲30分钟
Push和pull该会话后续的文件传输会被拒绝每会话2 GiB
始终拒绝另有disable-verity、reverse、tcpip、usb、jdwp、sideload、restoreroot, remount, reboot, …

带签名的Webhook。

给密钥设置一个Webhook URL,当该密钥下的设备发生事件时,平台就会向它推送:任务完成、设备出现问题、问题解除。

EVENTjob.finishedstart, stop, network, snapshot, clone…
EVENThealth.problem设备需要处理
EVENThealth.resolved已恢复正常

最多投递三次:立即一次、10秒后一次、一分钟后一次。每个请求都带有X-Clousd-Signature。

验证签名 · Python
import hashlib, hmac

# HMAC 密钥 = 你的 API 密钥的 SHA-256 十六进制摘要
secret = hashlib.sha256(API_KEY.encode()).hexdigest().encode()
expected = hmac.new(secret, raw_body, hashlib.sha256).hexdigest()

if not hmac.compare_digest(expected, headers["X-Clousd-Signature"]):
    raise PermissionError("bad signature")

# body: {"event": "job.finished", "ts": …, "phone": "c3f9a41d2", "job": {…}}

可处理的错误。

标准HTTP状态码,外加一个JSON响应体,包含机器可读的kind和给人看的说明:{"error": "busy", "message": "…"}

状态码含义错误类型
400缺少字段,或字段值不在允许范围内bad_request
401密钥缺失、错误或已吊销unauthorized
402余额不足以完成请求的操作insufficient_funds
403密钥的权限范围或设备列表不允许该操作forbidden
404该密钥下没有这台设备、这个任务或这个快照not_found
409设备已处于该状态,或正忙于另一个任务busy
429请求过多:请稍后重试rate_limited

云手机API常见问题

还有其他问题?请联系客服,通常一个工作日内由真人回复。

API要额外收费吗?

不收费。API、Webhook和ADB都已包含在内。你只需为运行中的设备付费:每分钟$0.004或每月$12.00。不分套餐,每个账户都能用API

可以通过API创建设备吗?

可以。GET /v1/models列出可创建的机型;用POST /v1/devices带上机型、网络和计费方式即可创建。请求时带上Idempotency-Key请求头,超时重试也绝不会重复创建或重复扣费。

有SDK吗?

API是标准REST接口,任何带HTTP客户端的语言都能调用。Python SDK和面向AI Agent的MCP服务器会随Agent抢先体验一同推出。

AI Agent怎么用它?

GET /v1/devices/{name}/observe返回最新截图和屏幕元素及其位置;POST /v1/devices/{name}/act执行点击、输入或滑动,并等到画面稳定。面向AI Agent的observe与act接口

可以通过互联网使用ADB吗?

可以,通过我们的中继:为设备开启ADB,把你的IP地址加入白名单,用adb connect连接,再用一次性验证码登录。ADB默认关闭,24小时后自动关闭,你也可以设为最长7天。

完整的参考文档在哪里?

在/docs/reference/,根据OpenAPI描述自动生成,也可以下载openapi-v1.yaml。

在哪里查看API是否正常?

在API状态页面:对API以及支撑实时画面和ADB的网关做真实检测,最多每五分钟一次,保留90天的每日记录。

免费试用

拿到密钥,一分钟用脚本跑起第一台设备。

  • 无需绑卡,无需充值。
  • 注册账户,启动设备,免费用半小时。
  • 好用就充值继续用;不合适,也没有任何损失。
关机不计费每个账户可试用一次,设备状态保留