# API de Transcripción de Vídeo

> Extrae transcripciones a nivel de palabra con diarización de locutores (etiquetas de hablante) de contenido de video o audio.

## API de Transcripción de Vídeo

Envía un archivo de vídeo o audio y recibe una transcripción a nivel de palabra con diarización de locutores (cada segmento etiquetado con el hablante detectado). La API es compatible con vídeos de las principales plataformas y archivos de vídeo/audio subidos localmente, junto con la configuración de idioma.

## Fuentes de Vídeo Compatibles

YouTube, Vimeo, Dailymotion, Kick, Twitch, TikTok, Facebook, Zoom, Rumble y otras.

También puedes transcribir [archivos locales de audio o video que subas](https://wayin.ai/es/api-docs/upload/) — la subida local requiere un plan de suscripción **Starter** o superior.

---

## Enviar Tarea de Transcripción

```
POST https://wayinvideo-api.wayin.ai/api/v2/transcripts
```

### Cuerpo de la Solicitud

| Parámetro | Tipo | Requerido | Predeterminado | Descripción |
|-----------|------|-----------|----------------|-------------|
| `video_url` | string | Sí | — | URL del vídeo/audio de origen o identificador del archivo |
| `source_lang` | string | No | `null` | Idioma de origen. Cuando `null`, se detecta automáticamente. |
| `target_lang` | string | No | `null` | Idioma de destino para la transcripción. Cuando `null`, no se aplica traducción. |

```bash
curl -X POST https://wayinvideo-api.wayin.ai/api/v2/transcripts \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2" \
  -d '{"video_url": "https://www.youtube.com/watch?v=example", "target_lang": "en"}'
```

```python
import requests

requests.post(
    "https://wayinvideo-api.wayin.ai/api/v2/transcripts",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "x-wayinvideo-api-version": "v2",
    },
    json={
        "video_url": "https://www.youtube.com/watch?v=example",
        "target_lang": "en",
    },
)
```

```javascript
await fetch("https://wayinvideo-api.wayin.ai/api/v2/transcripts", {
  method: "POST",
  headers: {
    Authorization: "Bearer YOUR_API_KEY",
    "x-wayinvideo-api-version": "v2",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    video_url: "https://www.youtube.com/watch?v=example",
    target_lang: "en",
  }),
});
```

### Respuesta

```json
{"data": {"id": "trans_proj_001", "name": "sample project name", "status": "CREATED"}}
```

---

## Ejemplos

Escenarios comunes de transcripción. Reemplaza `YOUR_API_KEY` con una clave del [API Dashboard](https://wayin.ai/wayinvideo/api-dashboard).

### Transcribir un video de YouTube

```bash
curl -X POST https://wayinvideo-api.wayin.ai/api/v2/transcripts \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2" \
  -H "Content-Type: application/json" \
  -d '{"video_url": "https://www.youtube.com/watch?v=EXAMPLE"}'
```

### Transcribir un podcast con varios locutores

Pasa cualquier URL de audio de podcast (o un [identificador de archivo subido](https://wayin.ai/es/api-docs/upload/)) — la diarización de locutores es automática; cada segmento de la respuesta lleva una etiqueta `speaker`.

```bash
curl -X POST https://wayinvideo-api.wayin.ai/api/v2/transcripts \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2" \
  -H "Content-Type: application/json" \
  -d '{"video_url": "https://www.youtube.com/watch?v=EXAMPLE"}'
```

### Traducir una transcripción no inglesa al inglés

Establece `target_lang` para traducir sobre la marcha. Combina con `source_lang` si ya conoces el origen.

```bash
curl -X POST https://wayinvideo-api.wayin.ai/api/v2/transcripts \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://www.youtube.com/watch?v=EXAMPLE",
    "source_lang": "ja",
    "target_lang": "en"
  }'
```

---

## Obtener Resultados de Transcripción

```
GET https://wayinvideo-api.wayin.ai/api/v2/transcripts/results/{id}
```

```bash
curl -X GET https://wayinvideo-api.wayin.ai/api/v2/transcripts/results/trans_proj_001 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2"
```

### Respuesta

```json
{
  "data": {
    "status": "SUCCEEDED", "cost_usage": 27.0,
    "transcript": [
      {"text": "Welcome to today's presentation", "language": null, "start": 200, "end": 4500, "speaker": "Speaker 1"},
      {"text": "Thanks for coming", "language": null, "start": 5000, "end": 8200, "speaker": "Speaker 2"}
    ]
  }
}
```

### Campos de la Respuesta

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `status` | string | `CREATED`, `QUEUED`, `ONGOING`, `SUCCEEDED`, `FAILED` |
| `error_message` | string | Motivo del error (solo cuando `FAILED`) |
| `cost_usage` | number | API Units consumidas |
| `transcript` | array | Lista de segmentos de transcripción |

### Segmento de Transcripción

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `text` | string | Texto transcrito |
| `language` | string \| null | Código del idioma detectado, o `null` |
| `start` | integer | Tiempo de inicio en milisegundos |
| `end` | integer | Tiempo de fin en milisegundos |
| `speaker` | string | Etiqueta del locutor (ej.: `"Speaker 1"`) |


---

## Preguntas frecuentes

### ¿Cuál es la duración máxima del video?

No hay un límite estricto de duración. La API admite tanto clips cortos como contenido largo de video o audio en las plataformas de origen compatibles.

### ¿La API devuelve timestamps a nivel de palabra?

Sí. Cada segmento de transcripción incluye los timestamps `start` y `end` en milisegundos, el `text` transcrito, el `language` detectado y la etiqueta `speaker` asignada por la diarización.

### ¿Cómo funciona la diarización de locutores?

Los locutores se detectan y etiquetan automáticamente (`Speaker 1`, `Speaker 2`, …) por segmento. No requiere configuración — la diarización se ejecuta en cada tarea de transcripción.

### ¿Qué formatos de audio y video se admiten?

Se admiten URLs de origen desde YouTube, Vimeo, Dailymotion, Kick, Twitch, TikTok, Facebook, Zoom, Rumble y más. Para subidas locales, envía `mp4`, `mov`, `webm` o `avi` (los archivos de solo audio pueden encapsularse en uno de estos contenedores).

### ¿Puedo traducir la transcripción a otro idioma?

Sí — pasa el parámetro `target_lang`. La transcripción se traduce cuando `target_lang` difiere del idioma de origen. Consulta [Idiomas Compatibles](https://wayin.ai/es/api-docs/supported-languages/) para ver la lista completa de códigos de idioma.
