# Authorization scopes

The Google Photos APIs contain multiple scopes used to access media items and albums.
The responses returned from various calls are different based on which scopes
have been requested by the developer.

> [!NOTE]
> **Note:** If your application accesses
> the Google Photos APIs, it must pass the [OAuth
> verification review](https://support.google.com/cloud/answer/7454865#verification). If you see **unverified app** on the
> screen when testing your application, you must submit a verification
> request to remove it. Find out more about [unverified apps](https://support.google.com/cloud/answer/7454865) and
> get answers to [frequently asked
> questions about app verification](https://support.google.com/cloud/answer/9110914) in the Help Center.
>
> This verification is independent and in addition to any reviews
> conducted as part of the Google Photos APIs partner program.

Every request your application sends to the Google Photos APIs must include an authorization token. The token also identifies your application to Google.

## About authorization protocols

Your application must use [OAuth 2.0](https://developers.google.com/identity/protocols/OAuth2) to authorize requests. No other authorization protocols are supported. If your application uses [Sign In With Google](https://developers.google.com/identity/gsi/web), some aspects of authorization are handled for you.

## Authorizing requests with OAuth 2.0

All requests to the Google Photos APIs must be authorized by an authenticated user.

The details of the authorization process, or "flow," for OAuth 2.0 vary somewhat depending on what kind of application you're writing. The following general process applies to all application types:

1. When you create your application, you register it using the [Google API Console](https://console.cloud.google.com/). Google then provides information you'll need later, such as a client ID and a client secret.
2. Activate the Google Photos APIs in the Google API Console. (If the API isn't listed in the API Console, then skip this step.)
3. When your application needs access to user data, it asks Google for a particular **scope** of access.
4. Google displays a **consent screen** to the user, asking them to authorize your application to request some of their data.
5. If the user approves, then Google gives your application a short-lived **access token**.
6. Your application requests user data, attaching the access token to the request.
7. If Google determines that your request and the token are valid, it returns the requested data.

Some flows include additional steps, such as using **refresh tokens** to acquire new access tokens. For detailed information about flows for various types of applications, see Google's [OAuth 2.0 documentation](https://developers.google.com/identity/protocols/OAuth2).

Here's the OAuth 2.0 scope information for the Google Photos APIs:

## Picker API scopes

| Scope | Meaning |
|---|---|
| `https://www.googleapis.com/auth/photospicker.mediaitems.readonly` | Access to create, get, and delete sessions, and to list media items for sessions. |

## Library API scopes

| Scope | Meaning |
|---|---|
| `https://www.googleapis.com/auth/photoslibrary.readonly` `https://www.googleapis.com/auth/photoslibrary.sharing` `https://www.googleapis.com/auth/photoslibrary` | > [!WARNING] > **Warning:** These scopes are being removed as part of [the updates to the Google Photos APIs](https://developers.google.com/photos/support/updates). After March 31, 2025, you will only be able to access content created by your application. Please review the other available scopes and adjust your application's authorization requests accordingly. > - If your app needs to select photos from a user's library, use the new [Picker API](https://developers.google.com/photos/picker/guides/get-started-picker). > - For new development, use the [updated Library API documentation](https://developers.google.com/photos/library/guides/get-started-library). > - If you're migrating an existing application, refer to the [legacy Library API documentation](https://developers.google.com/photos/library/legacy/guides/authorization) for additional support. |
| `https://www.googleapis.com/auth/photoslibrary.appendonly` | [Write access only](https://developers.google.com/photos/library/guides/upload-media). Access to upload bytes, create media items, create albums, and add enrichments. Only allows new media to be created in the user's library and in albums created by the app. |
| `https://www.googleapis.com/auth/photoslibrary.readonly.appcreateddata` | Read access to media items and albums created by the developer. For more information, see [Access media items](https://developers.google.com/photos/library/guides/access-media-items) and [List library contents, albums, and media items](https://developers.google.com/photos/overview/list). Intended to be requested together with the `photoslibrary.appendonly` scope. |
| `https://www.googleapis.com/auth/photoslibrary.edit.appcreateddata` | Edit access only. Access to change these details for albums and media items created by the developer: - Organize the photos and videos in your albums ([Add to albums](https://developers.google.com/photos/library/guides/manage-albums#adding-items-to-album) , [remove from albums](https://developers.google.com/photos/library/guides/manage-albums#removing-items-from-album), and[update position](https://developers.google.com/photos/library/library/guides/add-enrichments#intro-positions)). - [Album titles and cover photos](https://developers.google.com/photos/library/guides/manage-albums#changing-album-titles-cover-photos) - [Media item descriptions](https://developers.google.com/photos/library/guides/manage-media) |

To request access using OAuth 2.0, your application needs the scope information, as well as
information that Google supplies when you register your application (such as the client ID and the
client secret).

**Tip:** The Google APIs client libraries can handle some of the authorization process for you. They are available for a variety of programming languages; check the [page with libraries and samples](https://developers.google.com/identity/protocols/OAuth2#libraries) for more details.

## Selecting scopes

As a general rule, choose the most restrictive scope possible and avoid
requesting scopes that your app does not need. Users more readily grant access
to limited, clearly described scopes. Users may hesitate to grant broad access
to their media unless they trust your app and understand why it needs the
information.

## Incrementally requesting scopes

Following best practices for authorization, your application should only request
scopes as they are needed. Avoid requesting all scopes for your application
up-front at sign-in. Instead, provide justification and make the request in
context. Clearly explain what you will do with your users' data and how they
will benefit by granting access, as per the [UX Guidelines and best
practices](https://developers.google.com/photos/overview/ux-guidelines) to provide notice and ask for
consent.

## Service accounts

The Google Photos APIs don't support service accounts. Your application must
use the other OAuth 2.0 flows available such as OAuth 2.0 for
[web server applications](https://developers.google.com/identity/protocols/OAuth2WebServer) or OAuth 2.0 for
[mobile and desktop apps](https://developers.google.com/identity/protocols/OAuth2InstalledApp).