Hello Klaus Schweinzer,
When you switch to application permissions, the behavior changes because there is no signed-in user. That means the /me endpoint will not work. Instead, you need to target the specific user’s calendar by using their user object ID (GUID) or email (UPN), for example:
POST https://graph.microsoft.com/v1.0/users/{user-id-or-email}/calendars/{calendar-id}/events
To authenticate, you’ll need an app-only token using the client credentials flow. You can get this in Postman:
POST https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token
grant_type: client_credentials
client_id: {app-id}
client_secret: {secret}
scope: https://graph.microsoft.com/.default
Use this returned access_token for creating calendar event request like this:
POST https://graph.microsoft.com/v1.0/users/{user-id-or-email}/calendars/{calendar-id}/events
{
"subject": "Test Event",
"body": {
"contentType": "HTML",
"content": "Event created with app permissions"
},
"start": {
"dateTime": "2025-11-21T10:00:00",
"timeZone": "Pacific Standard Time"
},
"end": {
"dateTime": "2025-11-21T11:00:00",
"timeZone": "Pacific Standard Time"
}
}
Make sure your app has Calendars.ReadWrite (Application) permissions with admin consent.
Important note: This works only for work/school (Microsoft 365) accounts. App-only calls cannot create events in personal Outlook.com mailboxes, as those require a signed-in user.
Graph Explorer cannot be used for app-only scenarios, since it only works with delegated permissions. Postman or your own script is the right tool for testing app-only calls.
Hope this helps! Let us know if any further queries.
If this answers your query, do click Accept Answer and Yes for was this answer helpful, which may help members with similar questions.