---
title: "Create Audio Transcription"
method: POST
path: "/v1/audio/transcriptions"
tags: ["Audio"]
---

# Create Audio Transcription

`POST /v1/audio/transcriptions`

## Request

- The document declares no server URL.
- Auth: HTTP bearer

## Request body `multipart/form-data`

- BodyCreateAudioTranscriptionV1AudioTranscriptionsPost
  - `file` string, binary, required: The audio file object (not file name) to transcribe, in one of these formats: mp3 or wav.
  - `model` string, required: ID of the model to use. Call `/v1/models` endpoint to get the list of available models, only `automatic-speech-recognition` model type is supported.
  - `language` 'af' | 'afrikaans' | 'albanian' | 'am' | 'amharic' | 'ar' | 'arabic' | 'armenian' | 'as' | 'assamese' | 'az' | 'azerbaijani' | 'ba' | 'bashkir' | 'basque' | 'be' | 'belarusian' | 'bengali' | 'bg' | 'bn' | 'bo' | 'bosnian' | 'br' | 'breton' | 'bs' | 'bulgarian' | 'burmese' | 'ca' | 'cantonese' | 'castilian' | 'catalan' | 'chinese' | 'croatian' | 'cs' | 'cy' | 'czech' | 'da' | 'danish' | 'de' | 'dutch' | 'el' | 'en' | 'english' | 'es' | 'estonian' | 'et' | 'eu' | 'fa' | 'faroese' | 'fi' | 'finnish' | 'flemish' | 'fo' | 'fr' | 'french' | 'galician' | 'georgian' | 'german' | 'gl' | 'greek' | 'gu' | 'gujarati' | 'ha' | 'haitian' | 'haitian creole' | 'hausa' | 'haw' | 'hawaiian' | 'he' | 'hebrew' | 'hi' | 'hindi' | 'hr' | 'ht' | 'hu' | 'hungarian' | 'hy' | 'icelandic' | 'id' | 'indonesian' | 'is' | 'it' | 'italian' | 'ja' | 'japanese' | 'javanese' | 'jw' | 'ka' | 'kannada' | 'kazakh' | 'khmer' | 'kk' | 'km' | 'kn' | 'ko' | 'korean' | 'la' | 'lao' | 'latin' | 'latvian' | 'lb' | 'letzeburgesch' | 'lingala' | 'lithuanian' | 'ln' | 'lo' | 'lt' | 'luxembourgish' | 'lv' | 'macedonian' | 'malagasy' | 'malay' | 'malayalam' | 'maltese' | 'mandarin' | 'maori' | 'marathi' | 'mg' | 'mi' | 'mk' | 'ml' | 'mn' | 'moldavian' | 'moldovan' | 'mongolian' | 'mr' | 'ms' | 'mt' | 'my' | 'myanmar' | 'ne' | 'nepali' | 'nl' | 'nn' | 'no' | 'norwegian' | 'nynorsk' | 'oc' | 'occitan' | 'pa' | 'panjabi' | 'pashto' | 'persian' | 'pl' | 'polish' | 'portuguese' | 'ps' | 'pt' | 'punjabi' | 'pushto' | 'ro' | 'romanian' | 'ru' | 'russian' | 'sa' | 'sanskrit' | 'sd' | 'serbian' | 'shona' | 'si' | 'sindhi' | 'sinhala' | 'sinhalese' | 'sk' | 'sl' | 'slovak' | 'slovenian' | 'sn' | 'so' | 'somali' | 'spanish' | 'sq' | 'sr' | 'su' | 'sundanese' | 'sv' | 'sw' | 'swahili' | 'swedish' | 'ta' | 'tagalog' | 'tajik' | 'tamil' | 'tatar' | 'te' | 'telugu' | 'tg' | 'th' | 'thai' | 'tibetan' | 'tk' | 'tl' | 'tr' | 'tt' | 'turkish' | 'turkmen' | 'uk' | 'ukrainian' | 'ur' | 'urdu' | 'uz' | 'uzbek' | 'valencian' | 'vi' | 'vietnamese' | 'welsh' | 'yi' | 'yiddish' | 'yo' | 'yoruba' | 'yue' | 'zh'
  - `prompt` string: An optional text to tell the model what to do with the input audio.
  - `response_format` 'json' | 'text' | 'diarized_json' | 'srt' | 'verbose_json' | 'vtt'
  - `temperature` number: The sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. If set to 0, the model will use log probability to automatically increase the temperature until certain thresholds are hit.

## Response `200`

Successful Response

- AudioTranscriptionsResponse
  - `id` string, required: A unique identifier for the audio transcription.
  - `text` string, required: The transcription text.
  - `model` string, required: The model used to generate the transcription.
  - `segments` Segment[], nullable: Diarized segments, only set when `response_format=diarized_json`.
    - `id` integer, required: A unique identifier for the segment.
    - `type` string: The type of the segment.
    - `text` string, required: The segment text.
    - `start` number, required: Start time of the segment in seconds.
    - `end` number, required: End time of the segment in seconds.
    - `speaker` string, nullable: Speaker label assigned by diarization, if available.
  - `usage` Usage
    - `prompt_tokens` integer
    - `completion_tokens` integer
    - `total_tokens` integer
    - `prompt_tokens_details` PromptTokensDetails
      - `cached_tokens` integer
    - `cost` number
    - `impacts` ApiDomainUsageEntitiesEnvironmentalImpacts
      - `kWh` number
      - `kgCO2eq` number

## Other responses

- `400`: Insufficient budget.
- `401`: Invalid authentication scheme.<br>Invalid API key.
- `403`: Your account has expired. Please contact support to renew your account.
- `404`: Model {name} not found.
- `413`: File size limit exceeded. Expected: {expected_size}. Actual: {size}.
- `422`: Model has wrong type. Expected: {expected_type}. Actual: {actual_type}.
- `429`: Token/request limit per minute/day exceeded.
- `503`: Model is too busy, please try again later.

## Changes

- **2026-09-29** `2f7a4a0aac8f`: 1 info
  - endpoint added
- **2026-09-29** `da70d9cd1957`: 1 breaking
  - api path removed without deprecation
- **2026-09-21** `5fdbd3614b8c`: 1 info
  - added the optional property `usage/prompt_tokens_details` to the response with the `200` status
- **2026-08-27** `1627e468291c`: 1 breaking, 2 warning, 12 info
  - the `detail` response's property type changed from `array` to `string` for status `422`
  - removed the optional property `usage/carbon` from the response with the `200` status
  - removed the optional property `usage/requests` from the response with the `200` status
  - api operation id `audio_transcriptions_v1_audio_transcriptions_post` removed and replaced with `create_audio_transcription_v1_audio_transcriptions_post`
  - …11 more
- **2026-05-07** `24d8274a66a9`: 1 breaking
  - the `segments/anyOf[subschema #1]/items/id` response's property type changed from `string` to `integer` for status `200`

[Operation history](https://skmtc.dev/betagouv/apis/opengatellm/changes/v1/audio/transcriptions/post.md)

---

[API](https://skmtc.dev/betagouv/apis/opengatellm.md) - [All operations](https://skmtc.dev/betagouv/apis/opengatellm/llms.txt) - [OpenAPI document](https://skmtc.dev/betagouv/apis/opengatellm/revisions/2f7a4a0aac8f?raw)
