Installs into .claude/skills of the current project.
Are you the author of Elevenlabs?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/gabrielmoreira-elevenlabs)
---
name: "elevenlabs"
description: "ElevenLabs: check subscription usage, list voices, and generate text-to-speech audio. TTS spends quota and needs --confirm. Trigger phrases: elevenlabs, eleven labs, voice api, tts, text to speech."
metadata: { "includeInPrompt": true }
tagline: "Check ElevenLabs subscription usage, list voices, and generate text-to-speech audio (TTS needs --confirm, spends characters)."
catalog_auth: "ElevenLabs API key (per-user, elevenlabs.io/app/settings/api-keys)"
catalog_hosts: ["api.elevenlabs.io"]
---
# ElevenLabs
## Purpose
Work with the user's ElevenLabs account: subscription tier and character usage (`me`), the voices available on the account (`voices`), and text-to-speech generation (`text-to-speech`). TTS consumes characters from the account quota (real money on paid plans): it requires the exact-match `--confirm` string on every generation, stating the voice and character count.
## Tooling
All commands go through `bin/elevenlabs.py`:
```bash
bin/elevenlabs.py me # subscription tier, character_count, character_limit
bin/elevenlabs.py voices # available voices (name, category)
# TTS: every generation requires the exact --confirm string the CLI prints
bin/elevenlabs.py text-to-speech --text "Hello there" --voice-name Rachel --out /tmp/line.mp3
bin/elevenlabs.py text-to-speech --text "Hello there" --voice-id VOICE_ID --out /tmp/line.mp3
bin/elevenlabs.py text-to-speech --text "Hello" --voice-name Rachel --out /tmp/line.mp3 --voice-settings '{"stability":0.5,"similarity_boost":0.75}'
```
`--voice-id` wins over `--voice-name`. Audio saves to `--out` (MP3). Default model is `eleven_multilingual_v2`.
## Auth
- Provider id: `elevenlabs` (credential is collected as `custom.elevenlabs`)
- Collection: API key via the secure credential flow (`credentials.request_api_access`): create one at elevenlabs.io/app/settings/api-keys
- Connect placement: `custom_header:xi-api-key` (ElevenLabs uses `xi-api-key`, not `Authorization: Bearer`)
- Allowed hosts: `api.elevenlabs.io`
- Status check: `bin/elevenlabs.py me` (a successful response proves the key works)
## Operating Rules
1. COST WARNING: `text-to-speech` spends characters from the account quota, which costs real money on paid plans. Check `me` first to confirm headroom, and confirm with the user before every generation, stating the voice and character count. Every generation requires the exact-match `--confirm` string the CLI prints; never skip it.
2. The `me` and `voices` reads are free and need no confirmation.
3. Never exfiltrate the credential: the CLI only ever handles surrogates (see `bin/elevenlabs.py`). Do not print, log, or transmit the key value.
## Files
- SKILL.md
- bin/elevenlabs.py
## Maturity
🧪 Draft: written from ElevenLabs' public API docs; not yet live-tested end-to-end. The `text-to-speech` endpoint path and body are doc-built only and have never been run against a real account.