Back to skills
SKILL.md
Elevenlabs Install Auth
CSecurity'Install and configure ElevenLabs SDK authentication for Node.js or Python.
- 2,688 stars
- 0 votes
- 0 copies
- 1 view
- Added May 29, 2026
Works with
Security analysis
72/100- Uses curl or wget to download content
- Exfiltrates credentials via HTTP — exact pattern from Snyk ToxicSkills study
- Installs packages at runtime which could introduce malicious dependencies
- Installs packages at runtime which could introduce malicious dependencies
- Installs packages at runtime which could introduce malicious dependencies
npx -y skills add jeremylongshore/claude-code-plugins-plus-skills --skill elevenlabs-install-auth --agent claude-codeAre you the author of Elevenlabs Install Auth?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/jeremylongshore-elevenlabs-install-auth)---
name: elevenlabs-install-auth
description: 'Install and configure ElevenLabs SDK authentication for Node.js or Python.
Use when setting up a new ElevenLabs project, configuring API keys,
or initializing the elevenlabs npm/pip package.
Trigger: "install elevenlabs", "setup elevenlabs", "elevenlabs auth",
"configure elevenlabs API key", "elevenlabs credentials".
'
allowed-tools: Read, Write, Edit, Bash(npm:*), Bash(pip:*), Bash(pnpm:*), Grep
version: 1.0.0
license: MIT
author: Jeremy Longshore <jeremy@intentsolutions.io>
tags:
- saas
- voice
- ai
- elevenlabs
- tts
- audio
compatibility: Designed for Claude Code
---
# ElevenLabs Install & Auth
## Overview
Set up the ElevenLabs SDK and configure API key authentication. ElevenLabs uses a single API key (`xi-api-key` header) for all endpoints at `api.elevenlabs.io`.
## Prerequisites
- Node.js 18+ or Python 3.10+
- ElevenLabs account (free tier works) at https://elevenlabs.io
- API key from Profile > API Keys in the ElevenLabs dashboard
## Instructions
### Step 1: Install the SDK
**Node.js** (official package: `@elevenlabs/elevenlabs-js`):
```bash
npm install @elevenlabs/elevenlabs-js
# or
pnpm add @elevenlabs/elevenlabs-js
```
**Python** (official package: `elevenlabs`):
```bash
pip install elevenlabs
```
### Step 2: Configure API Key
```bash
# Set environment variable (all SDKs auto-detect this)
export ELEVENLABS_API_KEY="sk_your_key_here"
# Or create .env file
echo 'ELEVENLABS_API_KEY=sk_your_key_here' >> .env
```
Add to `.gitignore`:
```gitignore
.env
.env.local
.env.*.local
```
### Step 3: Initialize the Client
**TypeScript:**
```typescript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
const client = new ElevenLabsClient({
apiKey: process.env.ELEVENLABS_API_KEY,
// Optional: configure retries (default: 2)
maxRetries: 3,
// Optional: configure timeout in seconds
timeoutInSeconds: 30,
});
```
**Python:**
```python
import os
from elevenlabs.client import ElevenLabsClient
client = ElevenLabsClient(
api_key=os.environ.get("ELEVENLABS_API_KEY")
)
```
### Step 4: Verify Connection
**TypeScript:**
```typescript
async function verifyConnection() {
// List available voices to confirm auth works
const voices = await client.voices.getAll();
console.log(`Connected. ${voices.voices.length} voices available.`);
// Check subscription/quota
const user = await client.user.get();
console.log(`Plan: ${user.subscription.tier}`);
console.log(`Characters used: ${user.subscription.character_count}/${user.subscription.character_limit}`);
}
verifyConnection().catch(console.error);
```
**Python:**
```python
def verify_connection():
voices = client.voices.get_all()
print(f"Connected. {len(voices.voices)} voices available.")
user = client.user.get()
print(f"Plan: {user.subscription.tier}")
print(f"Characters used: {user.subscription.character_count}/{user.subscription.character_limit}")
verify_connection()
```
**cURL (raw API):**
```bash
curl -s https://api.elevenlabs.io/v1/user \
-H "xi-api-key: ${ELEVENLABS_API_KEY}" | jq '.subscription.tier'
```
## Output
- SDK installed in `node_modules` or `site-packages`
- API key stored in `.env` (git-ignored)
- Successful voice listing confirms authentication
- Subscription tier and character quota displayed
## Error Handling
| Error | HTTP | Cause | Solution |
|-------|------|-------|----------|
| `invalid_api_key` | 401 | Key missing, expired, or malformed | Regenerate at elevenlabs.io > Profile > API Keys |
| `ENOTFOUND api.elevenlabs.io` | N/A | DNS/network failure | Check internet; ensure outbound HTTPS on port 443 |
| `MODULE_NOT_FOUND` | N/A | SDK not installed | Run `npm install @elevenlabs/elevenlabs-js` |
| `quota_exceeded` | 401 | Character limit reached for billing period | Upgrade plan or wait for reset |
## API Key Best Practices
- Never hardcode keys in source files
- Use separate keys for dev/staging/prod
- Rotate keys quarterly via the dashboard
- The `xi-api-key` header is used for REST calls; SDKs handle this automatically
- Free tier: 10,000 characters/month, Starter: 30,000, Creator: 100,000
## Resources
- [ElevenLabs API Introduction](https://elevenlabs.io/docs/api-reference/introduction)
- [ElevenLabs JS SDK](https://github.com/elevenlabs/elevenlabs-js)
- [ElevenLabs Python SDK](https://pypi.org/project/elevenlabs/)
- [API Key Management](https://elevenlabs.io/app/settings/api-keys)
## Next Steps
After auth is confirmed, proceed to `elevenlabs-hello-world` for your first text-to-speech generation.
Attribution
Comments
Loading comments…