--- name: deepgram-install-auth description: 'Install and configure Deepgram SDK authentication. Use when setting up a new Deepgram integration, configuring API keys, or initializing Deepgram in your project. Trigger: "install deepgram", "setup deepgram", "deepgram auth", "configure deepgram API key", "deepgram credentials". ' allowed-tools: Read, Write, Edit, Bash(npm:*), Bash(pip:*), Grep version: 1.13.0 license: MIT author: Jeremy Longshore tags: - saas - deepgram - api - authentication - setup compatibility: Designed for Claude Code, also compatible with Codex and OpenClaw --- # Deepgram Install & Auth ## Current State !`npm list @deepgram/sdk 2>/dev/null || echo '@deepgram/sdk not installed'` !`pip show deepgram-sdk 2>/dev/null | grep Version || echo 'deepgram-sdk (Python) not installed'` ## Overview Install the Deepgram SDK and configure API key authentication. Deepgram provides speech-to-text (Nova-3, Nova-2), text-to-speech (Aura-2), and audio intelligence APIs. The JS SDK uses `createClient()` (v3/v4) or `new DeepgramClient()` (v5+). ## Prerequisites - Node.js 18+ or Python 3.10+ - Deepgram account at [console.deepgram.com](https://console.deepgram.com) - API key from Console > Settings > API Keys ## Instructions ### Step 1: Install SDK **Node.js (v3/v4 — current stable):** ```bash npm install @deepgram/sdk # or pnpm add @deepgram/sdk ``` **Python:** ```bash pip install deepgram-sdk ``` ### Step 2: Configure API Key ```bash # Option A: Environment variable (recommended) export DEEPGRAM_API_KEY="your-api-key-here" # Option B: .env file (add .env to .gitignore) echo 'DEEPGRAM_API_KEY=your-api-key-here' >> .env ``` **Never hardcode keys.** Use `dotenv` for local dev, secret managers in production. ### Step 3: Initialize Client (TypeScript) ```typescript import { createClient } from '@deepgram/sdk'; // Reads DEEPGRAM_API_KEY from env automatically const deepgram = createClient(process.env.DEEPGRAM_API_KEY!); ``` **SDK v5+ uses a different constructor:** ```typescript import { DeepgramClient } from '@deepgram/sdk'; const deepgram = new DeepgramClient({ apiKey: process.env.DEEPGRAM_API_KEY }); ``` ### Step 4: Initialize Client (Python) ```python from deepgram import DeepgramClient, PrerecordedOptions, LiveOptions import os client = DeepgramClient(os.environ["DEEPGRAM_API_KEY"]) ``` ### Step 5: Verify Connection ```typescript // TypeScript — list projects to verify key is valid async function verify() { const deepgram = createClient(process.env.DEEPGRAM_API_KEY!); const { result, error } = await deepgram.manage.getProjects(); if (error) { console.error('Auth failed:', error.message); process.exit(1); } console.log(`Connected. Projects: ${result.projects.length}`); result.projects.forEach(p => console.log(` - ${p.name} (${p.project_id})`)); } verify(); ``` ```python # Python — verify connection from deepgram import DeepgramClient import os client = DeepgramClient(os.environ["DEEPGRAM_API_KEY"]) response = client.manage.v("1").get_projects() print(f"Connected. Projects: {len(response.projects)}") for p in response.projects: print(f" - {p.name} ({p.project_id})") ``` ### Step 6: Configure for Production ```typescript // Singleton client with custom options import { createClient, DeepgramClient } from '@deepgram/sdk'; let client: DeepgramClient | null = null; export function getDeepgramClient(): DeepgramClient { if (!client) { const apiKey = process.env.DEEPGRAM_API_KEY; if (!apiKey) throw new Error('DEEPGRAM_API_KEY is required'); client = createClient(apiKey); } return client; } ``` ## API Key Scopes | Scope | Permission | Use Case | |-------|-----------|----------| | `member` | Full access | Development only | | `listen` | STT transcription | Production transcription services | | `speak` | TTS synthesis | Voice generation services | | `manage` | Project management | Admin tools | | `usage` | Usage data | Monitoring dashboards | Create scoped keys in Console > Settings > API Keys > Create Key. ## Output - Installed `@deepgram/sdk` (Node.js) or `deepgram-sdk` (Python) - API key configured via environment variable or `.env` - Verified connection with project listing - Singleton client pattern for production use ## Error Handling | Error | Cause | Solution | |-------|-------|----------| | `401 Unauthorized` | Invalid or expired API key | Regenerate key in Console > API Keys | | `403 Forbidden` | Key lacks required scope | Create new key with correct scopes | | `MODULE_NOT_FOUND` | SDK not installed | Run `npm install @deepgram/sdk` | | `ENOTFOUND api.deepgram.com` | Network/DNS issue | Check internet, verify no proxy blocking | | `TypeError: createClient is not a function` | SDK v5 installed | Use `new DeepgramClient()` instead | ## Resources - [Deepgram Console](https://console.deepgram.com) - [JavaScript SDK](https://developers.deepgram.com/docs/js-sdk) - [Python SDK](https://developers.deepgram.com/docs/node-sdk) - API Key Management - [SDK Feature Matrix](https://developers.deepgram.com/sdks/sdk-features) ## Next Steps Proceed to `deepgram-hello-world` for your first transcription.