Skip to content

List install devices
Stable

Request

Returns a paginated list of devices that have a specific Android application version installed.

Use this endpoint to audit the install coverage of a particular app version across your fleet, searchable by device name, alias, or group name.

About List Install Devices

This endpoint is part of the Application V1 family, which manages the enterprise's Android app library. It answers the question "which devices have version X of this Android app installed?" for a specific application_id and version_id pair. Each result is an InstallDevices object containing the device UUID, device name, alias name, and group name — enough context to identify and locate devices without a separate device lookup. There are two other application API families with distinct scopes:

Tenant Apps (/v2/tenant-apps/...) — manages uploaded apps for iOS and Windows. This family does not have a device-level install query endpoint. Device Apps (/v2/devices/{deviceId}/device-apps/ and GET /v2/device-apps) — is the correct family for install queries involving iOS and Windows app types (VPP, TENANT_IOS, ESPER_IOS, WEBCLIP, ESPER_WINDOWS, TENANT_WINDOWS). Use GET /v2/device-apps?app_id=...&app_version_id=... for the equivalent cross-device install query on non-Android apps.

For Android apps, this endpoint is the right tool. Results are paginated; use limit and offset to page through large fleets.

Key Fields

enterprise_id (path, required) — UUID of the enterprise

application_id (path, required) — UUID of the Android application

version_id (path, required) — UUID of the specific app version to query

search (optional) — Free-text search across device name, alias name, and group name

limit (optional) — Number of results per page

offset (optional) — Starting index for pagination

id (response) — UUID of the device

device_name — System-assigned device name

alias_name — Human-friendly alias for the device; may be null

group_name — Name of the device group the device belongs to

Common Use Cases

Verifying that an Android app deployment reached all intended devices Identifying which devices still have an outdated version installed before pushing an update Auditing install coverage before deleting an app version to confirm no devices will be left in an unexpected state

Best Practices

For iOS or Windows app install queries, use GET /v2/device-apps?app_id=...&app_version_id=... from the Device Apps family instead — this endpoint covers Android only Run this query per version before calling the application or version-level delete endpoint to avoid removing a version still in active use Use search to narrow results to a specific group or device without paginating through the entire fleet Cross-reference group_name with your intended deployment targets to catch devices in unexpected groups

Workflow

Obtain application_id from GET /v1/enterprise/{enterprise_id}/application/ and version_id from GET /v1/enterprise/{enterprise_id}/application/{application_id}/version/ Call GET .../version/{version_id}/installdevices, optionally with search and pagination params Paginate through results until next is null Use the device UUIDs (id) or group_name to identify devices for follow-up actions such as issuing an update command or flagging stragglers

Security
esper_cloud_api_apiKey
Path
version_idstring, (uuid)required

A UUID string identifying this app version.

application_idstring, (uuid)required

A UUID string identifying this application.

enterprise_idstringrequired

A UUID string identifying enterprise.

Query
searchstring

A search term, search based on device name, device alias_name, group name

limitinteger

Number of results to return per page

offsetinteger

The initial index from which to return the results

cURL
curl -i -X GET \
  'https://api.esper.io/_mock/openapi/v1/enterprise/{enterprise_id}/application/{application_id}/version/{version_id}/installdevices?search=string&limit=0&offset=0' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

successful operation

Bodyapplication/json
countintegerrequired
nextstring or null, (url)
previousstring or null, (url)
resultsArray of objects(esper_cloud_api_InstallDevices)required
Response
{ "count": 0, "next": "string", "previous": "string", "results": [ {} ] }