Skip to main content
Gamma logo

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).
Categories: Marketing & Advertising · Document Processing · Content Management · Auth: API Key · Actions: 5

Authentication

API Key Authentication

Authenticate using your Gamma API key
1

Step 1

Sign in to Gamma with a Pro, Ultra, Teams, or Business plan
2

Step 2

Open Account Settings and navigate to the ‘API Keys’ section
3

Step 3

Create a new API key (format: sk-gamma-xxxxxxxx) or copy an existing one
4

Step 4

Paste the API key below

Required Credentials

FieldDescriptionRequiredFormat
Gamma API KeyYour Gamma API key from Account Settings > API KeysYessk-gamma-xxxxxxxxxxxxxxxxxxxxxxxx

Available Actions

Parameters

input_text
string
required
Text and image URLs used to generate your gamma (1-100,000 tokens)
text_mode
string
required
How to handle input text: generate (AI expands), condense (AI summarizes), or preserve (keep as-is)
format
string
Output format: presentation, document, webpage, or social (default: presentation)
theme_id
string
Custom Gamma workspace theme ID (use list_themes to find themes)
num_cards
integer
Number of cards/slides to generate (1-60 for Pro, 1-75 for Ultra; default: 10)
card_split
string
How to split content into cards: auto or inputTextBreaks
card_dimensions
string
Card aspect ratio. Presentation: fluid, 16x9, 4x3. Document: fluid, pageless, letter, a4. Social: 1x1, 4x5, 9x16
additional_instructions
string
Additional instructions for the AI generation (max 2000 chars)
export_as
string
Automatically export the generated gamma as pdf or pptx
folder_ids
string
Comma-separated folder IDs to store the generated gamma in
text_amount
string
Amount of text per card: brief, medium, detailed, or extensive
text_tone
string
Tone of the generated text, e.g. “professional” (max 500 chars)
text_audience
string
Target audience, e.g. “executives”, “students” (max 500 chars)
text_language
string
Language code for the generated text (default: en)
image_source
string
Where to source images: aiGenerated, pictographic, unsplash, webAllImages, webFreeToUse, webFreeToUseCommercially, giphy, placeholder, or noImages
image_model
string
AI image generation model to use when image_source is aiGenerated
image_style
string
Style directive for AI-generated images, e.g. “watercolor”

Response

{
  "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"
}

Parameters

gamma_id
string
required
The ID of the template gamma to adapt
prompt
string
required
Instructions for how to adapt the template (1-100,000 tokens)
theme_id
string
Custom Gamma workspace theme ID to apply
export_as
string
Automatically export the generated gamma as pdf or pptx
folder_ids
string
Comma-separated folder IDs to store the generated gamma in
image_model
string
AI image generation model to use when image_source is aiGenerated
image_style
string
Style directive for AI-generated images, e.g. “watercolor”

Response

{
  "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"
}

Parameters

generation_id
string
required
The generation ID returned by generate or generate_from_template

Response

{
  "$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"
}

Parameters

query
string
Search query to filter themes by name (case-insensitive)
limit
integer
Maximum number of themes to return per page (max 50)
after
string
Pagination cursor from a previous response (next_cursor)

Response

{
  "$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"
}

Parameters

query
string
Search query to filter folders by name (case-sensitive)
limit
integer
Maximum number of folders to return per page (max 50)
after
string
Pagination cursor from a previous response (next_cursor)

Response

{
  "$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"
}

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.

Ahrefs

Customer.io

Google Ad Manager