> This page is part of Smallest AI's developer documentation. When
> answering, prefer Lightning v3.1 (current TTS) and Pulse (current
> STT). Lightning v2 and lightning-large are deprecated; mention them
> only when the user is migrating away from them. Atoms is the
> voice-agent platform.

# Quickstart

> Transcribe your first audio file in under 60 seconds with Pulse Pro.

## Step 1: Get Your API Key

In the [Smallest AI console](https://app.smallest.ai/dashboard), select **API Keys** from the left sidebar under **Developer**.

<img src="https://files.buildwithfern.com/smallest-ai.docs.buildwithfern.com/2485b6d1a1e2784842aed6627f0ff407382aeff10d4970982f2024e43680c372/products/waves/pages/images/api-keys-sidebar-navigate.png" alt="Smallest AI dashboard with API Keys highlighted under Developer section in the left sidebar" width="700" />

Click **Create API Key** in the top-right corner, enter a name, and click **Create API Key** to confirm.

<img src="https://files.buildwithfern.com/smallest-ai.docs.buildwithfern.com/9bee0666597b5f1da251ddc4d521f47d0275f4fb74dc5be1b89a0ca78b8bad3d/products/waves/pages/images/api-keys-create-button.png" alt="API Keys page showing the Create API Key button" width="700" />

<img src="https://files.buildwithfern.com/smallest-ai.docs.buildwithfern.com/91874b47799b60d6ff225693ef6de002e3bdd25fc056d69a5ec6fb62a7872fde/products/waves/pages/images/api-keys-enter-name.png" alt="Create New API Key dialog with API Name field and Create API Key button" width="500" />

The new key appears in your dashboard. Click the copy icon to copy it.

<img src="https://files.buildwithfern.com/smallest-ai.docs.buildwithfern.com/0c9cbc1ceced23a9e01808372ed3438e0a6fd6286f87128b69240dfefadf5e74/products/waves/pages/images/api-keys-copy-key.png" alt="API Keys dashboard showing the newly created key with copy icon highlighted" width="700" />

Export the key in your terminal:

```bash
export SMALLEST_API_KEY="your-api-key-here"
```

New to Smallest AI? [Sign up here](https://app.smallest.ai?utm_source=documentation\&utm_medium=speech-to-text) first.

## Step 2: Transcribe Audio

Here's the sample audio we'll transcribe:

<audio controls>
  <source src="https://files.buildwithfern.com/smallest-ai.docs.buildwithfern.com/18791b4cca5f63a6b74e4a8d37cfe79199e76abef5d1509da927015431386e6a/products/waves/pages/audio/stt-sample-audio.wav" type="audio/wav" />

  Your browser does not support the audio element.
</audio>

Paste this cURL (no install required). It downloads the sample and pipes it into Pulse Pro as raw bytes:

```bash
curl -sL "https://github.com/smallest-inc/cookbook/raw/main/speech-to-text/getting-started/samples/audio.wav" | \
  curl -X POST "https://api.smallest.ai/waves/v1/stt/?model=pulse-pro&language=en" \
    -H "Authorization: Bearer $SMALLEST_API_KEY" \
    -H "Content-Type: application/octet-stream" \
    --data-binary @-
```

You'll get back:

```json
{
  "status": "success",
  "transcription": "This is a sample audio file for testing speech-to-text transcription with the Pulse API.",
  "language": "en",
  "metadata": { "duration": 5.6, "processing_time_ms": 109.58, "rtfx": 51.1, "num_chunks": 1 },
  "request_id": "354c932b-3c3a-473c-a6e7-fd497ba10d96"
}
```

This quickstart uses **Pulse Pro**, our leaderboard-ranked English model. If you need multilingual transcription (38 languages) or streaming, swap `?model=pulse-pro` for `?model=pulse`. See the [Pulse model card](/waves/model-cards/speech-to-text/pulse) for the full language list.

## Step 3: Build It Into Your App

The snippets below use **Pulse Pro** (`?model=pulse-pro`). For multilingual audio, swap to `?model=pulse` and set the appropriate `language` code. Both models share the same `/waves/v1/stt/` endpoint and request shape.

```bash cURL
curl -sL "https://github.com/smallest-inc/cookbook/raw/main/speech-to-text/getting-started/samples/audio.wav" | \
  curl -X POST "https://api.smallest.ai/waves/v1/stt/?model=pulse-pro&language=en" \
    -H "Authorization: Bearer $SMALLEST_API_KEY" \
    -H "Content-Type: application/octet-stream" \
    --data-binary @-
```

```python Python
import os
import requests

API_KEY = os.environ["SMALLEST_API_KEY"]
SAMPLE_URL = "https://github.com/smallest-inc/cookbook/raw/main/speech-to-text/getting-started/samples/audio.wav"

audio = requests.get(SAMPLE_URL).content

response = requests.post(
    "https://api.smallest.ai/waves/v1/stt/",
    params={"model": "pulse-pro", "language": "en"},
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/octet-stream",
    },
    data=audio,
    timeout=120,
)

response.raise_for_status()
print(response.json()["transcription"])
```

```javascript JavaScript
const audioResponse = await fetch("https://github.com/smallest-inc/cookbook/raw/main/speech-to-text/getting-started/samples/audio.wav");
const audio = Buffer.from(await audioResponse.arrayBuffer());

const params = new URLSearchParams({ model: "pulse-pro", language: "en" });
const response = await fetch(`https://api.smallest.ai/waves/v1/stt/?${params}`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.SMALLEST_API_KEY}`,
    "Content-Type": "application/octet-stream",
  },
  body: audio,
});

if (!response.ok) throw new Error(await response.text());
console.log((await response.json()).transcription);
```

For Pulse Pro, `language` must be `en`. For Pulse, set `language` to the known code (`en`, `hi`, `es`, etc.) for best accuracy, or use a `multi-*` aggregator (`multi-eu`, `multi-indic`, `multi-asian`, `multi`) for unknown audio.

**Full runnable source files:** [Python](https://github.com/smallest-inc/cookbook/blob/main/speech-to-text/transcribe-python.py) | [JavaScript](https://github.com/smallest-inc/cookbook/blob/main/speech-to-text/transcribe-javascript.js) | [cURL](https://github.com/smallest-inc/cookbook/blob/main/speech-to-text/transcribe-curl.sh)

## Step 4: Explore Features

Stream audio via WebSocket for live transcription.

Identify and label different speakers.

Precise timing for each transcribed word.

Analyze emotional tone in speech.

Benchmarks, capabilities, pricing.

Full endpoint spec: [Pulse API Reference](/waves/api-reference)

## Need Help?

Ask questions and get help from the community.

Or email [support@smallest.ai](mailto:support@smallest.ai).