基础
| 项目 | 值 | 说明 |
|---|---|---|
| 基础URL | https://api.clousd.com/v1 | 仅限HTTPS,请求和响应均为JSON |
| 认证 | Authorization: Bearer cl_live_… | 密钥在控制台中创建,可限定为read或control权限,以及指定的设备列表 |
| 耗时操作 | 202 Accepted → GET /v1/jobs/{id} | 创建、开机、恢复等调用会返回一个需要轮询的作业 |
| 错误 | { "error": "busy", "message": "…" } | 一个供代码判断的简短错误码,加一条给人看的说明 |
| 完整规范 | openapi-v1.yaml | OpenAPI 3.1,含参数、请求体和响应 |
任务
| 方法 | 路由 | 作用 |
|---|---|---|
| GET | /v1/schedules | 该密钥的定时任务 |
| POST | /v1/schedules | 自动运行的任务:每天、每小时或在你调用时运行 |
| POST | /v1/schedules/{id}/toggle | 暂停或恢复定时任务 |
| POST | /v1/schedules/{id}/delete | 删除定时任务 |
| POST | /v1/runs | 用大白话给一台或多台手机布置任务 |
| GET | /v1/runs | 该密钥的运行记录,最新的在前 |
| GET | /v1/runs/{id} | 单次运行:状态、答案、structured_output,以及它正在等待的卡片 |
| DELETE | /v1/runs/{id} | 删除已结束的运行及其步骤和截图 |
| GET | /v1/runs/{id}/events | 以Server-Sent Events推送实时事件 |
| GET | /v1/runs/{id}/trajectory | 每一步:工具、目标、结果、是否保留了画面 |
| GET | /v1/runs/{id}/steps/{n}.jpg | 第n步之前的屏幕 |
| POST | /v1/runs/{id}/answer | 回复运行的卡片:问题(answer)或授权(allow / decline) |
| POST | /v1/runs/{id}/message | 给运行中的Agent发消息,它会在下一步之前读取 |
| POST | /v1/runs/{id}/cancel | 停止运行 |
| POST | /v1/schedules/{id}/run | 立即启动定时任务,即trigger=api的触发方式 |
| GET | /v1/credentials | 已保存的登录信息:包名、名称和已设置的字段;从不返回值 |
| POST | /v1/credentials | 为应用保存登录信息 |
| POST | /v1/credentials/{id}/fields | 设置登录信息的某个字段 |
| DELETE | /v1/credentials/{id}/fields/{type} | 删除登录信息的某个字段 |
| DELETE | /v1/credentials/{id} | 删除登录信息 |
设备
| 方法 | 路由 | 作用 |
|---|---|---|
| GET | /v1/devices | 该密钥可见的设备 |
| POST | /v1/devices | 创建设备(费用计入API密钥所属账户) |
| GET | /v1/devices/{name} | 单台设备 |
| POST | /v1/devices/{name}/start | 设备开机 |
| POST | /v1/devices/{name}/stop | 设备关机(状态保留;关机的设备不收费) |
| POST | /v1/devices/{name}/restart | 重启设备 |
| GET | /v1/devices/{name}/ice | 该设备WebRTC观看端的ICE服务器:设备所在主机的TURN及临时凭据(read密钥即可) |
| GET | /v1/devices/{name}/quality | 分类质量评分(最近一次测量) |
| POST | /v1/devices/{name}/reset | 把设备重置为全新状态:清除应用和数据,手机恢复如新(机型和Android版本不变,1–5分钟) |
| GET | /v1/devices/{name}/screenrecord | 录制几秒钟屏幕 |
| POST | /v1/devices/{name}/label | 给手机起一个人和Agent都能分辨的名称(如“Pixel QA”);留空则恢复为“机型 #N” |
| GET | /v1/balance | 账户资金:余额、每日花费、剩余时长、续费以及需要告知用户的提醒 |
| GET | /v1/models | 可用于创建设备的机型 |
AI Agent
| 方法 | 路由 | 作用 |
|---|---|---|
| GET | /v1/devices/{name}/observe | 一次调用重新查看手机:截图、UI树和当前前台应用 |
| POST | /v1/devices/{name}/act | 执行一个操作,然后等待屏幕停止变化 |
| POST | /v1/devices/{name}/op | 一个核心原语(与Lusiesta核心协议一一对应) |
屏幕与输入
| 方法 | 路由 | 作用 |
|---|---|---|
| GET | /v1/devices/{name}/screenshot | 以PNG返回屏幕;带w参数时返回较小的JPEG(最多缓存10秒,需要最新画面请用/observe) |
| POST | /v1/devices/{name}/action | 在手机上执行一个操作(不等待) |
| POST | /v1/devices/{name}/input | 触摸、按键、文本、滚动、剪贴板、旋转(需要实时画面会话) |
| GET | /v1/devices/{name}/logs | 最近的logcat日志 |
| GET | /v1/devices/{name}/stream | 实时画面指标:fps、码率、观看端延迟、ABR档位(read密钥即可) |
| POST | /v1/devices/{name}/stream | WebRTC:传入SDP offer,返回SDP answer;请求体带bitrate_kbps时则改为固定画质档位(control密钥) |
| POST | /v1/devices/{name}/stream/probe | 实时观看端的延迟探测:下拉通知栏600毫秒并返回网关时钟(control密钥,每台设备每5秒最多一次) |
网络
| 方法 | 路由 | 作用 |
|---|---|---|
| GET | /v1/devices/{name}/network | 设备的网络国家 |
| POST | /v1/devices/{name}/network | 设置设备的联网国家(时区和语言区域随之变化) |
| GET | /v1/network/options | 当前创建设备时可选的内容:国家和套餐 |
应用
| 方法 | 路由 | 作用 |
|---|---|---|
| POST | /v1/devices/{name}/apk | 安装APK |
| GET | /v1/apps | 应用库:当前可安装的应用 |
| GET | /v1/devices/{name}/apps | 设备上已安装的应用库应用 |
| POST | /v1/devices/{name}/apps | 安装应用库中的应用(control密钥) |
ADB
| 方法 | 路由 | 作用 |
|---|---|---|
| GET | /v1/devices/{name}/adb | ADB会话状态 |
| POST | /v1/devices/{name}/adb | 通过中继开启ADB会话(验证码 |
| DELETE | /v1/devices/{name}/adb | 关闭ADB会话 |
文件与素材
| 方法 | 路由 | 作用 |
|---|---|---|
| PUT | /v1/devices/{name}/files | 把文件放到手机上(push):请求体即文件,路径须在/sdcard/或/data/local/tmp/下 |
| POST | /v1/devices/{name}/media | 把素材库中的素材放到手机上,如同用这台手机拍摄(push);删除放入的素材(clean);或列出它们 |
| GET | /v1/media | 素材库:照片和视频及其id |
| POST | /v1/media | 上传照片或视频:{name, data_b64, folder},最大25 MB |
| POST | /v1/media/send | 把素材库文件复制到手机相册 |
Webhook
| 方法 | 路由 | 作用 |
|---|---|---|
| GET | /v1/webhooks | 该密钥的Webhook及可订阅的六种事件(任务完成、失败、取消、等待,手机异常与恢复) |
| POST | /v1/webhooks | 订阅一个https URL |
| GET | /v1/webhooks/{id} | 单个Webhook |
| DELETE | /v1/webhooks/{id} | 删除 |
| POST | /v1/webhooks/{id}/rotate | 新的签名密钥(只显示一次) |
| POST | /v1/webhooks/{id}/toggle | 暂停或恢复投递 |
| POST | /v1/webhooks/{id}/test | 立即发送测试事件 |
| GET | /v1/webhooks/{id}/deliveries | 最近的投递记录及状态和响应时间 |
账户
| 方法 | 路由 | 作用 |
|---|---|---|
| GET | /v1/usage | 一个月内每台设备每天(UTC)的运行分钟数 |
| GET | /v1/incidents | 你的设备上的故障记录(最近100条,最新的在前) |
| GET | /v1/health | 你的设备的健康状态(每5分钟测量一次) |
| GET | /v1/jobs | 你的设备最近50个作业 |
| GET | /v1/jobs/{id} | 耗时操作的状态 |