> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Gamma

The Gamma connector lets your AI agent act in each user's Gamma account. Each user connects their own Gamma API key once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 23 tools.

**Authentication:** API Key
**Categories:** Productivity, Design
**Tools:** 23: 15 read, 8 write, 0 destructive
**Users sign in with:** API key
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=GAMMA)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Gamma connection

   In **AgentKit > Connections**, create a Gamma connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'gamma'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Gamma:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'gamma_list_folders',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "gamma"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Gamma:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="gamma_list_folders",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user opens the link once and enters their Gamma credentials there. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'gamma_get_agent_generation',
  toolInput: {
    generation_id: '<generation_id>',
  },
  connector: 'gamma',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="gamma_get_agent_generation",
    tool_input={
        "generation_id": "<generation_id>",
    },
    connection_name="gamma",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `gamma_get_agent_generation`

Get Agent Generation Status · Read-only

Get the status of an agent generation started by gamma_create_agent_generation.
Returns generationId, status (pending, completed or failed), gamma with gammaId and gammaUrl once created, result.summary, exportUrl, warnings and credits.
Use after gamma_create_agent_generation and poll until status is completed or failed. Use gamma_get_generation for non-agent generations.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `generation_id` (`string`, required): Agent generation ID returned by gamma_create_agent_generation. It starts with gen_.

Example input: `{"generation_id":"<generation_id>"}`

### `gamma_get_analytics`

Get Gamma Analytics · Read-only

Get document-level engagement metrics for a Gamma.
Returns scope, totalViews, uniqueViewers, uniqueEditors, cardCount, lastOpened and a 30-day dailyViews breakdown.
Use for an overview. Use gamma_get_card_analytics for per-card data and gamma_list_viewer_analytics for per-viewer data. Needs edit permission; data updates about hourly.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gamma_id` (`string`, required): ID of the Gamma: a file ID or the doc ID from a gamma.app/docs/... URL.

Example input: `{"gamma_id":"<gamma_id>"}`

### `gamma_get_card_analytics`

Get Gamma Card Analytics · Read-only

Get per-card engagement for a Gamma.
Returns scope, uniqueViewers, uniqueEditors, cardCount and cards with cardId, cardName, cardPosition, viewTimeSeconds and viewersPercent.
Use to see which cards hold attention. Use gamma_get_analytics for the overview. Needs edit permission; data updates about hourly.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gamma_id` (`string`, required): ID of the Gamma: a file ID or the doc ID from a gamma.app/docs/... URL.

Example input: `{"gamma_id":"<gamma_id>"}`

### `gamma_get_edit`

Get Edit Status · Read-only

Get the status of an AI edit started by gamma_edit_gamma.
Returns editId, status (pending, completed or failed), gammaId, gammaUrl, pageId, result.summary and credits.
Use after gamma_edit_gamma and poll until status is completed or failed.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `edit_id` (`string`, required): Edit ID returned by gamma_edit_gamma.

Example input: `{"edit_id":"<edit_id>"}`

### `gamma_get_export`

Get Export Status · Read-only

Get the status of an export started by gamma_export_gamma.
Returns exportId, exportAs, status (pending, completed or failed), gammaId, exportUrl when completed, and error details when failed.
Use after gamma_export_gamma and poll until status is completed or failed. The exportUrl works for anyone who has it until it expires, so treat it as a secret.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `export_id` (`string`, required): ID of the export job, returned by gamma_export_gamma.

Example input: `{"export_id":"<export_id>"}`

### `gamma_get_gamma`

Get Gamma · Read-only

