Debug and resolve common Gamma API errors. Use when encountering authentication failures, rate limits, generation errors, or unexpected API responses. Trigger with phrases like "gamma error", "gamma...
Classify the failure as access, content generation, publish/share, integration, quota, or availability; reproduce safely in staging; apply the smallest reversible correction; verify recovery and safe failure behavior.
Return an opaque correlation ID, error category, corrective action, verification, owner, and follow-up. Keep private content, viewer details, and credentials out of evidence.
Pause sharing/publishing on permission, destination, or privacy failures; use bounded retries for transient errors and rollback before replaying content actions.
Use a fictional presentation to trigger a controlled publish error, restore the staging configuration, and verify no external audience received content.
Reference guide for debugging and resolving common Gamma API errors.
// Error: Invalid API Key
{
"error": "unauthorized",
"message": "Invalid or expired API key"
}
Solutions:
echo $GAMMA_API_KEY// Error: Rate Limited
{
"error": "rate_limited",
"message": "Too many requests",
"retry_after": 60
}
Solutions:
X-RateLimit-Remainingasync function withRetry(fn: () => Promise<any>, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
return await fn();
} catch (err) {
if (err.code === 'rate_limited' && i < maxRetries - 1) {
const delay = (err.retryAfter || Math.pow(2, i)) * 1000; # 1000: 1 second in ms
await new Promise(r => setTimeout(r, delay));
continue;
}
throw err;
}
}
}
// Error: Generation Failed
{
"error": "generation_failed",
"message": "Unable to generate presentation",
"details": "Content too complex"
}
Solutions:
// Error: Request Timeout
{
"error": "timeout",
"message": "Request timed out after 30000ms"
}
Solutions:
const gamma = new GammaClient({
apiKey: process.env.GAMMA_API_KEY,
timeout: 60000, // 60 seconds # 60000: 1 minute in ms
});
// Error: Export Failed
{
"error": "export_failed",
"message": "Unable to export presentation",
"format": "pdf"
}
Solutions:
const gamma = new GammaClient({
apiKey: process.env.GAMMA_API_KEY,
debug: true, // Logs all requests/responses
});
const status = await gamma.status();
console.log('API Status:', status.healthy ? 'OK' : 'Issues');
console.log('Services:', status.services);
import { GammaError, RateLimitError, AuthError } from '@gamma/sdk';
try {
const result = await gamma.presentations.create({ ... });
} catch (err) {
if (err instanceof AuthError) {
console.error('Check your API key');
} else if (err instanceof RateLimitError) {
console.error(`Retry after ${err.retryAfter}s`);
} else if (err instanceof GammaError) {
console.error('API Error:', err.message);
} else {
throw err;
}
}
Proceed to gamma-debug-bundle for comprehensive debugging tools.