API de traducción de video para más de 135 idiomas

Sube un video y recíbelo en el idioma que necesites. La API REST de traducción de video transcribe la voz, la traduce y le aplica doblaje, luego devuelve el video traducido, los archivos de subtítulos y el texto traducido para su revisión.
Más de 135 idiomas de destino
Subtítulos en formato .srt y .vtt
REST + SDK de Python
one upload, every language
OAuth 2.0
# 1. exchange client credentials for a token (valid 1 hour)
curl -X POST https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -d "grant_type=client_credentials"

# 2. upload the video once - YouTube, Drive, S3, Vimeo or direct URL
curl -X POST https://api.rask.ai/api/library/v1/media/link \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"link": "https://youtu.be/...", "name": "Q3 launch"}'

# 3. one project per target language - they run in parallel
for lang in es-mx de-de ja-jp pt-br; do
  curl -X POST https://api.rask.ai/v2/projects \
    -H "Authorization: Bearer $TOKEN" \
    -d "{\"video_id\": \"$VIDEO_ID\", \"dst_lang\": \"$lang\"}"
done
GET /v2/projects/{project_id}
polling, 10s
# Poll each project until merging_done, then collect the files.
while :; do
  curl -s https://api.rask.ai/v2/projects/$ID \
    -H "Authorization: Bearer $TOKEN" \
    | jq '{status, translated_video, translation_srt_path}'
  sleep 10
done
Utilizado por equipos globales
Funciones

Lo que hace la API de traducción de video en un solo proyecto

Transcribe, traduce y ponle doblaje a tus videos automáticamente a través de una sola API. Revisa el texto traducido, mantén la consistencia de la terminología con los glosarios y descarga el formato de salida que necesita cada plataforma. Añade sincronización labial opcional, con cobro por separado.

Traducción a más de 135 idiomas

Envía un vídeo y el idioma de destino para traducir los vídeos al es-mx, pt-br, fr-ca o cualquier otra configuración regional compatible. El idioma de origen se detecta automáticamente.

Detección de hablantes y voces por persona

Los hablantes se separan automáticamente y cada uno recibe una voz en el idioma de destino, por lo que las entrevistas y los paneles son fáciles de seguir. Modifica cualquier asignación o indica la cantidad de voces si la conoces.

Voces originales o voces AI

Usa la voz original de cada hablante con la clonación de voz instantánea, o reutiliza una clonación de voz personalizada guardada para mantener una voz constante en todos los videos. Ambas opciones están disponibles en los idiomas de destino compatibles; los preajustes de voz AI cubren el resto.

Sincronización labial

Activa la sincronización labial para ajustar el movimiento de los labios con el discurso traducido, como una tarea opcional en cualquier proyecto terminado, facturada por separado. La detección facial se ejecuta primero para que la apliques solo donde funcione.

Audio de fondo preservado

La música, el sonido ambiental y los efectos se separan de la voz y se mezclan de nuevo bajo la nueva locución, para que los espectadores escuchen la producción original en un idioma diferente.

Subtítulos en formato .srt y .vtt

Cada video traducido incluye un archivo de subtítulos en ambos formatos, en el idioma de destino y sincronizados con el discurso traducido.

Control de terminología con glosarios

Los nombres de marca, nombres de productos y términos técnicos se traducen de la misma manera en cada video y cada idioma, o se mantienen en el idioma original a propósito.

Texto traducido que puedes editar

Obtén la transcripción con el texto original y el traducido uno al lado del otro, corrige una línea o una marca de tiempo y vuelve a generar el contenido. Los revisores corrigen el texto y nadie tiene que volver a grabar audio.

Escala sin límites

Sin límites de tasa, cuotas de concurrencia ni restricciones por clave. Envía todo tu catálogo y traduce grandes volúmenes a varios idiomas en paralelo.
Míralo en acción

Lo que devuelve la API de traducción de video

El mismo clip, traducido a través del flujo de trabajo de esta página. Hablantes originales en la fuente, discurso traducido en francés, alemán, portugués y español, con el audio de fondo intacto.
Bandera de EN
En
Bandera de Francia
Vier
Bandera de Alemania
De
Bandera de PT
Pt
Bandera de España
Es
Flujo de trabajo

Tres pasos desde la carga hasta el video traducido

Crear un proyecto inicia la traducción. Usa el endpoint /generate más adelante para volver a doblar un proyecto después de editarlo.
1

Sube tu vídeo

Envía un archivo como datos de formulario multipart o publica un enlace de YouTube, Google Drive, S3, Vimeo o cualquier URL de descarga directa. Obtendrás un ID de contenido multimedia y los metadatos técnicos antes de gastar nada.

POST /api/library/v1/media/link
2

Crea un proyecto por idioma

Pasa el ID del medio como video_id y un idioma de destino. Crea un proyecto para cada idioma que necesites a partir de la misma carga, con tu propia transcripción o un glosario si lo tienes.

POST /v2/projects
3

Asigna voces y vuelve a hacer el doblaje

Lee el estado hasta que llegue a merging_done; luego, descarga el video traducido y los archivos de subtítulos para ese idioma.

GET /v2/projects/{project_id}
El tiempo de procesamiento varía según el proyecto. Para la traducción por lotes, crea un proyecto por idioma de destino desde el mismo archivo cargado, sigue el progreso de cada uno mediante la API y descarga los archivos cuando termine.
Diseñado a tu medida

¿Necesitas más opciones que las del catálogo? Habla con nuestro equipo.

Nuevos idiomas, voces personalizadas, tu propio método de entrega, mayor capacidad: cuando una integración de traducción de video necesita algo que no está en el catálogo público, nuestro equipo analiza tus requerimientos y las opciones disponibles.

Idiomas y voces

¿Necesitas un idioma o una voz que no esté en el catálogo público? Cuéntale al equipo tus necesidades y las opciones disponibles.

Entrega e integración

Webhooks, envío a tu propia cola, entrega directa a tu S3 y endpoints personalizados. Cuéntanos cómo quieres que funcione tu sistema.

Volumen y capacidad

Los tamaños de los lotes, los idiomas de destino por acción y la prioridad de procesamiento son términos del contrato, no límites fijos del producto.

Seguridad y alojamiento

La residencia de datos, SSO y SAML, las reglas de retención y el soporte para revisión de seguridad se gestionan como parte de la incorporación empresarial.
Casos de uso

Quién usa una API de traducción de video

Plataformas con video integrado

Plataformas de aprendizaje (LMS) y de capacitación de clientes, plataformas de creadores y de video, herramientas para seminarios web y eventos virtuales, software de alojamiento de video y flujos de trabajo, plataformas de adopción digital, compras en vivo y herramientas de video con IA que ayudan a los usuarios a crear videos o generarlos a partir de texto. Tus usuarios ya cargan contenido de video en tu producto. Con la API, pueden traducir videos en el mismo lugar a varios idiomas, y la traducción de video se convierte en una de tus funciones de pago.

Agencias de localización y producción

Conecta la traducción de video al flujo de entrega que ya usas y mantén tu paso de revisión humana. Los lingüistas revisan el texto traducido segmento por segmento, para que tu equipo entregue más idiomas a los clientes con las mismas personas.

Producción de video interna y continua

Comercio minorista y comercio electrónico internacional, franquicias globales, medios de comunicación y universidades corporativas. Integra la traducción en tu flujo de publicación para que los videos de capacitación y el contenido de los productos lleguen a todos los mercados en diferentes idiomas, y regenera una versión de idioma cada vez que cambie el video original.
Casos de éxito de clientes

Equipos reales, resultados cuantificables

Cómo las empresas localizan videos con Rask, según sus propios números.
flecha
flecha
Código

Ejemplos de código de la API de traducción de video

Un ejemplo completo en cada idioma: autentícate, carga el archivo una vez, crea un proyecto por cada idioma de destino, espera y recopila el video traducido junto con los archivos de subtítulos.
# pip install git+ssh://[email protected]/braskai/rask-sdk.git@main
import asyncio
from rask_sdk import clients, enums, schemas

TARGETS = ["es-mx", "de-de", "ja-jp", "pt-br"]

async def translate(client, video_id, lang):
    job = await client.create_project(
        data=schemas.ProjectCreate(video_id=video_id, dst_lang=lang))
    while job.status is not enums.ProjectStatus.MERGING_DONE:
        await asyncio.sleep(10)
        job = await client.get_project(project_id=job.id)
    return job

