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

# Create a translation

`POST /v1/audio/translations`

## Request

- Base URL: `https://api.naga.ac`
- URL: `https://api.naga.ac/v1/audio/translations`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/naga/apis/nagaai-api/docs/v1/audio/translations/post.ts> (a function with typed inputs; its response is checked against the schema)

Converts uploaded audio into English text and charges the account for what it counted. Requires an API key. `/v1/audio/transcriptions` answers in the language that was spoken.

## Request body `multipart/form-data`

- object: The `multipart/form-data` body of `POST /v1/audio/transcriptions` and of `POST /v1/audio/translations` — one audio upload and three text fields.
  - `model` string, required: The model to transcribe or translate with, named by its id or alias.
  - `models` string[]: Fallback models, tried in order when `model` cannot answer: none of its providers served it. At most 3, and only the model that answered is billed. A NagaAI extension in OpenRouter's shape.
  - `file` string, binary, required: The audio file itself. The gateway converts the container where the provider needs another.
  - `prompt` string, nullable: A free-form hint for the provider: names, jargon, expected style.
  - `language` string, nullable: The language spoken in the audio, as a lower-case ISO 639-1 code. Any other shape draws a 400.

## Response `200`

The English translation, as one object with one key.

- AudioTextResponse: The answer both audio-to-text routes give: the recognized text.
  - `text` string, required: What the model heard in the uploaded audio, and the whole body.

## Other responses

- `400`: The request is malformed: a field failed its constraint, the body is not valid JSON, or the model name is unknown.
- `401`: The API key is missing, malformed, disabled, or does not belong to an account that may call this route.
- `402`: The account has run out of credits. Top up the balance and retry.
- `403`: The account may not use this model, or the content was blocked by the moderation policy.
- `408`: The request body did not finish arriving within 15 minutes, or stalled for 60 seconds.
- `410`: The model is deprecated and no longer served. Pick a current one.
- `413`: The request body is larger than the 32 MiB this gateway accepts.
- `422`: The request was understood but its usage could not be metered, so it was not served.
- `429`: The account exceeded its rate limit. `Retry-After` carries the wait in seconds.
- `500`: The gateway failed for a reason of its own. Report it — this status marks NagaAI's own bugs, never an upstream verdict.
- `503`: No upstream is available, or the gateway is shedding load. `Retry-After` carries the suggested wait.

## Changes

- **2026-11-08** `32adec8b3b00`: 1 info
  - added the new optional request property `models`
- **2026-11-03** `b697d49fa1f9`: 27 breaking, 16 warning, 15 info
  - the response's body type changed from `object` to no type for status `200`
  - the `error` response's property type changed from `object` to no type for status `400`
  - the `error` response's property type changed from `object` to no type for status `401`
  - the `error` response's property type changed from `object` to no type for status `402`
  - …54 more

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

---

[API](https://skmtc.dev/naga/apis/nagaai-api.md) - [All operations](https://skmtc.dev/naga/apis/nagaai-api/llms.txt) - [OpenAPI document](https://skmtc.dev/naga/apis/nagaai-api/revisions/32adec8b3b00?raw)
