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

# SDK Quickstart

> Install a Fish Audio SDK, authenticate, and generate your first audio in under a minute

The fastest path from zero to playable audio with the official Fish Audio SDKs. By the end you'll have a script that turns text into an MP3.

<Note>
  The Python SDK is the recommended starting point and is fully covered below.
  The JavaScript SDK is in early release — see the [JavaScript SDK
  guide](/api-reference/sdk/javascript/api-reference) for its current
  surface.
</Note>

## 1. Install

<CodeGroup>
  ```bash Python theme={null}
  pip install fish-audio-sdk

  # optional: local audio playback (needs ffmpeg)
  pip install "fish-audio-sdk[utils]"
  ```

  ```bash JavaScript theme={null}
  npm install fish-audio
  ```
</CodeGroup>

## 2. Authenticate

<AccordionGroup>
  <Accordion icon="user-plus" title="Create a Fish Audio account">
    Sign up for a free Fish Audio account to get started with our API.

    1. Go to [fish.audio/auth/signup](https://fish.audio/auth/signup)
    2. Fill in your details to create an account, complete steps to verify your account.
    3. Log in to your account and navigate to the [API section](https://fish.audio/app/api-keys)
  </Accordion>

  <Accordion icon="key" title="Get your API key">
    Once you have an account, you'll need an API key to authenticate your requests.

    1. Log in to your [Fish Audio Dashboard](https://fish.audio/app/api-keys/)
    2. Navigate to the API Keys section
    3. Click "Create New Key" and give it a descriptive name, set a expiration if desired
    4. Copy your key and store it securely

    <Warning>Keep your API key secret! Never commit it to version control or share it publicly.</Warning>
  </Accordion>
</AccordionGroup>

Both SDKs read your key from the `FISH_API_KEY` environment variable:

```bash theme={null}
export FISH_API_KEY=your_api_key_here
```

## 3. Generate your first audio

<CodeGroup>
  ```python Python theme={null}
  from fishaudio import FishAudio
  from fishaudio.utils import save

  client = FishAudio()  # reads FISH_API_KEY

  audio = client.tts.convert(text="Hello from Fish Audio!")
  save(audio, "output.mp3")
  ```

  ```typescript JavaScript theme={null}
  import { FishAudioClient, play } from "fish-audio";

  const client = new FishAudioClient(); // reads FISH_API_KEY
  const audio = await client.textToSpeech.convert({ text: "Hello from Fish Audio!" });
  await play(audio);
  ```
</CodeGroup>

Run it, and you'll have `output.mp3` (Python) or local playback (JavaScript). That's it — you're generating speech.

<Tip>
  Want async in Python? Every method mirrors onto `AsyncFishAudio`: `async with
      AsyncFishAudio() as client: audio = await client.tts.convert(text="...")`.
</Tip>

## Next steps

<CardGroup cols={2}>
  <Card title="Text-to-Speech" icon="microphone" href="/features/text-to-speech">
    Voices, formats, prosody, and model selection
  </Card>

  <Card title="Voice Cloning" icon="clone" href="/features/voice-cloning">
    Instant cloning and persistent voice models
  </Card>

  <Card title="Realtime WebSocket" icon="bolt" href="/features/realtime-streaming">
    Stream LLM tokens to speech as they arrive
  </Card>

  <Card title="Errors & Retries" icon="triangle-exclamation" href="/developer-guide/sdk-guide/python/errors">
    Exception types, retries, and timeouts
  </Card>

  <Card title="Cookbook" icon="book" href="/developer-guide/sdk-guide/cookbook/streaming-to-file">
    Task-focused recipes
  </Card>

  <Card title="API Reference" icon="book-open" href="/api-reference/sdk/python/overview">
    Full Python SDK reference
  </Card>
</CardGroup>
