# 购买并激活包月云手机

购买并激活 1 至 10 台包月云手机，使用期为 30 天。
- **扣费提醒**：**该操作会真实扣除团队余额。**
- **权限**：调用成员必须具有**费用/支付管理**权限，否则返回 `99012`。
- **先创建**：请先通过 [`/cloudphone/create`](./open-api.yaml#operation/createUsingPOST) 创建云手机。创建仅生成未激活记录，不会扣费。
- **选择规则**：ID 必须互不重复、属于当前团队，使用有效的 30 天包月商品，并具有兼容的购买状态。允许一次购买不同的包月 SKU。混合已支付与未支付手机、来自不同已支付订单的手机、存在待处理客户端订单或并发购买时，整个请求都会被拒绝。
- **扣费与恢复**：校验和扣费为全有或全无，不会发生部分扣费。如果所有手机都属于同一个已支付订单，服务端会恢复已有权益，不会重复扣费。Local API、Open API 与桌面客户端共享同一订单状态。
- **完成信号**：成功表示全部手机已确认激活 30 天；不会自动开机，也不会开启自动续费。
- **未确认激活**：返回 `33422` 时，`data.results` 仍然完整并保持请求顺序。请逐项检查 `status`、`expireTime` 和 `errorCode`，不要把整个结果视为缺失。
- **重试**：没有调用方幂等键。超时后先通过 [`/cloudphone/info`](./open-api.yaml#operation/infoUsingPOST) 或 [`/cloudphone/page`](./open-api.yaml#operation/pageUsingPOST) 检查计费与到期状态，再决定是否重试。

已记录的业务错误码：`20002`、`20003`、`20004`、`20008`、`20041`、`20055`、`20068`、`20070`、`20071`、`33420`、`33421`、`33422`、`99001`、`99002`、`99012`。各错误码含义见 [Error Codes](../Getting%20Started/error-codes.md)；接口还可能返回通用错误码。

Endpoint: POST /cloudphone/monthly/activate
Version: 2026-09-05
Security: Authorization

## Security:

  - `Authorization` (unknown)
    http bearer JWT

## Request fields (application/json):

  - `ids` (array, required)
    One to ten distinct positive Cloud Phone IDs, encoded as strings to preserve 64-bit precision

## Response 200:

  - `200` (unknown)
    Request processed; inspect `code`, and inspect `data.results` when returned

## Response 200 fields (application/json):

  - `code` (integer, required)
    Business result code; `0` indicates success
    Example: 0

  - `msg` (string | null, required)
    Error message; null when successful
    Example: null

  - `requestId` (string, required)
    Request ID for troubleshooting
    Example: 1d4f3ea968664593860b94b35d4ebf5e

  - `data` (object)

  - `data.orderId` (string, required)
    Paid balance-order ID

  - `data.orderStatus` (integer, required)
    Order status; 1 means completed
    Enum: 1

  - `data.results` (array, required)
    One result per requested ID, in request order

  - `data.results.id` (string, required)
    Cloud Phone ID

  - `data.results.status` (string, required)
    Activation result
    Enum: "ACTIVATED", "FAILED", "UNKNOWN"

  - `data.results.expireTime` (string | null)
    Unix time in milliseconds; present for a successful activation

  - `data.results.errorCode` (integer | null)
    Business error code for a failed item

