> 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. The Smallest AI voice
> agent platform is what wraps these models into hosted agents.

# Quickstart

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

## Step 1: Get Your API Key

Open the [API Keys page](https://app.smallest.ai/dashboard/api-keys?utm_source=documentation\&utm_medium=speech-to-text-quickstart) in the [Smallest AI console](https://app.smallest.ai/dashboard).

<img src="https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/smallest-ai.docs.buildwithfern.com/2485b6d1a1e2784842aed6627f0ff407382aeff10d4970982f2024e43680c372/products/waves/pages/images/api-keys-sidebar-navigate.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260725%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260725T060450Z&X-Amz-Expires=604800&X-Amz-Signature=c9d369f3082a1ecdac629bb27d9c9c7767407395c6bc17219060962b77a1810f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject" 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://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/smallest-ai.docs.buildwithfern.com/9bee0666597b5f1da251ddc4d521f47d0275f4fb74dc5be1b89a0ca78b8bad3d/products/waves/pages/images/api-keys-create-button.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260725%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260725T060450Z&X-Amz-Expires=604800&X-Amz-Signature=af6676737de03a38a29f44b4a954b258e2418ca0fd3f7f92c3ddae2eb241925e&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject" alt="API Keys page showing the Create API Key button" width="700" />

<img src="https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/smallest-ai.docs.buildwithfern.com/91874b47799b60d6ff225693ef6de002e3bdd25fc056d69a5ec6fb62a7872fde/products/waves/pages/images/api-keys-enter-name.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260725%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260725T060450Z&X-Amz-Expires=604800&X-Amz-Signature=19d2671671b3c0a908e9c95412874f8cf0ac254d3a9af70a6fe7b61d519d9f20&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject" 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://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/smallest-ai.docs.buildwithfern.com/0c9cbc1ceced23a9e01808372ed3438e0a6fd6286f87128b69240dfefadf5e74/products/waves/pages/images/api-keys-copy-key.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260725%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260725T060450Z&X-Amz-Expires=604800&X-Amz-Signature=a508892ff8fb577dd263baf2bf3450cebd70a5e94e9dbe3c639e379a91686fb4&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject" 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:

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 (21 streaming + 26 pre-recorded languages) or streaming, swap `?model=pulse-pro` for `?model=pulse`. See the [Pulse model card](/models/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 regional aggregator for unknown audio. Aggregators differ by mode: pre-recorded supports `multi-eu` and `multi-asian`; streaming supports `north_indic`, `multi-asian` (US region only, contact sales for India), and `multi-south-indic` (India region only, Beta). See the [Pulse model card](/models/model-cards/speech-to-text/pulse) for the full per-mode language matrix.

**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

#### [Real-Time Transcription](/models/documentation/speech-to-text-pulse/realtime-web-socket/quickstart)

Stream audio via WebSocket for live transcription.

#### [Speaker Diarization](/models/documentation/speech-to-text-pulse/features/diarization)

Identify and label different speakers.

#### [Word Timestamps](/models/documentation/speech-to-text-pulse/features/word-timestamps)

Precise timing for each transcribed word.

#### [Emotion Detection](/models/documentation/speech-to-text-pulse/features/emotion-detection)

Analyze emotional tone in speech.

#### [Model card](/models/model-cards/speech-to-text/pulse)

Benchmarks, capabilities, pricing.

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

## Need Help?

#### [Join Discord](https://discord.gg/9WtSXv26WE)

Ask questions and get help from the community.

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