Get metadata for one Gamma by file ID or by the doc ID in a gamma.app/docs/... URL.
Returns id, title, type, url, thumbnailUrl, description, author, createdTime, updatedTime, themeId and archived.
Use when you know the Gamma ID. Use gamma_search_gammas to find a Gamma by content.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gamma_id` (`string`, required): ID of the Gamma: a file ID or the doc ID from a gamma.app/docs/... URL.

Example input: `{"gamma_id":"<gamma_id>"}`

### `gamma_get_generation`

Get Generation Status · Read-only

Get the status of a generation started by gamma_create_generation or gamma_create_from_template.
Returns generationId, status (pending, completed or failed), gammaId, gammaUrl, exportUrl, credits and error details.
Use after starting a generation and poll every few seconds until status is completed or failed. Use gamma_get_agent_generation for agent generations (ids starting gen_).
Requires the generationId from the create call.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `generation_id` (`string`, required): ID of the generation to check, returned by gamma_create_generation or gamma_create_from_template.

Example input: `{"generation_id":"<generation_id>"}`

### `gamma_get_image`

Get Image Status · Read-only

Get the status of an image generation started by gamma_create_image.
Returns imageGenerationId, status (pending, completed or failed), image with url, width, height, format and savedMediaId, plus warnings, error and credits.
Use after gamma_create_image and poll until status is completed or failed.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `image_generation_id` (`string`, required): Image generation ID returned by gamma_create_image.

Example input: `{"image_generation_id":"<image_generation_id>"}`

### `gamma_get_viewer_analytics`

Get Gamma Viewer Analytics · Read-only

Get one viewer's engagement with a Gamma.
Returns scope, userId, displayName, email, lastOpened, cardsViewed, cardCount and perCardTimeSpent as a percentage of that viewer's total time.
Use after gamma_list_viewer_analytics, passing a viewerId. Only authenticated viewers can be looked up. Needs edit permission.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gamma_id` (`string`, required): ID of the Gamma: a file ID or the doc ID from a gamma.app/docs/... URL.
- `user_id` (`string`, required): Viewer user ID, the viewerId returned by gamma_list_viewer_analytics for authenticated viewers.

Example input: `{"gamma_id":"<gamma_id>","user_id":"<user_id>"}`

### `gamma_list_comments`

List Gamma Comments · Read-only

