curl --request POST \
--url https://toapis.com/v1/videos/tsk_vid_01M59KNFZA2N4QFP0TMGACYH98/extend \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "grok-imagine-video-official",
"prompt": "Continue the scene, make the dog run towards the horizon",
"duration": 6
}'
curl --request POST \
--url https://toapis.com/v1/videos/extend \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "grok-imagine-video-official",
"prompt": "Continue the scene, make the dog run towards the horizon",
"duration": 6,
"video_urls": ["https://example.com/source-video.mp4"]
}'
import requests
video_id = "tsk_vid_01M59KNFZA2N4QFP0TMGACYH98"
response = requests.post(
f"https://toapis.com/v1/videos/{video_id}/extend",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "grok-imagine-video-official",
"prompt": "Continue the scene, make the dog run towards the horizon",
"duration": 6
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
const videoId = 'tsk_vid_01M59KNFZA2N4QFP0TMGACYH98';
const response = await fetch(`https://toapis.com/v1/videos/${videoId}/extend`, {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'grok-imagine-video-official',
prompt: 'Continue the scene, make the dog run towards the horizon',
duration: 6
})
});
const task = await response.json();
console.log(`Task ID: ${task.id}`);
console.log(`Status: ${task.status}`);
{
"id": "tsk_vid_01M59KTYQS81W0QENN56SEJ85S",
"object": "generation.task",
"model": "grok-imagine-video-official",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {}
}
Grok Imagine Video (Official)
Grok Imagine Video Extend (Official)
Extend generated Grok Imagine videos via the official channel
POST
/
v1
/
videos
/
{video_id}
/
extend
curl --request POST \
--url https://toapis.com/v1/videos/tsk_vid_01M59KNFZA2N4QFP0TMGACYH98/extend \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "grok-imagine-video-official",
"prompt": "Continue the scene, make the dog run towards the horizon",
"duration": 6
}'
curl --request POST \
--url https://toapis.com/v1/videos/extend \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "grok-imagine-video-official",
"prompt": "Continue the scene, make the dog run towards the horizon",
"duration": 6,
"video_urls": ["https://example.com/source-video.mp4"]
}'
import requests
video_id = "tsk_vid_01M59KNFZA2N4QFP0TMGACYH98"
response = requests.post(
f"https://toapis.com/v1/videos/{video_id}/extend",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "grok-imagine-video-official",
"prompt": "Continue the scene, make the dog run towards the horizon",
"duration": 6
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
const videoId = 'tsk_vid_01M59KNFZA2N4QFP0TMGACYH98';
const response = await fetch(`https://toapis.com/v1/videos/${videoId}/extend`, {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'grok-imagine-video-official',
prompt: 'Continue the scene, make the dog run towards the horizon',
duration: 6
})
});
const task = await response.json();
console.log(`Task ID: ${task.id}`);
console.log(`Status: ${task.status}`);
{
"id": "tsk_vid_01M59KTYQS81W0QENN56SEJ85S",
"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 extend feature
- Extend the duration of existing videos by 2-10 seconds
- Async task management, query results via task ID
Path Parameters
string
required
Original video task IDThis is the task ID returned from a previous video generation request. The finished video of that task is used as the extension source.To extend an arbitrary video URL without a source task, use
POST /v1/videos/extend and pass video_urls in the body instead of a path parameter.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 extend model nameExample:
"grok-imagine-video-official"string
required
Text description for video extension
integer
default:"6"
Extension length in secondsSupported range:
2–10 secondsstring[]
Source video URL list. Required when using
POST /v1/videos/extend without a task ID; optional when video_id is present in the path.Public http:///https:// URLs or platform asset:// references.Pricing note: Extension bills the generated extension seconds plus the input source video duration per second. The input video duration is determined automatically by the platform; it does not need to be declared in the request.
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 progress percentage (0-100)
integer
Task creation timestamp (Unix timestamp)
object
Task metadata
curl --request POST \
--url https://toapis.com/v1/videos/tsk_vid_01M59KNFZA2N4QFP0TMGACYH98/extend \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "grok-imagine-video-official",
"prompt": "Continue the scene, make the dog run towards the horizon",
"duration": 6
}'
curl --request POST \
--url https://toapis.com/v1/videos/extend \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "grok-imagine-video-official",
"prompt": "Continue the scene, make the dog run towards the horizon",
"duration": 6,
"video_urls": ["https://example.com/source-video.mp4"]
}'
import requests
video_id = "tsk_vid_01M59KNFZA2N4QFP0TMGACYH98"
response = requests.post(
f"https://toapis.com/v1/videos/{video_id}/extend",
headers={
"Authorization": "Bearer your-ToAPIs-key",
"Content-Type": "application/json"
},
json={
"model": "grok-imagine-video-official",
"prompt": "Continue the scene, make the dog run towards the horizon",
"duration": 6
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
const videoId = 'tsk_vid_01M59KNFZA2N4QFP0TMGACYH98';
const response = await fetch(`https://toapis.com/v1/videos/${videoId}/extend`, {
method: 'POST',
headers: {
'Authorization': 'Bearer your-ToAPIs-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'grok-imagine-video-official',
prompt: 'Continue the scene, make the dog run towards the horizon',
duration: 6
})
});
const task = await response.json();
console.log(`Task ID: ${task.id}`);
console.log(`Status: ${task.status}`);
{
"id": "tsk_vid_01M59KTYQS81W0QENN56SEJ85S",
"object": "generation.task",
"model": "grok-imagine-video-official",
"status": "queued",
"progress": 0,
"created_at": 1768380224,
"metadata": {}
}