Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Namespace: microsoft.graph
Get the messages in the signed-in user's mailbox (including the Deleted Items and Clutter folders).
Depending on the page size and mailbox data, getting messages from a mailbox can incur multiple requests. The default page size is 10 messages. Use $top to customize the page size, within the range of 1 and 1000.
To improve the operation response time, use $select to specify the exact properties you need; see example 1 below. Fine-tune the values for $select and $top, especially when you must use a larger page size, as returning a page with hundreds of messages each with a full response payload may trigger the gateway timeout (HTTP 504).
To get the next page of messages, simply apply the entire URL returned in @odata.nextLink to the next get-messages request. This URL includes any query parameters you may have specified in the initial request.
Do not try to extract the $skip value from the @odata.nextLink URL to manipulate responses. This API uses the $skip value to keep count of all the items it has gone through in the user's mailbox to return a page of message-type items. It's therefore possible that even in the initial response, the $skip value is larger than the page size. For more information, see Paging Microsoft Graph data in your app.
Currently, this operation returns message bodies in only HTML format.
There are two scenarios where an app can get messages in another user's mail folder:
- If the app has application permissions, or,
- If the app has the appropriate delegated permissions from one user, and another user has shared a mail folder with that user, or, has given delegated access to that user. See details and an example.
This API is available in the following national cloud deployments.
| Global service | US Government L4 | US Government L5 (DOD) | China operated by 21Vianet |
|---|---|---|---|
| ✅ | ✅ | ✅ | ✅ |
Permissions
Choose the permission or permissions marked as least privileged for this API. Use a higher privileged permission or permissions only if your app requires it. For details about delegated and application permissions, see Permission types. To learn more about these permissions, see the permissions reference.
| Permission type | Least privileged permissions | Higher privileged permissions |
|---|---|---|
| Delegated (work or school account) | Mail.ReadBasic | Mail.ReadWrite, Mail.Read |
| Delegated (personal Microsoft account) | Mail.ReadBasic | Mail.ReadWrite, Mail.Read |
| Application | Mail.ReadBasic.All | Mail.ReadWrite, Mail.Read |
HTTP request
To get all the messages in a user's mailbox:
GET /me/messages
GET /users/{id | userPrincipalName}/messages
To get messages in a specific folder in the user's mailbox:
GET /me/mailFolders/{id}/messages
GET /users/{id | userPrincipalName}/mailFolders/{id}/messages
Optional query parameters
This method supports the OData Query Parameters to help customize the response.
Using filter and orderby in the same query
When using $filter and $orderby in the same query to get messages, make sure to specify properties in the following ways:
- Properties that appear in
$orderbymust also appear in$filter. - Properties that appear in
$orderbyare in the same order as in$filter. - Properties that are present in
$orderbyappear in$filterbefore any properties that aren't.
Failing to do this results in the following error:
- Error code:
InefficientFilter - Error message:
The restriction or sort order is too complex for this operation.
Request headers
| Name | Type | Description |
|---|---|---|
| Authorization | string | Bearer {token}. Required. Learn more about authentication and authorization. |
| Prefer: outlook.body-content-type | string | The format of the body and uniqueBody properties to be returned in. Values can be "text" or "html". If the header is not specified, the body and uniqueBody properties are returned in HTML format. Optional. |
Request body
Don't supply a request body for this method.
Response
If successful, this method returns a 200 OK response code and collection of Message objects in the response body.
Examples
Example 1: List all messages
Request
The following shows an example that gets the default, top 10 messages in the signed-in user's mailbox. It uses $select to return a subset of the properties of each message in the response.
GET https://graph.microsoft.com/v1.0/me/messages?$select=sender,subject
Response
The following example shows the response. To get the next page of messages, apply the URL returned in @odata.nextLink to a subsequent GET request.
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('bb8775a4-4d8c-42cf-a1d4-4d58c2bb668f')/messages(sender,subject)",
"value": [
{
"@odata.etag": "W/\"CQAAABYAAADHcgC8Hl9tRZ/hc1wEUs1TAAAwR4Hg\"",
"id": "AAMkAGUAAAwTW09AAA=",
"subject": "You have late tasks!",
"sender": {
"emailAddress": {
"name": "Microsoft Planner",
"address": "noreply@Planner.Office365.com"
}
}
}
]
}