---
title: "Transcribe an uploaded recording or live microphone audio"
method: POST
path: "/v1/audio/transcriptions"
---

# Transcribe an uploaded recording or live microphone audio

`POST /v1/audio/transcriptions`

## Request

- Base URL: `https://giggy.ai`
- URL: `https://giggy.ai/v1/audio/transcriptions`
- Auth: API key in header `xi-api-key`

Default mode is fast. WAV PCM16 mono 16 kHz, minimum 0.5 seconds; Batch maximum 60 seconds, Fast and uploaded-recording Streaming maximum 12 hours. Batch costs zero credits; Fast 4000 and Streaming 8000 credits per input audio hour, rounded up per request. Binary uploads allow 1,382,400,000 audio bytes plus 1 MiB headers/metadata; complete within 30 minutes without a 60-second idle gap. Legacy JSON data URLs are limited to 40 MiB. For live input send JSON mode=streaming, microphone=true, no source or explicit language. Wait for microphone_ready, then POST ordered frames to /api/generations/{generationUuid}/stt-input. Live sessions accept 0.5ÃƒÂ¢Ã¢â€šÂ¬Ã¢â‚¬Å“30 seconds, eight sessions per controller, reserve 67 credits and refund the difference from actual-duration billing on successful completion. Closing live SSE cancels unfinished work.

## Query parameters

- `mode` 'batch' | 'fast' | 'streaming'
- `language` 'Arabic' | 'Cantonese' | 'Chinese' | 'Czech' | 'Dutch' | 'English' | 'Filipino' | 'French' | 'German' | 'Greek' | 'Hindi' | 'Hungarian' | 'Indonesian' | 'Italian' | 'Japanese' | 'Korean' | 'Malay' | 'Persian' | 'Polish' | 'Portuguese' | 'Romanian' | 'Russian' | 'Spanish' | 'Swedish' | 'Thai' | 'Turkish' | 'Vietnamese'
- `client_request_id` string, uuid

## Request body

- object
  - `mode` 'batch' | 'fast' | 'streaming'
  - `language` string, nullable: Omit or use null for automatic detection; live input cannot set a language.
  - `source_audio_data_url` string: Base64 WAV data URL for a completed recording; mutually exclusive with microphone.
  - `client_request_id` string, uuid
  - `microphone` unknown

## Response `200`

Streaming SSE: generation_created, microphone_ready for live input, cumulative transcript_chunk (replace=true), generation_updated and terminal status. Early transcript text can be revised.

## Other responses

- `202`: Batch or Fast generation metadata. Poll GET /v1/generations/{generationUuid}; the completed result.url points to transcript JSON.
- `400`: Invalid mode, source, language, duration or request UUID
- `401`: API key required
- `402`: Insufficient credits or API budget
- `409`: Request identity conflict
- `413`: Upload exceeds limit
- `429`: Rate, queue or live session limit
- `503`: Service unavailable

---

[API](https://skmtc.dev/giggy/apis/giggy-speech-api.md) · [All operations](https://skmtc.dev/giggy/apis/giggy-speech-api/llms.txt) · [OpenAPI document](https://skmtc.dev/giggy/apis/giggy-speech-api/revisions/ee21192fd550?raw)
