Microsoft Teams meeting creation and attendance tracking using Microsoft Graph API.

M Neha 0 Reputation points
2026-01-08T09:03:32.1733333+00:00

I am working on Microsoft Teams meeting creation and attendance tracking using Microsoft Graph API.

Currently, I am able to successfully create a Teams meeting via Graph (by creating a calendar event with IsOnlineMeeting = true and OnlineMeetingProvider = TeamsForBusiness). However, I am facing issues in the next part: retrieving the attendance report (who attended, who did not, join/leave times, etc.).

According to the Microsoft documentation, the attendance data is exposed via the meetingAttendanceReport and attendanceRecords APIs, which require an eventId and a meetingAttendanceReport-id. My challenges are:

  • How to reliably map a Teams meeting (from the join link / meeting invite) to the corresponding calendar event eventId.

After the meeting ends, how to correctly retrieve the meetingAttendanceReport-id for that event and then list the attendanceRecords.

Before proceeding further, I wanted to confirm:

Whether this is the right approach for our scenario, or if there is an internal/recommended pattern already being used.

If there are any specific permissions, policies, or constraints from Microsoft’s side that I should be aware of when accessing Teams attendance via Graph.

If there is someone on the Microsoft side (or any internal doc/sample) you would recommend I refer to for this use case.

Once this is clear, I can implement a proper, reusable flow to:

Create meetings programmatically.

Store the relevant IDs.

Pull and process attendance data automatically.

Please let me know how you would like me to proceed or if you can connect me to the appropriate contact for this.

Thanks and regards,

Microsoft Teams | Development
Microsoft Teams | Development

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


2 answers

Sort by: Most helpful
  1. Steven-N 25,315 Reputation points Microsoft External Staff Moderator
    2026-01-08T11:05:35.5366667+00:00

    Hi M Neha

    Thank you for reaching out to Microsoft Q&A

    Based on your description, I understand that you're successfully creating Microsoft Teams meetings via Microsoft Graph by setting IsOnlineMeeting = true and OnlineMeetingProvider = TeamsForBusiness, but you're encountering challenges retrieving the attendance report, specifically mapping the join link to the calendar event ID and accessing the meetingAttendanceReport-id and attendanceRecords after the meeting ends.

    From my observe, this behavior arises because the Graph API separates calendar events and online meetings into distinct objects. While the calendar event contains metadata like the join link, the attendance report is tied to the onlineMeeting object, which has its own unique ID. The join link alone cannot be used to directly retrieve the event or attendance report unless you query the onlineMeeting endpoint with a filter on JoinWebUrl.

    Therefore, in this context, you can follow the below instructions:

    When creating the meeting, store both the calendar eventId and the onlineMeeting ID returned in the response. After the meeting ends, use the onlineMeeting ID to list meetingAttendanceReports:

    GET /users/{userId}/onlineMeetings/{meetingId}/attendanceReports
    

    Next step, you can retrieve the attendanceRecords using:

    GET /users/{userId}/onlineMeetings/{meetingId}/attendanceReports/{reportId}/attendanceRecords
    

    At the last step, kindly ensure your app has the OnlineMeetingArtifact.Read.All permission and that an application access policy is configured if using app-only authentication.

    Link references:

    List attendanceRecords

    Get meetingAttendanceReport

    Create or set an event as an online meeting in an Outlook calendar

    Configure application access to online meetings or virtual events

    You can try the above approach, if the problem still persists, kindly let me know in the comments for further support.

    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-01-08T09:03:45.35+00:00

    To retrieve the attendance report for a Microsoft Teams meeting using the Microsoft Graph API, you can follow these steps:

    1. Mapping Teams Meeting to Calendar Event: When you create a Teams meeting, you can store the eventId returned from the calendar event creation. This eventId is crucial for later retrieval of the attendance report. Ensure that you save this ID in your application, as it will be used to fetch the attendance data after the meeting concludes.
    2. Retrieving the Meeting Attendance Report: After the meeting ends, you can retrieve the meetingAttendanceReport-id using the meetingAttendanceReport API. You will need to make a request to the endpoint that corresponds to the eventId of the meeting. The response will include the meetingAttendanceReport-id which you can then use to fetch the attendance records.
    3. Fetching Attendance Records: Once you have the meetingAttendanceReport-id, you can call the attendanceRecords API to get detailed information about who attended the meeting, including join and leave times.

    Permissions and Constraints

    • Ensure that your application has the necessary permissions to access Teams meeting data. You may need permissions such as OnlineMeetings.Read, OnlineMeetings.ReadWrite, or similar depending on your specific use case.
    • Be aware of any organizational policies regarding data access and privacy, as these may affect your ability to retrieve attendance data.

    If you need further assistance or specific examples, consider reaching out to Microsoft support or checking their developer forums for additional insights and best practices related to your scenario.


    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.