# Operate Team App in Batch

Added in v2.70.0. The app must belong to the current team. Use the team app ID from `/cloudphone/team/app/page`, not a Cloud Phone ID or catalogue app ID.
Runs `START`, `STOP`, `RESTART`, or `UNINSTALL` on powered-on phones in the app scope that the caller may access. `onlyStartedByMe=true` further filters by the last starting member. No eligible target is an error. `data=true` means the batch loop finished, even if individual provider calls failed; it does not guarantee per-device success. Uninstall keeps the team app and its installation scope. Do not retry automatically.
**Permission**: `CLOUD_PHONE_APP_BATCH_OPERATE`.
Documented business errors: `33354`, `33423`, `99002`. See [Error Codes](../Getting%20Started/error-codes.md) for what each code means. Any operation can additionally return the common codes.

Endpoint: POST /cloudphone/team/app/operate
Version: 2026-09-05
Security: Authorization

## Security:

  - `Authorization` (unknown)
    http bearer JWT

## Request fields (application/json):

  - `id` (string, required)
    Team app ID

  - `operation` (string, required)
    Operation: start, stop, restart, or uninstall
    Enum: "START", "STOP", "RESTART", "UNINSTALL"

  - `onlyStartedByMe` (boolean)
    Only phones last started by the current member; defaults to false

## Response 200:

  - `200` (unknown)
    Success. data=true confirms that the batch loop finished, not that every device operation succeeded.

## Response 200 fields (application/json):

  - `code` (integer)

  - `msg` (string | null)

  - `data` (boolean)

  - `requestId` (string)

