---
title: "Start an asynchronous transcription"
method: POST
path: "/audio/transcription-jobs"
tags: ["transcription"]
---

# Start an asynchronous transcription

`POST /audio/transcription-jobs`

## Request

- Base URL: `https://api.aquavoice.com/v1`
- URL: `https://api.aquavoice.com/v1/audio/transcription-jobs`
- Auth: HTTP bearer

Returns after the audio is validated and the job is stored. Poll the
returned job ID or fetch its result when `result_url` is present.

## Headers

- `Idempotency-Key` string
- `X-Client-Request-Id` string

## Request body `multipart/form-data`

- TranscriptionRequest
  - `file` string, binary, required: Audio in flac, mp3, mp4, mpeg, mpga, m4a, ogg, opus, wav, or webm format. Maximum 256 MiB and four hours of decoded audio.
  - `model` 'avalon-v1.5', required: The Avalon model to use.
  - `language` string: ISO 639-1 language code. Omit it or use `auto` to detect the language.
  - `prompt` string: Context or vocabulary hints for the transcription.
  - `response_format` 'json' | 'text' | 'srt' | 'vtt' | 'verbose_json' | 'diarized_json': Response format. Defaults to `json`, or to `diarized_json` when `diarize` is true. A diarized transcription supports only `diarized_json`, `srt`, and `vtt`.
  - `diarize` boolean: Labels who speaks each word. The result has speaker turns with word timings. Speaker IDs (`spk_0`, `spk_1`, ...) are in order of first speech. A transcription has a maximum of 8 speakers.
  - `max_speakers` integer: The maximum number of speaker labels. Only with `diarize`. The speakers with the most detected speech keep their labels; words of other speakers go to the closest kept speaker. It does not change how many speakers the model detects.
  - `temperature` 0: Compatibility no-op. Nonzero values are unsupported.
  - `stream` false: Avalon is batch-only, so only false is accepted.
  - `timestamp_granularities` string[]: Only `segment` is supported, and only with `verbose_json`.

## Response `202`

Accepted transcription job.

- TranscriptionJob
  - `id` string, required
  - `object` 'transcription.job', required
  - `status` 'queued' | 'succeeded' | 'failed' | 'cancelled' | 'abandoned', required
  - `created_at` string, date-time, required
  - `completed_at` string, date-time, nullable, required
  - `audio_duration_seconds` number, nullable, required
  - `error_code` string, nullable, required
  - `result_url` string, nullable, required

## Other responses

- `default`: OpenAI-compatible Avalon error.

---

[API](https://skmtc.dev/aquavoice/apis/aqua-api.md) - [All operations](https://skmtc.dev/aquavoice/apis/aqua-api/llms.txt) - [OpenAPI document](https://skmtc.dev/aquavoice/apis/aqua-api/revisions/f0139c07aded?raw)