List comment threads on a Gamma, cursor-paginated.
Returns threads with id, cardId, targetText, author, contentText, status, replies, createdTime and updatedTime, plus hasMore and nextCursor.
Use updated_since to poll for new activity. Use gamma_get_gamma for the Gamma itself.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gamma_id` (`string`, required): ID of the Gamma whose comments to list.
- `after` (`string`, optional): Pagination cursor. Pass the nextCursor value from the previous response to get the next page.
- `include_archived` (`boolean`, optional): Set true to include archived (deleted) comments and replies, each flagged archived. Defaults to false.
- `limit` (`integer`, optional): Maximum number of results to return, from 1 to 50.
- `updated_since` (`string`, optional): ISO 8601 timestamp. Only threads with activity, including new replies, after this time are returned.

Example input: `{"gamma_id":"<gamma_id>"}`

### `gamma_list_folders`

List Folders · Read-only

List the folders the authenticated user is a member of in the workspace.
Returns folder id and name, plus hasMore and nextCursor for paging.
Use to find a folder_id for placing a new Gamma. Use gamma_list_themes to find a theme_id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`string`, optional): Pagination cursor. Pass the nextCursor value from the previous response to get the next page.
- `limit` (`integer`, optional): Maximum number of results to return, from 1 to 50.
- `query` (`string`, optional): Text to filter folders by name.

Example input: `{}`

### `gamma_list_themes`

List Themes · Read-only

List the themes available in the workspace, both standard and custom.
Returns theme id, name, type, colorKeywords and toneKeywords, plus hasMore and nextCursor for paging.
Use to find a theme_id for a generation. Use gamma_list_folders to find a folder_id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`string`, optional): Pagination cursor. Pass the nextCursor value from the previous response to get the next page.
- `limit` (`integer`, optional): Maximum number of results to return, from 1 to 50.
- `query` (`string`, optional): Text to filter themes by name.
- `type` (`string`, optional): Restrict to standard (built-in) or custom (workspace) themes. Keep the same value while paging. One of: `custom`, `standard`.

Example input: `{}`

### `gamma_list_viewer_analytics`

List Gamma Viewer Analytics · Read-only

List per-viewer engagement for a Gamma, cursor-paginated.
Returns scope, data with viewerId, displayName, email, lastOpened and cardsViewed, plus hasMore and nextCursor.
Use to see who viewed a Gamma. Use gamma_get_viewer_analytics for one viewer in detail. Needs edit permission; manage permission returns all viewers.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `gamma_id` (`string`, required): ID of the Gamma: a file ID or the doc ID from a gamma.app/docs/... URL.
- `after` (`string`, optional): Pagination cursor. Pass the nextCursor value from the previous response to get the next page.
- `limit` (`integer`, optional): Maximum number of results to return, from 1 to 50.
- `sort_direction` (`string`, optional): Sort order applied to each viewer's most recent open time: asc or desc. One of: `asc`, `desc`.

Example input: `{"gamma_id":"<gamma_id>"}`

### `gamma_search_gammas`

Search Gammas · Read-only

Search the Gammas the caller can access by title and body text, optionally filtered by creator or update time.
Returns hits with id, title, url, highlight, createdBy, updatedTime and archived. Results are relevance-ranked, or newest-updated first when q is empty and a filter is set.
Use to find a Gamma by content. Use gamma_get_gamma for one known Gamma. Use gamma_search_templates to find templates.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `created_by` (`string`, optional): Only return Gammas created by this user: me, an email address or a user ID.
- `include_archived` (`boolean`, optional): Set true to include archived Gammas. Defaults to false.
- `limit` (`integer`, optional): Maximum number of results to return, from 1 to 25.
- `q` (`string`, optional): Full-text search query matched against Gamma titles and body text. Optional when at least one of created_by, updated_after or updated_before is set.
- `updated_after` (`string`, optional): Only return Gammas last updated at or after this ISO 8601 timestamp.
- `updated_before` (`string`, optional): Only return Gammas last updated at or before this ISO 8601 timestamp.

Example input: `{}`

### `gamma_search_templates`

Search Templates · Read-only

Search workspace templates and official Gamma explore templates.
Returns workspaceTemplates and exploreTemplates, each with id, title, url and previewUrl, plus workspaceDegraded.
Use to find a template ID for gamma_create_from_template or gamma_create_agent_generation. Use gamma_search_gammas to search regular Gammas.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Maximum number of results to return, from 1 to 25.
- `q` (`string`, optional): Search query, up to 2000 characters. An empty query returns both lists in browse order.

Example input: `{}`

### `gamma_archive_gamma`

Archive Gamma · Write

Archive a Gamma document. Archiving an already archived Gamma succeeds.
Returns gammaId and archived.
Use to retire a Gamma without deleting it. Find IDs with gamma_search_gammas.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `gamma_id` (`string`, required): ID of the Gamma to archive.

Example input: `{"gamma_id":"<gamma_id>"}`

### `gamma_archive_image`

Archive Image · Write

Remove an item you created, such as a generated image, from the workspace media library. Archiving an already archived item succeeds, and existing image URLs keep working.
Returns savedMediaId and archived.
Use with the savedMediaId from gamma_get_image.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `saved_media_id` (`string`, required): Media library ID of the item to archive, returned as image.savedMediaId by gamma_get_image.

Example input: `{"saved_media_id":"<saved_media_id>"}`

### `gamma_create_agent_generation`

Create Agent Generation · Write

Start an asynchronous Gamma agent generation from a natural-language prompt, with optional source URLs and a template.
Returns generationId (prefixed gen_), status and warnings; the Gamma is not ready yet.
Use when you want the Gamma agent to research and build from a brief. Use gamma_create_generation to shape the output from your own text. Poll gamma_get_agent_generation with the generationId.
Spends credits and requires a paid Gamma plan with API access.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `prompt` (`string`, required): The brief describing what to generate, up to 400000 characters. Example: "A 10-slide investor update on our Q3 growth".
- `additional_instructions` (`string`, optional): Extra guidance such as tone, audience, language or style, up to 5000 characters.
- `disable_connectors` (`boolean`, optional): Set true to stop this run from using workspace connectors such as Notion or Slack.
- `export_as` (`string`, optional): Export the finished Gamma automatically after generation. The download link appears as exportUrl when the generation status is completed. One of: `pdf`, `png`, `pptx`.
- `external_access` (`string`, optional): Access level for anyone outside the workspace who opens the shared link. One of: `comment`, `edit`, `noAccess`, `view`.
- `folder_id` (`string`, optional): ID of the folder to place the new Gamma in. Get IDs from gamma_list_folders.
- `format` (`string`, optional): Output format: presentation (default), document or social. webpage is not supported by the agent. One of: `document`, `presentation`, `social`.
- `num_cards` (`integer`, optional): Soft target for the number of cards, from 1 to 100. A value above the plan limit is rejected.
- `quality` (`string`, optional): Quality preset: lite, standard or max. The max preset needs a plan that includes it and can use more credits. One of: `lite`, `max`, `standard`.
- `share_email_access` (`string`, optional): Permission level for the addresses in share_with_emails. Only used when share_with_emails is also provided. One of: `comment`, `edit`, `fullAccess`, `view`.
- `share_with_emails` (`array`, optional): Email addresses to share the new Gamma with. Pair with share_email_access to choose their permission level.
- `source_urls` (`array`, optional): Up to 10 http or https URLs the agent should read as source material. This is guidance; unreadable URLs are skipped.
- `template_id` (`string`, optional): Optional starting point: the ID of a workspace template, a Gamma in the workspace or an official Gamma template. Find IDs with gamma_search_templates.
- `theme_id` (`string`, optional): ID of the theme to apply. Get IDs from gamma_list_themes.
- `workspace_access` (`string`, optional): Default access level for members of the workspace on the new Gamma. One of: `comment`, `edit`, `fullAccess`, `noAccess`, `view`.

Example input: `{"prompt":"A 10-slide investor update on our Q3 growth"}`

### `gamma_create_from_template`

Create Generation From Template · Write

Start an asynchronous generation that adapts an existing single-page Gamma used as a template.
Returns generationId immediately; the new Gamma is not ready yet.
Use gamma_create_from_template to remix a template Gamma, found with gamma_search_templates or gamma_search_gammas. Use gamma_create_generation to build from text without a template. Poll gamma_get_generation with the returned generationId.
Spends credits and requires a paid Gamma plan with API access.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `gamma_id` (`string`, required): File ID of the Gamma to use as the template. The Gamma must contain exactly one page.
- `prompt` (`string`, required): Instructions describing what to generate from the template (1 to 400000 characters). Example: "Adapt this pitch for a healthcare audience".
- `export_as` (`string`, optional): Export the finished Gamma automatically after generation. The download link appears as exportUrl when the generation status is completed. One of: `pdf`, `png`, `pptx`.
- `external_access` (`string`, optional): Access level for anyone outside the workspace who opens the shared link. One of: `comment`, `edit`, `noAccess`, `view`.
- `folder_id` (`string`, optional): ID of the folder to place the new Gamma in. Get IDs from gamma_list_folders.
- `image_model` (`string`, optional): Image model to use for AI generated images. See the Gamma image models reference for accepted values.
- `image_style` (`string`, optional): Style description for generated images, up to 5000 characters. Example: "clean photography".
- `share_email_access` (`string`, optional): Permission level for the addresses in share_with_emails. Only used when share_with_emails is also provided. One of: `comment`, `edit`, `fullAccess`, `view`.
- `share_with_emails` (`array`, optional): Email addresses to share the new Gamma with. Pair with share_email_access to choose their permission level.
- `theme_id` (`string`, optional): ID of the theme to apply. Get IDs from gamma_list_themes.
- `title` (`string`, optional): Custom title for the new Gamma (1 to 500 characters). When empty, Gamma generates a title.
- `workspace_access` (`string`, optional): Default access level for members of the workspace on the new Gamma. One of: `comment`, `edit`, `fullAccess`, `noAccess`, `view`.

Example input: `{"gamma_id":"<gamma_id>","prompt":"Adapt this pitch for a healthcare audience"}`

### `gamma_create_generation`

Create Generation · Write

Start an asynchronous Gamma generation from text, producing a presentation, document, webpage or social post.
Returns generationId immediately; the Gamma is not ready yet.
Use gamma_create_generation when you have text or a topic. Use gamma_create_from_template to adapt an existing Gamma. Use gamma_create_agent_generation for an agent-driven build from a prompt. Poll gamma_get_generation with the returned generationId.
Spends credits and requires a paid Gamma plan with API access.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `input_text` (`string`, required): Text to generate from: a topic, an outline or full content (1 to 400000 characters). Example: "Quarterly sales review for Q3 2026 with revenue, wins and risks".
- `additional_instructions` (`string`, optional): Extra guidance for the AI such as structure or emphasis, up to 5000 characters. Example: "Keep each slide to three bullet points".
- `audience` (`string`, optional): Target audience of the content, up to 500 characters. Example: "enterprise buyers".
- `card_dimensions` (`string`, optional): Aspect ratio or page size of each card: 16x9, 4x3, 1x1, 4x5, 9x16, a4, letter, fluid or pageless. Valid values depend on the format. One of: `16x9`, `1x1`, `4x3`, `4x5`, `9x16`, `a4`, `fluid`, `letter`, `pageless`.
- `card_split` (`string`, optional): How Gamma splits the content into cards: auto lets Gamma decide, inputTextBreaks splits at the horizontal rules (---) you put in input_text. One of: `auto`, `inputTextBreaks`.
- `export_as` (`string`, optional): Export the finished Gamma automatically after generation. The download link appears as exportUrl when the generation status is completed. One of: `pdf`, `png`, `pptx`.
- `external_access` (`string`, optional): Access level for anyone outside the workspace who opens the shared link. One of: `comment`, `edit`, `noAccess`, `view`.
- `folder_id` (`string`, optional): ID of the folder to place the new Gamma in. Get IDs from gamma_list_folders.
- `format` (`string`, optional): Output format of the Gamma: presentation, document, webpage or social. One of: `document`, `presentation`, `social`, `webpage`.
- `image_model` (`string`, optional): Image model to use when image_source is aiGenerated, for example flux-2-pro, gemini-3-pro-image or recraft-v4. See the Gamma image models reference for accepted values.
- `image_source` (`string`, optional): Where images come from: aiGenerated, webAllImages, webFreeToUse, webFreeToUseCommercially, pexels, giphy, pictographic, themeAccent, placeholder or noImages. One of: `aiGenerated`, `giphy`, `noImages`, `pexels`, `pictographic`, `placeholder`, `themeAccent`, `webAllImages`, `webFreeToUse`, `webFreeToUseCommercially`.
- `image_style` (`string`, optional): Style description for AI generated images, up to 5000 characters. Example: "minimal flat illustration in blue tones".
- `language` (`string`, optional): Language code of the generated content, for example en, es, fr, de, ja, pt-br or zh-cn. See the Gamma output languages reference for the full list.
- `num_cards` (`integer`, optional): Target number of cards (slides or sections) to generate, at least 1. Limits depend on the workspace plan.
- `share_email_access` (`string`, optional): Permission level for the addresses in share_with_emails. Only used when share_with_emails is also provided. One of: `comment`, `edit`, `fullAccess`, `view`.
- `share_with_emails` (`array`, optional): Email addresses to share the new Gamma with. Pair with share_email_access to choose their permission level.
- `text_amount` (`string`, optional): How much text to put on each card: brief, medium, detailed or extensive. One of: `brief`, `detailed`, `extensive`, `medium`.
- `text_mode` (`string`, optional): How Gamma treats input_text: generate expands a short topic, condense shortens long text, preserve keeps your wording. Use generate for a short topic and preserve for finished copy. One of: `condense`, `generate`, `preserve`.
- `theme_id` (`string`, optional): ID of the theme to apply. Get IDs from gamma_list_themes.
- `title` (`string`, optional): Custom title for the Gamma (1 to 500 characters). When empty, Gamma generates a title from the content.
- `tone` (`string`, optional): Tone or writing style of the generated text, up to 500 characters. Example: "professional and upbeat".
- `workspace_access` (`string`, optional): Default access level for members of the workspace on the new Gamma. One of: `comment`, `edit`, `fullAccess`, `noAccess`, `view`.

Example input: `{"input_text":"Quarterly sales review for Q3 2026 with revenue, wins and risks"}`

### `gamma_create_image`

Create Image · Write

Start an asynchronous generation of one standalone on-brand image from a text prompt.
Returns imageGenerationId and any warnings; the image is not ready yet.
Use for a single image outside of a Gamma. Poll gamma_get_image with the imageGenerationId.
Spends credits.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `prompt` (`string`, required): Description of the image to generate, up to 5000 characters. Put background treatments here, such as "on white". Example: "A paper airplane flying over a city skyline".
- `image_type` (`string`, optional): Visual style: abstract, illustration (default), photo or scene. Ignored when reference_image_urls are given. One of: `abstract`, `illustration`, `photo`, `scene`.
- `reference_image_urls` (`array`, optional): Up to 4 HTTPS image URLs that supply a character or product to place in the scene. They take precedence over image_type and theme_id.
- `size_preset` (`string`, optional): Output size preset: banner, slide, social-portrait, social-square (default) or story. One of: `banner`, `slide`, `social-portrait`, `social-square`, `story`.
- `theme_id` (`string`, optional): Theme to brand the image with. Defaults to the workspace default theme. Find IDs with gamma_list_themes.

Example input: `{"prompt":"A paper airplane flying over a city skyline"}`

### `gamma_edit_gamma`

Edit Gamma With AI · Write

Start an asynchronous AI edit of one page of an existing Gamma from a natural-language instruction.
Returns editId and gammaUrl; the edit is not finished yet.
Use to change an existing Gamma in place. Needs edit permission, runs one edit per page at a time and cannot add pages. Poll gamma_get_edit with the editId.
Spends credits.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `gamma_id` (`string`, required): ID of the Gamma to edit. A file ID edits the main page; a page ID (the ID in a gamma.app/docs/<id> URL) edits that page.
- `prompt` (`string`, required): Instruction describing the edit, up to 10000 characters. Example: "Make the title on this page shorter and add a summary bullet".
- `disable_connectors` (`boolean`, optional): Set true to stop this edit from using workspace connectors such as Notion or Slack.
- `quality` (`string`, optional): Model effort for the edit: lite, standard or max. The max preset needs a plan that includes it and can use more credits. One of: `lite`, `max`, `standard`.

Example input: `{"gamma_id":"<gamma_id>","prompt":"Make the title on this page shorter and add a summary bullet"}`

### `gamma_export_gamma`

Export Gamma · Write

Start an asynchronous export of an existing Gamma to PDF, PPTX or PNG.
Returns exportId; the file is not ready yet.
Use to export a Gamma that already exists. Poll gamma_get_export with the exportId for the download link.
Exports may spend credits.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `export_as` (`string`, required): File format to export to: pdf, pptx, or png (a zip with one PNG per card). One of: `pdf`, `png`, `pptx`.
- `gamma_id` (`string`, required): ID of the Gamma to export: a file ID or the doc ID from a gamma.app/docs/... URL.

Example input: `{"export_as":"pdf","gamma_id":"<gamma_id>"}`

## Related

Other Productivity connectors ([all 144](/agentkit/connectors/?category=productivity)):

- [Slack](/agentkit/connectors/slack/): Scalekit connector, OAuth, 96 tools
- [Microsoft 365](/agentkit/connectors/microsoft365/): Scalekit connector, OAuth, 317 tools
- [Notion](/agentkit/connectors/notion/): Scalekit connector, OAuth, 51 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
