# Traducción

> Traduce una transcripción a otro idioma al transcribir o después, y lee texto, SRT y VTT bilingües o solo traducidos.

Canonical: https://transcript1.com/es/docs/translation
Language: es
Last updated: 2026-10-31

transcript1 primero transcribe el contenido y luego traduce el texto de la transcripción a un idioma que elijas. La traducción se alinea por segmento y conserva los tiempos y los hablantes originales. Es solo traducción de texto: no hay doblaje ni audio traducido.

La traducción es gratis. Usa 0 minutos y aparece en tu historial de uso como una entrada gratuita "Translation". Los minutos de transcripción se aplican como siempre, y una traducción fallida nunca hace fallar la transcripción ni la reembolsa.

## Traducir mientras transcribes

Agrega `translate_to` a la solicitud que crea la transcripción. Es un código ISO 639-1 de dos letras en minúsculas, como `es` o `en`. Funciona con un enlace de video en el cuerpo JSON de `POST /v1/transcriptions`, con la reserva de una subida por partes y con una subida multipart de un solo paso.

```bash
curl -X POST "https://api.transcript1.com/v1/transcriptions?wait=60" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "translate_to": "es"}'
```

Para subir un archivo, envía `translate_to` como campo de formulario:

```bash
curl -X POST "https://api.transcript1.com/v1/transcriptions?wait=60" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -F file=@interview.m4a \
  -F translate_to=en
```

La herramienta `transcribe` de MCP también acepta `translate_to`. Un idioma de destino por solicitud.

## Traducir una transcripción que ya existe

Pide la traducción de una transcripción completada:

```bash
curl -X POST "https://api.transcript1.com/v1/transcriptions/tr_8fK2Lm0PqRsTuVwXyZaBcD/translations" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"language": "en"}'
```

La API responde `202`:

```json
{
  "transcription_id": "tr_8fK2Lm0PqRsTuVwXyZaBcD",
  "language": "en",
  "status": "processing"
}
```

| Estado | Significado |
|---|---|
| `404` | No se encontró la transcripción. |
| `409 transcript_not_ready` | La transcripción aún no está en estado `completed`. |
| `422` | El idioma no es un código válido de dos letras. |

La llamada es idempotente. Una traducción en estado `processing` o `completed` se devuelve tal cual, y una `failed` se reintenta. La herramienta MCP `translate_transcription` recibe `id` y `language`.

## Leer la traducción

`GET /v1/transcriptions/:id` y las descargas de texto, SRT y VTT aceptan `translation`:

| `translation` | Resultado |
|---|---|
| `both` (predeterminado) | Los segmentos JSON reciben un campo `translation`. El texto pone la línea traducida debajo de la original. Los bloques SRT y VTT tienen dos líneas: la original y luego la traducción. |
| `only` | El texto traducido reemplaza a `text`. Los tiempos y los hablantes no cambian. |
| `none` | Solo la transcripción original. |

La respuesta incluye un objeto `translation`, o `null` si no se pidió traducción:

```json
{
  "translation": { "language": "es", "status": "completed" }
}
```

`status` es `processing`, `completed` o `failed`. Una traducción fallida incluye además un mensaje `error`. `wait` también espera la traducción pedida; si se agota el tiempo, el estado es `processing`. La herramienta MCP `get_transcription` tiene un parámetro `translation` con los mismos valores.

## Webhooks

Dos eventos informan el resultado de la traducción, además de `transcription.completed` y `transcription.failed`, que no cambian:

| `type` | Se envía cuando |
|---|---|
| `transcription.translation.completed` | La traducción pedida llegó a `completed`. |
| `transcription.translation.failed` | La traducción pedida llegó a `failed`. |

`data` es el objeto de transcripción más `translation: { language, status, error }`. Consulta [Webhooks](https://transcript1.com/es/docs/webhooks) para las firmas y las reglas de entrega.
