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
- Mock serverhttps://api.esper.io/_mock/openapi/v1/enterprise/{enterprise_id}/application/{application_id}/version/{version_id}/installdevices
- https://develop-api.esper.cloud/apihttps://develop-api.esper.cloud/api/v1/enterprise/{enterprise_id}/application/{application_id}/version/{version_id}/installdevices
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>'{ "count": 0, "next": "string", "previous": "string", "results": [ { … } ] }