curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "grok-imagine-video-official",
"prompt": "A golden retriever running on a green field in sunny weather",
"duration": 10,
"resolution": "720p",
"aspect_ratio": "16:9"
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "grok-imagine-video-official",
"prompt": "Animate this dog running across the field",
"image": "https://example.com/dog.jpg",
"duration": 10,
"resolution": "480p",
"aspect_ratio": "16:9"
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "grok-imagine-video-official",
"prompt": "A golden retriever running on a green field in sunny weather",
"duration": 10,
"resolution": "720p",
"aspect_ratio": "16:9"
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
const response = await fetch('https://toapis.com/v1/videos/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'grok-imagine-video-official',
prompt: 'A golden retriever running on a green field in sunny weather',
duration: 10,
resolution: '720p',
aspect_ratio: '16:9'
})
});
const task = await response.json();
console.log(`Task ID: ${task.id}`);
console.log(`Status: ${task.status}`);
{
"id": "tsk_vid_01M59KNFZA2N4QFP0TMGACYH98",
"object": "generation.task",
"model": "grok-imagine-video-official",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {}
}
Grok Imagine Video (Official)
Grok Imagine Video Generation (Official)
Generate high-quality videos using the Grok Imagine Video official-channel model
POST
/
v1
/
videos
/
generations
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "grok-imagine-video-official",
"prompt": "A golden retriever running on a green field in sunny weather",
"duration": 10,
"resolution": "720p",
"aspect_ratio": "16:9"
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "grok-imagine-video-official",
"prompt": "Animate this dog running across the field",
"image": "https://example.com/dog.jpg",
"duration": 10,
"resolution": "480p",
"aspect_ratio": "16:9"
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "grok-imagine-video-official",
"prompt": "A golden retriever running on a green field in sunny weather",
"duration": 10,
"resolution": "720p",
"aspect_ratio": "16:9"
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
const response = await fetch('https://toapis.com/v1/videos/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'grok-imagine-video-official',
prompt: 'A golden retriever running on a green field in sunny weather',
duration: 10,
resolution: '720p',
aspect_ratio: '16:9'
})
});
const task = await response.json();
console.log(`Task ID: ${task.id}`);
console.log(`Status: ${task.status}`);
{
"id": "tsk_vid_01M59KNFZA2N4QFP0TMGACYH98",
"object": "generation.task",
"model": "grok-imagine-video-official",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {}
}
Note for users in mainland China: Please use
https://toapis.cn as the API endpoint (Base URL). Replace https://toapis.com with https://toapis.cn in the examples in this document.- Official-channel Grok Imagine video generation model
- Select
grok-imagine-video-officialmodel via the model parameter - Supports text-to-video, image-to-video and multi-reference-image generation
- Async task management, query results via task ID
- Video extension available via Grok Imagine Video Extend
Important Change: For better performance and cost control, we no longer support passing base64 image data directly in
reference_images. Please use the Upload Image API to upload images first, then call this API with the returned URL.Authorizations
string
required
All API requests require Bearer Token authenticationGet API Key: Visit the API Key Management Page to obtain your API KeyAdd to request headers:
Authorization: Bearer YOUR_API_KEY
Body
string
default:"grok-imagine-video-official"
required
Video generation model nameSupported models:
grok-imagine-video-official- Official-channel Grok Imagine video model
"grok-imagine-video-official"string
required
Text description for video generation
integer
default:"8"
Video duration in secondsSupported range:
1–15 secondsstring
default:"720p"
Video resolutionSupported values:
480p, 720pstring
Video aspect ratioSupported formats:
16:9(landscape)9:16(portrait)4:3(landscape)3:4(portrait)3:2(landscape)2:3(portrait)1:1(square)
string
Optional first-frame image URL for image-to-video. Only public
http:// or https:// URLs are supported.string[]
Array of reference image URLs for multi-reference generation⚠️ Only URL format is supported (base64 is no longer supported)
- Publicly accessible image URLs (http:// or https://)
- Up to 7 images total across
imageandreference_images - Use the Upload Image API to upload local images and get URLs
Pricing note: Output is billed per second by resolution tier. Each input image (
image / reference_images) is billed per image. Extension requests additionally bill the input video duration per second — see Extend.Response
string
Unique task identifier for querying task status
string
Object type, always
generation.taskstring
Model name used
string
Task status
queued- Waiting to be processedin_progress- Processingcompleted- Successfully completedfailed- Failed
integer
Task creation timestamp (Unix timestamp)
integer
Task progress, usually
0 after submissionobject
Task metadata
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "grok-imagine-video-official",
"prompt": "A golden retriever running on a green field in sunny weather",
"duration": 10,
"resolution": "720p",
"aspect_ratio": "16:9"
}'
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "grok-imagine-video-official",
"prompt": "Animate this dog running across the field",
"image": "https://example.com/dog.jpg",
"duration": 10,
"resolution": "480p",
"aspect_ratio": "16:9"
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "grok-imagine-video-official",
"prompt": "A golden retriever running on a green field in sunny weather",
"duration": 10,
"resolution": "720p",
"aspect_ratio": "16:9"
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
const response = await fetch('https://toapis.com/v1/videos/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'grok-imagine-video-official',
prompt: 'A golden retriever running on a green field in sunny weather',
duration: 10,
resolution: '720p',
aspect_ratio: '16:9'
})
});
const task = await response.json();
console.log(`Task ID: ${task.id}`);
console.log(`Status: ${task.status}`);
{
"id": "tsk_vid_01M59KNFZA2N4QFP0TMGACYH98",
"object": "generation.task",
"model": "grok-imagine-video-official",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {}
}