## Installation

```
npm install @upliftai/sdk-js
```

## Configuration

```
import UpliftAI from '@upliftai/sdk-js';

const client = new UpliftAI({
  apiKey: 'your-api-key',
});
```

Or use an environment variable:

```
export UPLIFTAI_API_KEY=sk_...
```

```
const client = new UpliftAI(); // picks up from env
```

### Client Options

| Option     | Type     | Default                            | Description                 |
|------------|----------|------------------------------------|-----------------------------|
| `apiKey`   | `string` | `UPLIFTAI_API_KEY` env            | Your API key                |
| `baseUrl`  | `string` | `https://api.upliftai.org`        | API base URL                |
| `timeout`   | `number` | `30000`                            | Request timeout (ms)        |
| `maxRetries`| `number` | `2`                                | Auto-retries on 429/5xx errors |

## Quick Example

```
import UpliftAI from '@upliftai/sdk-js';
import { writeFileSync } from 'fs';

const client = new UpliftAI({
  apiKey: 'your-api-key',
});

const { audio, metadata } = await client.tts.create({
  text: 'السلام علیکم، یہ ایک ٹیسٹ ہے',
  voiceId: 'v_meklc281',
  outputFormat: 'MP3_22050_128',
});

writeFileSync('output.mp3', audio);
console.log(`Audio size: ${audio.length} bytes`);
```

## Available Methods

[**Text to Speech** 
\
Generate complete audio buffers](https://docs.upliftai.org/sdk/nodejs/text-to-speech)

[**Stream TTS** 
\
HTTP streaming for low-latency playback](https://docs.upliftai.org/sdk/nodejs/text-to-speech-stream)

[**Async TTS** 
\
Background jobs with pre-signed URLs](https://docs.upliftai.org/sdk/nodejs/text-to-speech-async)

[**WebSocket TTS** 
\
Real-time multiplexed streaming](https://docs.upliftai.org/sdk/nodejs/websocket-tts)

[**Speech to Text** 
\
Transcribe audio files](https://docs.upliftai.org/sdk/nodejs/speech-to-text)

[**Phrase Replacements** 
\
Control pronunciation of specific words](https://docs.upliftai.org/sdk/nodejs/phrase-replacements)

## Output Formats

| Format | Identifier                        | Use Case                        |
|--------|-----------------------------------|----------------------------------|
| WAV    | `WAV_22050_32` · `WAV_22050_16` | Highest quality, larger files   |
| MP3    | `MP3_22050_128` · `MP3_22050_64` · `MP3_22050_32` | Compressed, good for web  |
| PCM    | `PCM_22050_16`                   | Raw audio, WebSocket default    |
| ULAW   | `ULAW_8000_8`                    | Telephony (Twilio, SIP, PSTN)  |
