> ## Documentation Index
> Fetch the complete documentation index at: https://docs.breezeblue.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# SDK quickstart

> Install the Python or TypeScript SDK, create an API key, and synthesize audio.

Install the SDK, create a Developer Console API key, and synthesize your first audio in under a minute.

## 1. Create an API key

Open the [API keys page](https://breezeblue.ai/app/developer/api-keys), select **Create API key**, name it, and copy the secret once. Treat `BREEZE_API_KEY` like a password.

## 2. Install the SDK

Python:

```bash theme={null}
# uv
uv add breeze-blue

# pip
pip install breeze-blue
```

TypeScript:

```bash theme={null}
# pnpm
pnpm add @breeze.blue/sdk

# npm
npm install @breeze.blue/sdk

# yarn
yarn add @breeze.blue/sdk
```

## 3. Set environment variables

```bash theme={null}
export BREEZE_API_KEY="brz_..."
```

## 4. Convert text to speech

Python uses snake\_case. TypeScript uses camelCase.

```python theme={null}
import os
from pathlib import Path

from breeze_blue import BreezeBlue, play, save

client = BreezeBlue(api_key=os.environ["BREEZE_API_KEY"])

audio = client.text_to_speech.convert(
    voice_id="voc_xeh3w54cqvnp",
    text="Hello from Breeze. Your SDK is ready.",
    output_format="mp3",
)

play(audio)
save(audio, Path("hello.mp3"))
```

```typescript theme={null}
import { BreezeBlueClient } from "@breeze.blue/sdk";
import { play, save } from "@breeze.blue/sdk/node";

const client = new BreezeBlueClient({
  apiKey: process.env.BREEZE_API_KEY!,
});

const audio = await client.textToSpeech.convert(
  "voc_xeh3w54cqvnp",
  { text: "Hello from Breeze. Your SDK is ready." },
  { outputFormat: "mp3" },
);

await play(audio);
await save(audio, "hello.mp3");
```

## 5. Stream audio

Use streaming when playback should begin before the full response has been generated.

```python theme={null}
import os

from breeze_blue import BreezeBlue, stream

client = BreezeBlue(api_key=os.environ["BREEZE_API_KEY"])

audio_stream = client.text_to_speech.stream(
    voice_id="voc_xeh3w54cqvnp",
    text="Streaming starts as soon as audio is available.",
    output_format="mp3",
)

stream(audio_stream)
```

```typescript theme={null}
import { BreezeBlueClient } from "@breeze.blue/sdk";
import { stream } from "@breeze.blue/sdk/node";

const client = new BreezeBlueClient({
  apiKey: process.env.BREEZE_API_KEY!,
});

const audioStream = await client.textToSpeech.stream(
  "voc_xeh3w54cqvnp",
  { text: "Streaming starts as soon as audio is available." },
  { outputFormat: "mp3" },
);

await stream(audioStream);
```

## 6. List voices and history

Use `voices` to choose saved or public voices, and `history` to inspect previous text-to-speech generations.

```python theme={null}
import os

from breeze_blue import BreezeBlue

client = BreezeBlue(api_key=os.environ["BREEZE_API_KEY"])

voices = client.voices.search()
first_voice = voices["voices"][0]

items = client.history.list()
latest = items["history"][0]

print(first_voice["voice_id"], first_voice["name"])
print(latest["history_item_id"], latest["text"])
```

```typescript theme={null}
import { BreezeBlueClient } from "@breeze.blue/sdk";

const client = new BreezeBlueClient({
  apiKey: process.env.BREEZE_API_KEY!,
});

const voices = await client.voices.search();
const firstVoice = voices.voices[0];

const items = await client.history.list();
const latest = items.history[0];

console.log(firstVoice.voiceId, firstVoice.name);
console.log(latest.historyItemId, latest.text);
```

## 7. Inspect the request

The [logs page](https://breezeblue.ai/app/developer/logs) shows the call with status, latency, audio download, and **Copy as cURL**.

## Next steps

<Columns cols={2}>
  <Card title="Text to speech guide" icon="mic" href="/guides/text-to-speech">
    Add batching, async jobs, expressive instructions, and per-call voice settings.
  </Card>

  <Card title="Streaming" icon="radio" href="/concepts/streaming">
    Start playback before the full response has been generated.
  </Card>

  <Card title="Output formats" icon="file-audio" href="/concepts/output-format">
    Choose MP3, WAV, FLAC, PCM, AAC, or Opus for your playback and pipeline needs.
  </Card>

  <Card title="Rate limits" icon="gauge" href="/reference/rate-limits">
    Plan retries, async jobs, and concurrency around Breeze generation limits.
  </Card>
</Columns>
