# Install app on cloud phone

Install an app from the team app library onto a Cloud Phone.
- **Preconditions**: the phone must be powered on and not held by another member. The app must already exist in the team library or the public catalogue — identify it either by `appVersionId`, or by `packageName` plus `versionCode`. The app must also be available for installation on this phone, otherwise installation fails.
- **Rate limit**: at most one install per phone per second; a faster second call is rejected.
- **Completion**: **accepted, not complete.** The response only confirms the request was queued. Poll `/cloudphone/app/installedList` to see whether the app arrived.
- **Retry**: safe to retry after checking the installed list, subject to the one-per-second limit.

Documented business errors: `33005`, `33014`, `33714`. See [Error Codes](../Getting%20Started/error-codes.md) for what each code means. Any operation can additionally return the common codes.

Endpoint: POST /api/cloudphone/app/install
Version: 2026-09-05

## Request fields (application/json):

  - `appVersionId` (string)
    App version ID

  - `id` (string, required)
    Cloud phone ID

  - `packageName` (string)
    Package name — required only if appVersionId is not provided

  - `versionCode` (integer)
    Version code — required only if appVersionId is not provided

## Response 200:

  - `200` (unknown)
    Success. `data` is a single boolean value.

## Response 200 fields (application/json):

  - `code` (integer)

  - `msg` (string | null)

  - `data` (boolean)

  - `requestId` (string)

