deviceStatuses and related beta endpoints are not documented as reliable reporting surfaces for Intune app installation and should not be treated as the primary source of truth for automation. The supported and documented approach for app‑install status is to use Intune’s reporting surfaces (including those exposed via Microsoft Graph reports) and, when needed, the per‑app install status resources.
Based on the available documentation, the following options are supported:
- Use Intune reports exposed via Graph for per‑device app install status
The Intune reporting layer exposes a DeviceInstallStatusByApp report over Graph. This report is specifically designed to return app installation state per device and per app and is the supported reporting surface for automation.
The DeviceInstallStatusByApp report returns, among others, the following properties:
-
ApplicationId
-
DeviceId
-
DeviceName
-
AppInstallState
-
AppInstallStateDetails
-
InstallState
-
InstallStateDetail
-
ErrorCode
-
HexErrorCode
-
LastModifiedDateTime
-
Platform
-
UserId
-
UserName
-
UserPrincipalName
The report can be filtered by:
-
ApplicationId (required)
-
AppInstallState
-
HexErrorCode
This report is intended for exactly the scenario described: validating app installation per device and per app in an automated way. It is part of the Intune reporting framework and is the recommended primary source of truth for automation instead of deviceStatuses.
- Use
mobileAppInstallStatus for per‑app, per‑device status (beta)
For scenarios where per‑app, per‑device status is needed directly from the app object, the mobileAppInstallStatus resource can be queried via:
GET /deviceAppManagement/mobileApps/{mobileAppId}/deviceStatuses/{mobileAppInstallStatusId}
GET /deviceAppManagement/mobileApps/{mobileAppId}/userStatuses/{userAppInstallStatusId}/deviceStatuses/{mobileAppInstallStatusId}
This is a beta Intune Graph API and requires DeviceManagementApps.Read.All or DeviceManagementApps.ReadWrite.All. It returns a mobileAppInstallStatus object that represents the install status of the app on a device. Because it is beta, it is supported but subject to change and should be used with awareness that it is not the long‑term reporting surface; the reporting APIs (such as DeviceInstallStatusByApp) are preferred for stable automation.
- Use the Intune Troubleshoot portal for interactive validation and error details
For operational troubleshooting (not automation), the Intune admin center provides the Troubleshoot pane:
- Go to Troubleshoot + support in the Intune admin center.
- Select the user, then the device.
- Open Managed Apps to see per‑device, per‑app lifecycle information (created, modified, targeted, delivered) and installation issues.
- Selecting an app with a failure shows detailed error information.
This surface is explicitly described as troubleshooting‑oriented and is not the recommended programmatic reporting interface, which aligns with the behavior observed where some Graph troubleshooting endpoints return unknown or transient states.
- Error codes and reliability considerations
For automation that validates success vs failure, the Intune app installation error reference and the app installation error reporting table are the authoritative sources for interpreting error codes and states. For example, the app installation error reporting table documents error codes like 0x87D5501C–0x87D5507D, whether they are retried automatically, and guidance on what they mean.
When using DeviceInstallStatusByApp or mobileAppInstallStatus:
- Use
AppInstallState / InstallState and HexErrorCode / ErrorCode to determine success vs failure.
- Expect that status is updated after the Intune Management Extension / agent completes install and reporting; there can be a delay between device completion and portal/report update.
- Recommended best practice for automation
Given the documented surfaces, a supported pattern for automation is:
- Use Intune assignment to deploy the app.
- Poll the Intune reporting API (
DeviceInstallStatusByApp) filtered by ApplicationId (and optionally AppInstallState) to retrieve per‑device install status.
- Interpret
AppInstallState / InstallState and HexErrorCode according to the documented error reference and app installation error reporting table.
- Optionally, for deeper per‑device/per‑app diagnostics, query
mobileAppInstallStatus (beta) or use the Troubleshoot portal interactively.
- Use
detectedApps only as a secondary confirmation of app presence, not as the primary Intune deployment status signal.
- Reporting vs troubleshooting APIs and expected differences
- Reporting / validation (automation)
- Use Intune reporting APIs such as
DeviceInstallStatusByApp exposed via Graph.
- These are designed for aggregated and per‑device reporting and are the recommended source of truth for automation.
- Troubleshooting
- Use the Intune admin center Troubleshoot pane and related troubleshooting APIs for interactive investigation.
- These may expose transient or intermediate states (such as
unknown) and are not positioned as the primary reporting interface.
The documentation explicitly distinguishes between the troubleshooting portal (for help desk and interactive use) and the reporting APIs (for programmatic reporting and export). For automation, rely on the reporting APIs rather than the troubleshooting‑oriented endpoints.
References: