curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "grok-imagine-video-1.5-official",
"prompt": "The camera slowly pushes in as the woman starts talking",
"image": "https://example.com/portrait.jpg",
"duration": 8,
"resolution": "1080p",
"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-1.5-official",
"prompt": "The camera slowly pushes in as the woman starts talking",
"image": "https://example.com/portrait.jpg",
"duration": 8,
"resolution": "1080p",
"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-1.5-official',
prompt: 'The camera slowly pushes in as the woman starts talking',
image: 'https://example.com/portrait.jpg',
duration: 8,
resolution: '1080p',
aspect_ratio: '16:9'
})
});
const task = await response.json();
console.log(`Task ID: ${task.id}`);
console.log(`Status: ${task.status}`);
{
"id": "tsk_vid_01M59KZ8B8A4VKCBB7QGXQZV2E",
"object": "generation.task",
"model": "grok-imagine-video-1.5-official",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {}
}
Grok Imagine Video (Official)
Grok Imagine Video 1.5 Generation (Official)
Generate videos with the official Grok Imagine Video 1.5 channel up to 1080p
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-1.5-official",
"prompt": "The camera slowly pushes in as the woman starts talking",
"image": "https://example.com/portrait.jpg",
"duration": 8,
"resolution": "1080p",
"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-1.5-official",
"prompt": "The camera slowly pushes in as the woman starts talking",
"image": "https://example.com/portrait.jpg",
"duration": 8,
"resolution": "1080p",
"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-1.5-official',
prompt: 'The camera slowly pushes in as the woman starts talking',
image: 'https://example.com/portrait.jpg',
duration: 8,
resolution: '1080p',
aspect_ratio: '16:9'
})
});
const task = await response.json();
console.log(`Task ID: ${task.id}`);
console.log(`Status: ${task.status}`);
{
"id": "tsk_vid_01M59KZ8B8A4VKCBB7QGXQZV2E",
"object": "generation.task",
"model": "grok-imagine-video-1.5-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 1.5 generation model
- Select
grok-imagine-video-1.5-officialmodel via the model parameter - First-frame image-to-video only — exactly one input image is required
- Up to 1080p output
- Async task management, query results via task ID
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-1.5-official"
required
Video generation model nameSupported models:
grok-imagine-video-1.5-official- Official-channel Grok Imagine Video 1.5 model
"grok-imagine-video-1.5-official"string
required
Text description for video generation
string
required
First-frame image URL. Required — this model only supports image-to-video with exactly one input image. Only public
http:// or https:// URLs are supported.integer
default:"8"
Video duration in secondsSupported range:
1–15 secondsstring
default:"720p"
Video resolutionSupported values:
480p, 720p, 1080pstring
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[]
Array of additional reference image URLs⚠️ 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 is billed per image — since this model requires exactly one first-frame image, every task includes one input-image charge. Video extension is not supported on this model.
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-1.5-official",
"prompt": "The camera slowly pushes in as the woman starts talking",
"image": "https://example.com/portrait.jpg",
"duration": 8,
"resolution": "1080p",
"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-1.5-official",
"prompt": "The camera slowly pushes in as the woman starts talking",
"image": "https://example.com/portrait.jpg",
"duration": 8,
"resolution": "1080p",
"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-1.5-official',
prompt: 'The camera slowly pushes in as the woman starts talking',
image: 'https://example.com/portrait.jpg',
duration: 8,
resolution: '1080p',
aspect_ratio: '16:9'
})
});
const task = await response.json();
console.log(`Task ID: ${task.id}`);
console.log(`Status: ${task.status}`);
{
"id": "tsk_vid_01M59KZ8B8A4VKCBB7QGXQZV2E",
"object": "generation.task",
"model": "grok-imagine-video-1.5-official",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {}
}