# Updates to the Google Photos APIs

*Posted September 2024.*

This page provides details on specific changes being made to the Google Photos
APIs. Review the details on this page to understand how the methods and scopes
you use may be affected. You can read more about the announcement of these
changes in [the related blog post](https://developers.googleblog.com/en/google-photos-picker-api-launch-and-library-api-updates/).

> [!NOTE]
> **Note:** All changes take effect March 2025.

## Library API: Impact on common use cases

The following sections detail detail how the upcoming changes will impact common
use cases.

### Uploading media items and creating albums

**What's changing:** No change. You can continue to upload media items and
create albums using the `photoslibrary.appendonly` scope.

**What you can do:**

If your app is uploading media items or creating albums, make sure your using
the `photoslibrary.appendonly` scope, and not the `photoslibrary` scope. The
`photoslibrary` scope is being removed.

### Listing, searching, and retrieving media items and albums

**What's changing:** You can now only list, search, and retrieve albums and
media items that were created by your app.

**What you can do:**

- If your app needs users to select photos or albums from their entire library, use to the new [Google Photos Picker
  API](https://developers.google.com/photos/picker/guides/get-started-picker). This provides a secure and user-friendly way for users to grant access to specific content.
- If your app relies on accessing the user's entire library, you may need to re-evaluate your app or consider alternative approaches.

### Sharing and shared albums

**What's changing:** Shared albums and the associated API functions (share,
unshare, get, join, leave, and list) will return a `403 PERMISSION_DENIED` after
March 31, 2025.

**What you can do:**

Direct users to the Google Photos app to manage sharing themselves. You can
provide clear instructions or deep links within your app to guide them.

### Managing app-created albums: enrichments and album contents

**What's changing:** The `photoslibrary.edit.appcreateddata` is being added to
the following three methods for conceptual consistency:

- `albums.addEnrichment`
- `albums.batchAddMediaItems`
- `albums.batchRemoveMediaItems`

**What you can do:**

- If your app already uses these methods, consider adopting the `photoslibrary.edit.appcreateddata` scope to simplify your authorization process.

## Library API: Affected scopes and methods

As part of our changes to the Google Photos APIs, we have made the following
updates.

As shown on the [updated Authorization
page](https://developers.google.com/photos/overview/authorization#library-api-scopes), the following scopes
will be removed from the Library API after March 31, 2025:

- `photoslibrary.readonly`
- `photoslibrary.sharing`
- `photoslibrary`

The following scopes will remain:

- `photoslibrary.appendonly`
- `photoslibrary.readonly.appcreateddata`
- `photoslibrary.edit.appcreateddata`

This tables details the specific Library API methods and scopes affected.

| Updates | Methods | Scopes |
|---|---|---|
| These methods can now only be used with albums and media items created by your app. | - `https://developers.google.com/photos/library/reference/rest/v1/albums/create` - `https://developers.google.com/photos/library/reference/rest/v1/mediaItems/batchCreate` | Scopes remaining: - `photoslibrary.appendonly` Scopes removed: <!-- --> - `photoslibrary` - `photoslibrary.sharing` |
| These methods can now only be used with albums and media items created by your app. | - `https://developers.google.com/photos/library/reference/rest/v1/albums/get` - `https://developers.google.com/photos/library/reference/rest/v1/albums/list` - `https://developers.google.com/photos/library/reference/rest/v1/mediaItems/batchGet` - `https://developers.google.com/photos/library/reference/rest/v1/mediaItems/get` - `https://developers.google.com/photos/library/reference/rest/v1/mediaItems/list` - `https://developers.google.com/photos/library/reference/rest/v1/mediaItems/search` | Scopes remaining: - `photoslibrary.readonly.appcreateddata` Scopes removed: <!-- --> - `photoslibrary` - `photoslibrary.readonly` |
| These methods will no longer be available. | - `https://developers.google.com/photos/library/reference/rest/v1/albums/share` - `https://developers.google.com/photos/library/reference/rest/v1/albums/unshare` - `https://developers.google.com/photos/library/reference/rest/v1/sharedAlbums/get` - `https://developers.google.com/photos/library/reference/rest/v1/sharedAlbums/join` - `https://developers.google.com/photos/library/reference/rest/v1/sharedAlbums/leave` - `https://developers.google.com/photos/library/reference/rest/v1/sharedAlbums/list` | Scopes remaining: - None Scopes removed: <!-- --> - `photoslibrary.sharing` > [!NOTE] > **Note:** `sharedAlbums.list` is being removed because there will no longer be shared albums created by your app available to list. |
| These methods will have the `photoslibrary.edit.appcreateddata` added. These methods can now only be used with albums and media items created by your app. | - `https://developers.google.com/photos/library/reference/rest/v1/albums/addEnrichment` - `https://developers.google.com/photos/library/reference/rest/v1/albums/addEnrichment` | Scopes remaining: - `photoslibrary.appendonly` - `photoslibrary.edit.appcreateddata` Scopes removed: <!-- --> - `photoslibrary` |
| These methods will have the `photoslibrary.edit.appcreateddata` added. These methods can now only be used with albums and media items created by your app. | - `https://developers.google.com/photos/library/reference/rest/v1/albums/batchRemoveMediaItems` | Scopes remaining: - `photoslibrary.edit.appcreateddata` Scopes removed: <!-- --> - `photoslibrary` |
| These methods will remain unchanged. | - `https://developers.google.com/photos/library/reference/rest/v1/albums/patch` - `https://developers.google.com/photos/library/reference/rest/v1/mediaItems/patch` | Scopes remaining: - `photoslibrary.edit.appcreateddata` Scopes removed: <!-- --> - None |

## Updates to Photos API policy

The current [Acceptable use policy](https://developers.google.com/photos/support/acceptable-use) will be
replaced after March 31, 2025 with the new [Photos API User Data and Developer
Policy](https://developers.google.com/photos/support/api-policy). The new policy is available now for
preview.

## Updates to the Photos API documentation

We've made significant changes to the Photos API documentation to reflect
upcoming updates and support your development experience:

- **Unified Photos APIs Site:** We've consolidated all Photos API resources into a single location (this site), providing a streamlined experience for developers. Here, you'll find:
  - **Centralized Resources:** Combined [setup instructions and general
    usage guidance](https://developers.google.com/photos/overview/configure-your-app), and combined [support and policy information](https://developers.google.com/photos/support/how-to-get-help) for both the Picker API and the Library API.
  - **Dedicated API sites:** Individual sites with detailed guides, reference documentation, and code samples for [the Picker
    API](https://developers.google.com/photos/picker/guides/get-started-picker) and [the Library
    API](https://developers.google.com/photos/library/guides/get-started-library)
- **Updated Library API Content:** The [Library API documentation](https://developers.google.com/photos/library/guides/get-started-library) has been revised to reflect the Library API's capabilities after the sunset period.

## Frequently asked questions

**What's changing with the Google Photos APIs?**

We're introducing the new Google Photos Picker API for secure photo selection
and updating the existing Library API to focus on managing photos and videos
created by your app.

**When will these changes take effect?**

These changes will take effect March 31, 2025. We encourage everyone with
existing integrations that use the Library API for photo picking to migrate to
the Picker API as soon as you can.

**How will the Library API be affected?**

The `photoslibrary.readonly`, `photoslibrary.sharing`, and `photoslibrary`
scopes will be removed. API calls relying only on these scopes will return a
`403 PERMISSION_DENIED` after March 31, 2025. Several other calls will be
restricted to working only with photos and videos created by your app.

You can review the complete set of changes in the [affected scopes and methods table on this page](https://developers.google.com/photos/support/updates#affected-scopes-methods).

**What should I do if my app currently uses the affected scopes or methods?**

If your app uses any of the affected scopes or methods, we recommend you take
the following steps:

- For photo selection: migrate to the Google Photos Picker API.
- For other functionalities: review the updated Library API documentation to understand the changes and identify features in your app that may no longer be available. You may need to adjust your app's functionality or explore alternative solutions for some use cases.

**What is the Google Photos Picker API?**

The Picker API is a new, secure way for developers to let users select photos
and videos from their Google Photos Library, and seamlessly send them back to
your application.

**Where can I find more information about these changes?**

[This page you're currently viewing](https://developers.google.com/photos/support/updates) provides an
overview and a summary of all the changes.

The [rest of the documentation](https://developers.google.com/photos) on our site has been updated to reflect
the updated APIs.

[This blog post](https://developers.googleblog.com/en/google-photos-picker-api-launch-and-library-api-updates/)
announcing the changes.

**What if I have further questions or need help migrating my application?**

If you have questions on the developer documentation, [review our support
page](https://developers.google.com/photos/support/how-to-get-help) for additional details on getting help.