- Documentation
- Integrations
- Apps
- Google Photos integration
Google Photos integration
Manage app-created albums and media items in Google Photos on behalf of your clients.
What it does
The Google Photos integration lets you organize client deliverables inside Google Photos without leaving TaskJuice. Connect a client's Google account once and TaskJuice can create and rename albums, read albums and media items, move items in and out of albums, annotate an album with text or a location, and download the original bytes of a photo or video for a later step.
Google restricts the Library API to data your app creates, so TaskJuice only ever sees albums and media items that originated from a TaskJuice workflow. That boundary is the single most important thing to understand before you build: a client's existing photo library is invisible to this integration by design.
Connect a Google Photos account
- Open the workflow editor and add any Google Photos node.
- On the node, choose Connect and pick the Google account whose Photos library you want to manage on behalf of your client.
- Grant the requested scopes: append-only, app-created read, and app-created edit access.
- TaskJuice returns you to the editor with the connection ready to use.
To revoke access at any time, visit Google Account permissions and remove the TaskJuice entry.
Triggers
Google Photos publishes no webhook or subscription surface of any kind, so this integration ships no triggers. To react to changes on a schedule, pair a Schedule node with google-photos/list-media-items or google-photos/search-media-items.
Actions
Albums
google-photos/create-albumcreates a new app-created album with the title you supply.google-photos/list-albumslists every album the workspace has created in the connected account.google-photos/get-albumreturns the metadata and cover photo for one album.google-photos/update-album-titlerenames an app-created album.google-photos/list-shared-albumslists the app-created albums that appear in the account's Sharing tab.google-photos/add-album-enrichmentadds a text, location, or map note at a chosen position in an album.
Media items
google-photos/upload-mediauploads one photo or video's bytes and returns an upload token intext, valid for one day.google-photos/batch-create-media-itemsturns up to 50 upload tokens into media items, optionally adding them to an app-created album. Each result carries its ownstatusand the new item'sid; if only some items are created, the step still succeeds.google-photos/list-media-itemslists every media item the workspace has created in the connected account.google-photos/search-media-itemslists the media items your app created inside one app-created album.google-photos/get-media-itemreturns one app-created media item by ID.google-photos/batch-get-media-itemsreturns several app-created media items by ID.google-photos/update-media-item-descriptionchanges an app-created media item's description.google-photos/add-media-items-to-albumadds app-created media items to an app-created album.google-photos/remove-media-items-from-albumremoves media items from an app-created album.google-photos/download-media-itemdownloads a media item's bytes from itsbaseUrlas a file — the photo's original bytes, or a video's bytes.
Uploading a photo or video
Uploading takes two steps in one workflow run:
- Upload Media, with File set to the file from an earlier step (a form upload or a download action). It returns the upload token in
text. - Batch Create Media Items, with New media items set to
[{ "simpleMediaItem": { "uploadToken": "{{$steps.<upload>.data.text}}", "fileName": "photo.jpg" } }]and, optionally, an Album. Each entry ofnewMediaItemResultscarries its ownstatusand, on success, the newmediaItem.
The new item's id feeds Get Media Item, Update Media Item Description and the album actions. To download it, read its baseUrl with Get Media Item and pass that to Download Media Item in the same run. Uploads run as workflow steps: the builder's Test button has no file storage, so testing Upload Media there reports that files cannot be sent from a node test.
Known limitations
- Since 31 March 2025 Google restricts the Library API to data your app creates. Albums and media items added through the Google Photos app or another integration are not visible, and no scope restores that access.
- A photo you add to an app-created album by hand is counted but not readable. Verified against the live API: after adding one photo through the Google Photos app,
get-albumreportsmediaItemsCount: "1", yetsearch-media-itemson that same album andlist-media-itemsboth return nothing. Google's reference says "If an app created album is set, all media items in the specified album are returned" — that is not what the API does; the app-created restriction wins. Items your workflow uploads are fully readable: use the IDs Batch Create Media Items returns. - Download Media Item takes a
baseUrl, and abaseUrlexpires about 60 minutes after it is read, so read it with Get Media Item in the same run as the download. A video that was just created may still be processing; download it once Get Media Item reports it ready. It only accepts Google's media host, so a URL from anywhere else is refused before any request is sent. - Album sharing is not available. The
photoslibrary.sharingscope was withdrawn by Google in March 2025, which retires share, unshare, join, and leave. - Google Photos has no albums delete endpoint. An album created by a workflow can be emptied and renamed, but it can only be removed by hand in the Google Photos app.
- The Library API enforces per-user quotas. When a 429 is returned, TaskJuice surfaces it as a retryable rate-limit error and respects the recommended backoff.