Outlook User Photo REST API reference (version 2.0)

Applies to: Exchange Online | Office 365

The User Photo API lets you download or set the photo of a user whose mailbox is secured by Azure Active Directory on Office 365.

Note

The User Photo API does not support consumer mailboxes in Microsoft account domains, such as Hotmail.com, Live.com, MSN.com, Outlook.com, and Passport.com.

Not interested in v2.0 of the API? In the table of contents on the left, go to the Office 365 REST API reference section and select the version you want.

Using the User Photo REST API

Authentication

Like other Outlook REST API, for every request to the Outlook User Photo API, you should include a valid access token. Getting an access token requires you to have registered and identified your app, and obtained the appropriate authorization.

You can find out more about some streamlined registration and authorization options for you. Keep this in mind as you proceed with the specific operations in the User Photo API.

Version of API

This API has been promoted from preview to General Availability (GA) status. It is supported in the v2.0 and beta versions of the Outlook REST API.

Target user

The target user can be the signed-in user, or a user specified by a user ID.

For more information using this API, and information common to all subsets of the Outlook REST API, see Use the Outlook REST API.

User photo operations

The user photo operations allow you to get a user's photo metadata and photo stream in binary format and set the user photo.

Get photo metadata

Get information about the requested user photo, which includes the content type, eTag, and width and height in pixels.

Required scope

Use one of the following scopes to get photo metadata of the specified user, who can be the signed-in user:

  • user.readbasic.all
  • user.read.all
  • user.readwrite.all

You can also use the following scope to get photo metadata of specifically the signed-in user:

  • user.read

Get the metadata for the largest available photo

GET https://outlook.office.com/api/v2.0/me/photo
GET https://outlook.office.com/api/v2.0/Users('{user_id}')/photo
Optional parameter Type Description
Url parameters
user_id string The user's email address.

Sample request

This request gets the metadata of the user photo of the signed-in user.

GET https://outlook.office.com/api/v2.0/me/photo

Sample response data

The following response data shows the photo metadata. The HTTP response code is 200.

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/photo/$entity",
    "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-7d04-b48b-20075df800e5@1717622f-1d94-c0d4-9d74-f907ad6677b4')/photo",
    "@odata.mediaContentType": "image/jpeg",
    "@odata.mediaEtag": "\"BA09D118\"",
    "Id": "240X240",
    "Width": 240,
    "Height": 240
}

The following response data shows the contents of a response when a photo hasn't already been uploaded for the user. The HTTP response code is a 200.

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/photo/$entity",
    "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-7d04-b48b-20075df800e5@1717622f-1d94-c0d4-9d74-f907ad6677b4')/photo",
    "@odata.mediaContentType": "image/gif",
    "@odata.mediaEtag": "",
    "Id": "1X1",
    "Width": 1,
    "Height": 1
}

Get photo

Get the user photo of the specified user.

This operation allows a tenant administrator to let an app get the user photo of any user in the tenant.

Required scope

Use one of the following scopes to get the photo of the specified user, who can be the signed-in user:

  • user.readbasic.all
  • user.read.all
  • user.readwrite.all

You can also use the following scope to get the photo of specifically the signed-in user:

  • user.read
  • user.readwrite

Get the largest available size

GET https://outlook.office.com/api/v2.0/me/photo/$value
GET https://outlook.office.com/api/v2.0/Users('{user_id}')/photo/$value
Optional parameter Type Description
Url parameters
user_id string The user's email address.

Sample request

This request gets the photo for the signed-in user.

GET https://outlook.office.com/api/v2.0/me/photo/$value
Content-Type: image/jpg

Response data

Contains the binary data of the requested photo. The HTTP response code is 200.

Set user photo

Assign a photo to the signed-in user. The photo should be in binary. It replaces any existing photo for that user.

You can use either PATCH or PUT for this operation in version 2.0.

Required scope

Use the following scope to set the photo of the signed-in user:

  • user.readwrite
PATCH https://outlook.office.com/api/v2.0/me/photo/$value
PATCH https://outlook.office.com/api/v2.0/users('{user_id}')/photo/$value

PUT https://outlook.office.com/api/v2.0/me/photo/$value
PUT https://outlook.office.com/api/v2.0/users('{user_id}')/photo/$value
Optional parameter Type Description
Url parameters
user_id string The user's email address.

Sample request

PATCH https://outlook.office.com/api/v2.0/me/photo/$value
Content-Type: image/jpeg

Include the binary data of the photo in the request body.

Response data

A successful request returns HTTP 200.

Next steps

Whether you're ready to start building an app or just want to learn more, we've got you covered.

Or, learn more about using the Office 365 platform: