> 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). ![Smallest AI dashboard with API Keys highlighted under Developer section in the left sidebar](/_fern-img/2485b6d1a1e2784842aed6627f0ff407382aeff10d4970982f2024e43680c372.webp) Click **Create API Key** in the top-right corner, enter a name, and click **Create API Key** to confirm. ![API Keys page showing the Create API Key button](/_fern-img/9bee0666597b5f1da251ddc4d521f47d0275f4fb74dc5be1b89a0ca78b8bad3d.webp)![Create New API Key dialog with API Name field and Create API Key button](/_fern-img/91874b47799b60d6ff225693ef6de002e3bdd25fc056d69a5ec6fb62a7872fde.webp) The new key appears in your dashboard. Click the copy icon to copy it. ![API Keys dashboard showing the newly created key with copy icon highlighted](/_fern-img/0c9cbc1ceced23a9e01808372ed3438e0a6fd6286f87128b69240dfefadf5e74.webp) Export the key in your terminal: ```bash export SMALLEST_API_KEY="your-api-key-here" ``` > **Tip** > > 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" } ``` > **Note** > > This quickstart uses **Pulse Pro**, our leaderboard-ranked English model. If you need multilingual transcription (21 streaming + 12 pre-recorded languages) or streaming, swap `?model=pulse-pro` for `?model=pulse`. See the [Pulse model card](/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. **`cURL`** ```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 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 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); ``` > **Note** > > 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](/model-cards/speech-to-text/pulse) for the full per-mode language matrix. > **Note** > > For browser or mobile clients, keep the API key on your server and mint a [short-lived access token](/api-reference/token-based-authentication) for the client. > **Tip** > > **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/speech-to-text/realtime-web-socket/quickstart) Stream audio via WebSocket for live transcription. #### [Speaker Diarization](/models/speech-to-text/features/diarization) Identify and label different speakers. #### [Word Timestamps](/models/speech-to-text/features/word-timestamps) Precise timing for each transcribed word. #### [Emotion Detection](/models/speech-to-text/features/emotion-detection) Analyze emotional tone in speech. #### [Model card](/model-cards/speech-to-text/pulse) Benchmarks, capabilities, pricing. Full endpoint spec: [Pulse API Reference](/api-reference/models) ## 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). > Transcribe your first audio file in under 60 seconds with Pulse Pro.