---
title: Outlook Mail API Integration on Truto
slug: outlook
category: Scheduling
canonical: "https://truto.one/integrations/detail/outlook/"
---

# Outlook Mail API Integration on Truto



**Category:** Scheduling  
**Status:** Generally available

## Unified APIs

### Unified Emails API

- **Attachments** — Attachments are the files associated with an email.
- **Emails** — An email is a digital message sent and received electronically over the Internet. It typically contains a subject, sender, recipients, body content, and sometimes attachments.
- **Folders** — The folder is a container used to organize and manage email messages.
- **Users** — Users represent the people using the underlying emails system. They are usually called agents, team members, admins, etc.

### Unified User Directory API

- **Me** — 
- **Users** — The User object represents a User.

### Unified Search API

- **Search** — Search endpoint for all the apps.

## MCP-ready AI tools

Truto exposes 24 tools for Outlook Mail that AI agents can call directly.

- **list_all_outlook_me** — Retrieves basic profile information about the authenticated user in Outlook mail. The response includes essential details such as the user's unique identifier (sub), full name (name), first name (given_name), last name (family_name), profile picture URL (picture), and email address (email).
- **list_all_outlook_messages** — Use this endpoint to retrieve messages in the user's Outlook mailbox. The response contains key information such as the unique message id, creation and sent timestamps (createdDateTime, sentDateTime), subject line, sender and recipient details, message body in either plain text or HTML (body), is read (isRead), or is a draft (isDraft).
- **get_single_outlook_message_by_id** — Use this endpoint to retrieve a message from your Outlook mailbox. It always requires an ID to fetch.
- **create_a_outlook_message** — Use this endpoint to create a draft message in your Outlook mailbox.
- **update_a_outlook_message_by_id** — Use this endpoint to update a draft message in your Outlook mailbox. It always requires an ID to update.
- **delete_a_outlook_message_by_id** — Use this endpoint to delete a message from your Outlook mailbox. It always requires an ID to delete.
- **outlook_messages_send_draft** — Use this endpoint to send an existing draft message from your Outlook Mail. Use the message_id query parameter to specify the existing message.
- **outlook_messages_send_mail** — Use this endpoint to send a new email message from your Outlook Mail. 
- **list_all_outlook_attachments** — Retrieves attachments associated with a specific message in your Outlook Mail. You must specify the message_id to identify the message whose attachments you want to retrieve. The response includes details such as the attachment's unique identifier (id), file name (name), content type (contentType), size in bytes (size), last modified timestamp (lastModifiedDateTime), inline attachment indicator (isInline), content ID (contentId), content location (contentLocation), and the Base64-encoded content (contentBytes).
- **outlook_attachments_download** — Use this endpoint to retrieve the raw contents of a specific file or item attachment directly from a message. You must provide both the message_id and the attachment_id to retrieve it.
- **get_single_outlook_attachment_by_id** — Retrieves a single attachment associated with a specific message in your Outlook Mail. It always requires an ID to fetch and the message_id to identify the message whose attachment you want to retrieve.
- **list_all_outlook_mail_folders** —  A mail folder in a user's mailbox, such as Inbox and Drafts. Mail folders can contain messages, other Outlook items, and child mail folders.
- **get_single_outlook_mail_folder_by_id** — Retrieves a single mail folder in your Outlook Mail.  It always requires an ID to fetch.
- **create_a_outlook_mail_folder** — Use this endpoint to create a new mail folder in the root folder of the user's mailbox.
- **update_a_outlook_mail_folder_by_id** — Use this endpoint to update a mail folder in the root folder of the user's mailbox. It always requires an ID to update.
- **delete_a_outlook_mail_folder_by_id** — Use this endpoint to delete a mail folder in the root folder of the user's mailbox. It always requires an ID to delete.
- **list_all_outlook_child_folders** — Retrieves the child mail folders within a specific folder in your Outlook Mail. To indicate the folder from which you want to retrieve the child folders, use the mail_folder_id query parameter. The response consists of details for each folder, such as its unique identifier (id), name (displayName), parent folder identifier (parentFolderId), the number of child folders it contains (childFolderCount), the count of unread emails (unreadItemCount), the total number of emails (totalItemCount), and whether the folder is hidden (isHidden). 
- **create_a_outlook_child_folder** — Use this endpoint to create a new child folder within a specific mail folder in your Outlook mailbox. You must specify the mail folder using the mail_folder_id body parameter.
- **get_single_outlook_child_folder_by_id** — Retrieves a single child folder within a specific folder in your Outlook Mail. It always requires an ID and mail_folder_id  to specify the parent folder containing the child folder.
- **delete_a_outlook_child_folder_by_id** — Use this endpoint to delete a child folder within a specific mail folder in your Outlook mailbox. You must specify the mail folder using the mail_folder_id body parameter and the child folder you want to delete using the ID parameter.
- **update_a_outlook_child_folder_by_id** — Use this endpoint to update an existing child folder within a specific mail folder in your Outlook mailbox. You must specify the mail folder using the mail_folder_id body parameter and the child folder you want to update using the ID parameter.
- **list_all_outlook_folder_messages** — Use this endpoint to retrieve messages from a specific mail folder in the user's Outlook mailbox. Specify the folder by providing the mail_folder_id parameter. The response contains key information such as the unique message id, creation and sent timestamps (createdDateTime, sentDateTime), subject line, sender and recipient details, message body in either plain text or HTML (body), is read (isRead), or is a draft (isDraft).
- **list_all_outlook_users** — Retrieves users from your Outlook Mail account. The response includes important user details such as the unique identifier (id), the sign-in username (userPrincipalName), full name (displayName), first name (givenName), last name (surname), primary email address (mail), business phone numbers (businessPhones), job title (jobTitle), mobile phone number (mobilePhone), office location (officeLocation), and the user's preferred language (preferredLanguage).
- **get_single_outlook_user_by_id** — Retrieves a single user from your Outlook Mail account. It always requires an ID to fetch.

