Grok Imagine Video 1.5 can turn one approved product image into a short clip with motion and native sound. Its API is simple enough for a prototype, but a publishable social workflow needs more than one generation request. It needs controlled source assets, asynchronous state, cost limits, review, storage, and an explicit finishing path.

xAI made grok-imagine-video-1.5 generally available on June 16, 2026. This guide uses that GA model, not the former preview name, and stays within its documented image-to-video scope.

Prepare the source before animation

The model inherits composition from the source image. Fixing a weak source with a motion prompt is expensive and unreliable. Begin with a high-quality image that has:

For a vertical campaign, compose a vertical source rather than stretching a landscape photograph through the API. xAI’s documentation notes that image-to-video defaults to the image’s aspect ratio; overriding it can stretch the input. Generate or design separate approved sources for substantially different formats.

Hash the source file and assign an asset ID. Record the owner, rights status, product SKU, locale, and approval. The hash becomes the stable link between the campaign brief and every generated take.

Build a motion specification

Separate visual facts from temporal instructions. The image already defines the product; the prompt should explain what changes over time.

A useful product prompt includes:

  1. camera movement, such as a slow push-in or controlled orbit;
  2. product motion, such as a ten-degree turn or lid opening;
  3. environmental motion, such as condensation, fabric, or particles;
  4. a clear ending state;
  5. required sound effects or ambience;
  6. invariants, such as unchanged label, geometry, and brand color;
  7. exclusions, such as no dialogue, hands, captions, or extra objects.

Keep the action achievable in a short clip. “Camera arcs slowly left while the bottle remains centered; condensation moves naturally; one soft glass chime; preserve the label exactly; no speech or text overlays” is easier to evaluate than a miniature commercial containing three locations and five actions.

Submit the asynchronous request

The REST flow begins with POST /v1/videos/generations. A source image can be a public URL, base64 data URI, or xAI Files API identifier. The request includes the model, prompt, image, duration, and optionally supported format settings.

{
  "model": "grok-imagine-video-1.5",
  "prompt": "Slow push-in; subtle condensation; preserve label and bottle shape; soft studio ambience; no speech",
  "image": { "url": "https://assets.example/product-approved.png" },
  "duration": 6,
  "resolution": "720p"
}

The endpoint returns a request_id, not the finished video. Persist that ID with the source checksum, prompt version, duration, resolution, user, and estimated maximum cost before polling.

Do not retry a timed-out HTTP client by blindly submitting the same payload. First determine whether xAI accepted the original request. An application-level idempotency record can mark the source-plus-prompt combination as submitted and prevent two workers from paying for duplicate jobs.

Poll without turning status checks into load

Poll GET /v1/videos/{request_id} using bounded exponential backoff. The xAI examples look for a completed done state and also handle terminal states such as failure or expiry. Production code should impose an overall timeout while retaining the request ID for later reconciliation.

Store:

If a job fails, classify the cause. Invalid input needs a source or payload fix. Moderation needs policy handling. A transient service error may qualify for a bounded retry. A visually rejected output is not a technical failure and should consume the creative retry budget.

Download or persist output immediately

xAI’s standard generated video URLs are ephemeral. A browser preview that works today is not durable campaign storage. Download accepted and review-candidate clips into controlled object storage as soon as the job completes, calculate a checksum, and attach generation metadata.

xAI also documents storage_options for writing Imagine outputs into its Files system and obtaining a file identifier or public URL. Choose one storage strategy deliberately. Public URLs need expiry and access policies; private assets need a signed-delivery path.

Never pass an expiring provider URL directly into a scheduled publishing system. The publisher should consume a durable asset under your account, not a temporary generation response.

Calculate the request budget

The current model page charges $0.01 for the source image, then $0.08 per output second at 480p, $0.14 at 720p, and $0.25 at 1080p. A six-second 720p request is $0.84 plus image input at listed rates. Verify current regional pricing before production.

A campaign controller can estimate the ceiling before submission:

estimated cost = image input + duration × resolution rate

Then apply policy limits:

Track cost per accepted clip and per published clip. A take can pass technical review but still be unused because another version is better.

Review product fidelity frame by frame

Video can hide a product error between attractive opening and closing frames. Sample frames across the entire clip and inspect:

Use OCR as a warning system for labels, not an automatic approval. Perspective and motion blur can make correct text look wrong to OCR or incorrect text look plausible at playback speed. A product owner should approve high-value assets.

Review the native audio separately

Extract and inspect the audio track. Verify codec, channels, sample rate, duration, loudness, clipping, and synchronization. Transcribe every intelligible word. Confirm that dialogue does not invent product claims and that generated sound does not resemble an unauthorized identity or copyrighted track.

For silent autoplay placements, the visual must communicate without audio. For sound-on placements, keep important speech and effects within the platform’s safe duration. Add captions through a controlled process rather than trusting accidental model text.

Produce variants without losing lineage

Create each aspect ratio as a child of the same approved product asset and motion brief. A variant record should contain source checksum, model, prompt, settings, request ID, output checksum, reviewer decision, and rejection reason.

Do not overwrite outputs with friendly filenames such as final.mp4. Use immutable asset IDs and a separate alias for the currently approved version. This preserves rollback when a locale, disclaimer, or brand rule changes.

Treat rejected generations as evidence, not disposable clutter. Store compact review labels for identity drift, geometry errors, audio defects, unsafe claims, and timing problems. Aggregated labels reveal which briefs, source images, and settings deserve tighter validation before another paid request.

Finish only the accepted visual take

Native audio can be retained, muted, or replaced. Branding can be applied after the generated composition is approved. Keeping these as downstream operations avoids regenerating good motion because a logo position or soundtrack changed.

An authorized Codex or Claude MCP client can invoke Medux for those operations; xAI does not send Grok output to Medux natively. The Claude MCP audio-track tutorial, Codex logo tutorial, and Codex video-editing tutorial demonstrate separate signed-upload and asynchronous-task lifecycles.

Copy the approved Grok output into durable storage, then upload only that asset to the selected finishing task. Persist each Medux task ID beside the xAI request ID. Validate the final duration, dimensions, audio track, logo safe area, and checksum before publication. The result is a retryable pipeline in which the generator supplies motion and sound, while governance and finishing remain explicit, inspectable stages.