First-party app
Gamma

Gamma

Generate presentations, documents, webpages, and social posts with Gamma's AI, and manage the results.

stable AI & Machine LearningProductivityDocuments & Files

About

Gamma ships in the w6w first-party pack. It declares 20 actions, 1 health check, and the host runs its code in a sandbox that never sees the credential.

App id
io.w6w.gamma
Version
0.1.0
Author
w6w
Licence
MIT
Categories
AI & Machine Learning · Productivity · Documents & Files

Overview

Gamma turns a topic or an existing document into a polished presentation, document, webpage, or social post using AI. This app covers the Gamma Public API end to end: kick off a generation from raw text or a multi-page outline, or adapt an existing Gamma as a template; poll for the result (view URL, export URL, and credit usage); and generate a standalone on-brand image the same way.

Beyond generation, it covers the management surface a workflow needs to operate on what it created — searching gammas and templates, reading metadata and comment threads, archiving, exporting to PDF/PPTX/PNG, and deleting — plus doc-level, per-card, and per-viewer engagement analytics for a finished Gamma.

A health check tracks Gamma’s own status page (status.gamma.app), and the credential probe (List Themes) needs no more permission than an ordinary workspace member has, so a scoped-down key still reports healthy.

Build with Gamma

Three routes to the same 20 actions. The Workflow tab is generated from Gamma's own manifest and carries its real ids, so it is copy-pasteable; the Code and CLI examples are the same call for any action on any app, so every app-specific value in them is a blank you fill in.

Archive Gamma

archive-gamma

Archive a Gamma to remove it from the active workspace without deleting it. Requires edit permission. Use the API file ID (e.g. g_l0mf2jvf1fpmi1v), not the web app URL slug.

Archive Image

archive-image

Remove a generated image from the workspace media library without deleting the underlying file — existing URLs keep working. Idempotent.

Create Generation

create-generation

Start an asynchronous generation from text — Gamma determines the layout. Provide inputText for a single-page File, or Pages (JSON) for a multi-page File. Poll Get Generation Status with the returned generationId.

Create Generation From Template

create-generation-from-template

Adapt, remix, or transform an existing single-page Gamma. The template's structure is preserved by default and changes only when the prompt asks. Poll Get Generation Status with the returned generationId.

Create Image Generation

create-image-generation

Generate a standalone on-brand image from a text prompt. Poll Get Image Generation Status with the returned imageGenerationId.

Delete Gamma

delete-gamma

Permanently delete a Gamma document. Requires a workspace admin role on the API key's workspace. The Gamma becomes immediately inaccessible and is no longer addressable via the API.

Export Gamma

export-gamma

Start an asynchronous export of an existing Gamma to PDF, PPTX, or PNG. Accepts a gamma (file) ID or a page/doc ID.

Get Export Status

get-export-status

Poll an export job. When complete, the response includes exportUrl. render_timeout and export_failed are safe to retry; deck_too_large and no_content require changing the input.

Get Gamma

get-gamma

Fetch title, thumbnail, URL, and other metadata for a single gamma. Accepts a file ID or the doc ID from the web app's document URL.

Get Gamma Analytics

get-gamma-analytics

Doc-level engagement metrics for a Gamma: total views, unique viewers/editors, card count, last opened time, and a 30-day daily unique-viewer breakdown.

Get Gamma Card Analytics

get-gamma-card-analytics

Per-card engagement for a Gamma: view time in seconds and viewer reach as a percentage, for every card.

Get Gamma Viewer Analytics

get-gamma-viewer-analytics

Paginated per-viewer engagement rows for a Gamma — display name, email, last-opened time, and cards viewed. Capped at 500 viewers total.

Get Gamma Viewer Detail Analytics

get-gamma-viewer-detail-analytics

One authenticated viewer's engagement with a Gamma: display name, email, last-opened time, cards viewed, and relative time spent per card.

Get Generation Status

get-generation-status

Poll a generation job. Returns gammaUrl, exportUrl and credits once status is completed, or an error object once failed.

Get Image Generation Status

get-image-generation-status

Poll an image generation job. When complete, the response includes the image URL, dimensions, and savedMediaId for the workspace media library.

List Folders

list-folders

List folders the authenticated user is a member of. Use a returned id as folderId when generating into a specific folder.

List Gamma Comments

list-gamma-comments

List comment threads on a Gamma, cursor-paginated. Requires comment-level access on the Gamma.

List Themes

list-themes

