# Google Slides

Google Slides is a cloud-based presentation editor with real-time collaboration, template gallery, and integration with other Google Workspace apps

- **Category:** documents
- **Auth:** OAUTH2
- **Tools:** 7
- **Triggers:** 1
- **Slug:** `GOOGLESLIDES`
- **Version:** 20260211_00

## Frequently Asked Questions

### 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](https://composio.dev/auth/googleapps).

### 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](https://composio.dev/auth/googleapps).

### 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"?

The requested scopes are invalid or incorrectly formatted in the authorization URL. Verify your scope values against the [Google OAuth scopes docs](https://developers.google.com/identity/protocols/oauth2). If you're creating auth configs programmatically, see the [programmatic auth config guide](/docs/auth-configuration/programmatic-auth-configs).

### 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 [White-labeling the OAuth consent screen](/docs/auth-configuration/custom-auth-configs#white-labeling-the-oauth-consent-screen).

### 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"?

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.

---

## Tools

### Create Google Slides Presentation

**Slug:** `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

| Parameter | 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). Note: 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

| Parameter | 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

**Slug:** `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

| Parameter | 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 for bullets 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 `\|\|\|` on its own line to split left/right  IMAGE REQUIREMENTS: Images must be publicly accessible PNG/JPEG/GIF under 50MB. No auth-requiring URLs.  FORMATTING: Use `**text**` for bold. Emojis supported. Line breaks preserved. |

#### Output

| Parameter | 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

**Slug:** `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

| Parameter | 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

| Parameter | 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)

**Slug:** `GOOGLESLIDES_PRESENTATIONS_BATCH_UPDATE`

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

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `requests` | array | No | List of update requests, each a dict with one of these valid Slides API request types:  **Common requests:** createSlide, createShape, createTable, createImage, insertText, updateTextStyle, updateShapeProperties, updatePageProperties, updateParagraphStyle, deleteObject, updateTableCellProperties, updateTableColumnProperties, replaceAllText  **IMPORTANT:** 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 ('![alt](URL)'), two-column ('\|\|\|' separator), plain text. Add 'Theme: <name>' as the first line to apply a theme. Available themes: default, corporate_blue, modern_dark, professional_gray, creative_purple, warm_orange, forest_green, minimal_beige. Font sizes auto-scale based on content length (28pt down to 8pt). Supports **bold**, emoji, and auto-centering of tables. Images must be publicly accessible URLs (PNG/JPEG/GIF, <50MB). |
| `presentationId` | string | Yes | The ID of the presentation to apply the updates to. |

#### Output

| Parameter | 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

**Slug:** `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

| Parameter | 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

| Parameter | 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

**Slug:** `GOOGLESLIDES_PRESENTATIONS_GET`

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

#### Input Parameters

| Parameter | 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 (equal number of opening and closing parentheses). Examples: 'presentationId,title', 'slides(pageElements)', 'slides(objectId,pageElements(objectId,shape(text(textElements(textRun(content))))))' |
| `presentationId` | string | No | The ID of the presentation to retrieve. Either presentation_id or presentation_name 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 presentation_id or presentation_name must be provided. |

#### Output

| Parameter | 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

**Slug:** `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

| Parameter | 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

| Parameter | 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)

**Slug:** `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

| Parameter | 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

| Parameter | 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 |


## Triggers

### New Slide Added

**Slug:** `GOOGLESLIDES_SLIDE_ADDED_TRIGGER`

**Type:** poll

Fires when a new slide is added to a Google Slides presentation.

#### Configuration

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `interval` | number | No | Periodic Interval to Check for Updates & Send a Trigger in Minutes |
| `presentation_id` | string | Yes | The ID of the presentation to monitor for new slides |

#### Payload

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `event_type` | string | No | Type of slide event |
| `slide` | object | Yes | The slide object that was added |
