jeremylongshore/claude-code-plugins-plus-skills
deepgram-pack
plugins/saas-packs/deepgram-pack/skills/deepgram-common-errors/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-common-errors/SKILL.md -a claude-code --skill deepgram-common-errorsInstallation paths:
.claude/skills/deepgram-common-errors/# Deepgram Common Errors
## Overview
Comprehensive guide to diagnosing and fixing common Deepgram integration errors.
## Quick Diagnostic
```bash
# Test API connectivity
curl -X POST 'https://api.deepgram.com/v1/listen?model=nova-2' \
-H "Authorization: Token $DEEPGRAM_API_KEY" \
-H "Content-Type: audio/wav" \
--data-binary @test.wav
```
## Common Errors
### Authentication Errors
#### 401 Unauthorized
```json
{"err_code": "INVALID_AUTH", "err_msg": "Invalid credentials"}
```
**Causes:**
- Missing or invalid API key
- Expired API key
- Incorrect Authorization header format
**Solutions:**
```bash
# Check API key is set
echo $DEEPGRAM_API_KEY
# Verify API key format (should start with valid prefix)
# Test with curl
curl -X GET 'https://api.deepgram.com/v1/projects' \
-H "Authorization: Token $DEEPGRAM_API_KEY"
```
#### 403 Forbidden
```json
{"err_code": "ACCESS_DENIED", "err_msg": "Access denied"}
```
**Causes:**
- API key lacks required permissions
- Feature not enabled on account
- IP restriction blocking request
**Solutions:**
- Check API key permissions in Console
- Verify account tier supports requested feature
- Check IP allowlist settings
### Audio Processing Errors
#### 400 Bad Request - Invalid Audio
```json
{"err_code": "BAD_REQUEST", "err_msg": "Audio could not be processed"}
```
**Causes:**
- Corrupted audio file
- Unsupported audio format
- Empty or silent audio
- Wrong Content-Type header
**Solutions:**
```typescript
// Validate audio before sending
import { createClient } from '@deepgram/sdk';
import { readFileSync, statSync } from 'fs';
function validateAudioFile(filePath: string): boolean {
const stats = statSync(filePath);
// Check file size (minimum 100 bytes, maximum 2GB)
if (stats.size < 100 || stats.size > 2 * 1024 * 1024 * 1024) {
console.error('Invalid file size');
return false;
}
// Check file header for valid audio format
const buffer = readFileSync(filePath, { length: 12 });
const header = buffe