Microsoft Outlook
App · Email · 54 actions · 1 trigger
Send and manage email, calendars and contacts in Microsoft Outlook.
Triggers
Start a workflow when something happens in Microsoft Outlook. See how triggers work.
New Outlook email
Triggers when a new email arrives in a folder of an Outlook mailbox - the inbox unless you choose another - optionally only from one sender or domain. Runs once for each email, with its text.
Filters
Narrow which events start a run.
mailboxRequired- The mailbox to watch: a user's email address in the Microsoft 365 tenant the app was consented in.
sender- Only emails from this address, or from a whole domain written as @example.com. Leave blank for every new email.
folder- The folder to watch: a folder ID or a well-known name such as inbox, junkemail or archive. Leave blank for the inbox.
Event fields
What a run starts with. Later steps read each field with an @ reference.
message_idtextmailboxtextfoldertextconversation_idtextfromtextfrom_addresstextfrom_nametexttotextcctextsubjecttextreceived_attextbodytextsnippettexthas_attachmentstrue/falseis_readtrue/falsecategorieslistweb_linktext
Actions
| Action | What it does |
|---|---|
| Add attachment | Attach one or more files to an existing draft message. |
| Add large attachment | Attach a file between 3 MB and 150 MB to a draft using an upload session. |
| Cancel event | Cancel a meeting you organise and send a cancellation notice to every attendee. |
| Copy message | Copy a message into another folder. |
| Create category | Add a category to a mailbox's master list so it can be applied to messages, events and contacts. |
| Create contact | Create a contact in a mailbox's Contacts folder. |
| Create draft | Create a draft email without sending it. |
| Create event | Create a calendar event and invite attendees, optionally as a Microsoft Teams online meeting. |
| Create inbox rule | Create an inbox rule that acts on incoming mail. |
| Create mail folder | Create a mail folder at the top level of a mailbox or inside another folder. |
| Create search folder | Create a virtual folder that always holds the messages matching a filter. |
| Delete category | Remove a category from a mailbox's master list. |
| Delete contact | Delete a contact from a mailbox. |
| Delete event | Delete a calendar event. |
| Delete Focused Inbox override | Remove a Focused Inbox override from this mailbox. |
| Delete inbox rule | Delete an inbox rule. |
| Delete mail folder | Delete a mail folder and everything inside it. |
| Delete message | Delete a message. |
| Find meeting times | Ask Microsoft Graph to suggest meeting times based on attendee availability. |
| Forward event | Forward a meeting invitation to additional recipients. |
| Forward message | Forward a message to one or more new recipients. |
| Get attachment | Fetch one attachment, including its base64 content for file attachments. |
| Get contact | Read a single contact. |
| Get event | Read a single calendar event. |
| Get free/busy schedule | Get free/busy availability for a set of users, distribution lists or room resources over a time range. |
| Get mail tips | Check recipients before sending: whether they have an out-of-office reply on, a full mailbox, or a message size limit. |
| Get mailbox settings | Read a mailbox's settings: automatic replies, time zone, language, date and time format, and working hours. |
| Get message | Read a single message including its full body. |
| Get message trace details | Get the per-hop delivery events for one traced message and recipient: where it was received, what was applied, and whether it was delivered. |
| List attachments | List the attachments on a message, without their content. |
| List calendars | List the calendars in a mailbox. |
| List categories | List the categories defined in a mailbox's master list. |
| List contact folders | List the contact folders in a mailbox. |
| List contacts | List a mailbox's contacts, optionally within one contact folder or matching a search or filter. |
| List events | List calendar events. |
| List Focused Inbox overrides | List the senders pinned to Focused or Other for this mailbox. |
| List inbox rules | List the inbox rules defined for a mailbox. |
| List mail folders | List a mailbox's mail folders, or the child folders of one folder. |
| List message traces | Trace what Exchange Online did with messages: delivered, failed, quarantined or filtered as spam. |
| List messages | List messages in a mailbox, optionally limited to one folder, to unread messages, or to a search or filter expression. |
| List room lists | List the room lists (building or floor groupings) defined in the tenant. |
| List rooms | List bookable meeting rooms, tenant-wide or within one room list. |
| List users | List the mailboxes in the tenant. |
| Move message | Move a message to another folder. |
| Reply all to message | Reply to every recipient of a message. |
| Reply to message | Reply to the sender of a message. |
| Respond to event | Accept, tentatively accept, or decline a meeting invitation as the invitee. |
| Send draft | Send a draft that was created earlier. |
| Send email | Send an email through Microsoft Outlook. |
| Set automatic replies | Turn out-of-office automatic replies on, off, or on for a scheduled date range. |
| Set Focused Inbox override | Always classify a sender's mail as Focused or as Other for this mailbox. |
| Update contact | Update a contact. |
| Update event | Update a calendar event. |
| Update message | Update a message: mark it read or unread, change its subject, importance, categories or follow-up flag. |
Add attachment
Attach one or more files to an existing draft message.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Message ID
message_idtextRequired - The ID of the message.
- Attachments
attachmentslistRequired - Files to attach. Upload a file or reference a document (or list of documents) from an earlier step. Microsoft Graph limits an attachment sent in a single request to under 3 MB; use Add large attachment for a larger file.
Outputs
attachmentslist- The attachments that were created.
countnumber- Number attached.
message_idtext- Draft message ID.
Example output
{
"attachments": [
{
"id": "AAMkAGI2TG93AAA=",
"name": "q3-notes.pdf",
"size": 84213
}
],
"count": 1,
"message_id": "AAMkAGI2NGVhZTIyLTAzYzUt"
}Add large attachment
Attach a file between 3 MB and 150 MB to a draft using an upload session. Use Add attachment for anything smaller. Note that Exchange Online's default message size limit is 35 MB unless an administrator has raised it.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Message ID
message_idtextRequired - The ID of the message.
- Attachment
attachmentlistRequired - The file to attach. Upload a file or reference a document from an earlier step.
Outputs
attachment_idtext- ID of the created attachment.
message_idtext- Draft ID.
nametext- File name.
sizenumber- Size in bytes.
Example output
{
"attachment_id": "AAMkAGI2TG93AAB=",
"message_id": "AAMkAGI2NGVhZTIyLTAzYzUt",
"name": "quarterly-deck.pdf",
"size": 18874368
}Cancel event
Cancel a meeting you organise and send a cancellation notice to every attendee. Cancelling also removes the meeting from your own calendar, so there is no need to delete it afterwards; a Delete event step on the same ID will fail with not found.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Event ID
event_idtextRequired - The ID of the calendar event.
- Comment
commenttext - Optional message to include.
Outputs
statustext- Operation status.
Example output
{
"event_id": "AAMkAGViNDU3ZDI4LTZmNzMt",
"status": "cancelled"
}Copy message
Copy a message into another folder. The copy gets its own ID, which is returned; the original keeps its ID.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Message ID
message_idtextRequired - The ID of the message.
- Destination folder ID
destination_folder_idtextRequired - Destination folder. Accepts a folder ID or a well-known name: inbox, drafts, sentitems, deleteditems, junkemail or archive.
Outputs
bodyPreviewtext- First 255 characters.
fromobject- Sender recipient object.
hasAttachmentstrue/false- Attachment present.
idtext- Message ID.
isReadtrue/false- Whether it has been read.
receivedDateTimetext- ISO 8601 timestamp.
subjecttext- Message subject.
webLinktext- Open in Outlook on the web.
Example output
{
"bodyPreview": "Here are the notes from this morning's planning session...",
"from": {
"emailAddress": {
"address": "alexw@contoso.com",
"name": "Alex Wilbur"
}
},
"hasAttachments": true,
"id": "AAMkAGI2NGVhZTIyLTAzYzUt",
"isRead": false,
"receivedDateTime": "2026-09-18T14:02:11Z",
"subject": "Q3 planning notes",
"webLink": "https://outlook.office365.com/owa/?ItemID=AAMkAGI2NGVhZTIy"
}Create category
Add a category to a mailbox's master list so it can be applied to messages, events and contacts.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Display name
display_nametextRequired - Category name. Must be unique in the mailbox and cannot be changed afterwards.
- Color
colortext - One of Outlook's 25 preset colours ('preset0' is red, 'preset4' green, 'preset7' blue), or 'none'.
Outputs
colortext- Preset colour.
displayNametext- Category name.
idtext- Category ID.
Example output
{
"color": "preset0",
"displayName": "Needs follow-up",
"id": "5a9a6aa8-b65f-4357-b1f9-60c6bf6330d8"
}Create contact
Create a contact in a mailbox's Contacts folder.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Given name
given_nametext - First name.
- Surname
surnametext - Last name.
- Display name
display_nametext - Name the contact is shown under. Outlook may regenerate this from other fields on later updates.
- Email addresses
email_addresseslist - Email addresses for the contact.
- Business phones
business_phoneslist - Business phone numbers.
- Mobile phone
mobile_phonetext - Mobile phone number.
- Job title
job_titletext - Job title.
- Company name
company_nametext - Company name.
- Department
departmenttext - Department.
- Office location
office_locationtext - Office location.
- Personal notes
personal_notestext - Free-text notes about the contact.
- Categories
categorieslist - Categories to assign. Each must already exist in the mailbox's category list.
- Folder ID
folder_idtext - Contact folder to create in. Leave blank for the default Contacts folder.
Outputs
businessPhoneslist- Business phone numbers.
companyNametext- Company name.
displayNametext- Contact display name.
emailAddresseslist- Email addresses.
idtext- Contact ID.
jobTitletext- Job title.
Example output
{
"businessPhones": [
"+1 425 555 0109"
],
"companyName": "Contoso",
"displayName": "Dana Swope",
"emailAddresses": [
{
"address": "danas@contoso.com",
"name": "Dana Swope"
}
],
"id": "AAMkAGE1Mjc1YmUwLTIzZjQt",
"jobTitle": "Operations Lead"
}Create draft
Create a draft email without sending it. Send it later with Send draft. Set 'Reply to message' to draft a reply in that message's conversation, with the original quoted below.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Subject
subjecttext - Subject of the draft. Required unless 'Reply to message' is set, when leaving it blank reuses that message's subject.
- Body
bodytext - Plain text body content of the draft.
- HTML body
html_bodytext - Formatted (HTML) version of the body. If provided, it is used instead of the plain text body.
- To
totext - Comma-separated list of recipient email addresses. A reply left blank goes to the original's sender.
- CC
cctext - Comma-separated list of Cc recipients.
- BCC
bcctext - Comma-separated list of Bcc recipients.
- Importance
importancetext - Importance of the item.One of:
low,normal,high. - Attachments
attachmentslist - Files to attach. Upload a file or reference a document (or list of documents) from an earlier step. Microsoft Graph limits an attachment sent in a single request to under 3 MB; for a larger file, create a draft and use Add large attachment.
- Reply to message
reply_to_message_idtext - The ID of a message to draft a reply to. The draft is saved in that message's conversation and threads with it when sent. Leave blank for a new email.
Outputs
bodyPreviewtext- First 255 characters.
fromobject- Sender recipient object.
hasAttachmentstrue/false- Attachment present.
idtext- Message ID.
isReadtrue/false- Whether it has been read.
receivedDateTimetext- ISO 8601 timestamp.
subjecttext- Message subject.
webLinktext- Open in Outlook on the web.
Example output
{
"bodyPreview": "Here are the notes from this morning's planning session...",
"from": {
"emailAddress": {
"address": "alexw@contoso.com",
"name": "Alex Wilbur"
}
},
"hasAttachments": true,
"id": "AAMkAGI2NGVhZTIyLTAzYzUt",
"isDraft": true,
"isRead": false,
"receivedDateTime": "2026-09-18T14:02:11Z",
"subject": "Q3 planning notes",
"webLink": "https://outlook.office365.com/owa/?ItemID=AAMkAGI2NGVhZTIy"
}Create event
Create a calendar event and invite attendees, optionally as a Microsoft Teams online meeting.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Subject
subjecttextRequired - Title of the event.
- Start date time
start_date_timedate and timeRequired - When the event starts.
- End date time
end_date_timedate and timeRequired - When the event ends.
- Time zone
time_zonetext - Time zone for the supplied times, in Windows or IANA format, for example 'Pacific Standard Time' or 'America/Los_Angeles'. Defaults to UTC.
- Calendar ID
calendar_idtext - Calendar to create in. Leave blank for the default.
- Body
bodytext - Plain text description of the event.
- HTML body
html_bodytext - Formatted (HTML) version of the body. If provided, it is used instead of the plain text body.
- Location
locationtext - Where the event takes place.
- Attendees
attendeestext - Comma-separated addresses of required attendees.
- Optional attendees
optional_attendeestext - Comma-separated addresses of optional attendees.
- Is all day
is_all_daytrue/false - All-day event. Start and end must be midnight in the same time zone.Default:
false. - Is online meeting
is_online_meetingtrue/false - Create a Microsoft Teams meeting and include the join link. Cannot be turned off again afterwards.Default:
false. - Reminder minutes before start
reminder_minutes_before_startnumber - Minutes before the start to show a reminder.At least 0.
- Show as
show_astext - How the time appears to others.One of:
free,tentative,busy,oof(Out of office),workingElsewhere(Working elsewhere). - Importance
importancetext - Importance of the item.One of:
low,normal,high. - Sensitivity
sensitivitytext - Privacy level of the event.One of:
normal,personal,private,confidential. - Categories
categorieslist - Categories to assign. Each must already exist in the mailbox's category list.
Outputs
attendeeslist- Attendee list.
endobject- End dateTimeTimeZone.
idtext- Event ID.
locationobject- Event location.
onlineMeetingobject- Join information.
startobject- Start dateTimeTimeZone.
subjecttext- Event subject.
webLinktext- Open in Outlook on the web.
Example output
{
"attendees": [
{
"emailAddress": {
"address": "alexw@contoso.com",
"name": "Alex Wilbur"
},
"type": "required"
}
],
"end": {
"dateTime": "2026-09-22T16:00:00.0000000",
"timeZone": "UTC"
},
"id": "AAMkAGViNDU3ZDI4LTZmNzMt",
"location": {
"displayName": "Conference room 3"
},
"onlineMeeting": {
"joinUrl": "https://teams.microsoft.com/l/meetup-join/19%3a..."
},
"start": {
"dateTime": "2026-09-22T15:00:00.0000000",
"timeZone": "UTC"
},
"subject": "Q3 planning",
"webLink": "https://outlook.office365.com/calendar/item/AAMkAGViNDU3ZDI4"
}Create inbox rule
Create an inbox rule that acts on incoming mail. Supply at least one action; conditions are optional and are combined with AND.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Display name
display_nametextRequired - Name for the rule.
- Sequence
sequencenumber - Order this rule runs in, relative to other rules.At least 1. Default:
1. - Is enabled
is_enabledtrue/false - Whether the rule is active once created.Default:
true. - Sender contains
sender_containslist - Match when the sender contains any of these strings.
- Subject contains
subject_containslist - Match when the subject contains any of these strings.
- Body contains
body_containslist - Match when the body contains any of these strings.
- Move to folder ID
move_to_folder_idtext - Move matching messages to this folder.
- Forward to
forward_totext - Comma-separated addresses to forward matches to.
- Mark as read
mark_as_readtrue/false - Mark matching messages as read.Default:
false. - Mark importance
mark_importancetext - Set the importance of matching messages.One of:
low,normal,high. - Delete message
delete_messagetrue/false - Move matching messages to Deleted Items.Default:
false. - Stop processing rules
stop_processing_rulestrue/false - Stop evaluating later rules once this one matches.Default:
false.
Outputs
actionsobject- Rule actions.
conditionsobject- Rule conditions.
displayNametext- Rule name.
idtext- Rule ID.
isEnabledtrue/false- Active state.
Example output
{
"actions": {
"moveToFolder": "AAMkAGI2AAAAAEMkAAB="
},
"conditions": {
"subjectContains": [
"invoice"
]
},
"displayName": "Invoices to Finance",
"id": "AQAAAJ5dZqA=",
"isEnabled": true
}Create mail folder
Create a mail folder at the top level of a mailbox or inside another folder. The name must be unique among the folders beside it; a duplicate fails with folder exists.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Display name
display_nametextRequired - Name for the new folder.
- Parent folder ID
parent_folder_idtext - Create the folder inside this one. Leave blank to create it at the top level.
Outputs
displayNametext- Folder name.
idtext- Folder ID.
parentFolderIdtext- Parent folder ID.
Example output
{
"displayName": "Invoices",
"id": "AAMkAGI2AAAAAEMkAAB=",
"parentFolderId": "AAMkAGI2AAAAAEMkAAA="
}Create search folder
Create a virtual folder that always holds the messages matching a filter. Exchange Online deletes a search folder after 45 days of no use and caps how many can exist per source folder, so treat one as a cache you can recreate rather than as durable storage.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Display name
display_nametextRequired - Name for the search folder.
- Filter query
filter_querytextRequired - OData $filter that selects the messages, for example "contains(subject, 'invoice')".
- Source folder IDS
source_folder_idslist - Folders to search. Defaults to the inbox. Accepts well-known names.
- Include nested folders
include_nested_folderstrue/false - Search child folders of each source folder too.Default:
true. - Parent folder ID
parent_folder_idtext - Where the folder is created. Defaults to 'searchfolders', which is where Outlook for Windows shows them.
Outputs
displayNametext- Folder name.
filterQuerytext- The filter the folder applies.
idtext- Folder ID.
sourceFolderIdslist- Folders being searched.
Example output
{
"displayName": "Unread invoices",
"filterQuery": "contains(subject, 'invoice')",
"id": "AAMkAGI2AAAAAEMkAAC=",
"sourceFolderIds": [
"inbox"
]
}Delete category
Remove a category from a mailbox's master list.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Category ID
category_idtextRequired - The ID of the category, from List categories.
Outputs
statustext- Operation status.
Example output
{
"category_id": "5a9a6aa8-b65f-4357-b1f9-60c6bf6330d8",
"status": "deleted"
}Delete contact
Delete a contact from a mailbox.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Contact ID
contact_idtextRequired - The ID of the contact.
Outputs
statustext- Operation status.
Example output
{
"contact_id": "AAMkAGE1Mjc1YmUwLTIzZjQt",
"status": "deleted"
}Delete event
Delete a calendar event. For a meeting you organise, use Cancel event instead so attendees are notified. After a meeting is cancelled it stays on each attendee's calendar, marked cancelled, until deleted: use this on the attendee's mailbox, with the event ID from their calendar, to clear it.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Event ID
event_idtextRequired - The ID of the calendar event.
Outputs
statustext- Operation status.
Example output
{
"event_id": "AAMkAGViNDU3ZDI4LTZmNzMt",
"status": "deleted"
}Delete Focused Inbox override
Remove a Focused Inbox override from this mailbox.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Override ID
override_idtextRequired - The ID of the override, from List Focused Inbox overrides.
Outputs
statustext- Operation status.
Example output
{
"override_id": "98f5bdef-576a-404d-a2ea-07a3cf11a9b9",
"status": "deleted"
}Delete inbox rule
Delete an inbox rule.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Rule ID
rule_idtextRequired - The ID of the rule, from List inbox rules.
Outputs
statustext- Operation status.
Example output
{
"rule_id": "AQAAAJ5dZqA=",
"status": "deleted"
}Delete mail folder
Delete a mail folder and everything inside it.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Folder ID
folder_idtextRequired - The folder to delete.
Outputs
statustext- Operation status.
Example output
{
"folder_id": "AAMkAGI2AAAAAEMkAAB=",
"status": "deleted"
}Delete message
Delete a message. It goes to the mailbox's hidden Recoverable Items, not the Deleted Items folder: users can restore it with Recover deleted items in Outlook until the retention period ends (14 days by default). To put a message in Deleted Items instead, use Move message with the destination deleteditems.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Message ID
message_idtextRequired - The ID of the message.
Outputs
statustext- Operation status.
Example output
{
"message_id": "AAMkAGI2NGVhZTIyLTAzYzUt",
"status": "deleted"
}Find meeting times
Ask Microsoft Graph to suggest meeting times based on attendee availability.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Attendees
attendeeslistRequired - Addresses of the people who need to attend.
- Meeting duration minutes
meeting_duration_minutesnumber - How long the meeting needs to be, in minutes.At least 1. Default:
30. - Start date time
start_date_timedate and time - Earliest time to consider. Pair with an end time.
- End date time
end_date_timedate and time - Latest time to consider. Pair with a start time.
- Time zone
time_zonetext - Time zone for the supplied times, in Windows or IANA format, for example 'Pacific Standard Time' or 'America/Los_Angeles'. Defaults to UTC.
- Max candidates
max_candidatesnumber - Maximum number of suggestions to return.From 1 to 100. Default:
10. - Minimum attendee percentage
minimum_attendee_percentagenumber - Minimum percentage of attendees that must be free for a time to be suggested.From 0 to 100.
Outputs
emptySuggestionsReasontext- Why no times were suggested, when empty.
meetingTimeSuggestionslist- Suggested slots, most confident first.
Example output
{
"meetingTimeSuggestions": [
{
"confidence": 100.0,
"meetingTimeSlot": {
"end": {
"dateTime": "2026-09-23T15:30:00.0000000",
"timeZone": "UTC"
},
"start": {
"dateTime": "2026-09-23T15:00:00.0000000",
"timeZone": "UTC"
}
},
"organizerAvailability": "free"
}
]
}Forward event
Forward a meeting invitation to additional recipients.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Event ID
event_idtextRequired - The ID of the calendar event.
- To
totextRequired - Comma-separated list of recipient email addresses.
- Comment
commenttext - Optional message to include.
Outputs
statustext- Operation status.
Example output
{
"event_id": "AAMkAGViNDU3ZDI4LTZmNzMt",
"status": "forwarded"
}Forward message
Forward a message to one or more new recipients. Success means Exchange accepted the message, not that it was delivered: a delivery failure arrives later as a bounce in the sender's inbox, and List message traces shows what happened.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Message ID
message_idtextRequired - The ID of the message.
- To
totextRequired - Comma-separated list of recipient email addresses.
- Comment
commenttext - Optional message to include.
Outputs
statustext- Operation status.
Example output
{
"message_id": "AAMkAGI2NGVhZTIyLTAzYzUt",
"status": "sent"
}Get attachment
Fetch one attachment, including its base64 content for file attachments. Item and reference attachments return metadata only.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Message ID
message_idtextRequired - The ID of the message.
- Attachment ID
attachment_idtextRequired - The ID of the attachment, from List attachments.
Outputs
attachment_typetext- fileAttachment, itemAttachment or referenceAttachment.
content_bytestext- Base64 content, for file attachments only.
content_typetext- MIME type.
idtext- Attachment ID.
is_inlinetrue/false- Inline flag.
nametext- File name.
sizenumber- Size in bytes.
Example output
{
"attachment_type": "fileAttachment",
"content_bytes": "JVBERi0xLjQKJeLjz9MK",
"content_type": "application/pdf",
"id": "AAMkAGI2TG93AAA=",
"is_inline": false,
"name": "q3-notes.pdf",
"size": 84213
}Get contact
Read a single contact.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Contact ID
contact_idtextRequired - The ID of the contact.
Outputs
businessPhoneslist- Business phone numbers.
companyNametext- Company name.
displayNametext- Contact display name.
emailAddresseslist- Email addresses.
idtext- Contact ID.
jobTitletext- Job title.
Example output
{
"businessPhones": [
"+1 425 555 0109"
],
"companyName": "Contoso",
"displayName": "Dana Swope",
"emailAddresses": [
{
"address": "danas@contoso.com",
"name": "Dana Swope"
}
],
"id": "AAMkAGE1Mjc1YmUwLTIzZjQt",
"jobTitle": "Operations Lead"
}Get event
Read a single calendar event.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Event ID
event_idtextRequired - The ID of the calendar event.
- Time zone
time_zonetext - Time zone for the supplied times, in Windows or IANA format, for example 'Pacific Standard Time' or 'America/Los_Angeles'. Defaults to UTC.
Outputs
attendeeslist- Attendee list.
endobject- End dateTimeTimeZone.
idtext- Event ID.
locationobject- Event location.
onlineMeetingobject- Join information.
startobject- Start dateTimeTimeZone.
subjecttext- Event subject.
webLinktext- Open in Outlook on the web.
Example output
{
"attendees": [
{
"emailAddress": {
"address": "alexw@contoso.com",
"name": "Alex Wilbur"
},
"type": "required"
}
],
"end": {
"dateTime": "2026-09-22T16:00:00.0000000",
"timeZone": "UTC"
},
"id": "AAMkAGViNDU3ZDI4LTZmNzMt",
"location": {
"displayName": "Conference room 3"
},
"onlineMeeting": {
"joinUrl": "https://teams.microsoft.com/l/meetup-join/19%3a..."
},
"start": {
"dateTime": "2026-09-22T15:00:00.0000000",
"timeZone": "UTC"
},
"subject": "Q3 planning",
"webLink": "https://outlook.office365.com/calendar/item/AAMkAGViNDU3ZDI4"
}Get free/busy schedule
Get free/busy availability for a set of users, distribution lists or room resources over a time range.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Schedules
scheduleslistRequired - Addresses to check availability for.
- Start date time
start_date_timedate and timeRequired - Start of the window to check.
- End date time
end_date_timedate and timeRequired - End of the window to check.
- Time zone
time_zonetext - Time zone for the supplied times, in Windows or IANA format, for example 'Pacific Standard Time' or 'America/Los_Angeles'. Defaults to UTC.
- Availability view interval
availability_view_intervalnumber - Size of each availability slot, in minutes.From 5 to 1440. Default:
30.
Outputs
countnumber- Number returned.
scheduleslist- Availability per requested address.
Example output
{
"count": 1,
"schedules": [
{
"availabilityView": "000022000000",
"scheduleId": "alexw@contoso.com",
"scheduleItems": [
{
"end": {
"dateTime": "2026-09-22T16:00:00.0000000",
"timeZone": "UTC"
},
"start": {
"dateTime": "2026-09-22T15:00:00.0000000",
"timeZone": "UTC"
},
"status": "busy",
"subject": "Q3 planning"
}
]
}
]
}Get mail tips
Check recipients before sending: whether they have an out-of-office reply on, a full mailbox, or a message size limit.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Email addresses
email_addresseslistRequired - Recipient addresses to check.
- Mail tips options
mail_tips_optionslist - Which tips to request. Defaults to automatic replies and mailbox full status.One or more of:
automaticReplies(Automatic replies),mailboxFullStatus(Mailbox full),maxMessageSize(Max message size),deliveryRestriction(Delivery restriction),recipientScope(Recipient scope),moderationStatus(Moderation status),totalMemberCount(Total members),externalMemberCount(External members),customMailTip(Custom mail tip).
Outputs
countnumber- Number returned.
mail_tipslist- One entry per requested address.
Example output
{
"count": 1,
"mail_tips": [
{
"automaticReplies": {
"message": "I am on vacation right now."
},
"emailAddress": {
"address": "danas@contoso.com",
"name": ""
},
"mailboxFull": false
}
]
}Get mailbox settings
Read a mailbox's settings: automatic replies, time zone, language, date and time format, and working hours.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
Outputs
automaticRepliesSettingobject- Out-of-office configuration.
languageobject- Locale information.
timeZonetext- Mailbox time zone.
workingHoursobject- Working days and hours.
Example output
{
"automaticRepliesSetting": {
"externalAudience": "none",
"status": "disabled"
},
"language": {
"displayName": "English (United States)",
"locale": "en-US"
},
"timeZone": "Pacific Standard Time",
"workingHours": {
"daysOfWeek": [
"monday",
"tuesday",
"wednesday",
"thursday",
"friday"
],
"endTime": "17:00:00.0000000",
"startTime": "09:00:00.0000000"
}
}Get message
Read a single message including its full body.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Message ID
message_idtextRequired - The ID of the message.
- Body format
body_formattext - Convert the body to this format. Leave blank to keep the stored format.One of:
text(Plain text),html.
Outputs
bodyPreviewtext- First 255 characters.
fromobject- Sender recipient object.
hasAttachmentstrue/false- Attachment present.
idtext- Message ID.
isReadtrue/false- Whether it has been read.
receivedDateTimetext- ISO 8601 timestamp.
subjecttext- Message subject.
webLinktext- Open in Outlook on the web.
Example output
{
"bodyPreview": "Here are the notes from this morning's planning session...",
"from": {
"emailAddress": {
"address": "alexw@contoso.com",
"name": "Alex Wilbur"
}
},
"hasAttachments": true,
"id": "AAMkAGI2NGVhZTIyLTAzYzUt",
"isRead": false,
"receivedDateTime": "2026-09-18T14:02:11Z",
"subject": "Q3 planning notes",
"webLink": "https://outlook.office365.com/owa/?ItemID=AAMkAGI2NGVhZTIy"
}Get message trace details
Get the per-hop delivery events for one traced message and recipient: where it was received, what was applied, and whether it was delivered. Needs the same permission and service principal as List message traces.
Inputs
- Message trace ID
message_trace_idtextRequired - The trace ID, from List message traces.
- Recipient address
recipient_addresstextRequired - The recipient whose delivery path to show, from the trace's recipient address in List message traces.
Outputs
countnumber- Number returned.
eventslist- Delivery events in order.
Example output
{
"count": 2,
"events": [
{
"action": "",
"dateTime": "2026-09-17T10:30:05Z",
"description": "Message received by: MN2PR00MB0670.namprd00.prod.outlook.com",
"event": "Receive"
},
{
"action": "",
"dateTime": "2026-09-17T10:30:10Z",
"description": "The message was successfully delivered.",
"event": "Deliver"
}
]
}List attachments
List the attachments on a message, without their content.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Message ID
message_idtextRequired - The ID of the message.
Outputs
attachmentslist- Attachment metadata.
countnumber- Number returned.
Example output
{
"attachments": [
{
"contentType": "application/pdf",
"id": "AAMkAGI2TG93AAA=",
"isInline": false,
"name": "q3-notes.pdf",
"size": 84213
}
],
"count": 1
}List calendars
List the calendars in a mailbox.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Limit
limitnumber - Maximum number of results to return (1-500).From 1 to 500. Default:
25.
Outputs
calendarslist- The mailbox's calendars.
countnumber- Number returned.
Example output
{
"calendars": [
{
"canEdit": true,
"id": "AAMkAGViNDU3AAAuAAA=",
"isDefaultCalendar": true,
"name": "Calendar"
}
],
"count": 1
}List categories
List the categories defined in a mailbox's master list.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
Outputs
categorieslist- The mailbox's categories.
countnumber- Number returned.
Example output
{
"categories": [
{
"color": "preset0",
"displayName": "Needs follow-up",
"id": "5a9a6aa8-b65f-4357-b1f9-60c6bf6330d8"
}
],
"count": 1
}List contact folders
List the contact folders in a mailbox.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Limit
limitnumber - Maximum number of results to return (1-500).From 1 to 500. Default:
25.
Outputs
countnumber- Number returned.
folderslist- The contact folders.
Example output
{
"count": 1,
"folders": [
{
"displayName": "Suppliers",
"id": "AAMkAGE1Mjc1AAAuAAA="
}
]
}List contacts
List a mailbox's contacts, optionally within one contact folder or matching a search or filter.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Folder ID
folder_idtext - Contact folder to read. Leave blank for the default Contacts folder.
- Search
searchtext - Free-text search across the contact. Microsoft Graph cannot combine a search with a filter.
- Filter query
filter_querytext - OData $filter expression, for example "companyName eq 'Contoso'". With a filter, the limit applies before the results are sorted by name, so you get the first matches Exchange returns, sorted, rather than the alphabetically first matches.
- Limit
limitnumber - Maximum number of results to return (1-500).From 1 to 500. Default:
25.
Outputs
contactslist- The matching contacts.
countnumber- Number returned.
Example output
{
"contacts": [
{
"businessPhones": [
"+1 425 555 0109"
],
"companyName": "Contoso",
"displayName": "Dana Swope",
"emailAddresses": [
{
"address": "danas@contoso.com",
"name": "Dana Swope"
}
],
"id": "AAMkAGE1Mjc1YmUwLTIzZjQt",
"jobTitle": "Operations Lead"
}
],
"count": 1
}List events
List calendar events. Supplying a start and end returns the calendar view, which expands recurring series into individual occurrences; without a range, a recurring series appears once as its master.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Calendar ID
calendar_idtext - Calendar to read. Leave blank for the default calendar.
- Start date time
start_date_timedate and time - Start of the time range. Must be paired with an end.
- End date time
end_date_timedate and time - End of the time range. Must be paired with a start.
- Time zone
time_zonetext - Time zone for the supplied times, in Windows or IANA format, for example 'Pacific Standard Time' or 'America/Los_Angeles'. Defaults to UTC.
- Filter query
filter_querytext - OData $filter expression, for example "isCancelled eq false".
- Limit
limitnumber - Maximum number of results to return (1-500).From 1 to 500. Default:
25.
Outputs
countnumber- Number returned.
eventslist- The matching events.
Example output
{
"count": 1,
"events": [
{
"attendees": [
{
"emailAddress": {
"address": "alexw@contoso.com",
"name": "Alex Wilbur"
},
"type": "required"
}
],
"end": {
"dateTime": "2026-09-22T16:00:00.0000000",
"timeZone": "UTC"
},
"id": "AAMkAGViNDU3ZDI4LTZmNzMt",
"location": {
"displayName": "Conference room 3"
},
"onlineMeeting": {
"joinUrl": "https://teams.microsoft.com/l/meetup-join/19%3a..."
},
"start": {
"dateTime": "2026-09-22T15:00:00.0000000",
"timeZone": "UTC"
},
"subject": "Q3 planning",
"webLink": "https://outlook.office365.com/calendar/item/AAMkAGViNDU3ZDI4"
}
]
}List Focused Inbox overrides
List the senders pinned to Focused or Other for this mailbox.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
Outputs
countnumber- Number returned.
overrideslist- The mailbox's overrides.
Example output
{
"count": 1,
"overrides": [
{
"classifyAs": "focused",
"id": "98f5bdef-576a-404d-a2ea-07a3cf11a9b9",
"senderEmailAddress": {
"address": "samanthab@contoso.com",
"name": "Samantha Booth"
}
}
]
}List inbox rules
List the inbox rules defined for a mailbox.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
Outputs
countnumber- Number returned.
ruleslist- The inbox rules.
Example output
{
"count": 1,
"rules": [
{
"actions": {
"moveToFolder": "AAMkAGI2AAAAAEMkAAB="
},
"conditions": {
"subjectContains": [
"invoice"
]
},
"displayName": "Invoices to Finance",
"id": "AQAAAJ5dZqA=",
"isEnabled": true,
"sequence": 1
}
]
}List mail folders
List a mailbox's mail folders, or the child folders of one folder.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Parent folder ID
parent_folder_idtext - List the children of this folder instead of the top level. Leave blank for top-level folders.
- Include hidden
include_hiddentrue/false - Include folders marked hidden.Default:
false. - Limit
limitnumber - Maximum number of results to return (1-500).From 1 to 500. Default:
25.
Outputs
countnumber- Number returned.
folderslist- The mail folders.
Example output
{
"count": 1,
"folders": [
{
"displayName": "Inbox",
"id": "AAMkAGI2AAAAAEMkAAA=",
"totalItemCount": 412,
"unreadItemCount": 7
}
]
}List message traces
Trace what Exchange Online did with messages: delivered, failed, quarantined or filtered as spam. Tenant-wide rather than per-mailbox. Requires the optional ExchangeMessageTrace.Read.All permission and a service principal an administrator must provision. Throttled to 100 requests per 5 minutes, and available only in the global service. A newly sent message can take a few minutes to appear. For up to several hours after the service principal is created, calls can fail with service principal not found while it propagates.
Inputs
- Sender address
sender_addresstext - Only messages from this address.
- Recipient address
recipient_addresstext - Only messages to this address.
- Subject contains
subject_containstext - Only messages whose subject contains this text.
- Status
statustext - Only messages with this delivery status.One of:
delivered,pending,failed,quarantined,filteredAsSpam(Filtered as spam),expanded,gettingStatus(Getting status). - Start date time
start_date_timedate and time - Start of the window. Must be paired with an end, span at most 10 days, and start no more than 90 days ago.
- End date time
end_date_timedate and time - End of the window. Must be paired with a start.
- Limit
limitnumber - Maximum number of results to return (1-500).From 1 to 500. Default:
25.
Outputs
countnumber- Number returned.
traceslist- The matching message traces.
Example output
{
"count": 1,
"traces": [
{
"id": "4451a062-48cb-e80d-e8c0-196330437ae6",
"receivedDateTime": "2026-09-17T10:30:00Z",
"recipientAddress": "danas@contoso.com",
"senderAddress": "alexw@contoso.com",
"status": "delivered",
"subject": "Quarterly Report"
}
]
}List messages
List messages in a mailbox, optionally limited to one folder, to unread messages, or to a search or filter expression. Results come back newest first.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Folder ID
folder_idtext - Folder to read from. Accepts a folder ID or a well-known name: inbox, drafts, sentitems, deleteditems, junkemail or archive. Leave blank to search the whole mailbox.
- Search
searchtext - Free-text search across the message. Microsoft Graph cannot combine a search with a filter or with 'unread only'.
- Filter query
filter_querytext - OData $filter expression, for example "importance eq 'high'". Results are still sorted newest first, so the filter needs no $orderby.
- Unread only
unread_onlytrue/false - Return only unread messages.Default:
false. - Limit
limitnumber - Maximum number of results to return (1-500).From 1 to 500. Default:
25.
Outputs
countnumber- Number of messages returned.
messageslist- The matching messages.
Example output
{
"count": 1,
"messages": [
{
"bodyPreview": "Here are the notes from this morning's planning session...",
"from": {
"emailAddress": {
"address": "alexw@contoso.com",
"name": "Alex Wilbur"
}
},
"hasAttachments": true,
"id": "AAMkAGI2NGVhZTIyLTAzYzUt",
"isRead": false,
"receivedDateTime": "2026-09-18T14:02:11Z",
"subject": "Q3 planning notes",
"webLink": "https://outlook.office365.com/owa/?ItemID=AAMkAGI2NGVhZTIy"
}
]
}List room lists
List the room lists (building or floor groupings) defined in the tenant. Requires the optional Place.Read.All application permission.
Inputs
- Limit
limitnumber - Maximum number of results to return (1-500).From 1 to 500. Default:
25.
Outputs
countnumber- Number returned.
room_listslist- The tenant's room lists.
Example output
{
"count": 1,
"room_lists": [
{
"displayName": "Building 2 rooms",
"emailAddress": "building2rooms@contoso.com",
"id": "3162F1E1-C4C0-604B-51D8-91DA78989EB1"
}
]
}List rooms
List bookable meeting rooms, tenant-wide or within one room list. Requires the optional Place.Read.All application permission. A room is a mailbox, so pair this with Get free/busy schedule to check availability and Create event to book one.
Inputs
- Room list
room_listtext - SMTP address of a room list to search within. Leave blank for every room in the tenant.
- Limit
limitnumber - Maximum number of results to return (1-500).From 1 to 500. Default:
25.
Outputs
countnumber- Number returned.
roomslist- The matching rooms.
Example output
{
"count": 1,
"rooms": [
{
"building": "Building 2",
"capacity": 8,
"displayName": "Conf Room Rainier",
"emailAddress": "rainier@contoso.com",
"floorNumber": 3,
"id": "3162F1E1-C4C0-604B-51D8-91DA78989EB2"
}
]
}List users
List the mailboxes in the tenant. Requires the optional User.Read.All application permission; it is also what populates the mailbox picker on every other action.
Inputs
- Search
searchtext - Match against display name. Cannot be combined with a filter.
- Filter query
filter_querytext - OData $filter expression, for example "department eq 'Finance'".
- Limit
limitnumber - Maximum number of results to return (1-500).From 1 to 500. Default:
25.
Outputs
countnumber- Number returned.
userslist- The matching users.
Example output
{
"count": 1,
"users": [
{
"department": "Operations",
"displayName": "Alex Wilbur",
"id": "8ae6f565-0d7f-4ead-853e-7db94c912a1f",
"jobTitle": "Operations Lead",
"mail": "alexw@contoso.com",
"userPrincipalName": "alexw@contoso.com"
}
]
}Move message
Move a message to another folder. Microsoft Graph assigns the moved copy a new ID, which is returned.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Message ID
message_idtextRequired - The ID of the message.
- Destination folder ID
destination_folder_idtextRequired - Destination folder. Accepts a folder ID or a well-known name: inbox, drafts, sentitems, deleteditems, junkemail or archive.
Outputs
bodyPreviewtext- First 255 characters.
fromobject- Sender recipient object.
hasAttachmentstrue/false- Attachment present.
idtext- Message ID.
isReadtrue/false- Whether it has been read.
receivedDateTimetext- ISO 8601 timestamp.
subjecttext- Message subject.
webLinktext- Open in Outlook on the web.
Example output
{
"bodyPreview": "Here are the notes from this morning's planning session...",
"from": {
"emailAddress": {
"address": "alexw@contoso.com",
"name": "Alex Wilbur"
}
},
"hasAttachments": true,
"id": "AAMkAGI2NGVhZTIyLTAzYzUt",
"isRead": false,
"receivedDateTime": "2026-09-18T14:02:11Z",
"subject": "Q3 planning notes",
"webLink": "https://outlook.office365.com/owa/?ItemID=AAMkAGI2NGVhZTIy"
}Reply all to message
Reply to every recipient of a message. Success means Exchange accepted the message, not that it was delivered: a delivery failure arrives later as a bounce in the sender's inbox, and List message traces shows what happened.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Message ID
message_idtextRequired - The ID of the message.
- Comment
commenttext - Plain text to add above the quoted message.
- HTML body
html_bodytext - Formatted (HTML) version of the body. If provided, it is used instead of the plain text body.
Outputs
statustext- Operation status.
Example output
{
"message_id": "AAMkAGI2NGVhZTIyLTAzYzUt",
"status": "sent"
}Reply to message
Reply to the sender of a message. The reply is saved in Sent Items. Success means Exchange accepted the message, not that it was delivered: a delivery failure arrives later as a bounce in the sender's inbox, and List message traces shows what happened.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Message ID
message_idtextRequired - The ID of the message.
- Comment
commenttext - Plain text to add above the quoted message.
- HTML body
html_bodytext - Formatted (HTML) version of the body. If provided, it is used instead of the plain text body.
Outputs
statustext- Operation status.
Example output
{
"message_id": "AAMkAGI2NGVhZTIyLTAzYzUt",
"status": "sent"
}Respond to event
Accept, tentatively accept, or decline a meeting invitation as the invitee. The mailbox is the invitee's, and the event ID must come from their own calendar (List events on that mailbox); the organiser's ID for the same meeting will not work. A cancelled meeting cannot be responded to.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Event ID
event_idtextRequired - The ID of the calendar event.
- Response
responsetextRequired - How to respond to the invitation.One of:
accept,tentativelyAccept(Tentative),decline. - Comment
commenttext - Optional message to include.
- Send response
send_responsetrue/false - Send the reply to the organiser.Default:
true.
Outputs
statustext- Operation status.
Example output
{
"event_id": "AAMkAGViNDU3ZDI4LTZmNzMt",
"status": "accept"
}Send draft
Send a draft that was created earlier. The sent message gets a new ID in Sent Items, so the draft's ID stops working. Success means Exchange accepted the message, not that it was delivered: a delivery failure arrives later as a bounce in the sender's inbox, and List message traces shows what happened.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Message ID
message_idtextRequired - The ID of the message.
Outputs
statustext- Operation status.
Example output
{
"message_id": "AAMkAGI2NGVhZTIyLTAzYzUt",
"status": "sent"
}Send email
Send an email through Microsoft Outlook. Success means Exchange accepted the message, not that it was delivered: a delivery failure arrives later as a bounce in the sender's inbox, and List message traces shows what happened.
Inputs
- Sender
sendertextRequired - The sender's email address or Microsoft sign-in name. Like the mailbox on other actions, it has to be a mailbox in the Microsoft 365 tenant the app was consented in.
- To
totextRequired - Comma-separated list of recipient email addresses.
- Subject
subjecttextRequired - Subject of the email.
- Body
bodytextRequired - Plain text body content of the email.
- HTML body
html_bodytext - Formatted (HTML) version of the email body. If provided, it is used instead of the plain text body.
- Attachments
attachmentslist - Files to attach. Upload a file or reference a document (or list of documents) from an earlier step. Microsoft Graph limits an attachment sent in a single request to under 3 MB; for a larger file, create a draft and use Add large attachment.
- CC
cctext - Comma-separated list of Cc recipients.
- BCC
bcctext - Comma-separated list of Bcc recipients.
- Reply to
reply_totext - Comma-separated addresses that replies should go to.
- Importance
importancetext - Importance of the item.One of:
low,normal,high. - Save to sent items
save_to_sent_itemstrue/false - Save a copy in the sender's Sent Items folder.Default:
true.
Outputs
statustext- Send status.
Example output
{
"status": "success"
}Set automatic replies
Turn out-of-office automatic replies on, off, or on for a scheduled date range.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Status
statustextRequired - Whether automatic replies are off, always on, or scheduled.One of:
disabled(Off),alwaysEnabled(Always on),scheduled. - Internal reply message
internal_reply_messagetext - Reply sent to people inside the organisation.
- External reply message
external_reply_messagetext - Reply sent to people outside the organisation.
- External audience
external_audiencetext - Who outside the organisation receives a reply.One of:
none(Nobody),contactsOnly(Contacts only),all(Everyone). - Scheduled start
scheduled_startdate and time - Start of the scheduled window. Required when status is 'scheduled'.
- Scheduled end
scheduled_enddate and time - End of the scheduled window. Required when status is 'scheduled'.
- Time zone
time_zonetext - Time zone for the supplied times, in Windows or IANA format, for example 'Pacific Standard Time' or 'America/Los_Angeles'. Defaults to UTC.
Outputs
automaticRepliesSettingobject- The updated out-of-office configuration.
Example output
{
"automaticRepliesSetting": {
"externalAudience": "all",
"externalReplyMessage": "I am out of the office until Monday.",
"internalReplyMessage": "I am out of the office until Monday.",
"scheduledEndDateTime": {
"dateTime": "2026-09-28T17:00:00.0000000",
"timeZone": "UTC"
},
"scheduledStartDateTime": {
"dateTime": "2026-09-21T09:00:00.0000000",
"timeZone": "UTC"
},
"status": "scheduled"
}
}Set Focused Inbox override
Always classify a sender's mail as Focused or as Other for this mailbox.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Sender address
sender_addresstextRequired - The sender the override applies to.
- Classify as
classify_astextRequired - Where this sender's mail should land.One of:
focused,other. - Sender name
sender_nametext - Display name for the sender. Optional.
Outputs
classifyAstext- focused or other.
idtext- Override ID.
senderEmailAddressobject- The sender the rule applies to.
Example output
{
"classifyAs": "focused",
"id": "98f5bdef-576a-404d-a2ea-07a3cf11a9b9",
"senderEmailAddress": {
"address": "samanthab@contoso.com",
"name": "Samantha Booth"
}
}Update contact
Update a contact. Only the fields you supply change.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Contact ID
contact_idtextRequired - The ID of the contact.
- Given name
given_nametext - First name.
- Surname
surnametext - Last name.
- Display name
display_nametext - Name the contact is shown under. Include it whenever you update other fields, or Outlook may regenerate it.
- Email addresses
email_addresseslist - Replaces the contact's email addresses.
- Business phones
business_phoneslist - Replaces the contact's business phone numbers.
- Mobile phone
mobile_phonetext - Mobile phone number.
- Job title
job_titletext - Job title.
- Company name
company_nametext - Company name.
- Department
departmenttext - Department.
- Office location
office_locationtext - Office location.
- Personal notes
personal_notestext - Free-text notes about the contact.
- Categories
categorieslist - Categories to assign. Each must already exist in the mailbox's category list.
Outputs
businessPhoneslist- Business phone numbers.
companyNametext- Company name.
displayNametext- Contact display name.
emailAddresseslist- Email addresses.
idtext- Contact ID.
jobTitletext- Job title.
Example output
{
"businessPhones": [
"+1 425 555 0109"
],
"companyName": "Contoso",
"displayName": "Dana Swope",
"emailAddresses": [
{
"address": "danas@contoso.com",
"name": "Dana Swope"
}
],
"id": "AAMkAGE1Mjc1YmUwLTIzZjQt",
"jobTitle": "Operations Lead"
}Update event
Update a calendar event. Only the fields you supply change.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Event ID
event_idtextRequired - The ID of the calendar event.
- Subject
subjecttext - New title for the event.
- Start date time
start_date_timedate and time - New start time.
- End date time
end_date_timedate and time - New end time.
- Time zone
time_zonetext - Time zone for the supplied times, in Windows or IANA format, for example 'Pacific Standard Time' or 'America/Los_Angeles'. Defaults to UTC.
- Body
bodytext - New plain text description.
- HTML body
html_bodytext - Formatted (HTML) version of the body. If provided, it is used instead of the plain text body.
- Location
locationtext - New location.
- Attendees
attendeestext - Comma-separated attendee addresses. Replaces the whole attendee list.
- Is all day
is_all_daytrue/false - Whether the event lasts all day.
- Show as
show_astext - How the time appears to others.One of:
free,tentative,busy,oof(Out of office),workingElsewhere(Working elsewhere). - Importance
importancetext - Importance of the item.One of:
low,normal,high. - Categories
categorieslist - Categories to assign. Each must already exist in the mailbox's category list.
Outputs
attendeeslist- Attendee list.
endobject- End dateTimeTimeZone.
idtext- Event ID.
locationobject- Event location.
onlineMeetingobject- Join information.
startobject- Start dateTimeTimeZone.
subjecttext- Event subject.
webLinktext- Open in Outlook on the web.
Example output
{
"attendees": [
{
"emailAddress": {
"address": "alexw@contoso.com",
"name": "Alex Wilbur"
},
"type": "required"
}
],
"end": {
"dateTime": "2026-09-22T16:00:00.0000000",
"timeZone": "UTC"
},
"id": "AAMkAGViNDU3ZDI4LTZmNzMt",
"location": {
"displayName": "Conference room 3"
},
"onlineMeeting": {
"joinUrl": "https://teams.microsoft.com/l/meetup-join/19%3a..."
},
"start": {
"dateTime": "2026-09-22T15:00:00.0000000",
"timeZone": "UTC"
},
"subject": "Q3 planning",
"webLink": "https://outlook.office365.com/calendar/item/AAMkAGViNDU3ZDI4"
}Update message
Update a message: mark it read or unread, change its subject, importance, categories or follow-up flag.
Inputs
- Mailbox
mailboxtextRequired - The mailbox to act on: a user's email address (userPrincipalName) or Microsoft user ID. App-only access has no signed-in user, so the mailbox must be named explicitly. It has to be a mailbox in the same Microsoft 365 tenant the app registration was consented in -- an outside address such as a personal Gmail or outlook.com account is not reachable this way. The picker is populated from the directory when the app has the optional User.Read.All permission; otherwise type the address.
- Message ID
message_idtextRequired - The ID of the message.
- Is read
is_readtrue/false - Mark the message as read (true) or unread (false).
- Subject
subjecttext - New subject for the message.
- Importance
importancetext - Importance of the item.One of:
low,normal,high. - Categories
categorieslist - Categories to assign. Each must already exist in the mailbox's category list.
- Flag status
flag_statustext - Follow-up flag state.One of:
notFlagged(Not flagged),flagged,complete.
Outputs
bodyPreviewtext- First 255 characters.
fromobject- Sender recipient object.
hasAttachmentstrue/false- Attachment present.
idtext- Message ID.
isReadtrue/false- Whether it has been read.
receivedDateTimetext- ISO 8601 timestamp.
subjecttext- Message subject.
webLinktext- Open in Outlook on the web.
Example output
{
"bodyPreview": "Here are the notes from this morning's planning session...",
"from": {
"emailAddress": {
"address": "alexw@contoso.com",
"name": "Alex Wilbur"
}
},
"hasAttachments": true,
"id": "AAMkAGI2NGVhZTIyLTAzYzUt",
"isRead": true,
"receivedDateTime": "2026-09-18T14:02:11Z",
"subject": "Q3 planning notes",
"webLink": "https://outlook.office365.com/owa/?ItemID=AAMkAGI2NGVhZTIy"
}