> ## Documentation Index
> Fetch the complete documentation index at: https://captions.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Introducción

> Crea un vídeo humano expresivo de formato corto a partir de una imagen fija y una pista de audio.

# Descripción general

Mirage Video es un modelo de vídeo creado específicamente para el realismo humano. A partir de una sola imagen y un clip de audio, Mirage puede crear vídeos expresivos y realistas que capturan el sutil movimiento facial, las emociones y la sincronización del habla con una fidelidad notable.

Entrenado con diversas imágenes humanas, Mirage comprende cómo se mueven los rostros, cómo las voces moldean las expresiones y cómo los pequeños detalles hacen que las personas parezcan reales en pantalla.

La API Mirage Video expone esta capacidad a los desarrolladores a través de endpoints sencillos:

* Crear vídeo — Inicia una nueva generación de vídeo a partir de un par imagen-audio.
* Recuperar vídeo — Recupera el estado actual de un trabajo de generación de vídeo y realiza un seguimiento de su progreso.
* Recuperar contenido del vídeo — Obtén el MP4 final una vez que el trabajo esté completo.
* Listar vídeos — Accede a tus generaciones de vídeo recientes.

## Requisitos previos

Crea una clave de API en el [panel de la plataforma](https://platform.mirage.app/).

## 1) Crear un vídeo

Proporciona una imagen de retrato (JPEG/PNG) y audio de voz (WAV/MP3).

<CodeGroup>
  ```python Python theme={"system"}
  import requests

  url = "https://api.mirage.app/v1/videos"
  headers = {
      "x-api-key": "<api-key>"
  }
  files = {
      "image_reference": open("portrait.jpg", "rb"),
      "audio_reference": open("voice.mp3", "rb")
  }
  data = {
      "model": "mirage-video-1-latest"
  }

  response = requests.post(url, headers=headers, files=files, data=data)
  print(response.json())
  ```

  ```typescript TypeScript theme={"system"}
  const formData = new FormData();
  formData.append("model", "mirage-video-1-latest");
  formData.append("image_reference", await fs.readFile("portrait.jpg"));
  formData.append("audio_reference", await fs.readFile("voice.mp3"));

  const response = await fetch("https://api.mirage.app/v1/videos", {
    method: "POST",
    headers: {
      "x-api-key": "<api-key>"
    },
    body: formData
  });

  const data = await response.json();
  console.log(data);
  ```

  ```bash cURL theme={"system"}
  curl --request POST \
    --url https://api.mirage.app/v1/videos \
    --header 'Content-Type: multipart/form-data' \
    --header 'x-api-key: <api-key>' \
    --form model=mirage-video-1-latest \
    --form image_reference=@portrait.jpg \
    --form audio_reference=@voice.mp3
  ```
</CodeGroup>

**Respuesta (ejemplo)**

```json theme={"system"}
{
  "id": "video_abc123def456",
  "object": "video",
  "completed_at": 1730822520,
  "created_at": 1730822400,
  "model": "mirage-video-1-latest",
  "progress": 100,
  "status": "COMPLETE",
  "error": null
}
```

## 2) Comprobar el estado del trabajo

Comprueba periódicamente hasta que el estado sea `COMPLETE`.

<CodeGroup>
  ```python Python theme={"system"}
  import requests

  url = f"https://api.mirage.app/v1/videos/{video_id}"
  headers = {
      "x-api-key": "<api-key>"
  }

  response = requests.get(url, headers=headers)
  ```

  ```typescript TypeScript theme={"system"}
  const response = await fetch(`https://api.mirage.app/v1/videos/${videoId}`, {
    method: "GET",
    headers: {
      "x-api-key": "<api-key>"
    }
  });

  const data = await response.json();
  ```

  ```bash cURL theme={"system"}
  curl --request GET \
    --url https://api.mirage.app/v1/videos/{video_id} \
    --header 'x-api-key: <api-key>'
  ```
</CodeGroup>

**Valores de estado**

* `PROCESSING`
* `COMPLETE`
* `FAILED`
* `CANCELLED`

## 3) Descargar el vídeo (seguir redirección)

Una vez que el estado de un vídeo es `COMPLETE`, está disponible para su descarga. El endpoint `content` devuelve una redirección HTTP a la URL del vídeo final.

<CodeGroup>
  ```python Python theme={"system"}
  import requests

  url = f"https://api.mirage.app/v1/videos/{video_id}/content"
  headers = {
      "x-api-key": "<api-key>"
  }

  response = requests.get(url, headers=headers, allow_redirects=True)

  with open("output.mp4", "wb") as f:
      f.write(response.content)
  ```

  ```typescript TypeScript theme={"system"}
  const response = await fetch(`https://api.mirage.app/v1/videos/${videoId}/content`, {
    method: "GET",
    headers: {
      "x-api-key": "<api-key>"
    },
    redirect: "follow"
  });
  ```

  ```bash cURL theme={"system"}
  curl --request GET \
    --url https://api.mirage.app/v1/videos/{video_id}/content \
    --header 'x-api-key: <api-key>' \
    --location \
    --output output.mp4
  ```
</CodeGroup>

Tu vídeo generado ahora está guardado como `output.mp4`.

## Consejos para obtener los mejores resultados

* Usa un retrato claro, de frente, con buena iluminación y un solo sujeto. Asegúrate de que el rostro sea claro, la boca esté abierta y el sujeto esté orientado en un encuadre de primer plano o plano medio para garantizar una alineación natural con la voz.
* Evita imágenes con bocas cerradas o varias personas en el encuadre.
* Usa audio expresivo y realista. Los resultados tienden a ser peores si el audio es audiblemente "generado por IA".

## Referencia de la API

* [**Crear vídeo**](https://help.mirage.app/api-reference/videos/create-video)
* [**Recuperar vídeo**](https://help.mirage.app/api-reference/videos/retrieve-video)
* [Recuperar contenido del vídeo](https://help.mirage.app/api-reference/videos/retrieve-video-content)
* [**Listar vídeos**](https://help.mirage.app/api-reference/videos/list-videos)
