Google Slides
Overview
Section titled “Overview”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.
- Official website: https://slides.google.com/
- Composio documentation: docs.composio.dev/toolkits/googleslides
Authentication
Section titled “Authentication”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.
How to connect in SquadOS
Section titled “How to connect in SquadOS”- Go to Tools in the side menu (
/admin/tools). - Open the Available tab and search for
Google Slides. - Click the card to open the details modal and hit Connect.
- You’re taken to the secure connection page hosted by Composio, where you authorize access to your Google account (OAuth).
- 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.
Why does the OAuth consent screen show “Composio” instead of my app?
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.
Available actions
Section titled “Available actions”Create Google Slides Presentation
Section titled “Create Google Slides Presentation”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.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
title | string | No | The title of the presentation. If omitted, the API uses a default title. |
locale | string | No | The 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. |
pageSize | object | No | The size of a page in the presentation. |
presentationId | string | No | The 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. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution |
error | string | No | Error if any occurred during the execution of the action |
successful | boolean | Yes | Whether or not the action execution was successful or not |
Create Slides from Markdown
Section titled “Create Slides from Markdown”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.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
title | string | Yes | The title for the new Google Slides presentation. |
markdown_text | string | Yes | The 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:  7. Two-Column Slides: Use ` |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution |
error | string | No | Error if any occurred during the execution of the action |
successful | boolean | Yes | Whether or not the action execution was successful or not |
Get Page Thumbnail v2
Section titled “Get Page Thumbnail v2”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.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
pageObjectId | string | Yes | The object ID of the page whose thumbnail to retrieve. |
presentationId | string | Yes | The ID of the presentation to retrieve. |
thumbnailProperties.mimeType | string | No | The optional mime type of the thumbnail image. Defaults to PNG if not specified. |
thumbnailProperties.thumbnailSize | string (THUMBNAIL_SIZE_UNSPECIFIED | LARGE | MEDIUM | SMALL) | No | The optional thumbnail image size. LARGE = 1600px, MEDIUM = 800px, SMALL = 200px. Defaults to LARGE if not specified. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution |
error | string | No | Error if any occurred during the execution of the action |
successful | boolean | Yes | Whether or not the action execution was successful or not |
Update Presentation (Batch/Markdown)
Section titled “Update Presentation (Batch/Markdown)”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).
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
requests | array | No | List 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. |
writeControl | object | No | Options that control how write requests are executed. |
markdown_text | string | No | Markdown 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 (), two-column (` |
presentationId | string | Yes | The ID of the presentation to apply the updates to. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution |
error | string | No | Error if any occurred during the execution of the action |
successful | boolean | Yes | Whether or not the action execution was successful or not |
Copy Google Slides from Template
Section titled “Copy Google Slides from Template”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.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
new_title | string | No | The name/title for the copied presentation. If omitted, a default name like Copy of [original] is used. |
parent_folder_id | string | No | The 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_id | string | Yes | The Drive file ID of the Slides template to copy. This is the presentationId of the existing deck you want to duplicate. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution |
error | string | No | Error if any occurred during the execution of the action |
successful | boolean | Yes | Whether or not the action execution was successful or not |
Get Presentation
Section titled “Get Presentation”GOOGLESLIDES_PRESENTATIONS_GET
Tool to retrieve the latest version of a presentation. Use after obtaining the presentation ID.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
fields | string | No | Comma-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)). |
presentationId | string | No | The ID of the presentation to retrieve. Either presentationId or presentationName must be provided. |
presentationName | string | No | The 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. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution |
error | string | No | Error if any occurred during the execution of the action |
successful | boolean | Yes | Whether or not the action execution was successful or not |
Get Presentation Page
Section titled “Get Presentation Page”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.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
pageObjectId | string | Yes | The object ID of the page to retrieve. |
presentationId | string | Yes | The ID of the presentation from which to fetch the page. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution |
error | string | No | Error if any occurred during the execution of the action |
successful | boolean | Yes | Whether or not the action execution was successful or not |
Get Page Thumbnail (Deprecated)
Section titled “Get Page Thumbnail (Deprecated)”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.
Input parameters
Section titled “Input parameters”| Name | Type | Required | Description |
|---|---|---|---|
pageObjectId | string | Yes | The object ID of the page whose thumbnail to retrieve. |
presentationId | string | Yes | The ID of the presentation containing the page. |
thumbnailProperties.mimeType | string | No | Optional thumbnail image MIME type. Currently only PNG is supported by the API. Defaults to PNG if omitted. |
thumbnailProperties.thumbnailSize | string (THUMBNAIL_SIZE_UNSPECIFIED | LARGE | MEDIUM | SMALL) | No | Optional thumbnail size. One of LARGE, MEDIUM, SMALL, or THUMBNAIL_SIZE_UNSPECIFIED. Defaults to LARGE if omitted. |
Output
Section titled “Output”| Name | Type | Required | Description |
|---|---|---|---|
data | string | Yes | Data from the action execution |
error | string | No | Error if any occurred during the execution of the action |
successful | boolean | Yes | Whether or not the action execution was successful or not |