Saltar al contenido principal
Este documento presentará una guía para la integración de la API de Videos de Midjourney, que permite generar videos oficiales de Midjourney mediante la entrada de parámetros personalizados.

Proceso de Solicitud

Para utilizar la API, primero debes ir a la página correspondiente de API de Videos de Midjourney para solicitar el servicio correspondiente. Una vez en la página, haz clic en el botón “Acquire”, como se muestra en la imagen: Si aún no has iniciado sesión o registrado, serás redirigido automáticamente a la página de inicio de sesión que te invita a registrarte e iniciar sesión. Después de registrarte e iniciar sesión, serás redirigido automáticamente a la página actual. En la primera solicitud, se te otorgará un límite gratuito que te permitirá usar la API sin costo.

Uso Básico

Primero, debes entender la forma básica de uso, que consiste en ingresar la palabra clave prompt, la acción action, y un array de imágenes de referencia para el primer y último fotograma image_url, para obtener el resultado procesado. Primero, necesitas pasar un campo action, cuyo valor será generate. Este campo incluye dos tipos de acciones: generar video (generate) y extender video (extend), los detalles son los siguientes:

Como puedes ver, aquí hemos configurado los Request Headers, que incluyen:
  • accept: el formato de respuesta que deseas recibir, aquí se establece como application/json, es decir, en formato JSON.
  • authorization: la clave para llamar a la API, que puedes seleccionar directamente después de solicitarla.
Además, se ha configurado el Request Body, que incluye:
  • image_url: el enlace de la imagen de referencia para el primer fotograma del video.
  • end_image_url: opcional, especifica la imagen de referencia para el último fotograma del video.
  • video_id: se necesita especificar el ID del video al extender el video.
  • video_index: se necesita especificar cuál video del video_id se está extendiendo, el índice comienza en 0, y el valor predeterminado es 0.
  • action: la acción de la tarea de generación de video, que incluye dos tipos de acciones: generar video (generate) y extender video (extend).
  • prompt: la palabra clave.
  • mode: el modo de velocidad de generación de video, predeterminado rápido.
  • resolution: la claridad del video, predeterminada en 720p.
  • loop: si se debe generar un video en bucle, predeterminado en falso.
  • callback_url: la URL donde se necesita el resultado de la llamada.
Después de seleccionar, puedes ver que a la derecha también se ha generado el código correspondiente, como se muestra en la imagen:

Haz clic en el botón “Try” para realizar una prueba, como se muestra en la imagen anterior, y aquí obtuvimos el siguiente resultado:
{
  "image_url": "https://storage.fonedis.cc/upload_1751816808164156352.png",
  "image_width": 560,
  "image_height": 688,
  "progress": 100,
  "video_id": "1751816807896311",
  "video_urls": [
    "https://storage.fonedis.cc//video/1c67c36c-8177-4f19-ad72-1dc1567265a6/0_0.mp4",
    "https://storage.fonedis.cc//video/1c67c36c-8177-4f19-ad72-1dc1567265a6/0_1.mp4",
    "https://storage.fonedis.cc//video/1c67c36c-8177-4f19-ad72-1dc1567265a6/0_2.mp4",
    "https://storage.fonedis.cc//video/1c67c36c-8177-4f19-ad72-1dc1567265a6/0_3.mp4"
  ],
  "task_id": "037955e0-deee-4050-baa8-1416300d67e2",
  "success": true
}
El resultado devuelto tiene varios campos, que se describen a continuación:
  • success, el estado de la tarea de generación de video en ese momento.
  • task_id, el ID de la tarea de generación de video en ese momento.
  • image_url, la imagen de portada de la tarea de generación de video en ese momento.
  • image_width, el ancho de la imagen de portada de la tarea de generación de video en ese momento.
  • image_height, la altura de la imagen de portada de la tarea de generación de video en ese momento.
  • video_id, el ID del video de la tarea de generación de video en ese momento.
  • video_urls, un array de enlaces de video de la tarea de generación de video en ese momento.
Como puedes ver, hemos obtenido información satisfactoria sobre el video, solo necesitamos obtener el video generado de Midjourney a través de la dirección del enlace de video en video_urls. Además, si deseas generar el código de integración correspondiente, puedes copiarlo directamente, por ejemplo, el código de CURL es el siguiente:
curl -X POST 'https://api.acedata.cloud/midjourney/videos' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "generate",
  "prompt": "A cat sitting on a table",
  "image_url": "https://cdn.acedata.cloud/jgo1cw.jpg"
}'

Función de Extensión de Video

Si deseas continuar generando un video Kling que ya ha sido creado, puedes establecer el parámetro action como extend e ingresar el ID del video que deseas continuar generando. El ID del video se obtiene según el uso básico. En este momento, puedes ver que el ID del video anterior es:
"video_id": "1751816807896311"
Nota: el video_id aquí es el ID del video generado después. Si no sabes cómo generar un video, puedes consultar el uso básico anterior para generarlo.
A continuación, debes completar la siguiente palabra clave que necesitas para personalizar la generación del video, especificando el siguiente contenido:
  • video_index: selecciona el índice del video a extender, este índice es de los video_urls generados anteriormente, comenzando desde 0, el valor predeterminado es 0.
  • video_id: el ID del video especificado para extender.
  • action: la acción de extensión del video, que es extend.
  • prompt: la palabra clave.
Un ejemplo de llenado es el siguiente:

