> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modulex.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Gamma Integration for AI Agents & Workflows

> Integrate Gamma into the workflow. Can generate presentations, documents, webpages, and social posts from text, create from templates, check generation status, and browse themes and folders.

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img src="https://mintcdn.com/modulexaillc/df8MOr-hXotYLTh5/logos/placeholder.svg?fit=max&auto=format&n=df8MOr-hXotYLTh5&q=85&s=a4046f9cd6d738c81259050e9833913c" alt="Gamma logo" width="72" height="72" data-path="logos/placeholder.svg" />

## Overview

Add **Gamma** to any ModuleX agent or workflow. Generate presentations, documents, webpages, and social posts with AI from text, create from templates, check generation status, and browse workspace themes and folders against the Gamma REST API (`public-api.gamma.app`).

<Info>
  **Categories**: Marketing & Advertising · Document Processing · Content Management · **Auth**: API Key · **Actions**: 5
</Info>

## Authentication

### API Key Authentication

Authenticate using your Gamma API key

<Steps>
  <Step title="Step 1">
    Sign in to Gamma with a Pro, Ultra, Teams, or Business plan
  </Step>

  <Step title="Step 2">
    Open Account Settings and navigate to the 'API Keys' section
  </Step>

  <Step title="Step 3">
    Create a new API key (format: sk-gamma-xxxxxxxx) or copy an existing one
  </Step>

  <Step title="Step 4">
    Paste the API key below
  </Step>
</Steps>

#### Required Credentials

| Field         | Description                                         | Required | Format                              |
| ------------- | --------------------------------------------------- | -------- | ----------------------------------- |
| Gamma API Key | Your Gamma API key from Account Settings > API Keys | Yes      | `sk-gamma-xxxxxxxxxxxxxxxxxxxxxxxx` |

## Available Actions

