---
title: "Create audio translation request"
method: POST
path: "/v1/audio/translations"
tags: ["Audio"]
---

# Create audio translation request

`POST /v1/audio/translations`

## Request

- Base URL: `https://api.together.ai`
- URL: `https://api.together.ai/v1/audio/translations`
- Auth: HTTP bearer

Translates audio into English

## Request body `multipart/form-data`

- AudioTranslationRequest
  - `file` union, required: Audio file upload or public HTTP/HTTPS URL. Supported formats: .wav, .mp3, .m4a, .webm, .flac, .ogg, .opus, .aac. Maximum duration 4 hours; longer audio is rejected with `audio_too_long`. Binary uploads are additionally capped at 80 MB (HTTP 413); URL-fetched audio is capped at 1 GB.
    - string, binary: Audio file uploaded as binary. Maximum upload size 80 MB (requests above this are rejected with HTTP 413). For larger payloads, host the file and submit a URL instead.
    - string, uri: Public HTTPS URL the server fetches the audio from. Server-side fetch limit is 1 GB; downloads exceeding the cap fail with `file_too_large`.
  - `model` 'openai/whisper-large-v3': Model to use for translation
  - `language` string: Target output language. Optional ISO 639-1 language code. If omitted, language is set to English.
  - `prompt` string: Optional text to bias decoding. Supported only on Whisper-family models (e.g. `openai/whisper-large-v3`). Other STT models (e.g. `nvidia/parakeet-tdt-0.6b-v3`) accept the field for API compatibility but ignore it.
  - `response_format` 'json' | 'verbose_json': The format of the response
  - `temperature` number: Sampling temperature between 0.0 and 1.0
  - `timestamp_granularities` union: Controls level of timestamp detail in verbose_json. Only used when response_format is verbose_json. Can be a single granularity or an array to get multiple levels.
    - 'segment' | 'word'
    - string[]

## Response `200`

OK

- union
  - AudioTranslationJsonResponse
    - `text` string, required: The translated text
  - AudioTranslationVerboseJsonResponse
    - `language` string, required: The target language of the translation
    - `duration` number, required: The duration of the audio in seconds
    - `text` string, required: The translated text
    - `segments` AudioTranscriptionSegment[], required: Array of translation segments
      - `id` integer, required: Unique identifier for the segment
      - `start` number, required: Start time of the segment in seconds
      - `end` number, required: End time of the segment in seconds
      - `text` string, required: The text content of the segment
    - `words` AudioTranscriptionWord[]: Array of translation words (only when timestamp_granularities includes 'word')
      - `word` string, required: The word
      - `start` number, required: Start time of the word in seconds
      - `end` number, required: End time of the word in seconds
      - `speaker_id` string: The speaker id for the word (only when diarize is enabled)

## Other responses

- `400`: BadRequest. Possible error codes include `audio_too_long` (audio duration exceeds the 4 hour cap), `file_too_large` (URL-fetched audio exceeds the 1 GB server-side cap), `unsupported_format` (codec or container could not be decoded), and `invalid_params` (request parameters failed validation).
- `401`: Unauthorized
- `413`: Payload Too Large. The request body exceeded the 80 MB direct-upload limit. For larger payloads, host the file and submit an HTTPS URL via the `file` field (URL-fetched audio is capped at 1 GB server-side).
- `429`: RateLimit

## Changes

- **2026-10-22** `bb5257b3173a`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/together/apis/together-apis/changes/v1/audio/translations/post.md)

---

[API](https://skmtc.dev/together/apis/together-apis.md) - [All operations](https://skmtc.dev/together/apis/together-apis/llms.txt) - [OpenAPI document](https://skmtc.dev/together/apis/together-apis/revisions/93438ddac711?raw)