## How it works

1. **Link your customer's Outlook Mail account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Outlook Mail.** The Proxy API is a 1-to-1 mapping of the Outlook Mail API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Sync email activity into your CRM or revenue platform** — SaaS companies building CRM or sales intelligence tools can pull Outlook messages, threads, and metadata into their platform to give reps full visibility into prospect communications — without asking users to BCC or manually log emails.
- **Automate document ingestion from inbound emails** — Expense management, AP automation, and contract lifecycle tools can monitor Outlook folders for incoming attachments like invoices, receipts, or signed documents, then extract and process them automatically using the attachments download endpoint.
- **Power AI-assisted email drafting and reply workflows** — AI productivity and copilot products can read unread messages, generate contextual draft replies via LLMs, and save them directly into the user's Outlook drafts folder — letting the end user review and send with one click.
- **Convert inbound emails into support tickets or tasks** — Helpdesk and project management tools can monitor shared Outlook mail folders, convert new messages into tickets or work items, and send replies back through the user's authenticated Outlook account to maintain thread continuity.
- **Build folder-based routing and workflow triggers** — SaaS platforms can programmatically create custom Outlook folders and child folders, then poll those folders for new messages — enabling end users to trigger workflows simply by moving an email into a designated folder.

## What you can build

- **Two-way email sync with thread logging** — Mirror Outlook inbox and sent folder activity into your platform and send emails on behalf of the user using their authenticated Outlook account, keeping both systems in sync.
- **Automated attachment extraction pipeline** — List and download attachments from specific messages or folders to feed into OCR, document processing, or file storage workflows without manual user intervention.
- **Smart draft composer with send-on-review** — Create pre-written email drafts in the user's Outlook account using AI or templates, and let the user review and send them natively from Outlook or trigger send via the API.
- **Custom folder-based inbox routing** — Programmatically create mail folders and child folders in a user's Outlook account, then poll those folders for new messages to trigger downstream automations like ticket creation or expense processing.
- **Org chart and identity resolution from the user directory** — Fetch user profiles including job titles, phone numbers, and organizational data via the Unified User Directory API to map corporate identities and permissions inside your SaaS product.
- **Shared mailbox monitoring for team workflows** — List messages across Outlook users and folders to power shared inbox experiences for support, sales, or operations teams — routing emails to the right queue inside your application.

## FAQs

### What authentication methods does Truto support for Outlook Mail?

Truto handles OAuth 2.0 authentication with Microsoft, which is the standard auth flow for Outlook Mail via the Microsoft Graph API. Your end users authorize access through a consent screen, and Truto manages token refresh and storage automatically.

### Can I send emails from a user's Outlook account, or only read them?

Both. You can send emails directly using the outlook_messages_send_mail endpoint, or create a draft with create_a_outlook_message and then send it with outlook_messages_send_draft. Emails are sent from the authenticated user's actual address.

### How does folder-level message polling work?

You can list all mail folders and child folders for a user, then use list_all_outlook_folder_messages to fetch messages from a specific folder. You can also create custom folders and child folders programmatically to set up targeted routing workflows.

### Can I download email attachments directly through Truto?

Yes. Use list_all_outlook_attachments to enumerate attachments on a message, then use outlook_attachments_download to retrieve the file content. You can also fetch metadata for a specific attachment using get_single_outlook_attachment_by_id.

### What Unified APIs map to Outlook Mail?

Outlook Mail is available through the Unified Emails API (covering Attachments, Emails, Folders, and Users), the Unified User Directory API (covering Me and Users), and the Unified Search API. This means you can swap or add other email providers without changing your integration code.

### Does Truto handle pagination and rate limiting for the Microsoft Graph API?

Yes. Truto abstracts away Microsoft Graph API pagination and handles rate limit retries, so you don't need to implement backoff logic or cursor management in your application code.
