Skip to main content

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

  1. Open the workflow editor and add any Google Photos node.
  2. On the node, choose Connect and pick the Google account whose Photos library you want to manage on behalf of your client.
  3. Grant the requested scopes: append-only, app-created read, and app-created edit access.
  4. 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-album creates a new app-created album with the title you supply.
  • google-photos/list-albums lists every album the workspace has created in the connected account.
  • google-photos/get-album returns the metadata and cover photo for one album.
  • google-photos/update-album-title renames an app-created album.
  • google-photos/list-shared-albums lists the app-created albums that appear in the account's Sharing tab.
  • google-photos/add-album-enrichment adds a text, location, or map note at a chosen position in an album.

Media items

  • google-photos/upload-media uploads one photo or video's bytes and returns an upload token in text, valid for one day.
  • google-photos/batch-create-media-items turns up to 50 upload tokens into media items, optionally adding them to an app-created album. Each result carries its own status and the new item's id; if only some items are created, the step still succeeds.
  • google-photos/list-media-items lists every media item the workspace has created in the connected account.
  • google-photos/search-media-items lists the media items your app created inside one app-created album.
  • google-photos/get-media-item returns one app-created media item by ID.
  • google-photos/batch-get-media-items returns several app-created media items by ID.
  • google-photos/update-media-item-description changes an app-created media item's description.
  • google-photos/add-media-items-to-album adds app-created media items to an app-created album.
  • google-photos/remove-media-items-from-album removes media items from an app-created album.
  • google-photos/download-media-item downloads a media item's bytes from its baseUrl as 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:

  1. 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.
  2. 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 of newMediaItemResults carries its own status and, on success, the new mediaItem.

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-album reports mediaItemsCount: "1", yet search-media-items on that same album and list-media-items both 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 a baseUrl expires 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.sharing scope 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.
Was this helpful?