jeremylongshore/claude-code-plugins-plus-skills
deepgram-pack
plugins/saas-packs/deepgram-pack/skills/deepgram-webhooks-events/SKILL.md
January 22, 2026
Select agents to install to:
npx add-skill https://github.com/jeremylongshore/claude-code-plugins-plus-skills/blob/main/plugins/saas-packs/deepgram-pack/skills/deepgram-webhooks-events/SKILL.md -a claude-code --skill deepgram-webhooks-eventsInstallation paths:
.claude/skills/deepgram-webhooks-events/# Deepgram Webhooks Events
## Overview
Implement callback URL handling for asynchronous Deepgram transcription workflows.
## Prerequisites
- Publicly accessible HTTPS endpoint
- Deepgram API key with transcription permissions
- Request validation capabilities
- Secure storage for transcription results
## Deepgram Callback Flow
1. Client sends transcription request with callback URL
2. Deepgram processes audio asynchronously
3. Deepgram POSTs results to callback URL
4. Your server processes and stores results
## Instructions
### Step 1: Create Callback Endpoint
Set up an HTTPS endpoint to receive results.
### Step 2: Implement Request Validation
Verify callbacks are from Deepgram.
### Step 3: Process Results
Handle the transcription response.
### Step 4: Store and Notify
Save results and notify clients.
## Examples
### TypeScript Callback Server (Express)
```typescript
// server/callback.ts
import express from 'express';
import crypto from 'crypto';
import { logger } from './logger';
import { storeTranscription, notifyClient } from './services';
const app = express();
// Raw body for signature verification
app.use('/webhooks/deepgram', express.raw({ type: 'application/json' }));
app.use(express.json());
interface DeepgramCallback {
request_id: string;
metadata: {
request_id: string;
transaction_key: string;
sha256: string;
created: string;
duration: number;
channels: number;
models: string[];
};
results: {
channels: Array<{
alternatives: Array<{
transcript: string;
confidence: number;
words: Array<{
word: string;
start: number;
end: number;
confidence: number;
}>;
}>;
}>;
};
}
// Verify callback is from Deepgram
function verifyDeepgramSignature(
payload: Buffer,
signature: string | undefined,
secret: string
): boolean {
if (!signature) return false;
const expectedSignature = crypto
.createHmac('sha256', secret