---
title: "Install app"
method: POST
path: "/devices/{deviceId}/apps"
tags: ["Tools/Apps"]
---

# Install app

`POST /devices/{deviceId}/apps`

Installs an app on the device. The request body must supply exactly one of an Android packageName or an iOS bundleId; protected packages are rejected.

## Path parameters

- `deviceId` string, required

## Headers

- `X-Device-Display-ID` integer

## Request body

- union
  - object
    - `bundleId` string, required — iOS bundle identifier (e.g. com.example.app)
    - `packageName` string — Android package name (e.g. com.example.app)
  - object
    - `packageName` string, required — Android package name (e.g. com.example.app)
    - `bundleId` string — iOS bundle identifier (e.g. com.example.app)

## Response `204`

No Content

## Other responses

- `default` — Error

## Changes

- **2026-08-01** `cd80ab1b29b0` — 1 info
  - endpoint added
- **2026-08-01** `3183ec3153d1` — 1 breaking
  - api path removed without deprecation
- **2026-07-07** `d5d1e5ee8188` — 2 info
  - api tag `Tools/Apps` added
  - api tag `Tools` removed
- **2026-06-29** `3cb3612f45e0` — 1 info
  - endpoint added
- **2026-06-29** `8ea6db3daeac` — 1 breaking
  - api path removed without deprecation

[Full history](https://skmtc.dev/droidrun/apis/droidrun-cloud/changes/devices/:deviceId/apps/post.md)

---

[API](https://skmtc.dev/droidrun/apis/droidrun-cloud.md) · [All operations](https://skmtc.dev/droidrun/apis/droidrun-cloud/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/droidrun/droidrun-cloud/revisions/cd80ab1b29b0/schema)