async def main():
    client = clients.RaskSDKClient(client_id=CLIENT_ID, client_secret=CLIENT_SECRET)

    video = await client.create_media_link(
        data=schemas.MediaCreateLink(link="https://youtu.be/..."))
    while video.status is not enums.MediaStatus.READY:
        await asyncio.sleep(5)
        video = await client.get_media(media_id=video.id)

    jobs = await asyncio.gather(*(translate(client, video.id, l) for l in TARGETS))
    for j in jobs:
        print(j.dst_lang, j.translated_video, j.translation_srt_path)

asyncio.run(main())
github.com/braskai/rask-sdk
Python 3.8+, async
import time, requests

AUTH = "https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token"
API  = "https://api.rask.ai"

token = requests.post(AUTH, auth=(CLIENT_ID, CLIENT_SECRET),
                      data={"grant_type": "client_credentials"}).json()["access_token"]
h = {"Authorization": f"Bearer {token}"}

video = requests.post(f"{API}/api/library/v1/media/link", headers=h,
                      json={"link": "https://youtu.be/..."}).json()
while video["status"] != "ready":
    time.sleep(5)
    video = requests.get(f"{API}/api/library/v1/media/{video['id']}", headers=h).json()

ids = [requests.post(f"{API}/v2/projects", headers=h,
                     json={"video_id": video["id"], "dst_lang": lang}).json()["id"]
       for lang in ["es-mx", "de-de", "ja-jp", "pt-br"]]

for pid in ids:
    while (p := requests.get(f"{API}/v2/projects/{pid}", headers=h).json())["status"] != "merging_done":
        time.sleep(10)
    print(p["dst_lang"], p["translated_video"], p["translation_vtt_path"])
requests + polling
no SDK required
// no dependencies, Node 18+ global fetch
const API = 'https://api.rask.ai';
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));

const auth = await fetch('https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token', {
  method: 'POST',
  headers: { Authorization: 'Basic ' + btoa(`${CLIENT_ID}:${CLIENT_SECRET}`) },
  body: new URLSearchParams({ grant_type: 'client_credentials' }),
}).then((r) => r.json());

const h = { Authorization: `Bearer ${auth.access_token}`, 'Content-Type': 'application/json' };
const get = (path) => fetch(API + path, { headers: h }).then((r) => r.json());
const post = (path, body) => fetch(API + path, { method: 'POST', headers: h, body: JSON.stringify(body) }).then((r) => r.json());

let video = await post('/api/library/v1/media/link', { link: 'https://youtu.be/...' });
while (video.status !== 'ready') { await sleep(5000); video = await get(`/api/library/v1/media/${video.id}`); }

const results = await Promise.all(['es-mx', 'de-de', 'ja-jp', 'pt-br'].map(async (dst_lang) => {
  let p = await post('/v2/projects', { video_id: video.id, dst_lang });
  while (p.status !== 'merging_done') { await sleep(10000); p = await get(`/v2/projects/${p.id}`); }
  return p;
}));

results.forEach((p) => console.log(p.dst_lang, p.translated_video, p.translation_srt_path));
fetch, Node 18+
plain HTTP
<?php
use GuzzleHttp\Client;

$http = new Client(['base_uri' => 'https://api.rask.ai']);
$json = fn($r) => json_decode($r->getBody(), true);

$auth = $json((new Client)->post('https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token',
    ['auth' => [$clientId, $clientSecret], 'form_params' => ['grant_type' => 'client_credentials']]));
$h = ['Authorization' => 'Bearer ' . $auth['access_token']];

$video = $json($http->post('/api/library/v1/media/link',
    ['headers' => $h, 'json' => ['link' => 'https://youtu.be/...']]));
while ($video['status'] !== 'ready') {
    sleep(5);
    $video = $json($http->get("/api/library/v1/media/{$video['id']}", ['headers' => $h]));
}

foreach (['es-mx', 'de-de', 'ja-jp', 'pt-br'] as $lang) {
    $p = $json($http->post('/v2/projects', ['headers' => $h,
        'json' => ['video_id' => $video['id'], 'dst_lang' => $lang]]));
    while ($p['status'] !== 'merging_done') {
        sleep(10);
        $p = $json($http->get("/v2/projects/{$p['id']}", ['headers' => $h]));
    }
    echo $lang, ' ', $p['translation_srt_path'], PHP_EOL;
}
POST /v2/projects
OAuth 2.0 client credentials
<?php
use GuzzleHttp\Client;

