{
  "aboutHtml": "<h4>De la descripción al vídeo</h4><p>Grok Imagine Video crea vídeos a partir de texto. El propio modelo de xAI también dispone de modos con una imagen o un vídeo original. En el método publicado de generación de Ailoot, la entrada es una descripción de texto y el resultado, un vídeo.</p><p>La generación es asíncrona: primero se crea una tarea y después se obtiene su estado y el resultado terminado mediante su identificador. Según xAI, crear un vídeo puede tardar varios minutos; el tiempo depende de la complejidad de la escena, la duración, la resolución y el modo elegido.</p><h4>Duración y relación de aspecto</h4><p>La creación de vídeos admite una duración de <strong>1 a 15 segundos</strong>. Las relaciones de aspecto incluyen <code>1:1</code>, <code>16:9</code>, <code>9:16</code>, <code>4:3</code>, <code>3:4</code>, <code>3:2</code> y <code>2:3</code>; el formato predeterminado es <code>16:9</code>. Esta versión dispone de <strong>480p y 720p</strong>; 1080p corresponde a la versión 1.5.</p><h4>Animación de una imagen original</h4><p>En el modo de xAI con imagen, esta se convierte en el primer fotograma y las instrucciones de texto definen el movimiento. De forma predeterminada, las proporciones del vídeo coinciden con las de la imagen original. Una relación de aspecto definida explícitamente cambia esas proporciones y puede estirar la imagen.</p><h4>Edición dirigida</h4><p>Al trabajar con un vídeo terminado, el modelo aplica los cambios descritos y conserva el resto del contenido de la escena. Este modo ayuda a modificar el elemento deseado conservando la puesta en escena del vídeo original. La duración y las proporciones se heredan del original; no se establece una duración ni una relación de aspecto nuevas.</p><p>El vídeo original para edición está limitado a <strong>8,7 segundos</strong> y el resultado, a una resolución máxima de <strong>720p</strong>. El material en 1080p se reduce a 720p. Los ajustes de generación a partir de texto no se trasladan automáticamente a la edición.</p><h4>Continuación de un vídeo terminado</h4><p>En un modo independiente de xAI, esta versión continúa el vídeo original desde su último fotograma. El MP4 original debe durar entre 2 y 15 segundos; el fragmento añadido, entre 2 y 10 segundos, con 6 como valor predeterminado. El resultado une el vídeo original y su continuación. Las proporciones y la resolución se heredan del original, con un límite de 720p; en este modo no se pueden cambiar por separado. Esta capacidad del fabricante es distinta de la generación de Ailoot a partir de texto publicada.</p><h4>Referencias y límites de la versión</h4><p>xAI contempla el uso de referencias visuales para orientar el aspecto de las personas, la ropa y los objetos de la escena. Una referencia define los rasgos visuales, no la imagen exacta del primer fotograma. En la versión clásica de Grok Imagine Video no se puede combinar un fotograma inicial con referencias.</p><p>Esta versión no admite fijar de forma exacta el último fotograma ni fotogramas clave intermedios. Estas capacidades pertenecen a Grok Imagine Video 1.5. La generación, la animación de una imagen original y la modificación de un vídeo terminado son modos distintos; el método publicado de Ailoot descrito aquí corresponde a generación a partir de texto.</p>",
  "aboutText": "### De la descripción al vídeo\n\nGrok Imagine Video crea vídeos a partir de texto. El propio modelo de xAI también dispone de modos con una imagen o un vídeo original. En el método publicado de generación de Ailoot, la entrada es una descripción de texto y el resultado, un vídeo.\n\nLa generación es asíncrona: primero se crea una tarea y después se obtiene su estado y el resultado terminado mediante su identificador. Según xAI, crear un vídeo puede tardar varios minutos; el tiempo depende de la complejidad de la escena, la duración, la resolución y el modo elegido.\n\n### Duración y relación de aspecto\n\nLa creación de vídeos admite una duración de **1 a 15 segundos**. Las relaciones de aspecto incluyen `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `3:2` y `2:3`; el formato predeterminado es `16:9`. Esta versión dispone de **480p y 720p**; 1080p corresponde a la versión 1.5.\n\n### Animación de una imagen original\n\nEn el modo de xAI con imagen, esta se convierte en el primer fotograma y las instrucciones de texto definen el movimiento. De forma predeterminada, las proporciones del vídeo coinciden con las de la imagen original. Una relación de aspecto definida explícitamente cambia esas proporciones y puede estirar la imagen.\n\n### Edición dirigida\n\nAl trabajar con un vídeo terminado, el modelo aplica los cambios descritos y conserva el resto del contenido de la escena. Este modo ayuda a modificar el elemento deseado conservando la puesta en escena del vídeo original. La duración y las proporciones se heredan del original; no se establece una duración ni una relación de aspecto nuevas.\n\nEl vídeo original para edición está limitado a **8,7 segundos** y el resultado, a una resolución máxima de **720p**. El material en 1080p se reduce a 720p. Los ajustes de generación a partir de texto no se trasladan automáticamente a la edición.\n\n### Continuación de un vídeo terminado\n\nEn un modo independiente de xAI, esta versión continúa el vídeo original desde su último fotograma. El MP4 original debe durar entre 2 y 15 segundos; el fragmento añadido, entre 2 y 10 segundos, con 6 como valor predeterminado. El resultado une el vídeo original y su continuación. Las proporciones y la resolución se heredan del original, con un límite de 720p; en este modo no se pueden cambiar por separado. Esta capacidad del fabricante es distinta de la generación de Ailoot a partir de texto publicada.\n\n### Referencias y límites de la versión\n\nxAI contempla el uso de referencias visuales para orientar el aspecto de las personas, la ropa y los objetos de la escena. Una referencia define los rasgos visuales, no la imagen exacta del primer fotograma. En la versión clásica de Grok Imagine Video no se puede combinar un fotograma inicial con referencias.\n\nEsta versión no admite fijar de forma exacta el último fotograma ni fotogramas clave intermedios. Estas capacidades pertenecen a Grok Imagine Video 1.5. La generación, la animación de una imagen original y la modificación de un vídeo terminado son modos distintos; el método publicado de Ailoot descrito aquí corresponde a generación a partir de texto.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "b0cc8b210cdcf998031e7408e19318fbc5dfe71bad12527d0455a08fd8c5140d",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "es",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">x</span><h2 id=\"sheet-title\">grok-imagine-video</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Cerrar\">×</button></div><div class=\"idline\"><span>xAI /</span><code>grok-imagine-video</code><button type=\"button\" id=\"copy-id\">Copiar ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Secciones de la ficha del modelo\"><button type=\"button\" data-card-jump=\"overview\">Primeros pasos</button><button type=\"button\" data-card-jump=\"methods\">Entradas y métodos</button><button type=\"button\" data-card-jump=\"pricing\">Planes</button><button type=\"button\" data-card-jump=\"examples\">Ejemplos</button><button type=\"button\" data-card-jump=\"results\">Resultados</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Métodos de API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Core|videos|/v1/videos/generations|grok-imagine-video\">Vídeo</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Primeros pasos</h3><p class=\"mdesc-full\">Grok Imagine Video crea vídeos cortos a partir de descripciones de texto y permite elegir la duración y la relación de aspecto. El propio modelo de xAI también admite animación de imágenes y edición dirigida de vídeo.</p><dl class=\"card-io\" data-card-io><div><dt>Entradas aceptadas</dt><dd>Texto</dd></div><div><dt>Resultados</dt><dd>Vídeo</dd></div></dl><details class=\"card-about\"><summary>Sobre el modelo</summary><p class=\"note-s\" data-model-method-boundary>Esta descripción cubre las capacidades del modelo. Las entradas, salidas y opciones disponibles en Ailoot se indican a continuación para el método seleccionado.</p><div class=\"mabout\" id=\"m-about\"><h4>De la descripción al vídeo</h4><p>Grok Imagine Video crea vídeos a partir de texto. El propio modelo de xAI también dispone de modos con una imagen o un vídeo original. En el método publicado de generación de Ailoot, la entrada es una descripción de texto y el resultado, un vídeo.</p><p>La generación es asíncrona: primero se crea una tarea y después se obtiene su estado y el resultado terminado mediante su identificador. Según xAI, crear un vídeo puede tardar varios minutos; el tiempo depende de la complejidad de la escena, la duración, la resolución y el modo elegido.</p><h4>Duración y relación de aspecto</h4><p>La creación de vídeos admite una duración de <strong>1 a 15 segundos</strong>. Las relaciones de aspecto incluyen <code>1:1</code>, <code>16:9</code>, <code>9:16</code>, <code>4:3</code>, <code>3:4</code>, <code>3:2</code> y <code>2:3</code>; el formato predeterminado es <code>16:9</code>. Esta versión dispone de <strong>480p y 720p</strong>; 1080p corresponde a la versión 1.5.</p><h4>Animación de una imagen original</h4><p>En el modo de xAI con imagen, esta se convierte en el primer fotograma y las instrucciones de texto definen el movimiento. De forma predeterminada, las proporciones del vídeo coinciden con las de la imagen original. Una relación de aspecto definida explícitamente cambia esas proporciones y puede estirar la imagen.</p><h4>Edición dirigida</h4><p>Al trabajar con un vídeo terminado, el modelo aplica los cambios descritos y conserva el resto del contenido de la escena. Este modo ayuda a modificar el elemento deseado conservando la puesta en escena del vídeo original. La duración y las proporciones se heredan del original; no se establece una duración ni una relación de aspecto nuevas.</p><p>El vídeo original para edición está limitado a <strong>8,7 segundos</strong> y el resultado, a una resolución máxima de <strong>720p</strong>. El material en 1080p se reduce a 720p. Los ajustes de generación a partir de texto no se trasladan automáticamente a la edición.</p><h4>Continuación de un vídeo terminado</h4><p>En un modo independiente de xAI, esta versión continúa el vídeo original desde su último fotograma. El MP4 original debe durar entre 2 y 15 segundos; el fragmento añadido, entre 2 y 10 segundos, con 6 como valor predeterminado. El resultado une el vídeo original y su continuación. Las proporciones y la resolución se heredan del original, con un límite de 720p; en este modo no se pueden cambiar por separado. Esta capacidad del fabricante es distinta de la generación de Ailoot a partir de texto publicada.</p><h4>Referencias y límites de la versión</h4><p>xAI contempla el uso de referencias visuales para orientar el aspecto de las personas, la ropa y los objetos de la escena. Una referencia define los rasgos visuales, no la imagen exacta del primer fotograma. En la versión clásica de Grok Imagine Video no se puede combinar un fotograma inicial con referencias.</p><p>Esta versión no admite fijar de forma exacta el último fotograma ni fotogramas clave intermedios. Estas capacidades pertenecen a Grok Imagine Video 1.5. La generación, la animación de una imagen original y la modificación de un vídeo terminado son modos distintos; el método publicado de Ailoot descrito aquí corresponde a generación a partir de texto.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Disponible en Ailoot · entradas y métodos</h3><details class=\"card-method\" open><summary><b>Ailoot · Vídeo</b> <code>POST /v1/videos/generations</code></summary><dl class=\"method-capabilities\"><div><dt>Tipos de entrada</dt><dd><code>text</code></dd></div><div><dt>Tipos de salida</dt><dd><code>video</code></dd></div><div><dt>Formato de salida</dt><dd>mp4</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Campo</th><th>Tipo</th><th>Requisito</th><th>Valores y límites</th><th>Predeterminado</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obligatorio</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span><div>grok-imagine-video</div></td><td data-cell-label=\"Predeterminado\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predeterminado</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Opcional</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span><div>Longitud mínima: 1</div></td><td data-cell-label=\"Predeterminado\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predeterminado</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>integer</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Opcional</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span><div>Mínimo: 1</div><div>Máximo: 15</div><div>Condiciones: No proporciones duration y seconds a la vez</div><div>Unidad: segundos</div></td><td data-cell-label=\"Predeterminado\" data-default=\"known\"><span class=\"card-cell-label\">Predeterminado</span>1</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">seconds</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>integer|integer_string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Opcional</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span><div>Mínimo: 1</div><div>Máximo: 15</div><div>Alternativa: duration</div></td><td data-cell-label=\"Predeterminado\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predeterminado</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">resolution</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Opcional</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span><div>480p, 720p</div></td><td data-cell-label=\"Predeterminado\" data-default=\"known\"><span class=\"card-cell-label\">Predeterminado</span>480p</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">aspect_ratio</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Opcional</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span><div>1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3</div><div>Condiciones: Si se proporciona una imagen de entrada y se omite la relación de aspecto, el proveedor hereda la de la imagen</div></td><td data-cell-label=\"Predeterminado\" data-default=\"known\"><span class=\"card-cell-label\">Predeterminado</span>16:9</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">size</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Opcional</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span><div>1280x720, 720x1280, 1920x1080, 1080x1920</div><div>Condiciones: Debe coincidir con resolution/aspect_ratio si se especifican ambos</div></td><td data-cell-label=\"Predeterminado\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predeterminado</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">image</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>object</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Opcional</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span><div>Condiciones: Imagen de entrada real y compatible; permite omitir la instrucción de texto</div></td><td data-cell-label=\"Predeterminado\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predeterminado</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Combinaciones de materiales de entrada</summary><p class=\"note-s\"><b>Texto a vídeo</b> · Obligatorio: prompt</p><p class=\"note-s\"><b>Imagen a vídeo</b> · Obligatorio: image</p></details><details class=\"note-s\" data-method-contract><summary>Parámetros del método y ciclo de vida</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parámetro</th><th>Contrato</th></tr></thead><tbody><tr><th data-cell-label=\"Parámetro\" scope=\"row\"><span class=\"card-cell-label\">Parámetro</span><code>material_types</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>text</td></tr><tr><th data-cell-label=\"Parámetro\" scope=\"row\"><span class=\"card-cell-label\">Parámetro</span><code>required</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>null</td></tr><tr><th data-cell-label=\"Parámetro\" scope=\"row\"><span class=\"card-cell-label\">Parámetro</span><code>optional_controls</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>null</td></tr></tbody></table></div><p>Ciclo de vida: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/generations/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}/content</code></p><p class=\"note-s\"><code>GET /v1/videos/generations/{request_id}/content</code></p><p class=\"note-s\">Las estructuras e ID de los métodos son exactos; la capacidad del proveedor y la admisión son conceptos distintos.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Planes</h3><h4>Tarifas de métodos Ailoot</h4><section class=\"meth\" data-route=\"Core\"><header><b><span class=\"alias\">Ailoot</span> Vídeo</b><code>POST /v1/videos/generations</code></header><dl><div><dt>Entrada</dt><dd>0,002 US$ <em>por imagen de entrada</em></dd></div><div><dt>Entrada</dt><dd>0,01 US$ <em>por segundo de vídeo de entrada</em></dd></div><div><dt>Salida</dt><dd>0,05 US$ <em>por segundo a 480p</em></dd></div><div><dt>Salida</dt><dd>0,07 US$ <em>por segundo a 720p</em></dd></div></dl></section><p class=\"note-s\">Ailoot reserva un importe estimado antes de la solicitud. Tras obtener el resultado, liquida el cargo definitivo según el uso medido. En las respuestas en flujo, la liquidación usa el registro de uso final. <a href=\"/docs/es/billing/reserve/\">Cómo funcionan la reserva y la liquidación →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Solicitudes de ejemplo</h3><h4>Ailoot · Vídeo</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Variantes del código\"><button class=\"cg-tab\" id=\"model-code-770-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-770-panel-0\" aria-selected=\"true\" tabindex=\"0\">Ejemplo de vídeo</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copiar código\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-770-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-770-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncurl https://api.ailoot.ai/v1/videos/generations \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; \\\n  -H &quot;Content-Type: application/json&quot; \\\n  -d &#39;{&quot;model&quot;: &quot;grok-imagine-video&quot;, &quot;prompt&quot;: &quot;A person walks slowly through a quiet garden as the camera tracks from the side.&quot;}&#39;</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Recibir y guardar resultados</h3><h4>Ailoot · Vídeo</h4><p class=\"note-s\">mp4</p><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{request_id}</code></li><li><code>GET /v1/videos/generations/{request_id}</code></li><li><code>GET /v1/videos/{request_id}/content</code></li><li><code>GET /v1/videos/generations/{request_id}/content</code></li></ul><h5>Consultar el estado de la tarea</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Variantes del código\"><button class=\"cg-tab\" id=\"model-code-771-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-771-panel-0\" aria-selected=\"true\" tabindex=\"0\">Obtener estado con GET</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copiar código\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-771-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-771-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}&quot;\nexport AILOOT_VIDEO_ID\nvideo_id=$(python3 -c &#39;import os, urllib.parse; print(urllib.parse.quote(os.environ[&quot;AILOOT_VIDEO_ID&quot;], safe=&quot;&quot;))&#39;) || exit 1\ncurl &quot;https://api.ailoot.ai/v1/videos/generations/$video_id&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot;</code></pre></div></div></div><details class=\"card-about\"><summary>Otras consultas de contenido</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Variantes del código\"><button class=\"cg-tab\" id=\"model-code-772-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-772-panel-0\" aria-selected=\"true\" tabindex=\"0\">Obtener contenido con GET</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copiar código\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-772-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-772-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}&quot;\nexport AILOOT_VIDEO_ID\nvideo_id=$(python3 -c &#39;import os, urllib.parse; print(urllib.parse.quote(os.environ[&quot;AILOOT_VIDEO_ID&quot;], safe=&quot;&quot;))&#39;) || exit 1\ncurl &quot;https://api.ailoot.ai/v1/videos/generations/$video_id/content&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; \\\n  --output video.mp4</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>Conserva todos los resultados completados</h5><p class=\"note-s\">Guarda todos los vídeos completados o archivos recibidos; descarga cada URL de archivo que se haya devuelto.</p><p class=\"note-s\">Conserva el JSON completo del estado y el request_id real. Una respuesta completada con status=done contiene video.url con una URL de contenido bajo tu titularidad. Conserva la duración indicada y todos los campos de resultado devueltos.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Si es necesario revisar la respuesta original</h5><p class=\"note-s\">Consulta el trabajo original existente; no vuelvas a enviar nunca un envío de resultado desconocido.</p></div><details class=\"card-about\" data-output-fields><summary>Campos de respuesta</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Campo</th><th>Tipo</th></tr></thead><tbody><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">request_id</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>string</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>string</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">status</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>string</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">video.url</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>owned signed content URL</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">video.duration</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>number</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">video.respect_moderation</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>boolean</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Errores y siguientes pasos</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Respuesta</th><th>Condición</th><th>Siguiente paso</th></tr></thead><tbody><tr><th data-cell-label=\"Respuesta\" scope=\"row\"><span class=\"card-cell-label\">Respuesta</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Condición\"><span class=\"card-cell-label\">Condición</span>Campos obligatorios, representación del material o valor del parámetro no válidos</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Corrige los campos indicados antes de una nueva solicitud de creación.</td></tr><tr><th data-cell-label=\"Respuesta\" scope=\"row\"><span class=\"card-cell-label\">Respuesta</span>409 · <code>video_not_ready</code></th><td data-cell-label=\"Condición\"><span class=\"card-cell-label\">Condición</span>El contenido del resultado original aún no está disponible</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Consulta periódicamente el ID original devuelto y respeta Retry-After.</td></tr><tr><th data-cell-label=\"Respuesta\" scope=\"row\"><span class=\"card-cell-label\">Respuesta</span><code>server_error</code></th><td data-cell-label=\"Condición\"><span class=\"card-cell-label\">Condición</span>La respuesta devuelta indica que la operación o el resultado requiere una comprobación</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Conserva el ID original de operación o tarea devuelto, las cabeceras de la solicitud y la respuesta; continúa con las lecturas admitidas de esa operación original. No vuelvas a enviar la solicitud de creación.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Alias del modelo</h4><p class=\"note-s\"><span data-model-alias-route=\"Core\"><b>Ailoot</b> <a href=\"#m=grok-imagine-video&amp;route=Core&amp;caller=grok-imagine-video&amp;fmt=videos\"><code>grok-imagine-video</code></a></span></p><h4>Alias de rutas de métodos</h4><p class=\"note-s\">Usa las rutas de método indicadas arriba.</p><h4>ID de modelo relacionados</h4><p class=\"note-s\"><a href=\"#m=grok-imagine-video&amp;route=Core&amp;caller=grok-imagine-video&amp;fmt=videos\"><code>grok-imagine-video</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "grok-imagine-video",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos/generations",
        "request_model_id": "grok-imagine-video",
        "route_label": "Core"
      },
      "method_key": "Core|videos|/v1/videos/generations|grok-imagine-video",
      "ordinal": 0,
      "rawMethod": {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Retain fullstatusJSON and actualrequest_id. Completedstatusdone carriesvideo.url withowned signedcontent; retain the actualduration andallactualreturnedresultfields.",
            "errors": [
              {
                "code": null,
                "condition": "Campos obligatorios, representación del material o valor del parámetro no válidos",
                "http_status": 400,
                "recovery": "Corrige los campos indicados antes de una nueva solicitud de creación.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "El contenido del resultado original aún no está disponible",
                "http_status": 409,
                "recovery": "Consulta periódicamente el ID original devuelto y respeta Retry-After.",
                "type": "video_not_ready"
              },
              {
                "code": null,
                "condition": "La respuesta devuelta indica que la operación o el resultado requiere una comprobación",
                "http_status": null,
                "recovery": "Conserva el ID original de operación o tarea devuelto, las cabeceras de la solicitud y la respuesta; continúa con las lecturas admitidas de esa operación original. No vuelvas a enviar la solicitud de creación.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default0"
                  }
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}/content"
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos/generations"
              },
              "id_source": "Actualreturnedpublicid; opaque URLencodeit forGET",
              "mode": "submit_once_poll_original",
              "multioutputs": "retain every completed data output; index0 alone is not all outputs",
              "operation_id_is_not_task_id": true,
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 202,
              "unknown": "Consulta el trabajo original existente; no vuelvas a enviar nunca un envío de resultado desconocido.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "required": [
                  "prompt"
                ]
              },
              {
                "mode": "image_to_video",
                "optional": [
                  "prompt"
                ],
                "required": [
                  "image"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "videos"
            ],
            "outputs": {
              "all_results": "Conserva el JSON completo del estado y el request_id real. Una respuesta completada con status=done contiene video.url con una URL de contenido bajo tu titularidad. Conserva la duración indicada y todos los campos de resultado devueltos.",
              "create_status": 202,
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "request_id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "video.url",
                  "type": "owned signed content URL"
                },
                {
                  "description": null,
                  "name": "video.duration",
                  "type": "number"
                },
                {
                  "description": null,
                  "name": "video.respect_moderation",
                  "type": "boolean"
                }
              ],
              "format": "mp4"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "grok-imagine-video"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_length": 1,
                "name": "prompt",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "No proporciones duration y seconds a la vez",
                "default": 1,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 15,
                "minimum": 1,
                "name": "duration",
                "required": false,
                "type": "integer",
                "unit": "segundos"
              },
              {
                "alternative": "duration",
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 15,
                "minimum": 1,
                "name": "seconds",
                "required": false,
                "type": "integer|integer_string"
              },
              {
                "availability": "source_interface",
                "default": "480p",
                "default_known": true,
                "enum": [
                  "480p",
                  "720p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Si se proporciona una imagen de entrada y se omite la relación de aspecto, el proveedor hereda la de la imagen",
                "default": "16:9",
                "default_known": true,
                "enum": [
                  "1:1",
                  "16:9",
                  "9:16",
                  "4:3",
                  "3:4",
                  "3:2",
                  "2:3"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Debe coincidir con resolution/aspect_ratio si se especifican ambos",
                "default": null,
                "default_known": false,
                "enum": [
                  "1280x720",
                  "720x1280",
                  "1920x1080",
                  "1080x1920"
                ],
                "enum_known": true,
                "name": "size",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Imagen de entrada real y compatible; permite omitir la instrucción de texto",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "image",
                "required": false,
                "type": "object"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "mask",
              "input_reference",
              "stream=true",
              "n/countotherthan1"
            ]
          },
          "hints": [
            "Las estructuras e ID de los métodos son exactos; la capacidad del proveedor y la admisión son conceptos distintos."
          ],
          "input": {
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": null
          },
          "lifecycle": {
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content"
              }
            ],
            "id_source": "only actual ID/path from creation/status",
            "mode": "submit_once_poll_original",
            "multioutputs": "retain every completed data output; index0 alone is not all outputs",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 202,
            "unknown": "Read existing original job; never resubmit unknown send."
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos/generations"
          },
          "operation_modes": [
            "videos"
          ],
          "output": {
            "family": [
              "video"
            ],
            "format": null,
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": null,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl https://api.ailoot.ai/v1/videos/generations \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"model\": \"grok-imagine-video\", \"prompt\": \"A person walks slowly through a quiet garden as the camera tracks from the side.\"}'",
            "label": "Create video · retained exact shape",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}\"\nexport AILOOT_VIDEO_ID\nvideo_id=$(python3 -c 'import os, urllib.parse; print(urllib.parse.quote(os.environ[\"AILOOT_VIDEO_ID\"], safe=\"\"))') || exit 1\ncurl \"https://api.ailoot.ai/v1/videos/generations/$video_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\"",
            "label": "GET status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}\"\nexport AILOOT_VIDEO_ID\nvideo_id=$(python3 -c 'import os, urllib.parse; print(urllib.parse.quote(os.environ[\"AILOOT_VIDEO_ID\"], safe=\"\"))') || exit 1\ncurl \"https://api.ailoot.ai/v1/videos/generations/$video_id/content\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" \\\n  --output video.mp4",
            "label": "GET content",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": null,
        "input": [
          "text"
        ],
        "label": "Vídeo",
        "max_out": null,
        "max_tool_calls": null,
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos/generations",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.002,
                "amount_unit": "usd_per_display_unit",
                "key": "image_input",
                "label": "per input image",
                "side": "in"
              },
              {
                "amount": 0.01,
                "amount_unit": "usd_per_display_unit",
                "key": "video_input_second",
                "label": "per second of input video",
                "side": "in"
              },
              {
                "amount": 0.05,
                "amount_unit": "usd_per_display_unit",
                "key": "video_output_480p_second",
                "label": "per second at 480p",
                "side": "out"
              },
              {
                "amount": 0.07,
                "amount_unit": "usd_per_display_unit",
                "key": "video_output_720p_second",
                "label": "per second at 720p",
                "side": "out"
              }
            ]
          }
        ],
        "request_model_id": "grok-imagine-video",
        "route_label": "Core",
        "status_reads": [
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/generations/{request_id}/content"
        ],
        "tiers": [],
        "tool_prices": null,
        "unit": "conditional",
        "units": [
          {
            "key": "image_input",
            "label": "per input image",
            "side": "in",
            "usd": 0.002
          },
          {
            "key": "video_input_second",
            "label": "per second of input video",
            "side": "in",
            "usd": 0.01
          },
          {
            "key": "video_output_480p_second",
            "label": "per second at 480p",
            "side": "out",
            "usd": 0.05
          },
          {
            "key": "video_output_720p_second",
            "label": "per second at 720p",
            "side": "out",
            "usd": 0.07
          }
        ]
      }
    }
  ],
  "model_id": "grok-imagine-video",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "a0bcd65ca1091471cd234c8b6d805fb6417e1344a63bf0e8d1fa936dc6f402a9",
    "input_html_sha256": "ea1e15ed63b00ad45d0009f4669f5d54a5c21f56cdbc66669aa40f4f7fffc423",
    "private_audit_sha256": "d94cedcd1147f73c065ef185e7dfc3b16ba5a6d19b15cbceb7711473da279c5c",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/es/grok-imagine-video/",
    "description": "Grok Imagine Video crea vídeos cortos a partir de descripciones de texto y permite elegir la duración y la relación de aspecto. El propio modelo de xAI también admite animación de imágenes y edición dirigida de vídeo.",
    "locale": "es",
    "md_url": "https://ailoot.ai/models/es/grok-imagine-video/index.md",
    "title": "grok-imagine-video — Ailoot",
    "url": "https://ailoot.ai/models/es/grok-imagine-video/"
  },
  "rawModel": {
    "about": "### De la descripción al vídeo\n\nGrok Imagine Video crea vídeos a partir de texto. El propio modelo de xAI también dispone de modos con una imagen o un vídeo original. En el método publicado de generación de Ailoot, la entrada es una descripción de texto y el resultado, un vídeo.\n\nLa generación es asíncrona: primero se crea una tarea y después se obtiene su estado y el resultado terminado mediante su identificador. Según xAI, crear un vídeo puede tardar varios minutos; el tiempo depende de la complejidad de la escena, la duración, la resolución y el modo elegido.\n\n### Duración y relación de aspecto\n\nLa creación de vídeos admite una duración de **1 a 15 segundos**. Las relaciones de aspecto incluyen `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `3:2` y `2:3`; el formato predeterminado es `16:9`. Esta versión dispone de **480p y 720p**; 1080p corresponde a la versión 1.5.\n\n### Animación de una imagen original\n\nEn el modo de xAI con imagen, esta se convierte en el primer fotograma y las instrucciones de texto definen el movimiento. De forma predeterminada, las proporciones del vídeo coinciden con las de la imagen original. Una relación de aspecto definida explícitamente cambia esas proporciones y puede estirar la imagen.\n\n### Edición dirigida\n\nAl trabajar con un vídeo terminado, el modelo aplica los cambios descritos y conserva el resto del contenido de la escena. Este modo ayuda a modificar el elemento deseado conservando la puesta en escena del vídeo original. La duración y las proporciones se heredan del original; no se establece una duración ni una relación de aspecto nuevas.\n\nEl vídeo original para edición está limitado a **8,7 segundos** y el resultado, a una resolución máxima de **720p**. El material en 1080p se reduce a 720p. Los ajustes de generación a partir de texto no se trasladan automáticamente a la edición.\n\n### Continuación de un vídeo terminado\n\nEn un modo independiente de xAI, esta versión continúa el vídeo original desde su último fotograma. El MP4 original debe durar entre 2 y 15 segundos; el fragmento añadido, entre 2 y 10 segundos, con 6 como valor predeterminado. El resultado une el vídeo original y su continuación. Las proporciones y la resolución se heredan del original, con un límite de 720p; en este modo no se pueden cambiar por separado. Esta capacidad del fabricante es distinta de la generación de Ailoot a partir de texto publicada.\n\n### Referencias y límites de la versión\n\nxAI contempla el uso de referencias visuales para orientar el aspecto de las personas, la ropa y los objetos de la escena. Una referencia define los rasgos visuales, no la imagen exacta del primer fotograma. En la versión clásica de Grok Imagine Video no se puede combinar un fotograma inicial con referencias.\n\nEsta versión no admite fijar de forma exacta el último fotograma ni fotogramas clave intermedios. Estas capacidades pertenecen a Grok Imagine Video 1.5. La generación, la animación de una imagen original y la modificación de un vídeo terminado son modos distintos; el método publicado de Ailoot descrito aquí corresponde a generación a partir de texto.",
    "alias_of": null,
    "aliases": [],
    "author": "xAI",
    "ctx": null,
    "formats": [
      "videos"
    ],
    "id": "grok-imagine-video",
    "input": [
      "text"
    ],
    "kind": "video",
    "max_out": null,
    "methods": [
      {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Retain fullstatusJSON and actualrequest_id. Completedstatusdone carriesvideo.url withowned signedcontent; retain the actualduration andallactualreturnedresultfields.",
            "errors": [
              {
                "code": null,
                "condition": "Campos obligatorios, representación del material o valor del parámetro no válidos",
                "http_status": 400,
                "recovery": "Corrige los campos indicados antes de una nueva solicitud de creación.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "El contenido del resultado original aún no está disponible",
                "http_status": 409,
                "recovery": "Consulta periódicamente el ID original devuelto y respeta Retry-After.",
                "type": "video_not_ready"
              },
              {
                "code": null,
                "condition": "La respuesta devuelta indica que la operación o el resultado requiere una comprobación",
                "http_status": null,
                "recovery": "Conserva el ID original de operación o tarea devuelto, las cabeceras de la solicitud y la respuesta; continúa con las lecturas admitidas de esa operación original. No vuelvas a enviar la solicitud de creación.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default0"
                  }
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}/content"
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos/generations"
              },
              "id_source": "Actualreturnedpublicid; opaque URLencodeit forGET",
              "mode": "submit_once_poll_original",
              "multioutputs": "retain every completed data output; index0 alone is not all outputs",
              "operation_id_is_not_task_id": true,
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 202,
              "unknown": "Consulta el trabajo original existente; no vuelvas a enviar nunca un envío de resultado desconocido.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "required": [
                  "prompt"
                ]
              },
              {
                "mode": "image_to_video",
                "optional": [
                  "prompt"
                ],
                "required": [
                  "image"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "videos"
            ],
            "outputs": {
              "all_results": "Conserva el JSON completo del estado y el request_id real. Una respuesta completada con status=done contiene video.url con una URL de contenido bajo tu titularidad. Conserva la duración indicada y todos los campos de resultado devueltos.",
              "create_status": 202,
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "request_id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "video.url",
                  "type": "owned signed content URL"
                },
                {
                  "description": null,
                  "name": "video.duration",
                  "type": "number"
                },
                {
                  "description": null,
                  "name": "video.respect_moderation",
                  "type": "boolean"
                }
              ],
              "format": "mp4"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "grok-imagine-video"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_length": 1,
                "name": "prompt",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "No proporciones duration y seconds a la vez",
                "default": 1,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 15,
                "minimum": 1,
                "name": "duration",
                "required": false,
                "type": "integer",
                "unit": "segundos"
              },
              {
                "alternative": "duration",
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 15,
                "minimum": 1,
                "name": "seconds",
                "required": false,
                "type": "integer|integer_string"
              },
              {
                "availability": "source_interface",
                "default": "480p",
                "default_known": true,
                "enum": [
                  "480p",
                  "720p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Si se proporciona una imagen de entrada y se omite la relación de aspecto, el proveedor hereda la de la imagen",
                "default": "16:9",
                "default_known": true,
                "enum": [
                  "1:1",
                  "16:9",
                  "9:16",
                  "4:3",
                  "3:4",
                  "3:2",
                  "2:3"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Debe coincidir con resolution/aspect_ratio si se especifican ambos",
                "default": null,
                "default_known": false,
                "enum": [
                  "1280x720",
                  "720x1280",
                  "1920x1080",
                  "1080x1920"
                ],
                "enum_known": true,
                "name": "size",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Imagen de entrada real y compatible; permite omitir la instrucción de texto",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "image",
                "required": false,
                "type": "object"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "mask",
              "input_reference",
              "stream=true",
              "n/countotherthan1"
            ]
          },
          "hints": [
            "Las estructuras e ID de los métodos son exactos; la capacidad del proveedor y la admisión son conceptos distintos."
          ],
          "input": {
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": null
          },
          "lifecycle": {
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content"
              }
            ],
            "id_source": "only actual ID/path from creation/status",
            "mode": "submit_once_poll_original",
            "multioutputs": "retain every completed data output; index0 alone is not all outputs",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 202,
            "unknown": "Read existing original job; never resubmit unknown send."
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos/generations"
          },
          "operation_modes": [
            "videos"
          ],
          "output": {
            "family": [
              "video"
            ],
            "format": null,
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": null,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl https://api.ailoot.ai/v1/videos/generations \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"model\": \"grok-imagine-video\", \"prompt\": \"A person walks slowly through a quiet garden as the camera tracks from the side.\"}'",
            "label": "Create video · retained exact shape",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}\"\nexport AILOOT_VIDEO_ID\nvideo_id=$(python3 -c 'import os, urllib.parse; print(urllib.parse.quote(os.environ[\"AILOOT_VIDEO_ID\"], safe=\"\"))') || exit 1\ncurl \"https://api.ailoot.ai/v1/videos/generations/$video_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\"",
            "label": "GET status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}\"\nexport AILOOT_VIDEO_ID\nvideo_id=$(python3 -c 'import os, urllib.parse; print(urllib.parse.quote(os.environ[\"AILOOT_VIDEO_ID\"], safe=\"\"))') || exit 1\ncurl \"https://api.ailoot.ai/v1/videos/generations/$video_id/content\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" \\\n  --output video.mp4",
            "label": "GET content",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": null,
        "input": [
          "text"
        ],
        "label": "Vídeo",
        "max_out": null,
        "max_tool_calls": null,
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos/generations",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.002,
                "amount_unit": "usd_per_display_unit",
                "key": "image_input",
                "label": "per input image",
                "side": "in"
              },
              {
                "amount": 0.01,
                "amount_unit": "usd_per_display_unit",
                "key": "video_input_second",
                "label": "per second of input video",
                "side": "in"
              },
              {
                "amount": 0.05,
                "amount_unit": "usd_per_display_unit",
                "key": "video_output_480p_second",
                "label": "per second at 480p",
                "side": "out"
              },
              {
                "amount": 0.07,
                "amount_unit": "usd_per_display_unit",
                "key": "video_output_720p_second",
                "label": "per second at 720p",
                "side": "out"
              }
            ]
          }
        ],
        "request_model_id": "grok-imagine-video",
        "route_label": "Core",
        "status_reads": [
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/generations/{request_id}/content"
        ],
        "tiers": [],
        "tool_prices": null,
        "unit": "conditional",
        "units": [
          {
            "key": "image_input",
            "label": "per input image",
            "side": "in",
            "usd": 0.002
          },
          {
            "key": "video_input_second",
            "label": "per second of input video",
            "side": "in",
            "usd": 0.01
          },
          {
            "key": "video_output_480p_second",
            "label": "per second at 480p",
            "side": "out",
            "usd": 0.05
          },
          {
            "key": "video_output_720p_second",
            "label": "per second at 720p",
            "side": "out",
            "usd": 0.07
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "grok-imagine-video",
        "request_model_id": "grok-imagine-video",
        "route_label": "Core"
      }
    ],
    "name": "grok-imagine-video",
    "price": {
      "in": 0.002,
      "in_label": "per input image",
      "out": 0.05,
      "out_label": "per second at 480p",
      "sort_in": null,
      "sort_out": null,
      "varies": false
    },
    "short": "Grok Imagine Video crea vídeos cortos a partir de descripciones de texto y permite elegir la duración y la relación de aspecto. El propio modelo de xAI también admite animación de imágenes y edición dirigida de vídeo."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Grok Imagine Video crea vídeos cortos a partir de descripciones de texto y permite elegir la duración y la relación de aspecto. El propio modelo de xAI también admite animación de imágenes y edición dirigida de vídeo.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "c5bea42ebefd033f71ef30eebc60f83207ef2a7b531d5e215738b350cb9a9a3d",
    "renderer_sha256": "b6d488b4bdee68568e5b17d2d4871b2ba1885e1032091b635a7a58ad2ca224e7"
  },
  "sourceRevision": "970131d3e202ed7d729c5505165fef1359aa7022ea8e08c4c6b738f1a75e72af"
}
