Video Remix
curl --request POST \
--url https://www.token-nova.com/v1/videos/{video_id}/remix \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"prompt": "<string>",
"size": "<string>",
"aspect_ratio": "<string>",
"parent_post_id": "<string>"
}
'import requests
url = "https://www.token-nova.com/v1/videos/{video_id}/remix"
payload = {
"model": "<string>",
"prompt": "<string>",
"size": "<string>",
"aspect_ratio": "<string>",
"parent_post_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
prompt: '<string>',
size: '<string>',
aspect_ratio: '<string>',
parent_post_id: '<string>'
})
};
fetch('https://www.token-nova.com/v1/videos/{video_id}/remix', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.token-nova.com/v1/videos/{video_id}/remix",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => '<string>',
'prompt' => '<string>',
'size' => '<string>',
'aspect_ratio' => '<string>',
'parent_post_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://www.token-nova.com/v1/videos/{video_id}/remix"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"size\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"parent_post_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://www.token-nova.com/v1/videos/{video_id}/remix")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"size\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"parent_post_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.token-nova.com/v1/videos/{video_id}/remix")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"size\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"parent_post_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "grok:48a67431-0708-46d1-9ab9-83cb84700153",
"status": "processing",
"status_update_time": 1762685256
}
OpenAI Format
Video Remix
Submit a remix based on an existing Grok video task using POST /v1/videos/{video_id}/remix.
POST
https://www.token-nova.com
/
v1
/
videos
/
{video_id}
/
remix
Video Remix
curl --request POST \
--url https://www.token-nova.com/v1/videos/{video_id}/remix \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"prompt": "<string>",
"size": "<string>",
"aspect_ratio": "<string>",
"parent_post_id": "<string>"
}
'import requests
url = "https://www.token-nova.com/v1/videos/{video_id}/remix"
payload = {
"model": "<string>",
"prompt": "<string>",
"size": "<string>",
"aspect_ratio": "<string>",
"parent_post_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
prompt: '<string>',
size: '<string>',
aspect_ratio: '<string>',
parent_post_id: '<string>'
})
};
fetch('https://www.token-nova.com/v1/videos/{video_id}/remix', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.token-nova.com/v1/videos/{video_id}/remix",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => '<string>',
'prompt' => '<string>',
'size' => '<string>',
'aspect_ratio' => '<string>',
'parent_post_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://www.token-nova.com/v1/videos/{video_id}/remix"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"size\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"parent_post_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://www.token-nova.com/v1/videos/{video_id}/remix")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"size\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"parent_post_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.token-nova.com/v1/videos/{video_id}/remix")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"size\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"parent_post_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "grok:48a67431-0708-46d1-9ab9-83cb84700153",
"status": "processing",
"status_update_time": 1762685256
}
Video Remix
OpenAI-format entry point. For unified video, use Video Remix (Unified Video) (POST /v1/video/remix, pass task_id in the Body).
Based on an existing Grok video task, submit a remix task via POST /v1/videos/{video_id}/remix to generate variants with new prompts and aspect ratio parameters.
- The path parameter
video_idis the original video task ID. - The request body is JSON and must include
model,prompt,size, andaspect_ratio. - After a successful submission, the new task
idandstatusare returned. Please poll using Grok Task Query or Query Task for unified video, depending on which pipeline the original task belongs to.
Method and Path
POST /v1/videos/{video_id}/remix
Request Example
curl -X POST https://www.token-nova.com/v1/videos/grok:48a67431-0708-46d1-9ab9-83cb84700153/remix \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"model": "grok-video-3",
"prompt": "play with another white cat",
"aspect_ratio": "3:2",
"size": "1080P",
"parent_post_id": "5afc6f67-23fe-4a74-a073-727ff662f870"
}'
import requests
video_id = "grok:48a67431-0708-46d1-9ab9-83cb84700153"
resp = requests.post(
f"https://www.token-nova.com/v1/videos/{video_id}/remix",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
},
json={
"model": "grok-video-3",
"prompt": "play with another white cat",
"aspect_ratio": "3:2",
"size": "1080P",
"parent_post_id": "5afc6f67-23fe-4a74-a073-727ff662f870",
},
timeout=60,
)
print(resp.json())
const videoId = "grok:48a67431-0708-46d1-9ab9-83cb84700153";
const response = await fetch(
`https://www.token-nova.com/v1/videos/${encodeURIComponent(videoId)}/remix`,
{
method: "POST",
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
Accept: "application/json",
},
body: JSON.stringify({
model: "grok-video-3",
prompt: "play with another white cat",
aspect_ratio: "3:2",
size: "1080P",
parent_post_id: "5afc6f67-23fe-4a74-a073-727ff662f870",
}),
}
);
console.log(await response.json());
Response Example
{
"id": "grok:48a67431-0708-46d1-9ab9-83cb84700153",
"status": "processing",
"status_update_time": 1762685256
}
Authentication
Authorization: Bearer YOUR_API_KEY
Path Parameters
string
required
Source video task ID, consistent with the
id returned by Grok Video Generation or the query interface.Body
string
required
Model name, for example
grok-video-3.string
required
Remix prompt describing how to rewrite or continue the original video content.
string
required
Resolution specification, pass
720P or 1080P.string
required
Video aspect ratio, optional values:
2:3, 3:2, 1:1.string
Parent task ID.
Response
string
New remix task ID.
string
Task status, common values include
processing, completed, failed.integer
Most recent status update time (Unix timestamp).
