Share via

Creating a subscription gives ValidationError: The request is invalid due to validation error

Wocademy We-Ace 0 Reputation points
2026-03-05T08:29:58.63+00:00

Hi,

I'm developing a module which will capture the attendance of users joined on teams meeting link. I'm getting validation error while creating subscription using MSGraphAPI.

Please suggest what is missed at my end or needs update.

Subscription API body:

{
  "changeType": "updated",
  "notificationUrl": "piirmoved",
  "resource": "communications/onlineMeetings/id_of_meeting/meetingAttendanceReport/attendanceRecords",
  "expirationDateTime": "2026-03-07T08:11:52.473Z",
  "clientState": "ATTENDANCE_STATE"
}

I currently receiving:

Graph subscription creation failed (HTTP 400): The request is invalid due to validation error.. Resource: communications/onlineMeetings/id_of_meeting/meetingAttendanceReport/attendanceRecords. 
Graph error body:
  "error": {
    "code": "ValidationError",
    "message": "The request is invalid due to validation error.",
    "innerError": {
      "date": "2026-03-05T08:11:50",
      "request-id": "piiremoved",
      "client-request-id": "piiremoved"
    }
  }
}

as a response.

Microsoft Teams | Development
Microsoft Teams | Development

Building, integrating, or customizing apps and workflows within Microsoft Teams using developer tools and APIs

0 comments No comments

2 answers

Sort by: Most helpful
  1. Steven-N 25,305 Reputation points Microsoft External Staff Moderator
    2026-03-05T10:07:46.46+00:00

    Please note that our forum is a public platform, and we will modify your question to hide your personal information in the description. Kindly ensure that you hide any personal or organizational information the next time you post an error or other details to protect personal data.

    Hi Wocademy We-Ace

    Thank you for reaching out to Microsoft Q&A forum

    As the information states in the official list of supported resources for Microsoft Graph change notifications, meeting attendance reports and attendance records are NOT supported for subscriptions/webhooks. This is why you're getting the ValidationError.

    Since you can't subscribe to attendance changes, you can try the alternative option Subscribe to Meeting Call Events + Poll for Attendance Report below:

    Subscribe to meetingCallEvents to know when the meeting ends:

    {
      "changeType": "created,updated",
      "notificationUrl": "your webhook URL",
      "resource": "communications/onlineMeetings(joinWebUrl='{encodedJoinWebUrl}')/meetingCallEvents",
      "expirationDateTime": "2026-03-06T08:11:52.473Z",
      "clientState": "ATTENDANCE_STATE"
    }
    

    When you receive a callEnded event, call the attendance report API directly:

    GET /me/onlineMeetings/{meetingId}/attendanceReports
    GET /me/onlineMeetings/{meetingId}/attendanceReports/{reportId}/attendanceRecords
    

    Required Permissions: OnlineMeetingArtifact.Read.All

    Hope my answer will help you.


    If the answer is helpful, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".   

    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.  

    Was this answer helpful?

    1 person found this answer helpful.

  2. AI answer

    2026-03-05T08:30:12.2366667+00:00

    The subscription request is failing validation because the resource path is not one of the supported values for Microsoft Graph change notifications.

    For online meetings and related artifacts, the supported resource values for subscriptions include:

    • communications/onlineMeetings/getAllRecordings
    • communications/onlineMeetings/{onlineMeetingId}/recordings
    • users/{userId}/onlineMeetings/getAllRecordings
    • communications/onlineMeetings/getAllTranscripts
    • communications/onlineMeetings/{onlineMeetingId}/transcripts
    • users/{userId}/onlineMeetings/getAllTranscripts

    There is no supported subscription resource of the form:

    communications/onlineMeetings/{id}/meetingAttendanceReport/attendanceRecords
    

    Because meetingAttendanceReport/attendanceRecords is not in the supported list, the platform rejects the request with ValidationError.

    To proceed:

    1. Use only supported resource values when creating subscriptions (for example, one of the onlineMeetings recording or transcript resources listed above, or other resources from the supported table such as chats/{id}/messages, teams/{id}/channels/{id}/messages, users, me/events, etc.).
    2. If attendance data is required, retrieve it using the appropriate Graph APIs for meeting attendance rather than via change notifications, because subscriptions for attendance records are not supported.
    3. Ensure the rest of the subscription request follows the documented pattern:
      • changeType set to a supported value for that resource (for example, created, updated, deleted as applicable).
      • notificationUrl that passes the validation handshake (HTTP 200, text/plain, echoing the validation token) as described in the webhook documentation.
      • expirationDateTime within the allowed window for the chosen resource.

    Once the resource is changed to a supported value, the ValidationError should no longer occur, assuming the notification endpoint validation also succeeds.


    References:

    AI-generated content may be incorrect. Read our transparency notes for more information.

    Was this answer helpful?

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.