<AccordionGroup>
  <Accordion title="generate — Generate a new Gamma presentation, document, webpage, or social post from text input.">
    ### Parameters

    <ResponseField name="input_text" type="string" required>
      Text and image URLs used to generate your gamma (1-100,000 tokens)
    </ResponseField>

    <ResponseField name="text_mode" type="string" required>
      How to handle input text: generate (AI expands), condense (AI summarizes), or preserve (keep as-is)
    </ResponseField>

    <ResponseField name="format" type="string">
      Output format: presentation, document, webpage, or social (default: presentation)
    </ResponseField>

    <ResponseField name="theme_id" type="string">
      Custom Gamma workspace theme ID (use list\_themes to find themes)
    </ResponseField>

    <ResponseField name="num_cards" type="integer">
      Number of cards/slides to generate (1-60 for Pro, 1-75 for Ultra; default: 10)
    </ResponseField>

    <ResponseField name="card_split" type="string">
      How to split content into cards: auto or inputTextBreaks
    </ResponseField>

    <ResponseField name="card_dimensions" type="string">
      Card aspect ratio. Presentation: fluid, 16x9, 4x3. Document: fluid, pageless, letter, a4. Social: 1x1, 4x5, 9x16
    </ResponseField>

    <ResponseField name="additional_instructions" type="string">
      Additional instructions for the AI generation (max 2000 chars)
    </ResponseField>

    <ResponseField name="export_as" type="string">
      Automatically export the generated gamma as pdf or pptx
    </ResponseField>

    <ResponseField name="folder_ids" type="string">
      Comma-separated folder IDs to store the generated gamma in
    </ResponseField>

    <ResponseField name="text_amount" type="string">
      Amount of text per card: brief, medium, detailed, or extensive
    </ResponseField>

    <ResponseField name="text_tone" type="string">
      Tone of the generated text, e.g. "professional" (max 500 chars)
    </ResponseField>

    <ResponseField name="text_audience" type="string">
      Target audience, e.g. "executives", "students" (max 500 chars)
    </ResponseField>

    <ResponseField name="text_language" type="string">
      Language code for the generated text (default: en)
    </ResponseField>

    <ResponseField name="image_source" type="string">
      Where to source images: aiGenerated, pictographic, unsplash, webAllImages, webFreeToUse, webFreeToUseCommercially, giphy, placeholder, or noImages
    </ResponseField>

    <ResponseField name="image_model" type="string">
      AI image generation model to use when image\_source is aiGenerated
    </ResponseField>

    <ResponseField name="image_style" type="string">
      Style directive for AI-generated images, e.g. "watercolor"
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "generation_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Generation Id"
        },
        "warnings": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Warnings"
        }
      },
      "required": [
        "success"
      ],
      "title": "GenerateOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="generate_from_template — Generate a new Gamma by adapting an existing template with a prompt.">
    ### Parameters

    <ResponseField name="gamma_id" type="string" required>
      The ID of the template gamma to adapt
    </ResponseField>

    <ResponseField name="prompt" type="string" required>
      Instructions for how to adapt the template (1-100,000 tokens)
    </ResponseField>

    <ResponseField name="theme_id" type="string">
      Custom Gamma workspace theme ID to apply
    </ResponseField>

    <ResponseField name="export_as" type="string">
      Automatically export the generated gamma as pdf or pptx
    </ResponseField>

    <ResponseField name="folder_ids" type="string">
      Comma-separated folder IDs to store the generated gamma in
    </ResponseField>

    <ResponseField name="image_model" type="string">
      AI image generation model to use when image\_source is aiGenerated
    </ResponseField>

    <ResponseField name="image_style" type="string">
      Style directive for AI-generated images, e.g. "watercolor"
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "generation_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Generation Id"
        },
        "warnings": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Warnings"
        }
      },
      "required": [
        "success"
      ],
      "title": "GenerateFromTemplateOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="check_status — Check the status of a Gamma generation job. Returns the gamma URL when completed, or error details if failed.">
    ### Parameters

    <ResponseField name="generation_id" type="string" required>
      The generation ID returned by generate or generate\_from\_template
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "GammaCredits": {
          "additionalProperties": false,
          "description": "Credit usage reported on a completed generation.",
          "properties": {
            "deducted": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Deducted"
            },
            "remaining": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Remaining"
            }
          },
          "title": "GammaCredits",
          "type": "object"
        },
        "GammaError": {
          "additionalProperties": false,
          "description": "Error details reported on a failed generation.",
          "properties": {
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            },
            "status_code": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Status Code"
            }
          },
          "title": "GammaError",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "generation_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Generation Id"
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Status"
        },
        "gamma_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Gamma Url"
        },
        "gamma_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Gamma Id"
        },
        "export_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Export Url"
        },
        "credits": {
          "anyOf": [
            {
              "$ref": "#/$defs/GammaCredits"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "generation_error": {
          "anyOf": [
            {
              "$ref": "#/$defs/GammaError"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "success"
      ],
      "title": "CheckStatusOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_themes — List available themes in your Gamma workspace. Returns theme IDs, names, and keywords for styling.">
    ### Parameters

    <ResponseField name="query" type="string">
      Search query to filter themes by name (case-insensitive)
    </ResponseField>

    <ResponseField name="limit" type="integer">
      Maximum number of themes to return per page (max 50)
    </ResponseField>

    <ResponseField name="after" type="string">
      Pagination cursor from a previous response (next\_cursor)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "ThemeItem": {
          "additionalProperties": false,
          "description": "A single theme in ``list_themes``.",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Name"
            },
            "type": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Type"
            },
            "color_keywords": {
              "items": {
                "type": "string"
              },
              "title": "Color Keywords",
              "type": "array"
            },
            "tone_keywords": {
              "items": {
                "type": "string"
              },
              "title": "Tone Keywords",
              "type": "array"
            }
          },
          "title": "ThemeItem",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "themes": {
          "items": {
            "$ref": "#/$defs/ThemeItem"
          },
          "title": "Themes",
          "type": "array"
        },
        "has_more": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Has More"
        },
        "next_cursor": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Next Cursor"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListThemesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_folders — List available folders in your Gamma workspace. Returns folder IDs and names for organizing generated content.">
    ### Parameters

    <ResponseField name="query" type="string">
      Search query to filter folders by name (case-sensitive)
    </ResponseField>

    <ResponseField name="limit" type="integer">
      Maximum number of folders to return per page (max 50)
    </ResponseField>

    <ResponseField name="after" type="string">
      Pagination cursor from a previous response (next\_cursor)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "FolderItem": {
          "additionalProperties": false,
          "description": "A single folder in ``list_folders``.",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Name"
            }
          },
          "title": "FolderItem",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "folders": {
          "items": {
            "$ref": "#/$defs/FolderItem"
          },
          "title": "Folders",
          "type": "array"
        },
        "has_more": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Has More"
        },
        "next_cursor": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Next Cursor"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListFoldersOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* API key access requires a paid plan (Pro, Ultra, Teams, or Business).
* Generation cost is metered in credits; `check_status` reports
  `credits.deducted` and `credits.remaining` on completion.
* `list_themes` and `list_folders` cap `limit` at 50 per page and use a
  `next_cursor` cursor (pass it as `after`) for further pages.
* Every response carries rate-limit headers
  (`x-ratelimit-remaining`, `x-ratelimit-remaining-daily`).
* **Error model**: non-2xx responses and timeouts are caught and
  returned as `success=False` + `error` rather than raising. Plan for
  retries on the agent side based on the error string.

## Related integrations

<CardGroup cols={3}>
  <Card title="Ahrefs" href="/integrations/tools/ahrefs" />

  <Card title="Customer.io" href="/integrations/tools/customerio" />

  <Card title="Google Ad Manager" href="/integrations/tools/google-ad-manager" />
</CardGroup>

## Links

* [Gamma](https://gamma.app)