$http = new Client(['base_uri' => 'https://api.rask.ai']);

$auth = json_decode((new Client)->post(
    'https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token',
    ['auth' => [$clientId, $clientSecret],
     'form_params' => ['grant_type' => 'client_credentials']]
)->getBody(), true);

$h = ['Authorization' => 'Bearer ' . $auth['access_token']];

$media = json_decode($http->post('/api/library/v1/media/link',
    ['headers' => $h, 'json' => ['link' => 'https://youtu.be/...']])->getBody(), true);

$project = json_decode($http->post('/v2/projects',
    ['headers' => $h, 'json' => ['video_id' => $media['id'], 'dst_lang' => 'es-mx']])->getBody(), true);

while ($project['status'] !== 'merging_done') {
    sleep(10);
    $project = json_decode($http->get("/v2/projects/{$project['id']}",
        ['headers' => $h])->getBody(), true);
}
Guzzle 7
plain HTTP
Python es el SDK oficial. Las pestañas de Node, PHP y cURL son ejemplos simples de HTTP que usan los mismos puntos de conexión.
Progreso

Cómo se reporta el progreso de la traducción

Cada proyecto pasa por un sistema de estados documentado, para que tus usuarios puedan seguir el proceso en una barra de progreso real y detallada para cada versión de idioma. Solo necesitas gestionar tres grupos.

Éxito, detente aquí

merging_done
La traducción ha terminado. Consulta el proyecto una vez más para obtener los enlaces de descarga disponibles.

En progreso, continúa consultando

created
uploading
transcription_started
separate_background_started
determine_speakers_started
translation_started
voiceover_started
merging_started
Más la coincidencia _done estados.

Error, detener y reportar

failed
upload_failed
transcription_failed
translation_failed
voiceover_failed
merging_failed
no_audio
no_words
forbidden_link
no_audio, no_words and forbidden_link are specific enough to show directly to your own user. Every error also returns a machine-readable slug for error handling.
Observed run, 3:47 source video, en → es-mx
GET /v2/projects/{project_id}
   0s  created
  11s  transcription_started
  87s  translation_started
  99s  voiceover_started
 154s  merging_started
 165s  merging_done

O puedes omitir el sondeo por completo

Indícanos un punto de enlace de webhook y cada cambio de estado llegará como una petición POST, para que tu fila de tareas reaccione a cada cambio en el momento en que ocurre. La entrega por webhook forma parte de la incorporación empresarial.
Leer la documentación
preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
Salida

Video traducido, audio y subtítulos

Descarga el video traducido y los subtítulos en formato SRT y VTT para cada idioma de destino. En los planes elegibles, también puedes descargar la voz traducida sola o mezclada con el audio de fondo original.
Campo
Formato
Qué es
translated_video
MP4
El video doblado, listo para publicar
voiceover
WAV
Solo la voz traducida, sin fondo, para tu propia mezcla
translated_audio
WAV
Voz traducida mezclada con el audio de fondo original
translation_srt_path
.srt
Subtítulos en el idioma de destino
translation_vtt_path
.vtt
Los mismos subtítulos en formato WebVTT para reproductores web
original_video
MP4
Tu archivo de origen tal como se guardó, para referencia
Control

Revisa el texto traducido y vuelve a hacer el doblaje solo de lo que cambió

Empieza con la traducción automática o sube tu propia traducción aprobada en un archivo SRT al crear el proyecto. Revisa el guion antes de publicarlo y regenera únicamente lo que haya cambiado. El redoblaje mediante la API se cobra según los segmentos modificados.

Edición a nivel de segmento

Edición a nivel de segmento
Cada proyecto muestra su transcripción en segmentos, con el texto original y el traducido lado a lado, por lo que corregir algo solo requiere una petición de actualización (patch).
Obtén la transcripción y sus segmentos
Actualiza el texto original y nosotros nos encargaremos de traducirlo de nuevo
Modifica el texto traducido directamente para conservar tus propias palabras
Ajusta las marcas de tiempo, agrega segmentos o elimina segmentos
Reasigna la voz asignada a cualquier hablante

Glosarios para terminología

Glosarios para terminología
Agrega un glosario a un proyecto para que los nombres de marcas, de productos y los términos técnicos se traduzcan igual en cada versión de idioma, o se queden sin traducir a propósito.

