Skip to content

Google Slides

Google Slides

Google Slides is a cloud-based presentation editor with real-time collaboration, a template gallery, and integration with other Google Workspace apps. With the SquadOS integration, your agents can create presentations from scratch, edit existing slides, copy templates, and generate page thumbnails automatically.

This tool uses OAuth 2.0 (OAUTH2) to connect.

Authentication follows the standard Google OAuth flow — you authorize access to your Google account directly on the Composio secure page, with no need to generate keys manually.

  1. Go to Tools in the side menu (/admin/tools).
  2. Open the Available tab and search for Google Slides.
  3. Click the card to open the details modal and hit Connect.
  4. You’re taken to the secure connection page hosted by Composio, where you authorize access to your Google account (OAuth).
  5. Once done, you’re sent back to SquadOS with the account connected and the tool available for your agents. (Connection-flow details in Organization Tools.)

How do I set up custom Google OAuth credentials for Google Slides?

Section titled “How do I set up custom Google OAuth credentials for Google Slides?”

For a step-by-step guide on creating and configuring your own Google OAuth credentials with Composio, see How to create OAuth2 credentials for Google Apps.

Why am I seeing “App is blocked” when connecting Google Slides?

Section titled “Why am I seeing “App is blocked” when connecting Google Slides?”

The OAuth client is requesting scopes that Google hasn’t verified for that client. This usually happens when you add extra scopes beyond the defaults. Remove the additional scopes from your auth config, or create your own OAuth app and submit the scopes for verification. See How to create OAuth2 credentials for Google Apps.

Why am I getting “Google Slides API has not been used in project” error?

Section titled “Why am I getting “Google Slides API has not been used in project” error?”

When using custom OAuth credentials, the Google Slides API must be enabled in the Google Cloud project that owns those credentials. Enable it in Google Cloud Console under APIs & Services, wait a few minutes, and retry.

Why am I getting “Error 400: invalid_scope”?

Section titled “Why am I getting “Error 400: invalid_scope”?”

The requested scopes are invalid or incorrectly formatted in the authorization URL. Verify your scope values against the Google OAuth scopes docs.

Section titled “Why does the OAuth consent screen show “Composio” instead of my app?”

By default, the consent screen uses Composio’s OAuth app. To show your own app name and logo, create your own OAuth app and set a custom redirect URL. See the white-labeling authentication documentation.

Why am I getting 401 errors on tool calls?

Section titled “Why am I getting 401 errors on tool calls?”

The user’s access token is no longer valid. Common causes: the user revoked access, changed their password or 2FA, a Workspace admin policy changed, or Google’s refresh token limit (~50 per account) was exceeded. Re-authenticating the user typically resolves this.

Why am I getting “Quota Exhausted” or “rate limit exhausted”?

Section titled “Why am I getting “Quota Exhausted” or “rate limit exhausted”?”

Google enforces per-minute and daily request quotas. If you’re using Composio’s default OAuth app, you share that quota with other users, which can cause limits to be hit faster. Use your own OAuth app credentials to get a dedicated quota, and add exponential backoff and retries to handle transient rate limits.

GOOGLESLIDES_CREATE_PRESENTATION

Tool to create a blank Google Slides presentation. Use when you need to initialize a new presentation with a specific title, locale, or page size.

NameTypeRequiredDescription
titlestringNoThe title of the presentation. If omitted, the API uses a default title.
localestringNoThe locale of the presentation, as an IETF BCP 47 language tag (e.g., en-US, fr-FR, ja-JP). If omitted, the API uses a default locale.
pageSizeobjectNoThe size of a page in the presentation.
presentationIdstringNoThe ID to use for the new presentation. If provided, it is used as the ID of the new presentation. Otherwise, a new ID is automatically generated. Must be a valid Google Drive/Slides ID format (long alphanumeric string). Human-readable IDs (e.g., my-presentation) are not valid and will cause API errors. Only provide this if you have a valid Google Drive/Slides ID format; otherwise omit to let the API generate one.
NameTypeRequiredDescription
datastringYesData from the action execution
errorstringNoError if any occurred during the execution of the action
successfulbooleanYesWhether or not the action execution was successful or not

