# Video Enhancer API

> Tingkatkan file video platform atau file yang diunggah ke 1080p, 2K, atau 4K, dengan penajaman teks opsional dan klip hingga 10 menit.

## Video Enhancer API

Kirim video yang sudah tersimpan di platform, atau file yang Anda unggah, dan terima versi yang ditingkatkan pada 1080p, 2K, atau 4K. Penajaman teks di layar dapat diaktifkan atau dinonaktifkan. Anda dapat meningkatkan seluruh video atau klip hingga 10 menit.

## Sumber video yang didukung

Berikan URL file platform, atau `identity` yang dikembalikan oleh [Upload API](https://wayin.ai/id/api-docs/upload/). Unggahan lokal memerlukan paket **Starter** atau lebih tinggi.

### Alur

1. **Kirim** tugas peningkatan dengan video sumber dan resolusi target
2. **Polling** hasil hingga `status` menjadi `DONE` atau `ERROR`
3. Saat `status` adalah `DONE`, baca `output_url`

---

## Endpoint

| Metode | Path                                  | Deskripsi                |
| ------ | ------------------------------------- | ------------------------ |
| `POST` | `/api/v2/video-enhancer`              | Kirim tugas peningkatan  |
| `GET`  | `/api/v2/video-enhancer/results/{id}` | Ambil hasil tugas        |

Semua permintaan memerlukan:

```http
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
x-wayinvideo-api-version: v2
```

---

## Kirim tugas peningkatan

```http
POST https://wayinvideo-api.wayin.ai/api/v2/video-enhancer
```

### Isi permintaan

| Parameter        | Tipe    | Wajib | Default | Deskripsi                                                                                                                                                                                          |
| ---------------- | ------- | ----- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `video_url`      | string  | Ya    | —       | URL file platform, atau `identity` yang dikembalikan oleh [Upload API](https://wayin.ai/id/api-docs/upload/).                                                                                                        |
| `target_res`     | string  | Ya    | —       | Resolusi keluaran. Nilai yang diizinkan: `1080p`, `2k`, `4k`.                                                                                                                                     |
| `enable_text_hd` | boolean | Tidak | `true`  | Tajamkan teks di layar. Jika bidang ini dihilangkan, nilai default adalah `true`.                                                                                                                 |
| `start_ms`       | integer | Tidak | —       | Awal klip, dalam milidetik. Hilangkan `start_ms` dan `end_ms` untuk memproses seluruh video, tetap dengan batas 10 menit. Mengirim hanya salah satu dari keduanya akan ditolak.                 |
| `end_ms`         | integer | Tidak | —       | Akhir klip, dalam milidetik. Harus lebih besar dari `start_ms` dan tidak boleh melebihi durasi sumber.                                                                                            |

Rentang yang diproses tidak boleh lebih dari 10 menit. Penagihan memakai rentang itu, dibulatkan ke atas ke detik penuh berikutnya. Tarif ada di halaman [Penagihan](https://wayin.ai/id/api-docs/pricing/).

### Contoh permintaan

```bash
curl -X POST https://wayinvideo-api.wayin.ai/api/v2/video-enhancer \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2" \
  -d '{
    "video_url": "EF_up_06wguq1afbwg1",
    "target_res": "1080p",
    "enable_text_hd": true,
    "start_ms": 0,
    "end_ms": 8000
  }'
```

```python
import requests

requests.post(
    "https://wayinvideo-api.wayin.ai/api/v2/video-enhancer",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "x-wayinvideo-api-version": "v2",
    },
    json={
        "video_url": "EF_up_06wguq1afbwg1",
        "target_res": "1080p",
        "enable_text_hd": True,
        "start_ms": 0,
        "end_ms": 8000,
    },
)
```

```javascript
await fetch('https://wayinvideo-api.wayin.ai/api/v2/video-enhancer', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer YOUR_API_KEY',
    'x-wayinvideo-api-version': 'v2',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    video_url: 'EF_up_06wguq1afbwg1',
    target_res: '1080p',
    enable_text_hd: true,
    start_ms: 0,
    end_ms: 8000,
  }),
});
```

### Respons

Tugas yang baru dikirim biasanya berstatus `PENDING` (masih antre) atau `IN_PROGRESS` (sudah berjalan).

```json
{
  "data": {
    "id": "proj_01HQ2X8J3K4L5M6N7O8P9Q0R",
    "status": "IN_PROGRESS"
  }
}
```

| Bidang       | Tipe   | Deskripsi                                                                                          |
| ------------ | ------ | -------------------------------------------------------------------------------------------------- |
| `id`         | string | Project id. Masukkan di path hasil.                                                               |
| `status`     | string | `PENDING` (antre), `IN_PROGRESS` (berjalan), `DONE` (selesai), atau `ERROR` (gagal).              |
| `output_url` | string | URL video yang ditingkatkan. Hanya ada saat `status` adalah `DONE`.                               |

---

## Ambil hasil peningkatan

Polling dengan `id` dari respons pengiriman hingga `status` menjadi `DONE` atau `ERROR`. Saat `status` adalah `DONE`, baca `output_url`.

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

### Contoh permintaan

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

### Respons

```json
{
  "data": {
    "id": "proj_01HQ2X8J3K4L5M6N7O8P9Q0R",
    "status": "DONE",
    "output_url": "https://cdn.viralhub.ai/user/video_0_8000_1080p.mp4"
  }
}
```

Bidang-bidangnya sama dengan respons pengiriman. `output_url` disertakan saat tugas selesai.

---

## Penagihan

Video Enhancer memakai **Unit API** untuk rentang yang diproses, dibulatkan ke atas ke detik penuh berikutnya. Kurang dari 1 detik dihitung sebagai 1 detik.

| Resolusi target | Unit API        |
| --------------- | --------------- |
| 1080p           | 1 per detik     |
| 2K (`2k`)       | 2 per detik     |
| 4K (`4k`)       | 4 per detik     |

Jika akun tidak memiliki Unit API yang cukup, tugas tidak dibuat dan tidak ada unit yang dipotong. Lihat [Penagihan](https://wayin.ai/id/api-docs/pricing/) dan [Kode Status](https://wayin.ai/id/api-docs/status-codes/).

---

## Kesalahan

Permintaan yang gagal memakai kode status dan format respons standar. Lihat [Kode Status](https://wayin.ai/id/api-docs/status-codes/).
