# API de Resumo de Vídeo

> Gere visões gerais, hashtags e destaques de linha do tempo com IA.

> **Recomendado: use a [API de Notas de Vídeo](https://wayin.ai/pt/api-docs/video-notes/)** — mesmo custo, mais recursos e controle por prompt.
>
> _A API de Resumo de Vídeo legada continua sendo totalmente compatível._

## API de Resumo de Vídeo

Envie um vídeo de qualquer duração e receba uma visão geral estruturada gerada por IA, hashtags e destaques da linha do tempo. A API suporta desde vídeos curtos até vídeos de horas em plataformas populares e arquivos enviados localmente, com suporte a configurações de idioma.

## Fontes de Vídeo Suportadas

A API aceita URLs das seguintes plataformas: YouTube, Vimeo, Dailymotion, Kick, Twitch, TikTok, Facebook, Zoom, Rumble e outras.

Você também pode resumir [arquivos de vídeo locais enviados](https://wayin.ai/pt/api-docs/upload/) — o upload local requer um plano **Starter** ou superior.

### Fluxo de Trabalho

1. **Envie** uma tarefa de resumo a partir de uma URL de vídeo
2. **Consulte** os resultados até que o status seja `SUCCEEDED`

---

## Enviar Tarefa de Resumo

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

### Corpo da Requisição

| Parâmetro     | Tipo   | Obrigatório | Padrão | Descrição                                                                                                                                                                  |
| ------------- | ------ | ----------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `video_url`   | string | Sim         | —      | URL do vídeo de origem ou identificador do arquivo enviado                                                                                                                 |
| `source_lang` | string | Não         | `null` | Idioma de origem do vídeo (consulte [Idiomas Suportados](https://wayin.ai/pt/api-docs/supported-languages/)). Quando `null`, o sistema detecta automaticamente o idioma original.             |
| `target_lang` | string | Não         | `null` | Idioma de destino para o conteúdo de saída (consulte [Idiomas Suportados](https://wayin.ai/pt/api-docs/supported-languages/)). Quando `null`, o idioma de saída corresponde ao `source_lang`. |

### Exemplo de Requisição

```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',
  }),
});
```

### Resposta

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

| Campo    | Tipo   | Descrição                                                   |
| -------- | ------ | ----------------------------------------------------------- |
| `id`     | string | Identificador da tarefa (usado em requisições subsequentes) |
| `name`   | string | Nome da tarefa                                              |
| `status` | string | `CREATED`, `QUEUED`, `ONGOING`, `SUCCEEDED`, `FAILED`       |

---

## Exemplos

Cenários comuns de resumo. Substitua `YOUR_API_KEY` por uma chave do [API Dashboard](https://wayin.ai/wayinvideo/api-dashboard).

### Resumir um vídeo do 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 um episódio longo de podcast

Podcasts de várias horas funcionam da mesma forma — envie e consulte. A resposta inclui destaques da linha do tempo para que você possa navegar rapidamente por horas de áudio.

```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 um webinar em outro idioma

Defina `target_lang` para traduzir o resumo, destaques e descrições para o idioma de destino, mesmo quando o vídeo de origem estiver em um idioma diferente.

```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"
  }'
```

---

## Obter Resultados do Resumo

```
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 "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2"
```

### Resposta

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

### Campos da Resposta de Resumo

| Campo             | Tipo     | Descrição                                             |
| ----------------- | -------- | ----------------------------------------------------- |
| `status`          | string   | `CREATED`, `QUEUED`, `ONGOING`, `SUCCEEDED`, `FAILED` |
| `error_message`   | string   | Motivo do erro (somente quando `status` é `FAILED`)   |
| `title`           | string   | Título gerado por IA                                  |
| `video_thumbnail` | string   | URL da miniatura do vídeo                             |
| `summary`         | string   | Visão geral completa em texto                         |
| `tags`            | string[] | Hashtags geradas por IA                               |
| `highlights`      | array    | Segmentos de destaque da linha do tempo               |
| `cost_usage`      | number   | API Units consumidas por esta requisição              |

### Objeto de Destaque

| Campo    | Tipo   | Descrição                         |
| -------- | ------ | --------------------------------- |
| `start`  | number | Tempo de início em milissegundos  |
| `end`    | number | Tempo de término em milissegundos |
| `desc`   | string | Título / descrição do segmento    |
| `events` | array  | Eventos-chave dentro do destaque  |

### Objeto de Evento

| Campo       | Tipo   | Descrição                        |
| ----------- | ------ | -------------------------------- |
| `timestamp` | number | Tempo do evento em milissegundos |
| `desc`      | string | Descrição do evento              |

---

## Perguntas Frequentes

### Qual é a duração máxima do vídeo?

Não há limite rígido de duração. A API suporta tanto clipes curtos quanto vídeos longos, incluindo episódios de podcast, webinars completos, gravações de aulas e replays de livestream.

### O que a resposta do resumo contém?

Uma visão geral estruturada, hashtags e uma linha do tempo de segmentos de destaque com timestamps de início/fim e descrições. Os destaques facilitam a renderização de uma UI de linha do tempo ou a geração automática de marcadores de capítulo.

### Posso obter um resumo em um idioma diferente do original?

Sim — passe `target_lang` para traduzir a visão geral, descrições e destaques para o idioma de destino, mesmo quando o vídeo de origem estiver em um idioma diferente.

### Quais fontes de vídeo são suportadas?

URLs do YouTube, Vimeo, Dailymotion, Kick, Twitch, TikTok, Facebook, Zoom, Rumble e outras, além de uploads de arquivos locais via [API de Upload](https://wayin.ai/pt/api-docs/upload/).
