> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Introducción

## Instalación

Puedes interactuar con la API mediante solicitudes HTTP o WebSocket desde cualquier lenguaje, a través de nuestras integraciones oficiales para Python o nuestras bibliotecas oficiales de Node.js.

Para instalar las integraciones oficiales de Python, ejecuta el siguiente comando:

```bash
pip install elevenlabs
```

Para instalar la biblioteca oficial de Node.js, ejecuta el siguiente comando en el directorio de tu proyecto de Node.js:

```bash
npm install @elevenlabs/elevenlabs-js
```

## Seguimiento de los costes de generación

Accede a las cabeceras de respuesta para recuperar metadatos de generación, incluidos los costes por caracteres.

#### Python

```python
from elevenlabs.client import ElevenLabs

client = ElevenLabs(api_key="your_api_key")

# Get raw response with headers
response = client.text_to_speech.with_raw_response.convert(
    text="Hello, world!",
    voice_id="voice_id"
)

# Access character cost from headers
char_cost = response.headers.get("character-cost")

# Optionally store these for debugging
request_id = response.headers.get("request-id")
trace_id = response.headers.get("x-trace-id")

audio_data = response.data
```

#### JavaScript

```typescript
import { ElevenLabsClient } from '@elevenlabs/elevenlabs-js';

const client = new ElevenLabsClient({ apiKey: 'your_api_key' });

// Get raw response with headers
const { data, rawResponse } = await client.textToSpeech
  .convert('voice_id', {
    text: 'Hello, world!',
    modelId: 'eleven_v4',
  })
  .withRawResponse();

// Access character cost from headers
const charCost = rawResponse.headers.get('character-cost');

// Optionally store these for debugging
const requestId = rawResponse.headers.get('request-id');
const traceId = rawResponse.headers.get('x-trace-id');

const audioData = data;
```

La respuesta sin procesar permite acceder a:

* Datos de respuesta: el contenido real de la respuesta de la API
* Cabeceras HTTP: metadatos que incluyen costes por caracteres e ID de solicitudes