Después de completar, se generó automáticamente el siguiente código:

El código correspondiente en Python:
import requests

url = "https://api.acedata.cloud/midjourney/videos"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "action": "extend",
    "prompt": "A cat sitting on a table",
    "video_id": "1751816807896311",
    "video_index": 1
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Al hacer clic en ejecutar, puedes ver que obtendrás un resultado, como se muestra a continuación:
{
    "image_url": "https://storage.fonedis.cc/upload_1751817471047011172.png",
    "image_width": 560,
    "image_height": 688,
    "progress": 100,
    "video_id": "1751818094559027",
    "video_urls": [
        "https://storage.fonedis.cc//video/a4bd2f43-b925-462d-9725-8aef98403133/0_0.mp4",
        "https://storage.fonedis.cc//video/a4bd2f43-b925-462d-9725-8aef98403133/0_1.mp4",
        "https://storage.fonedis.cc//video/a4bd2f43-b925-462d-9725-8aef98403133/0_2.mp4",
        "https://storage.fonedis.cc//video/a4bd2f43-b925-462d-9725-8aef98403133/0_3.mp4"
    ],
    "task_id": "da3bdcd0-9c21-4b40-877a-2c36e5f479e5",
    "success": true
}
Se puede ver que el contenido del resultado es consistente con el anterior, lo que también logra la función de expansión de video.

Callback asíncrono

Dado que el tiempo de generación de la API de Midjourney Videos es relativamente largo, aproximadamente de 1 a 2 minutos, si la API no responde durante mucho tiempo, la solicitud HTTP mantendrá la conexión, lo que provocará un consumo adicional de recursos del sistema, por lo que esta API también ofrece soporte para callbacks asíncronos. El flujo general es: cuando el cliente inicia la solicitud, especifica un campo adicional callback_url, después de que el cliente inicia la solicitud de la API, la API devolverá inmediatamente un resultado que incluye un campo de información task_id, que representa el ID de la tarea actual. Cuando la tarea se completa, el resultado del video generado se enviará al callback_url especificado por el cliente en formato JSON POST, que también incluye el campo task_id, de modo que el resultado de la tarea se pueda asociar mediante el ID. A continuación, entenderemos cómo operar específicamente a través de un ejemplo. Primero, el callback de Webhook es un servicio que puede recibir solicitudes HTTP, los desarrolladores deben reemplazarlo con la URL de su propio servidor HTTP. Aquí, para facilitar la demostración, se utiliza un sitio web de muestra de Webhook público https://webhook.site/, al abrir este sitio se obtiene una URL de Webhook, como se muestra en la imagen:

Copie esta URL y úsela como Webhook, el ejemplo aquí es https://webhook.site/556e6971-b41f-4fa8-9151-6e91acd0399f. A continuación, podemos establecer el campo callback_url como la URL de Webhook mencionada anteriormente, al mismo tiempo que llenamos los parámetros correspondientes, el contenido específico se muestra en la imagen:

Al hacer clic en ejecutar, se puede observar que se obtiene inmediatamente un resultado, como se muestra a continuación:
{
  "task_id": "b726a27a-f379-4d91-b569-cfe4b7b299ee"
}
Después de un momento, podemos observar el resultado del video generado en https://webhook.site/556e6971-b41f-4fa8-9151-6e91acd0399f, como se muestra en la imagen:

El contenido es el siguiente:
{
  "image_url": "https://storage.fonedis.cc/upload_1751818513244368774.png",
  "image_width": 560,
  "image_height": 688,
  "progress": 100,
  "video_id": "1751818512924054",
  "video_urls": [
    "https://storage.fonedis.cc//video/9ff3783e-bcf6-4f11-b738-09aa52318e6e/0_0.mp4",
    "https://storage.fonedis.cc//video/9ff3783e-bcf6-4f11-b738-09aa52318e6e/0_1.mp4",
    "https://storage.fonedis.cc//video/9ff3783e-bcf6-4f11-b738-09aa52318e6e/0_2.mp4",
    "https://storage.fonedis.cc//video/9ff3783e-bcf6-4f11-b738-09aa52318e6e/0_3.mp4"
  ],
  "task_id": "b726a27a-f379-4d91-b569-cfe4b7b299ee",
  "success": true
}
Se puede ver que en el resultado hay un campo task_id, los otros campos son similares a los anteriores, a través de este campo se puede lograr la asociación de tareas.

Manejo de errores

Al llamar a la API, si se encuentra con un error, la API devolverá el código de error y la información correspondiente. Por ejemplo:
  • 400 token_mismatched: Solicitud incorrecta, posiblemente debido a parámetros faltantes o inválidos.
  • 400 api_not_implemented: Solicitud incorrecta, posiblemente debido a parámetros faltantes o inválidos.
  • 401 invalid_token: No autorizado, token de autorización inválido o faltante.
  • 429 too_many_requests: Demasiadas solicitudes, ha superado el límite de tasa.
  • 500 api_error: Error interno del servidor, algo salió mal en el servidor.

Ejemplo de respuesta de error

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Conclusión

A través de este documento, ha comprendido cómo utilizar la API de Midjourney Videos para generar videos mediante la entrada de palabras clave y una imagen de referencia de la primera fotograma. Esperamos que este documento le ayude a integrar y utilizar mejor esta API. Si tiene alguna pregunta, no dude en ponerse en contacto con nuestro equipo de soporte técnico.