# Comprar y activar Cloud Phones mensuales

Compra y activa de 1 a 10 Cloud Phones mensuales durante 30 días.
- **Aviso de cobro**: **esta operación descuenta realmente saldo del equipo.**
- **Permiso**: el miembro debe tener **Gestión de gastos/pagos**; de lo contrario se devuelve `99012`.
- **Crear primero**: crea los teléfonos con [`/cloudphone/create`](./open-api.yaml#operation/createUsingPOST); la creación solo genera registros inactivos y no cobra.
- **Selección**: los ID deben ser distintos, pertenecer al equipo y usar productos mensuales activos de 30 días. Se permiten SKU mensuales distintos. Mezclar estados u órdenes incompatibles, pedidos pendientes del cliente o compras concurrentes rechaza toda la solicitud.
- **Cobro y restauración**: la validación y el cobro son todo o nada. Si todos pertenecen al mismo pedido pagado, se restaura el derecho existente sin volver a cobrar. Local API, Open API y el cliente comparten el estado.
- **Finalización**: confirma 30 días para todos; no enciende teléfonos ni activa renovación.
- **Activación no confirmada**: con `33422`, `data.results` sigue completo y ordenado. Revisa `status`, `expireTime` y `errorCode`.
- **Reintento**: tras un timeout, consulta [`/cloudphone/info`](./open-api.yaml#operation/infoUsingPOST) o [`/cloudphone/page`](./open-api.yaml#operation/pageUsingPOST).

Errores documentados: `20002`, `20003`, `20004`, `20008`, `20041`, `20055`, `20068`, `20070`, `20071`, `33420`, `33421`, `33422`, `99001`, `99002`, `99012`. Consulta [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

