Microsoft Intune
Fundamentals

Use Multi Admin Approval with the Microsoft Graph API

In brief

The documentation now states that missing approval headers return HTTP 400, while a pending approval returns HTTP 412 (Precondition Failed) with a Microsoft Graph `BadRequest` code and an `x-msft-approval-code` header. It also instructs readers to save the original method, URL, and body for resubmission.

What Intune admins need to know

Update integrations and error handling to recognize the corrected responses, and preserve the original request details for the post-approval retry.

This summary was assembled from the tracked documentation change. Verify important details in the full Microsoft Learn article.

Documentation change

The comparison below shows only the changed extract. Open the full-page diff for complete context.


title: Use Multi Admin Approval with the Microsoft Graph API description: Learn how to update your automation scripts and applications to work with Multi Admin Approval enforcement on app-authenticated API calls in Microsoft Intune. ms.date: 08/06/15/2026 ms.topic: how-to ai-usage: ai-assisted ms.reviewer: davidra

Previously, only interactive (delegated) admin actions were subject to MAA approval workflows. With this change, automated and scripted calls that use app-only tokens are also intercepted by MAA when the target resource is protected by an access policy.

If your application makes API calls to MAA-protected resources using app-auth and doesn't include the required approval headers, the call returns an HTTP 403400 error. The response body indicates that the operation requires Multi Admin Approval.

Affected resource types

Step 2: Handle the approval response

The request returns an HTTP 403 error412 (Precondition Failed) with an ApprovalRequiredouter Microsoft Graph error code.code of BadRequest. This 403 response is expected and doesn't indicate a permissions problem — it's how MAA signals that the request was received and is now waiting for approval. The approval-required details are nested in the error message.

The response includes an x-msft-approval-code header that you need for the remaining steps. Use the presence of this header together with HTTP 412 as the signal that MAA accepted the request and created an approval request.

Example response:

HTTP/1.1 412 Precondition Failed
x-msft-approval-code: aabb1234-5678-9012-abcd-ef0123456789
Content-Type: application/json

{
  "error": {
    "code": "ApprovalRequiredBadRequest",
    "message": "{\r\n  \"_version\": 3,\r\n  \"Message\": \"Approval Required. Request Approval using the request ID returned as part of the x-msft-approval-code response header. x-msft-approval-code: aabb1234-5678-9012-abcd-ef0123456789 - Operation ID (for customer support): 00000000-0000-0000-0000-000000000000 - Activity ID: <activity-id> - Url: <service-url>\",\r\n  \"CustomApiErrorPhrase\": \"\",\r\n  \"RetryAfter\": null,\r\n  \"ErrorSourceService\": \"\",\r\n  \"HttpHeaders\": \"{\\\"x-msft-approval-code\\\":\\\"aabb1234-5678-9012-abcd-ef0123456789\\\"}\"\r\n}"
  }
}

Extract the x-msft-approval-code value from the response. You need itSave the original HTTP method, URL, and request body with this value because you must resubmit the same request in Step 4 after the request is approved.approval.

Step 3: Wait for approval

Daily Intune.Admin.News

Get daily email updates

Get a concise summary of the latest Microsoft Intune updates delivered straight to your inbox.

Email signup will appear here once the Kit form is configured. Until then, use the daily RSS feed.