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

# quickstart

> synthesize your first clip in three steps.

## 1. get an API key

sign in to the [rumik dashboard](https://playground.rumik.ai), open **API keys**,
and create a new key. the full key is shown only once at creation, so copy it
somewhere safe before closing the dialog.

<Card title="generate an API key" icon="key" href="https://playground.rumik.ai/api-keys" horizontal>
  create and manage keys in your dashboard.
</Card>

## 2. pick a model

every request takes a `model` and `text`. [`muga`](/muga) is our more expressive
model; [`mulberry`](/mulberry) is faster. each is steered differently. see the
prompting guides for [muga](/prompting-muga) and [mulberry](/prompting-mulberry)
for the full breakdown.

| model      | steer with                                     |
| ---------- | ---------------------------------------------- |
| `muga`     | a tone tag prefix, e.g. `[happy]`              |
| `mulberry` | a natural-language `description` (+ `speaker`) |

## 3. synthesize speech

pass your key as a bearer token. the response body is a 24 kHz mono WAV.

<CodeGroup>
  ```bash curl theme={null}
  curl -X POST https://silk-api.rumik.ai/v1/tts \
    -H "Authorization: Bearer rk_live_•••••••••" \
    -H "Content-Type: application/json" \
    -d '{ "model": "muga", "text": "[happy] Namaste! Kaise hain aap?" }' \
    --output speech.wav
  ```

  ```python python theme={null}
  import requests

  API_KEY = "rk_live_•••••••••"
  BASE = "https://silk-api.rumik.ai"
  HEADERS = {"Authorization": f"Bearer {API_KEY}"}

  # muga: expressive hinglish, tone set via a [tone] prefix on the text
  # tones: neutral (default), happy, sad, excited, angry, whisper
  r = requests.post(f"{BASE}/v1/tts", headers=HEADERS, json={
      "model": "muga",
      "text": "[happy] Namaste! Kaise hain aap?",
  })
  r.raise_for_status()
  open("muga.wav", "wb").write(r.content)        # 24 kHz mono WAV

  # mulberry: steered by a description (+ optional named voice)
  r = requests.post(f"{BASE}/v1/tts", headers=HEADERS, json={
      "model": "mulberry",
      "text": "Hi there, how can I help you today?",
      "description": "a warm 30s female voice, smooth timbre, conversational pacing, like a friendly assistant",
      "speaker": "siya",   # optional named voice: siya, ira, adam, emma, …
  })
  r.raise_for_status()
  open("mulberry.wav", "wb").write(r.content)
  ```
</CodeGroup>

<Tip>
  try the [API reference playground](/api-reference) to call the endpoint with
  your own key right from the docs.
</Tip>

next: [stream audio in real time](/streaming) or
[build a voice agent with pipecat](/pipecat).
