# Video Summarization API

> Hasilkan ringkasan video bertenaga AI, tagar, dan highlight timeline.

> **Direkomendasikan: Gunakan [Video Notes API](https://wayin.ai/id/api-docs/video-notes/)** — biaya sama, fitur lebih lengkap, dan kontrol melalui prompt.
>
> _Video Summarization API versi lama tetap didukung sepenuhnya._

## Video Summarization API

Kirimkan video dengan panjang berapa pun dan terima ringkasan terstruktur, tagar, dan highlight timeline yang dihasilkan AI. API ini mendukung semua jenis konten mulai dari klip pendek hingga video berdurasi berjam-jam dari berbagai platform utama dan file yang diunggah secara lokal, beserta pengaturan bahasa.

## Sumber Video yang Didukung

API menerima URL dari platform berikut: YouTube, Vimeo, Dailymotion, Kick, Twitch, TikTok, Facebook, Zoom, Rumble, dan lainnya.

Anda juga dapat membuat ringkasan dari [file video lokal yang Anda unggah](https://wayin.ai/id/api-docs/upload/) — unggah lokal memerlukan paket **Starter** atau lebih tinggi.

### Alur Kerja

1. **Kirim** tugas ringkasan dari URL video
2. **Polling** hasil hingga status menjadi `SUCCEEDED`

---

## Kirim Tugas Ringkasan

Kirimkan tugas ringkasan baru. Ini adalah titik masuk untuk semua fitur ringkasan.

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

### Body Permintaan

| Parameter     | Tipe   | Wajib | Default | Deskripsi                                                                                                                                                                                          |
| ------------- | ------ | ----- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `video_url`   | string | Ya    | —       | URL video sumber atau identifier file yang diunggah                                                                                                                                                |
| `source_lang` | string | Tidak | `null`  | Bahasa sumber video (lihat [Bahasa yang Didukung](https://wayin.ai/id/api-docs/supported-languages/)). Jika `null`, sistem mendeteksi bahasa asli secara otomatis.                                                    |
| `target_lang` | string | Tidak | `null`  | Bahasa target untuk konten output termasuk ringkasan, deskripsi, dan highlight (lihat [Bahasa yang Didukung](https://wayin.ai/id/api-docs/supported-languages/)). Jika `null`, bahasa output mengikuti `source_lang`. |

### Contoh Permintaan

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

### Respons

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

| Field    | Tipe   | Deskripsi                                                |
| -------- | ------ | -------------------------------------------------------- |
| `id`     | string | Identifier tugas (digunakan dalam permintaan berikutnya) |
| `name`   | string | Nama tugas                                               |
| `status` | string | `CREATED`, `QUEUED`, `ONGOING`, `SUCCEEDED`, `FAILED`    |

---

## Contoh

Skenario ringkasan yang umum. Ganti `YOUR_API_KEY` dengan kunci dari [API Dashboard](https://wayin.ai/wayinvideo/api-dashboard).

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

### Ringkas episode podcast yang panjang

Podcast berdurasi beberapa jam bekerja dengan cara yang sama — kirim dan lakukan polling. Respons menyertakan highlight timeline sehingga Anda dapat menavigasi audio berjam-jam dengan cepat.

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

### Ringkas webinar dalam bahasa lain

Atur `target_lang` untuk menerjemahkan ringkasan, highlight, dan deskripsi ke bahasa target meskipun video sumber dalam bahasa yang berbeda.

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

---

## Ambil Hasil Ringkasan

Ambil ringkasan, highlight, dan tagar. Lakukan polling hingga `status` menjadi `SUCCEEDED`.

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

### Parameter Path

| Parameter | Tipe   | Wajib | Deskripsi                                           |
| --------- | ------ | ----- | --------------------------------------------------- |
| `id`      | string | Ya    | ID tugas yang dikembalikan oleh endpoint pengiriman |

### Contoh Permintaan

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

### Respons

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

### Field Respons Ringkasan

| Field             | Tipe     | Deskripsi                                              |
| ----------------- | -------- | ------------------------------------------------------ |
| `status`          | string   | `CREATED`, `QUEUED`, `ONGOING`, `SUCCEEDED`, `FAILED`  |
| `error_message`   | string   | Alasan error (hanya ada saat `status` adalah `FAILED`) |
| `title`           | string   | Judul yang dihasilkan AI                               |
| `video_thumbnail` | string   | URL thumbnail video                                    |
| `summary`         | string   | Ringkasan teks lengkap                                 |
| `tags`            | string[] | Tagar yang dihasilkan AI                               |
| `highlights`      | array    | Segmen highlight timeline (lihat di bawah)             |
| `cost_usage`      | number   | Kredit API yang digunakan untuk permintaan ini         |

### Objek Highlight

| Field    | Tipe   | Deskripsi                       |
| -------- | ------ | ------------------------------- |
| `start`  | number | Waktu mulai dalam milidetik     |
| `end`    | number | Waktu berakhir dalam milidetik  |
| `desc`   | string | Judul / deskripsi bagian        |
| `events` | array  | Peristiwa kunci dalam highlight |

### Objek Event

| Field       | Tipe   | Deskripsi                       |
| ----------- | ------ | ------------------------------- |
| `timestamp` | number | Waktu peristiwa dalam milidetik |
| `desc`      | string | Deskripsi peristiwa             |

---

## FAQ

### Berapa panjang video maksimum?

Tidak ada batasan panjang yang tegas. API ini mendukung klip pendek maupun video berdurasi panjang, termasuk episode podcast, webinar lengkap, rekaman kuliah, dan replay live-stream.

### Apa isi respons ringkasan?

Ringkasan terstruktur, tagar, dan timeline segmen highlight dengan stempel waktu mulai/akhir dan deskripsi. Highlight memudahkan pembuatan UI timeline atau pembuatan penanda chapter otomatis.

### Bisakah saya mendapatkan ringkasan dalam bahasa yang berbeda dari sumbernya?

Bisa — berikan `target_lang` untuk menerjemahkan ringkasan, deskripsi, dan highlight ke bahasa target meskipun video sumber dalam bahasa yang berbeda.

### Sumber video apa saja yang didukung?

URL dari YouTube, Vimeo, Dailymotion, Kick, Twitch, TikTok, Facebook, Zoom, Rumble, dan lainnya, ditambah unggahan file lokal melalui [Upload API](https://wayin.ai/id/api-docs/upload/).
