I am trying to add calendar event using Microsoft graph API in python. However I am getting
{'error': {'code': 'ErrorInvalidUser', 'message': "The requested user '[email protected]' is invalid."}}
Below is the code I am using:
def get_access_token(tenant_id, client_id, client_secret):
url = f"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token"
headers = {
"Content-Type": "application/x-www-form-urlencoded",
}
data = {
"grant_type": "client_credentials",
"client_id": client_id,
"client_secret": client_secret,
"scope": "https://graph.microsoft.com/.default",
}
response = requests.post(url, headers=headers, data=data)
access_token = response.json().get("access_token")
return access_token
def create_event(access_token, user_id):
url = f"https://graph.microsoft.com/v1.0/users/{user_id}/events"
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json",
}
data = {
"subject": f"{event_date['Event']}",
"start": {
"dateTime": f"{event_date['Date']}",
"timeZone": "Indian Standard Time",
},
"end": {
"dateTime": f"{event_date['Date']}",
"timeZone": "Indian Standard Time",
},
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
I have registered my application in Azure Entra ID (Active Directory). Allowed below API permissions:
My account is registered in Azure Active Directory as Guest user type. I have also assigned the application to this user ID.
Is there anything I am missing? Please let me know. Thank you

You are using client credentials flow which requires application permissions, not delegated.
Try to add application permission
Calendars.ReadWrite. Delegated permissions can be removed.Additionally, check this article. There can be a company policy that blocks access to some (or all) mailboxes and requires to create a new ApplicationAccessPolicy to be able to access/modify those mailboxes.