Graph API - Difference in Calendar events between users

Ben Mercer 25 Reputation points
2025-09-08T14:09:51.47+00:00

Hi All,

I have a .NET 3.1 WebApp running an Application Permission Graph API instance.

I have noticed some discrepancies when using the .Calendar.CalendarView and .Events extensions.

I have found that some events, that should be returned, aren't returned by the API.

This is my C# code that I use:

ICalendarCalendarViewCollectionPage response = await _graphClient.Users[userId]

    .Calendar

    .CalendarView

    .Request(new List<QueryOption>

    {

        new QueryOption("startDateTime", startDate.ToString("yyyy-MM-ddTHH:mm:ssZ")),

        new QueryOption("endDateTime", endDate.ToString("yyyy-MM-ddTHH:mm:ssZ"))

    })

    .Header("Prefer", "outlook.timezone=\"Europe/London\"")

    .GetAsync();

Where startDate is a Monday, and endDate is a Sunday.

The UserId is definitely correct as it does return some correct events.

For example, I and another colleague are booked onto a Recurring Teams Meeting. Neither of us are the organiser but the organiser does exist in the tenant. When I call the code block above, the meeting IS CORRECTLY returned from that call in the response. But instead, if I switched the UserId to my Colleague's UserId, it won't return that meeting from the API.

The meeting DOES show on both of our calendars on Outlook Old & New.

I use the old version of outlook, and he uses the new version of outlook FYI.

I'd also like to note that some recurring meetings do show up on the faulty user's Calendar View, just certain ones do not, so I'm pretty sure that the fact that the event is recurring doesn't matter.

Does anyone have any insight into this? Thanks

Microsoft 365 and Office | Development | Other
0 comments No comments

Answer accepted by question author
Hin-V 16,830 Reputation points Microsoft External Staff Moderator
2025-09-08T14:57:49.4133333+00:00

Hi @Ben Mercer

Thank you for posting your question in Microsoft Q&A. 

As my research, this could be caused by following: 

1. User Time Zone and API Time Zone Mismatch 

The issue might be related to a time zone mismatch. The Graph API's calendarView endpoint is particularly sensitive to time zones. If the user's mailbox time zone and the time zone used in your query don't align perfectly, certain recurring events might not be expanded correctly. 

2.Synchronization issues between Outlook and Graph API 

Outlook displays events from a combination of server data and local caching, while the Graph API queries the server-side Exchange store directly. Events might appear in your colleague's new Outlook due to local sync, but if there's a delay or incomplete propagation ( network issues or app bugs), the API won't see them 

3.Permissions and Application Context Limitations 

Your app uses application permissions ( Calendars.Read.All), which allow tenant-wide access but require proper admin consent. If consent is incomplete for your colleague's account or if their calendar has privacy settings (such as events marked private), the API might restrict returns 

4.Attendee Response Status and Event Copy Differences 

For shared events like Teams meetings, the API queries each user's individual event copy, which includes a responseStatus (such as: "accepted," "tentative," or "none"). If your colleague's status is "tentative" (common if the organizer didn't require responses or if they haven't explicitly accepted), the API might filter it out in CalendarView queries, even if Outlook displays it. 

This summary is based on my findings from the community and several relevant threads. However, it may not accurately reflect the behavior in question. To help you reach your goal more effectively, I recommend posting a thread on the Microsoft Tech Community forum. It’s a great platform for deeper technical discussions and connecting with individuals who have hands-on experience and expertise. They’re best positioned to provide guidance and valuable insights on this topic.   

Apologies for redirecting you to the related development team support as the moderators in this community have limited resources to check the backend information, and to get the fast and better assistance we requested for it.  

If you have any additional concern, feel free to comment below. I be more than happy to assist.  


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.

0 additional answers

Sort by: Most 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.