# API de Mejora de Vídeo

> Mejora un archivo de vídeo de la plataforma o un archivo subido a 1080p, 2K o 4K, con nitidez de texto opcional y un fragmento de hasta 10 minutos.

## API de Mejora de Vídeo

Envía un vídeo que ya está en la plataforma, o un archivo que hayas subido, y recibe una versión mejorada en 1080p, 2K o 4K. Puedes activar o desactivar la nitidez del texto en pantalla, y mejorar el vídeo completo o un fragmento de hasta 10 minutos.

## Fuentes de vídeo compatibles

Pasa una URL de archivo de la plataforma, o el `identity` que devuelve la [API de Subida](https://wayin.ai/es/api-docs/upload/). La subida local requiere un plan **Starter** o superior.

### Flujo

1. **Envía** una tarea de mejora con el vídeo de origen y una resolución de destino
2. **Consulta** el resultado hasta que `status` sea `DONE` o `ERROR`
3. Cuando `status` sea `DONE`, lee `output_url`

---

## Endpoints

| Método | Ruta                                  | Descripción                    |
| ------ | ------------------------------------- | ------------------------------ |
| `POST` | `/api/v2/video-enhancer`              | Enviar una tarea de mejora     |
| `GET`  | `/api/v2/video-enhancer/results/{id}` | Obtener el resultado de la tarea |

Todas las solicitudes requieren:

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

---

## Enviar una tarea de mejora

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

### Cuerpo de la solicitud

| Parámetro        | Tipo    | Obligatorio | Predeterminado | Descripción                                                                                                                                                                                       |
| ---------------- | ------- | ----------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `video_url`      | string  | Sí          | —              | URL de archivo de la plataforma, o el `identity` que devuelve la [API de Subida](https://wayin.ai/es/api-docs/upload/).                                                                                              |
| `target_res`     | string  | Sí          | —              | Resolución de salida. Valores permitidos: `1080p`, `2k`, `4k`.                                                                                                                                   |
| `enable_text_hd` | boolean | No          | `true`         | Mejorar el texto en pantalla. Si se omite el campo, el valor predeterminado es `true`.                                                                                                           |
| `start_ms`       | integer | No          | —              | Inicio del fragmento, en milisegundos. Omite `start_ms` y `end_ms` para procesar el vídeo completo, con el máximo de 10 minutos. Enviar solo uno de los dos campos se rechaza.                  |
| `end_ms`         | integer | No          | —              | Fin del fragmento, en milisegundos. Debe ser mayor que `start_ms` y no puede superar la duración del origen.                                                                                     |

El intervalo procesado no puede superar los 10 minutos. La facturación usa ese intervalo, redondeado hacia arriba al siguiente segundo entero. Las tarifas están en [Facturación](https://wayin.ai/es/api-docs/pricing/).

### Ejemplo de solicitud

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

### Respuesta

Una tarea recién enviada suele estar en `PENDING` (en cola) o `IN_PROGRESS` (ya en ejecución).

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

| Campo        | Tipo   | Descripción                                                                                     |
| ------------ | ------ | ----------------------------------------------------------------------------------------------- |
| `id`         | string | Id del proyecto. Se usa en la ruta de resultados.                                              |
| `status`     | string | `PENDING` (en cola), `IN_PROGRESS` (en ejecución), `DONE` (terminado) o `ERROR` (fallido).     |
| `output_url` | string | URL del vídeo mejorado. Solo está presente cuando `status` es `DONE`.                          |

---

## Obtener el resultado

Consulta con el `id` de la respuesta de envío hasta que `status` sea `DONE` o `ERROR`. Cuando `status` sea `DONE`, lee `output_url`.

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

### Ejemplo de solicitud

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

### Respuesta

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

Los campos coinciden con la respuesta de envío. `output_url` se incluye cuando la tarea ha terminado.

---

## Facturación

La mejora de vídeo consume **API Units** por el intervalo procesado, redondeado hacia arriba al siguiente segundo entero. Menos de 1 segundo cuenta como 1 segundo.

| Resolución de destino | API Units       |
| --------------------- | --------------- |
| 1080p                 | 1 por segundo   |
| 2K (`2k`)             | 2 por segundo   |
| 4K (`4k`)             | 4 por segundo   |

Si la cuenta no tiene suficientes API Units, la tarea no se crea y no se descuentan unidades. Consulta [Facturación](https://wayin.ai/es/api-docs/pricing/) y [Códigos de Estado](https://wayin.ai/es/api-docs/status-codes/).

---

## Errores

Las solicitudes fallidas usan los códigos de estado y formatos de respuesta habituales. Consulta [Códigos de Estado](https://wayin.ai/es/api-docs/status-codes/).
