Skip to main content
POST
Esta página corresponde a los modelos oficiales grok-imagine-video y grok-imagine-video-1.5. Son distintos de grok-imagine-1.5-video-ext; no mezcles nombres ni parámetros.
Nunca expongas la API Key en el navegador, variables públicas, LocalStorage, URL o registros. Llama a APIMart desde tu backend o BFF.

Resumen de integración

Todos los modos usan el mismo endpoint asíncrono:
Tras enviar, guarda data[0].task_id y consulta:
No envíes X-APIMart-Response-Version: cambia a una respuesta HTTP 202. Esta página usa la respuesta asíncrona HTTP 200 anterior.

Capacidades

El contrato público no fija un máximo de imágenes. Conserva un array no vacío de URL válidas y su orden; no reutilices límites de modelos de imagen.

Encabezados

string
requerido
Bearer <APIMART_API_KEY>
string
requerido
Usa siempre application/json.
string
application/json
string
Idempotency-Key es opcional y muy recomendable para solicitudes de pago. Admite 1–191 caracteres ASCII visibles; se recomienda UUID. Un reintento de red reutiliza la clave y el cuerpo originales. No cambies la clave si el resultado es incierto.Usa una clave nueva por operación lógica. Un reintento debe reutilizar la clave y el cuerpo originales.

Parámetros

Campos comunes

string
requerido
Nombre oficial; la edición solo admite el modelo base
  • grok-imagine-video
  • grok-imagine-video-1.5
string
requerido
Instrucción no vacía, máximo 8000 caracteres UnicodeArray.from(prompt).length
boolean
predeterminado:false
Indica si se modera el contenido antes de enviar la tarea de vídeo.
  • true: Usa omni-moderation-latest para revisar el prompt y las imágenes de entrada
  • false o se omite: No solicita moderación ni añade coste o latencia de revisión (predeterminado)

Campos de generación

integer
predeterminado:8
Solo generación; entero 1–15, predeterminado 8
string
predeterminado:"480p"
Base: 480p/720p; 1.5: 480p/720p/1080p; predeterminado 480p
  • grok-imagine-video: 480p, 720p
  • grok-imagine-video-1.5: 480p, 720p, 1080p
string
predeterminado:"auto"
Solo generación; auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2 o 2:3
  • auto
  • 1:1, 16:9, 9:16
  • 4:3, 3:4, 3:2, 2:3
string[]
Array opcional; cada elemento debe ser una URL HTTPS pública; omitir si está vacío
  • Cada elemento debe ser una URL HTTPS pública; no se admiten URL relativas, Data URL ni Base64 sin formato.
  • No envíes alias como image, images o input_reference.
  • Se conserva el orden; las URL repetidas ocupan varias entradas y pueden cobrarse varias veces.

Campos de edición de vídeo

object
Vídeo fuente {url} mediante HTTPS público; solo modelo base
La edición requiere model, prompt y video, y admite nsfw_check opcional. No envíes duration, resolution, aspect_ratio ni image_urls; la plataforma detecta la duración.

Tipos de solicitud TypeScript

Usa una unión discriminada para impedir que los campos de generación lleguen a la edición.

Ejemplos

Tareas asíncronas

Creación correcta

La creación correcta devuelve HTTP 200. Guarda data[0].task_id; el envío no significa que el vídeo esté listo. Un ID de tarea significa enviado, no completado.

Consultar tarea

Consulta GET /v1/tasks/{task_id} cada 3–5 segundos. Tras recargar, reanuda con el ID guardado.

Respuesta completada

result.videos[0].url es un array de cadenas, no una cadena. Valida cada valor como URL HTTPS. Se recomienda validar en tiempo de ejecución:
Usa expires_at para la caducidad. No fijes un plazo; pide descargar o guardar el resultado.

Respuesta fallida

La consulta puede devolver HTTP 200 con data.status=failed. Decide por data.status; una tarea fallida tiene cost=0.

Catálogo de precios

Lee GET /api/pricing/models/all y busca el id en data.models.video. Los precios son estimaciones; el importe final es data.cost de la tarea.

Precio del vídeo de salida

  • Las claves de precio son 480P/720P/1080P y los valores de solicitud usan minúsculas; normaliza al buscar.
  • default es un dato de compatibilidad, no una resolución seleccionable.
  • Usa after_discount directamente; no apliques otro descuento.

Precio del material de entrada

El precio de vídeo es un objeto escalar. No exijas items, billing_mode ni max_billable_seconds. 1.5 no tiene precio de vídeo de entrada.

Fórmulas de estimación

El precio específico y el redondeo pueden variar. El importe final siempre es data.cost.

Reglas del frontend

Cambio de modelo

  • Base muestra 480p/720p; 1.5 añade 1080p.
  • Al pasar de 1.5 1080p a Base, volver a 480p.
  • La edición fija grok-imagine-video.

Cambio de modo

nsfw_check es opcional en todos los modos. Envía true al activar la moderación; omítelo o envía false al desactivarla. Desactiva el botón si se cumple alguna condición:
  • Texto omite image_urls y video.
  • Referencia envía image_urls y omite video.
  • La edición limpia campos de generación.
  • Desactivar con prompt o duración inválidos, resolución o URL no admitida, carga activa o envío duplicado.
  • Prompt ≤8000 Unicode y duración entera 1–15.
  • Solo URL HTTPS públicas; omitir image_urls vacío.

Errores comunes

Comprobación del frontend

  • Guardar la API Key solo en backend o BFF.
  • No mezclar modelos oficiales con grok-imagine-1.5-video-ext.
  • Prompt ≤8000 Unicode y duración entera 1–15.
  • Solo URL HTTPS públicas; omitir image_urls vacío.
  • En edición, envía solo model/prompt/video más nsfw_check opcional y usa el modelo base.
  • Leer data[0].task_id y el final desde data.status.
  • Leer result.videos[].url[] y respetar expires_at.
  • Mostrar catálogo y usar data.cost final.