GOOGLESLIDES_CREATE_SLIDES_MARKDOWN

Creates a new Google Slides presentation from Markdown text. Automatically splits content into slides using --- separators and applies appropriate templates based on content structure.

NameTypeRequiredDescription
titlestringYesThe title for the new Google Slides presentation.
markdown_textstringYesThe content for the slides, formatted as Markdown. THEME SELECTION: Add Theme: name at the start of your markdown. Available themes: default, corporate_blue, modern_dark, professional_gray, creative_purple, warm_orange, forest_green, minimal_beige. SLIDE SEPARATION: Use --- (on its own line) to separate slides. Each slide auto-detects its type. SLIDE TYPES: 1. Title Slide (first slide): # Title Subtitle text 2. Bullet Slides: Use -, *, or bullet characters 3. Table Slides: Standard markdown tables 4. Quote Slides: > Quote text 5. Text Slides: Regular paragraphs 6. Image Slides: ![description](URL) 7. Two-Column Slides: Use `
NameTypeRequiredDescription
datastringYesData from the action execution
errorstringNoError if any occurred during the execution of the action
successfulbooleanYesWhether or not the action execution was successful or not

GOOGLESLIDES_GET_PAGE_THUMBNAIL2

Tool to generate a thumbnail of the latest version of a specified page. Use when you need a preview image URL for a slide page. This request counts as an expensive read request for quota purposes.

NameTypeRequiredDescription
pageObjectIdstringYesThe object ID of the page whose thumbnail to retrieve.
presentationIdstringYesThe ID of the presentation to retrieve.
thumbnailProperties.mimeTypestringNoThe optional mime type of the thumbnail image. Defaults to PNG if not specified.
thumbnailProperties.thumbnailSizestring (THUMBNAIL_SIZE_UNSPECIFIED | LARGE | MEDIUM | SMALL)NoThe optional thumbnail image size. LARGE = 1600px, MEDIUM = 800px, SMALL = 200px. Defaults to LARGE if not specified.
NameTypeRequiredDescription
datastringYesData from the action execution
errorstringNoError if any occurred during the execution of the action
successfulbooleanYesWhether or not the action execution was successful or not

GOOGLESLIDES_PRESENTATIONS_BATCH_UPDATE

Update Google Slides presentations using markdown content or raw API requests. Supports professional themes, auto-formatting, and multiple slide types (title, bullet, table, quote, image, two-column).

