Back to Comparison Hub/Extend Video Pricing
Text to Video

Extend Video API Pricing

Grok Imagine Extend lets you continue and expand existing Grok Imagine video generations seamlessly. Starting from a previously generated video, you can extend the scene while maintaining visual style, characters, motion, and audio consistency. Requires the original task_id from the initial video generation.

Savings Alert-67% ↓Cheaper than Direct xAI API

About Extend Video

Grok Imagine Extend lets you continue and expand existing Grok Imagine video generations, maintaining visual style, motion, and audio consistency throughout. Built by xAI, this model accepts a request_id from a previous Grok video and a guiding text prompt to seamlessly append 6 or 10 seconds of new footage. It supports 480p and 720p resolutions and can be chained multiple times to build longer sequences from a single starting point.

Interactive Savings Calculator

Estimate monthly API spend and compare absolute developer savings.

Monthly API Generations10,000 runs
50025,00050,00075,000100,000+
MuAPI Monthly Cost

$500.00

From $0.05 per generation
Direct xAI API Cost

$300.00

Not publicly available
Estimated Monthly Savings$-200.00
Annual Savings$-2400.00

Detailed Pricing Breakdown

ProviderEstimated RateNotes
MuapiFrom $0.05 per generationPay-per-run, no subscription. 6s 480p starts at $0.05; 10s 720p at $0.15.
Direct xAI APINot publicly availablexAI Grok Imagine Extend is accessible via Muapi — no separate xAI API key required.

Developer Integration Snippets

1import requests 2import time 3import json 4 5api_key = "YOUR_API_KEY" 6url = "https://api.muapi.ai/workflow/run/grok-imagine-extend" 7 8def poll_for_result(run_id): 9 url = f"https://api.muapi.ai/workflow/run/{run_id}/api-outputs" 10 headers = { 11 "Content-Type": "application/json", 12 "x-api-key": f"{api_key}", 13 } 14 while True: 15 response = requests.get(url, headers=headers) 16 result = response.json() 17 18 if result['status'] == 'completed': 19 return json.loads(result['outputs']) 20 21 if result['status'] == 'failed': 22 raise Exception(result.get('error', 'Generation failed')) 23 24 time.sleep(5) 25 26data = { 27 "schemas": { 28 "input_data": { 29 "x-order-properties": [ 30 "request_id", 31 "prompt", 32 "extend_times", 33 "resolution" 34 ], 35 "type": "object", 36 "properties": { 37 "request_id": { 38 "examples": [ 39 "" 40 ], 41 "description": "Request ID of the original video generation. Must be a valid ID returned from a previous Grok Imagine video generation.", 42 "format": "text", 43 "type": "string", 44 "title": "Request Id", 45 "name": "request_id", 46 "placeholder": "abcdefg-123-456-789-a1b2c3d4e5f6" 47 }, 48 "prompt": { 49 "examples": [ 50 "Continue the scene with the camera slowly panning right to reveal a vast ocean horizon, golden sunset light reflecting on the water." 51 ], 52 "description": "Text prompt describing how to continue the video.", 53 "type": "string", 54 "title": "Prompt", 55 "name": "prompt" 56 }, 57 "extend_times": { 58 "enum": [ 59 6, 60 10 61 ], 62 "title": "Extend Duration", 63 "name": "extend_times", 64 "type": "integer", 65 "description": "Duration in seconds to extend the video.", 66 "default": 6 67 }, 68 "resolution": { 69 "enum": [ 70 "480p", 71 "720p" 72 ], 73 "title": "Resolution", 74 "name": "resolution", 75 "type": "string", 76 "description": "Output video resolution.", 77 "default": "480p" 78 } 79 }, 80 "title": "BaseInput", 81 "required": [ 82 "request_id", 83 "prompt" 84 ], 85 "endpoint_url": "grok-imagine-extend" 86 }, 87 "output_data": { 88 "x-fal-order-properties": [ 89 "video" 90 ], 91 "type": "object", 92 "properties": { 93 "video": { 94 "examples": [ 95 "https://d3adwkbyhxyrtq.cloudfront.net/webassets/videomodels/grok-imagine.mp4" 96 ], 97 "description": "The extended video", 98 "title": "Video", 99 "comparison": false 100 } 101 }, 102 "title": "GrokImagineExtend", 103 "required": [ 104 "video" 105 ] 106 } 107 } 108} 109 110headers = { 111 "Content-Type": "application/json", 112 "x-api-key": f"{api_key}", 113} 114 115response = requests.post(url, json=data, headers=headers) 116 117result = response.json() 118print("Queued:", result) 119 120outputs = poll_for_result(result["run_id"]) 121print("Completed:", outputs) 122

Model FAQ

Ready to scale your production?

Get instant access to developer keys. Integrate high-speed dynamic models in minutes with our robust SDKs.