Skip to main content
Use Gamma through Corsair: one client, typed API calls. Create an API key in Gamma under Account settings, API keys. It is sent in the X-API-KEY header. Things to know before you call:
  • Two generation routes, and they are not interchangeable. agent.generate runs Gamma 5 from a single brief and is the one to use for a new presentation, document or social post. generations.create is the Classic path: it is the only one that takes a pages array for a multi-page gamma or site, and the only one that publishes with publish: true. A Classic body carries either inputText or pages, never both, and the plugin refuses a body with neither.
  • A generation is asynchronous. Both creates return a generationId at once, and a poll answers pending until it is completed or failed (which carries an error). A completed Classic generation carries gammaId and gammaUrl at the top level; an agent generation nests them under gamma, next to the agent’s result.summary. Spends credits.
  • exportUrl is a credential. The download link works for anyone holding it, for about a week, and Gamma’s own docs say to treat it as a secret. The plugin never logs it; generations.get and exports.get report only whether one arrived.
  • png exports are archives. A PNG export is a zip of one image per card, not a single file, and pptx and pdf match their own formats.
  • Archiving is not deleting. gammas.archive is idempotent and reversible from the Gamma app, so it is a write rather than a destructive call. gammas.delete is permanent and needs a workspace admin role.
  • A 403 has several meanings. A web app URL slug sent where a file ID belongs, a workspace below Pro on the analytics routes, a key owner without the permission, or, on the agent routes, a workspace out of credits (code: insufficient_credits, which the plugin reports as isQuotaError; Classic routes answer 402 for that). The code says which; individual_analytics_required is the analytics case.
  • A 429 can be a job cap, not a rate. Gamma adds code: workspace_concurrency_limit_exceeded when a Free workspace already has too many pending jobs started with an API key, and sends Retry-After. The plugin retries both, honouring the header.
  • Credits are reported per generation. A completed generations.get carries credits.deducted and credits.remaining, which is how you see what a run cost.
  • No webhooks. Gamma does not push; poll the generation until it is completed or failed.
What you get:
  • 12 typed API operations

Setup

1

Install

2

Add the plugin

corsair.ts
With multiTenancy: true, scope calls with corsair.withTenant(id). See Quick start for KEK + Hub keys, and Multi-tenancy for account isolation.
3

Choose authentication

4

Connect a tenant

Mint a connect link and send the tenant to it. Hub hosts the page and delivers the result to your app — see Connect / OAuth.

Example API calls

Search your gammas
Generate a presentation from a brief
See the full list on the API page.

What’s next

API reference

Every gamma.api.* operation with input and output types.

Connect / OAuth

createLink, Hub delivery, and tenant connect flows.

Use with agents

Expose this plugin’s operations as MCP tools.