# ElevenLabs Text-to-Speech — Endpoint-Referenz

Technische Referenz für den `/v1/text-to-speech/{voice_id}` Endpoint.
Wird vom `elevenlabs-api tts`-Pfad konsumiert.

---

## Endpoint

```
POST https://api.elevenlabs.io/v1/text-to-speech/{voice_id}
```

## Authentication

Header: `xi-api-key: <ELEVENLABS_API_KEY>`

Den Key niemals loggen oder im LLM-Kontext exponieren. Existenz-Check vor jedem Aufruf via `scripts/find_api_key.py`.

## Request Body (JSON)

```json
{
  "text": "<text>",
  "model_id": "eleven_multilingual_v2",
  "voice_settings": {
    "stability": 0.5,
    "similarity_boost": 0.75
  }
}
```

| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| `text` | string | ja | Zu synthetisierender Text |
| `model_id` | string | ja | Default `eleven_multilingual_v2` |
| `voice_settings` | object | nein | Stabilität und Ähnlichkeits-Boost (0.0–1.0) |

## Query-Parameter

| Parameter | Werte | Beschreibung |
|---|---|---|
| `output_format` | `mp3_44100_128` (Default), `pcm_16000`, `pcm_22050`, `pcm_24000`, `pcm_44100` | Audio-Ausgabeformat |

## Response

Binäre Audio-Daten im angeforderten Format (Default mp3). Content-Type: `audio/mpeg`.

## Voice-ID-Empfehlungen

Nur Premade-Voices verwenden (HARD-LOCK §8.2). Kein Voice-Cloning.

| Voice-ID | Name | Stil |
|---|---|---|
| `JBFqnCBsd6RMkjVDRZzb` | George | Tief, ruhig, narrativ — **Default laut Vault-LinkedIn-Shorts-Best-Practice** |

Weitere Premade-Voices: Voice Library auf elevenlabs.io unter „Voices > Library".

## Pflichten

- API-Key-Existenz-Check vor jedem Aufruf (`scripts/find_api_key.py` → Exit-Code 0 = OK).
- Keinen Key-Wert in Logs, Ausgaben oder Fehlermeldungen ausgeben.
- `voice_id` aus `skill.config.yaml` lesen (Config-Key `voice_id`), nie hardcoden.
