Transcribe
POSThttps://api.lucidweights.ai/v1/stt/transcribe
Transcribes raw, headerless audio samples sent as base64 JSON. For audio files, use /v1/stt/file-transcribe.
Query parameters
| Field | Type | Default | Description |
|---|---|---|---|
| backend | string | ultra | ultra, fast, or normal |
| model_name | string | large | For fast/normal: tiny, base, small, medium, large-v2, large-v3, large, large-v3-turbo, turbo |
| languages | string | "" | Comma-separated ISO codes, e.g. en or en,es,hi |
Request body
Headers: x-api-key, content-type: application/json
| Field | Type | Default | Description |
|---|---|---|---|
| audio_data | string | required | Base64 audio. A data: URI prefix is tolerated; anything before the first comma is stripped |
| input_format | string | required | pcm, base64, or ulaw. Nothing else |
| input_sample_rate | int | required | Sample rate of your audio in Hz; resampled to 16 kHz server-side |
pcm and base64 are identical: 16-bit signed little-endian PCM, mono. ulaw is 8-bit G.711 µ-law.
Response
{
"transcription": "hello world",
"timing": { "transcribe_time": 0.312, "total_time": 0.481 }
}WARNING
This endpoint takes samples, not files. Base64-ing a .wav / .mp3 / .flac does not work. The WAV header is read as samples and corrupts the start of the audio. Mono 16-bit signed integer only; stereo comes out garbled. Send an even number of bytes.
Example
curl -X POST "https://api.lucidweights.ai/v1/stt/transcribe?languages=en" \
-H "x-api-key: lw_YOUR_SECRET" \
-H "content-type: application/json" \
-d '{"audio_data":"<base64 int16 PCM>","input_format":"pcm","input_sample_rate":16000}'