Un glosario cubre un par de idiomas y se aplica a todas las variantes regionales de ese idioma de destino, por lo que un solo glosario en español funciona es-mx y es-es por igual. El registro del proyecto glossary_version, para que las modificaciones posteriores nunca alteren en silencio el trabajo ya terminado.
Entrada

Formatos de archivo compatibles

Sube cualquiera de los siete formatos de video y cuatro de audio, o envía una URL. El sistema rechaza los archivos no compatibles por tipo de contenido antes de descontar cualquier minuto de traducción.

Vídeo

7 formatos
.mp4
.mov
.mkv
.avi
.webm
.m4v
.3gp

Audio

4 formatos
.mp3
.wav
.flac
.m4a

Metadatos antes de gastar

El endpoint de medios devuelve la duración, el tamaño del archivo, el códec de video, la velocidad de cuadros, la resolución, el códec de audio, la frecuencia de muestreo y la distribución de canales. Valida un archivo y calcula el costo de antemano, ya que la traducción de video se cobra por minuto.
Seguridad y cumplimiento normativo

Listos para tu revisión de seguridad

Brask Inc cuenta con la certificación SOC 2 Tipo II, opera bajo el RGPD y publica el estado de control en tiempo real en su Trust Center. Tu contenido de video se procesa en un entorno de IA cerrado.

Certificaciones

SOC 2 Type II
GDPR
Miembro de CAI y C2PA

Cifrado

TLS 1.2 en tránsito
AES-256 en reposo
Llaves administradas SSE-S3
Rotación de llaves al menos cada 12 meses

Tu contenido

Entorno de IA cerrado
Nunca se usa para entrenar modelos generales
Exportación completa, sin ataduras

Acceda a

SSO y SAML
Control de acceso basado en roles
Credenciales de cliente OAuth 2.0

Empresas

Opciones de residencia de datos
SLA personalizados
Gerente de cuenta dedicado

Derechos de voz

Voces sintéticas con derechos de uso
Clonación de voz basada en consentimiento
Controles de seguridad de IA, humano en el circuito
Comparación

API de Rask frente a una infraestructura creada por ti

Una API de traducción de texto traduce caracteres. La traducción de video también requiere reconocimiento de voz, sincronización, voces y mezcla. Aquí tienes la misma capacidad armada de dos formas distintas.
Lo que necesitas
Rask API
Armado por partes
Transcripción, traducción, síntesis, mezcla
Una sola llamada
De tres a cuatro proveedores y el código entre ellos
Sincronizar la traducción con el video
Incluido
Tu propia lógica de alineación
Detección de hablantes y voces por persona
Incluido
Un proveedor de diarización más tu propia lógica de asignación de voces
Música de fondo y efectos preservados
Incluido
Un paso de separación de fuentes que tú construyes y ajustas
Subtítulos en formato .srt y .vtt
Incluido
Generado a partir de tus propios datos de tiempo
Sincronización labial
Opcional, se cobra por separado
Un proveedor independiente
Corregir una línea traducida
Vuelve a doblar ese segmento y paga solo por él
Vuelve a procesar el archivo y paga por él
Consistencia de terminología
Glosarios con versiones
Pre y postprocesamiento que tú mantienes
Límites de velocidad
Ninguno
Lo que exija tu proveedor más estricto
Un idioma fuera del catálogo
A consultar con nuestro equipo
Depende de cada proveedor
PREGUNTAS FRECUENTES

API de traducción de video: preguntas frecuentes

¿No encuentras lo que buscas? Ponte en contacto con el departamento de ventas.

¿Existe una API que traduzca videos de forma automática?

¿Cómo obtengo acceso a la API y una clave de API?

¿Cómo me autentico en la API de traducción de video?

¿La API es sincrónica o asincrónica?

¿Cuáles son los límites de velocidad?

¿A cuántos idiomas puedo traducir los videos?

¿Puedo traducir un video a varios idiomas al mismo tiempo?

¿Cuánto tiempo toma la traducción de un video?

¿Qué formatos de archivo son compatibles?

¿Obtengo subtítulos además del video traducido?

¿Puedo editar el texto traducido antes de publicarlo?

¿Puede ChatGPT traducir un video?

¿Cuánto cuesta traducir un video?

Empieza a hacer doblaje en una tarde

Haz tu primera solicitud hoy y contáctanos cuando necesites términos para grandes volúmenes o un idioma que nadie más tenga.