CtrlK
BlogDocsLog inGet started
Tessl Logo

gamma-install-auth

Set up Gamma API v1.0 authentication and first request. Use when configuring API keys, setting up X-API-KEY header, or initializing Gamma REST API access in a project. Trigger: "install gamma", "setup gamma API", "gamma auth", "gamma API key", "configure gamma".

85

Quality

83%

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Passed

No known issues

SKILL.md
Quality
Evals
Security

Gamma Install & Auth

Overview

Configure authentication for the Gamma Generate API v1.0 (GA since Nov 2025). Gamma uses a REST API at https://public-api.gamma.app/v1.0/ — there is no official SDK package. All requests authenticate via the X-API-KEY header.

Prerequisites

  • Gamma Pro account or higher (API access requires Pro+)
  • Node.js 18+ or Python 3.10+ for wrapper code
  • curl or HTTP client library

Instructions

Step 1: Generate API Key

  1. Log in at gamma.app
  2. Navigate to Settings and Members (dropdown, upper-left)
  3. Select the API key tab
  4. Click Create API key
  5. Copy and securely store the key — it will not be shown again

Step 2: Configure Environment

# Set environment variable (add to .env or shell profile)
export GAMMA_API_KEY="gma_your_api_key_here"

# .env file approach
echo 'GAMMA_API_KEY=gma_your_api_key_here' >> .env

Step 3: Verify Connection

# Quick verification with curl
curl -s -o /dev/null -w "%{http_code}" \
  -H "X-API-KEY: ${GAMMA_API_KEY}" \
  https://public-api.gamma.app/v1.0/themes
# 200 = authenticated, 401 = invalid key

Step 4: First API Call (Node.js)

// gamma-client.ts — thin wrapper around the REST API
const GAMMA_BASE = "https://public-api.gamma.app/v1.0";

interface GammaConfig {
  apiKey: string;
  baseUrl?: string;
}

export function createGammaClient(config: GammaConfig) {
  const headers = {
    "X-API-KEY": config.apiKey,
    "Content-Type": "application/json",
  };
  const base = config.baseUrl ?? GAMMA_BASE;

  return {
    async listThemes() {
      const res = await fetch(`${base}/themes`, { headers });
      if (!res.ok) throw new Error(`Gamma API ${res.status}: ${await res.text()}`);
      return res.json();
    },
    async listFolders() {
      const res = await fetch(`${base}/folders`, { headers });
      if (!res.ok) throw new Error(`Gamma API ${res.status}: ${await res.text()}`);
      return res.json();
    },
  };
}

// Verify connection
const gamma = createGammaClient({ apiKey: process.env.GAMMA_API_KEY! });
const themes = await gamma.listThemes();
console.log(`Connected — ${themes.length} workspace themes available`);

Step 5: First API Call (Python)

import os, requests

GAMMA_BASE = "https://public-api.gamma.app/v1.0"
HEADERS = {
    "X-API-KEY": os.environ["GAMMA_API_KEY"],
    "Content-Type": "application/json",
}

# Verify connection
resp = requests.get(f"{GAMMA_BASE}/themes", headers=HEADERS)
resp.raise_for_status()
themes = resp.json()
print(f"Connected — {len(themes)} workspace themes available")

API Key Security

PracticeImplementation
Never commit keysAdd GAMMA_API_KEY to .gitignore and .env
Rotate regularlyRegenerate in Settings > API key tab
Scope per environmentSeparate keys for dev/staging/prod workspaces
Audit usageMonitor credit consumption at gamma.app/settings/billing

Error Handling

HTTP StatusMeaningFix
401 UnauthorizedInvalid or missing API keyVerify X-API-KEY header value
403 ForbiddenAccount not on Pro+ planUpgrade at gamma.app/pricing
429 Too Many RequestsRate limit exceededImplement backoff; contact Gamma support for higher limits
5xx Server ErrorGamma service issueRetry with exponential backoff

Important Notes

  • No SDK: Gamma does not publish an npm/pip package. Use fetch/requests directly.
  • Header format: Use X-API-KEY, not Authorization: Bearer.
  • API v0.2 sunset: v0.2 was deprecated Jan 2026. Use v1.0 only.
  • Credit system: API calls consume credits based on image model tier (Standard 2-15, Advanced 20-33, Premium 34-75, Ultra 30-125 credits/image).

Resources

Next Steps

Proceed to gamma-hello-world for your first presentation generation.

Repository
jeremylongshore/claude-code-plugins-plus-skills
Last updated
Created

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.