API / customize-imagine-video-poll-timeout

Customize Imagine video SDK poll timeout and interval

client.video.generate() and extend() submit the job, then poll until the clip is ready. Defaults are a 10-minute wait (timeout) and a 100 ms status check (interval). Long 1080p or 15-second jobs often need a longer timeout; slow networks sometimes want a calmer interval.

Python SDK

Pass datetime.timedelta values:

import os
from datetime import timedelta
import xai_sdk

client = xai_sdk.Client(api_key=os.getenv("XAI_API_KEY"))

response = client.video.generate(
    prompt="Epic cinematic drone shot flying through mountain peaks",
    model="grok-imagine-video-1.5",
    duration=15,
    resolution="1080p",
    timeout=timedelta(minutes=15),
    interval=timedelta(seconds=5),
)
print(response.url)

If the video is still pending when timeout elapses, the SDK raises TimeoutError. Catch it next to VideoGenerationError from xai_sdk.video when you want a clean retry path. See Handle Imagine video generation errors.

AI SDK (JavaScript)

Use providerOptions.xai.pollTimeoutMs and pollIntervalMs (milliseconds):

import { xai } from "@ai-sdk/xai";
import { experimental_generateVideo as generateVideo } from "ai";

const result = await generateVideo({
  model: xai.video("grok-imagine-video-1.5"),
  prompt: "Epic cinematic drone shot flying through mountain peaks",
  duration: 15,
  providerOptions: {
    xai: {
      resolution: "1080p",
      pollTimeoutMs: 15 * 60 * 1000,
      pollIntervalMs: 5 * 1000,
    },
  },
});

console.log(result.providerMetadata?.xai?.videoUrl);

The AI SDK aborts via its AbortSignal when the poll timeout fires.

When to leave the defaults

  • Short 480p clips usually finish inside ten minutes.
  • REST callers already own the loop: POST /v1/videos/generations then GET /v1/videos/{request_id} every few seconds. The Python SDK also exposes client.video.start() / client.video.get() when you want that lifecycle without the blocking generate() poll knobs.

Pitfalls

  • Raising interval too high delays noticing done; dropping it to sub-100 ms burns rate limit budget without speeding the model.
  • Temporary video URLs expire; download promptly if you need a lasting copy.
  • Console API credits are a separate bill from SuperGrok's weekly pool on grok.com.