NameTypeRequiredDescription
requestsarrayNoList of update requests, each a dict with one of these valid Slides API request types: createSlide, createShape, createTable, createImage, insertText, updateTextStyle, updateShapeProperties, updatePageProperties, updateParagraphStyle, deleteObject, updateTableCellProperties, updateTableColumnProperties, replaceAllText. To update slide backgrounds, use updatePageProperties (NOT updateSlideProperties). The field pageBackgroundFill exists in PageProperties, not SlideProperties. Required if markdown_text is not provided.
writeControlobjectNoOptions that control how write requests are executed.
markdown_textstringNoMarkdown content to add as new slides to an existing presentation. Separate slides with \n---\n. Each slide auto-detects its type from content. Slide types: title (# Title\nSubtitle), bullets (-/+/*), tables (markdown tables), quotes (> text), images (![alt](URL)), two-column (`
presentationIdstringYesThe ID of the presentation to apply the updates to.
NameTypeRequiredDescription
datastringYesData from the action execution
errorstringNoError if any occurred during the execution of the action
successfulbooleanYesWhether or not the action execution was successful or not

GOOGLESLIDES_PRESENTATIONS_COPY_FROM_TEMPLATE

Tool to create a new Google Slides presentation by duplicating an existing template deck via Drive file copy. Use when you need to preserve themes, masters, and layouts exactly as they appear in the template. After copying, use GOOGLESLIDES_PRESENTATIONS_BATCH_UPDATE to replace placeholder text or images.

NameTypeRequiredDescription
new_titlestringNoThe name/title for the copied presentation. If omitted, a default name like Copy of [original] is used.
parent_folder_idstringNoThe ID of the destination folder in Google Drive. If provided, the copied presentation will be placed in this folder. If omitted, the copy is placed in the user’s root folder.
template_presentation_idstringYesThe Drive file ID of the Slides template to copy. This is the presentationId of the existing deck you want to duplicate.
NameTypeRequiredDescription
datastringYesData from the action execution
errorstringNoError if any occurred during the execution of the action
successfulbooleanYesWhether or not the action execution was successful or not

GOOGLESLIDES_PRESENTATIONS_GET

Tool to retrieve the latest version of a presentation. Use after obtaining the presentation ID.

NameTypeRequiredDescription
fieldsstringNoComma-separated selector specifying which fields to include in a partial response. Nested fields use parentheses that must be properly balanced. Top-level fields: presentationId, title, locale, revisionId, pageSize, slides, masters, layouts, notesMaster. For slides/masters/layouts, valid Page fields: objectId, pageType, pageElements, pageProperties, revisionId. For pageElements, valid fields: objectId, size, transform, title, description, shape, image, video, line, table, wordArt, elementGroup, sheetsChart, speakerSpotlight. For shape, valid fields: shapeType, text, shapeProperties, placeholder. Note: autofit is under shapeProperties, not directly under shape. Use shape(shapeProperties(autofit)), not shape(autofit). Examples: presentationId,title, slides(objectId,pageElements(objectId,size)).
presentationIdstringNoThe ID of the presentation to retrieve. Either presentationId or presentationName must be provided.
presentationNamestringNoThe name of the presentation to search for and retrieve. If provided, the action will search Google Drive for a presentation with this name. Either presentationId or presentationName must be provided.
NameTypeRequiredDescription
datastringYesData from the action execution
errorstringNoError if any occurred during the execution of the action
successfulbooleanYesWhether or not the action execution was successful or not

GOOGLESLIDES_PRESENTATIONS_PAGES_GET

Tool to get the latest version of a specific page in a presentation. Use when you need to inspect slide, layout, master, or notes page details.

NameTypeRequiredDescription
pageObjectIdstringYesThe object ID of the page to retrieve.
presentationIdstringYesThe ID of the presentation from which to fetch the page.
NameTypeRequiredDescription
datastringYesData from the action execution
errorstringNoError if any occurred during the execution of the action
successfulbooleanYesWhether or not the action execution was successful or not

GOOGLESLIDES_PRESENTATIONS_PAGES_GET_THUMBNAIL

DEPRECATED: Use GOOGLESLIDES_GET_PAGE_THUMBNAIL2 instead. Tool to generate and return a thumbnail image URL for a specific page. Use when you need a quick preview of a slide page after loading it.

NameTypeRequiredDescription
pageObjectIdstringYesThe object ID of the page whose thumbnail to retrieve.
presentationIdstringYesThe ID of the presentation containing the page.
thumbnailProperties.mimeTypestringNoOptional thumbnail image MIME type. Currently only PNG is supported by the API. Defaults to PNG if omitted.
thumbnailProperties.thumbnailSizestring (THUMBNAIL_SIZE_UNSPECIFIED | LARGE | MEDIUM | SMALL)NoOptional thumbnail size. One of LARGE, MEDIUM, SMALL, or THUMBNAIL_SIZE_UNSPECIFIED. Defaults to LARGE if omitted.
NameTypeRequiredDescription
datastringYesData from the action execution
errorstringNoError if any occurred during the execution of the action
successfulbooleanYesWhether or not the action execution was successful or not