# Comprar e ativar Cloud Phones mensais

Compra e ativa de 1 a 10 Cloud Phones mensais por 30 dias.
- **Aviso de cobrança**: **esta operação debita realmente o saldo da equipe.**
- **Permissão**: o membro precisa de **Gestão de despesas/pagamentos**; caso contrário retorna `99012`.
- **Crie primeiro**: use [`/api/cloudphone/create`](./local-api.yaml#operation/createUsingPOST); a criação apenas gera registros inativos e não cobra.
- **Seleção**: IDs devem ser distintos, pertencer à equipe e usar produtos mensais ativos de 30 dias. É permitido misturar SKUs mensais. Estados ou pedidos incompatíveis, pedidos pendentes do cliente ou compras simultâneas rejeitam toda a solicitação.
- **Cobrança e restauração**: validação e cobrança são tudo ou nada. Telefones do mesmo pedido pago restauram o direito existente sem nova cobrança. Local API, Open API e desktop compartilham o estado do pedido.
- **Conclusão**: confirma 30 dias para todos; não liga os telefones nem ativa renovação automática.
- **Ativação não confirmada**: com `33422`, `data.results` continua completo e na ordem da solicitação. Verifique `status`, `expireTime` e `errorCode`.
- **Nova tentativa**: após timeout, consulte [`/api/cloudphone/info`](./local-api.yaml#operation/infoUsingPOST) ou [`/api/cloudphone/page`](./local-api.yaml#operation/pageUsingPOST).

Erros documentados: `20002`, `20003`, `20004`, `20008`, `20041`, `20055`, `20068`, `20070`, `20071`, `33420`, `33421`, `33422`, `99001`, `99002`, `99012`. Consulte [Error Codes](../Getting%20Started/error-codes.md).
- **Versão do cliente**: requer MoreLogin Desktop v2.65.0 ou posterior; versões antigas não expõem esta rota da Local API.

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

## 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

