20 20
21## Concurrent Requests21## Concurrent Requests
22 22
2323When you need to apply several edits to the same source video, run requests concurrently. This is useful for branching multiple edits from the same intermediate result.When you need to apply several edits to the same source video, run requests concurrently.
24 24
25```javascript customLanguage="javascriptAISDK"25```javascript customLanguage="javascriptAISDK"
26import { xai, type XaiVideoModelOptions } from "@ai-sdk/xai";26import { xai, type XaiVideoModelOptions } from "@ai-sdk/xai";
27import { experimental_generateVideo as generateVideo } from "ai";27import { experimental_generateVideo as generateVideo } from "ai";
28 28
2929const providerOptions = {const sourceVideo = "https://media.x.ai/v1/docs/i2v-portrait-wave-4cb4c17c.mp4";
30 xai: {
31 mode: "edit-video",
32 videoUrl: "https://example.com/source-video.mp4",
33 pollTimeoutMs: 600000,
34 } satisfies XaiVideoModelOptions,
35};
36
37const step1 = await generateVideo({
38 model: xai.video("grok-imagine-video"),
39 prompt: "Add a party hat to the person",
40 providerOptions,
41});
42 30
4331const step1VideoUrl = step1.providerMetadata?.xai?.videoUrl as string;const prompts = [
32 "Give the woman a silver necklace",
33 "Change the color of the woman's outfit to red",
34 "Give the woman a wide-brimmed black hat",
35];
44 36
4537const [withSunglasses, withScarf] = await Promise.all([const results = await Promise.all(
38 prompts.map(prompt =>
46 generateVideo({39 generateVideo({
47 model: xai.video("grok-imagine-video"),40 model: xai.video("grok-imagine-video"),
4841 prompt: "Add sunglasses", prompt,
49 providerOptions: {42 providerOptions: {
50 xai: {43 xai: {
51 mode: "edit-video",44 mode: "edit-video",
5245 videoUrl: step1VideoUrl, videoUrl: sourceVideo,
53 pollTimeoutMs: 600000,46 pollTimeoutMs: 600000,
54 } satisfies XaiVideoModelOptions,47 } satisfies XaiVideoModelOptions,
55 },48 },
56 }),49 }),
5750 generateVideo({ ),
5851 model: xai.video("grok-imagine-video"),);
59 prompt: "Add a scarf",
60 providerOptions: {
61 xai: {
62 mode: "edit-video",
63 videoUrl: step1VideoUrl,
64 pollTimeoutMs: 600000,
65 } satisfies XaiVideoModelOptions,
66 },
67 }),
68]);
69 52
7053console.log(withSunglasses.providerMetadata?.xai?.videoUrl);prompts.forEach((prompt, i) => {
7154console.log(withScarf.providerMetadata?.xai?.videoUrl); console.log(`${prompt}: ${results[i].providerMetadata?.xai?.videoUrl}`);
55});
72```56```
73 57
74```python customLanguage="pythonXAI"58```python customLanguage="pythonXAI"