# API de Resumen de Vídeo

> Genera resúmenes, hashtags y momentos destacados de la línea de tiempo con IA.

> **Recomendación: usa la [API de Notas de Vídeo](https://wayin.ai/es/api-docs/video-notes/)** — tiene el mismo coste y ofrece más funciones y control mediante instrucciones.
>
> _La API de Resumen de Vídeo heredada seguirá siendo totalmente compatible._

## API de Resumen de Vídeo

Envía un vídeo de cualquier duración y recibe una descripción general estructurada generada por IA, hashtags y momentos destacados de la línea de tiempo. La API admite desde clips cortos hasta vídeos de varias horas en las principales plataformas y archivos subidos localmente, además de opciones de idioma.

## Fuentes de Vídeo Compatibles

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

También puedes resumir [archivos de vídeo locales que subas](https://wayin.ai/es/api-docs/upload/) — la subida local requiere un plan **Starter** o superior.

### Flujo de Trabajo

1. **Envía** una tarea de resumen mediante una URL de vídeo
2. **Consulta** los resultados hasta que el estado sea `SUCCEEDED`

---

## Enviar Tarea de Resumen

Envía una nueva tarea de resumen. Este es el punto de entrada para todas las funciones de resumen.

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

### Cuerpo de la Solicitud

| Parámetro     | Tipo   | Requerido | Predeterminado | Descripción                                                                                                                                                                                                                                      |
| ------------- | ------ | --------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `video_url`   | string | Sí        | —              | URL del vídeo de origen o identificador del archivo subido                                                                                                                                                                                       |
| `source_lang` | string | No        | `null`         | Idioma de origen del vídeo (consulta [Idiomas Compatibles](https://wayin.ai/es/api-docs/supported-languages/)). Cuando es `null`, el sistema detecta automáticamente el idioma original.                                                                            |
| `target_lang` | string | No        | `null`         | Idioma de destino del contenido de salida, incluidos el resumen, las descripciones y los momentos destacados (consulta [Idiomas Compatibles](https://wayin.ai/es/api-docs/supported-languages/)). Cuando es `null`, el idioma de salida coincide con `source_lang`. |

```bash
curl -X POST https://wayinvideo-api.wayin.ai/api/v2/summaries \
  -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/summaries",
    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/summaries', {
  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": "sum_proj_001",
    "name": "sample project name",
    "status": "CREATED"
  }
}
```

---

## Ejemplos

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

### Resumir un video de YouTube

```bash
curl -X POST https://wayinvideo-api.wayin.ai/api/v2/summaries \
  -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"}'
```

### Resumir un episodio de podcast largo

Los podcasts de varias horas funcionan de la misma forma — envía y consulta. La respuesta incluye momentos destacados de la línea de tiempo para navegar rápidamente horas de audio.

```bash
curl -X POST https://wayinvideo-api.wayin.ai/api/v2/summaries \
  -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"}'
```

### Resumir un webinar en otro idioma

Establece `target_lang` para traducir el resumen, los momentos destacados y las descripciones al idioma de destino incluso cuando el video de origen esté en otro idioma.

```bash
curl -X POST https://wayinvideo-api.wayin.ai/api/v2/summaries \
  -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": "en",
    "target_lang": "ja"
  }'
```

---

## Obtener Resultados del Resumen

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

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

### Respuesta

```json
{
  "data": {
    "status": "SUCCEEDED",
    "title": "sample title",
    "video_thumbnail": "https://cdn.example.com/thumb/video_001.jpg",
    "summary": "sample summary text",
    "tags": ["#topic1", "#topic2"],
    "highlights": [
      {
        "start": 0,
        "end": 196000,
        "desc": "sample section title",
        "events": [{ "timestamp": 160, "desc": "sample event" }]
      }
    ],
    "cost_usage": 54.0
  }
}
```

### Campos de la Respuesta

| Campo             | Tipo     | Descripción                                           |
| ----------------- | -------- | ----------------------------------------------------- |
| `status`          | string   | `CREATED`, `QUEUED`, `ONGOING`, `SUCCEEDED`, `FAILED` |
| `error_message`   | string   | Motivo del error (solo cuando `FAILED`)               |
| `title`           | string   | Título generado por IA                                |
| `video_thumbnail` | string   | URL de la miniatura del vídeo                         |
| `summary`         | string   | Descripción general completa en texto                 |
| `tags`            | string[] | Hashtags generados por IA                             |
| `highlights`      | array    | Segmentos destacados de la línea de tiempo            |
| `cost_usage`      | number   | API Units consumidas                                  |

### Objeto de Destaque

| Campo    | Tipo   | Descripción                       |
| -------- | ------ | --------------------------------- |
| `start`  | number | Tiempo de inicio en milisegundos  |
| `end`    | number | Tiempo de fin en milisegundos     |
| `desc`   | string | Título/descripción del segmento   |
| `events` | array  | Eventos clave dentro del segmento |

### Objeto de Evento

| Campo       | Tipo   | Descripción                       |
| ----------- | ------ | --------------------------------- |
| `timestamp` | number | Tiempo del evento en milisegundos |
| `desc`      | string | Descripción del evento            |

---

## 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 videos largos, incluidos episodios de podcast, webinars completos, grabaciones de clases y repeticiones de transmisiones en vivo.

### ¿Qué contiene la respuesta del resumen?

Una descripción general estructurada, hashtags y una línea de tiempo de segmentos destacados con timestamps de inicio/fin y descripciones. Los momentos destacados facilitan renderizar una UI de línea de tiempo o autogenerar marcadores de capítulo.

### ¿Puedo obtener un resumen en un idioma diferente al del origen?

Sí — pasa `target_lang` para traducir la descripción general, las descripciones y los momentos destacados al idioma de destino incluso cuando el video de origen esté en otro idioma.

### ¿Qué fuentes de video se admiten?

URLs de YouTube, Vimeo, Dailymotion, Kick, Twitch, TikTok, Facebook, Zoom, Rumble y más, además de subidas de archivos locales a través de la [API de Subida](https://wayin.ai/es/api-docs/upload/).