List themes available to the workspace — standard (built-in) and custom. Use a returned id as themeId in a generation request.

Search Gammas

search-gammas

Full-text search over gammas the caller can access, matched against titles and body text. With no query and at least one filter, results are ordered by last-updated descending. A 403 means search isn't enabled for this workspace yet.

Search Templates

search-templates

Search the caller's workspace templates and the official Gamma explore templates in one request. Only workspaceTemplates ids can be passed as gammaId to Create Generation From Template.

A workflow step names the app and the action, and the editor fills in the connection when you pick one. This is the Step shape from the workflow spec, carrying Gamma's real ids.

{
  "manifestVersion": "2",
  "name": "gamma-example",
  "steps": [
    {
      "id": "create-generation-from-template",
      "uses": {
        "app": "io.w6w.gamma",
        "action": "create-generation-from-template",
        "connection": "conn_YOUR_CONNECTION_ID"
      },
      "with": {
        "prompt": "<prompt>",
        "gammaId": "<gammaId>"
      }
    }
  ]
}

Here are some of the things you can do

  • Create Generation From Template

    perform
    create-generation-from-template
  • Create Generation

    perform
    create-generation
  • Create Image Generation

    perform
    create-image-generation
  • Export Gamma

    perform
    export-gamma
  • Get Export Status

    read
    get-export-status

+15 more actions available

Every app-specific value here is a blank you have to fill in. An app action is reached through the connection that authenticates it, so the address is a connection id, not the app id — and connections belong to your account, so a public page cannot know yours. Create one for Gamma, then fill in the three blanks: conn_YOUR_CONNECTION_ID, the action key, and the parameters that action declares. The call itself is real — the shape is transcribed from the studio's own snippet builder, which prints the same kind of blanks — but nothing in it is specific to Gamma. The Workflow tab is where this app's real ids are.

Install
npm install @w6w/sdk
yarn add @w6w/sdk
pnpm add @w6w/sdk
deno add npm:@w6w/sdk
Code
import { W6wClient, isActionRun } from "@w6w/sdk";

// Reads W6W_BASE_URL and W6W_TOKEN from the environment when omitted.
const client = new W6wClient();

const envelope = await client.run({
  urn: "conn_YOUR_CONNECTION_ID",
  action: "create-generation-from-template",
  payload: {
    prompt: "<value>",
    gammaId: "<value>",
    // title: "<value>",
    // themeId: "<value>",
    // folderId: "<value>",
    // exportAs: "<value>",
    // imageOptions: "<value>",
    // sharingOptions: "<value>",
  },
});

if (isActionRun(envelope)) console.log(envelope.value);
Install the CLI
npm install -g @w6w/cli
CLI
w6w run conn_YOUR_CONNECTION_ID --action create-generation-from-template --payload '{"prompt":"<value>","gammaId":"<value>"}'

Give an AI agent Gamma — without giving it Gamma's credentials. One MCP endpoint exposes every app, function and workflow the caller is entitled to, as tools it can discover and run. Access is granted per team while we onboard.

One tool call
{
  "name": "w6w_invoke",
  "arguments": {
    "ref": "app:io.w6w.gamma#create-generation-from-template",
    "input": {
      "prompt": "<prompt>",
      "gammaId": "<gammaId>"
    }
  }
}

Every tool names its target with a single ref. The app: form above doesn't name a connection at all — the host resolves which of the caller's Gamma connections to sign with, and refuses rather than guesses when the answer is ambiguous.

What the agent gets

Credentials it can't read

The token is attached host-side, at the moment of the call. It is never a tool argument, never in the model's context, and never in a transcript — so a prompt injection has nothing to exfiltrate.

A tool surface scoped to the caller

Tools are derived per end user from what that person has actually connected and is entitled to — not one shared bot identity carrying the union of everyone's access.

A durable workflow in one call

Multi-step work runs on the workflow engine and returns a run handle the agent can poll — retries, branching and state survive the conversation that started them.

Health-aware discovery

Gamma's declared health checks are on the surface too, so an agent can tell "the vendor is down" from "your credential expired" before it burns a retry on either.

The MCP surface is part of the hosted platform. Gamma itself is MIT, and the runtime that executes it is source-available (FSL).

Request MCP access

Health checks

Gamma declares its own checks, so its health is a property of the app rather than something the host guesses at.

service

Gamma platform status

Incident history from status.gamma.app (Instatus). An incident is 'open' until its own latest status line reads Resolved; unrecognised entries are treated as open rather than guessed at.