Video Remix
curl --request POST \
--url https://zx1.deepwl.net/v1/video/remix \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"prompt": "<string>",
"size": "<string>",
"aspect_ratio": "<string>",
"task_id": "<string>",
"parent_post_id": "<string>"
}
'import requests
url = "https://zx1.deepwl.net/v1/video/remix"
payload = {
"model": "<string>",
"prompt": "<string>",
"size": "<string>",
"aspect_ratio": "<string>",
"task_id": "<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>',
task_id: '<string>',
parent_post_id: '<string>'
})
};
fetch('https://zx1.deepwl.net/v1/video/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://zx1.deepwl.net/v1/video/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>',
'task_id' => '<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://zx1.deepwl.net/v1/video/remix"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"size\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"task_id\": \"<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://zx1.deepwl.net/v1/video/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 \"task_id\": \"<string>\",\n \"parent_post_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://zx1.deepwl.net/v1/video/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 \"task_id\": \"<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
}
Unified Video
Video Remix
Use POST /v1/video/remix to submit remix requests for existing Grok tasks through the unified video format.
POST
https://zx1.deepwl.net
/
v1
/
video
/
remix
Video Remix
curl --request POST \
--url https://zx1.deepwl.net/v1/video/remix \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"prompt": "<string>",
"size": "<string>",
"aspect_ratio": "<string>",
"task_id": "<string>",
"parent_post_id": "<string>"
}
'import requests
url = "https://zx1.deepwl.net/v1/video/remix"
payload = {
"model": "<string>",
"prompt": "<string>",
"size": "<string>",
"aspect_ratio": "<string>",
"task_id": "<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>',
task_id: '<string>',
parent_post_id: '<string>'
})
};
fetch('https://zx1.deepwl.net/v1/video/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://zx1.deepwl.net/v1/video/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>',
'task_id' => '<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://zx1.deepwl.net/v1/video/remix"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"prompt\": \"<string>\",\n \"size\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"task_id\": \"<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://zx1.deepwl.net/v1/video/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 \"task_id\": \"<string>\",\n \"parent_post_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://zx1.deepwl.net/v1/video/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 \"task_id\": \"<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
The Grok unified video remix endpoint isPOST /v1/video/remix. Unlike OpenAI-format Video Remix, the original task ID is passed in the Body via task_id instead of a path parameter.
- The route endpoint is
POST /v1/video/remix. - Required fields:
model,prompt,size,aspect_ratio,task_id. - After submission succeeds, poll the newly returned
idusing Query Task.
Method and Path
POST /v1/video/remix
Request Example
curl -X POST https://zx1.deepwl.net/v1/video/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",
"task_id": "grok:48a67431-0708-46d1-9ab9-83cb84700153"
}'
import requests
resp = requests.post(
"https://zx1.deepwl.net/v1/video/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",
"task_id": "grok:48a67431-0708-46d1-9ab9-83cb84700153",
},
timeout=60,
)
print(resp.json())
const response = await fetch("https://zx1.deepwl.net/v1/video/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",
task_id: "grok:48a67431-0708-46d1-9ab9-83cb84700153",
}),
});
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
Body
string
required
Model name, for example
grok-video-3.string
required
Remix prompt.
string
required
Resolution specification, pass
720P or 1080P.string
required
Video ratio, optional values:
2:3, 3:2, 1:1.string
required
Original video task ID, matching the
id returned by Create Video or Query Task.string
Upstream post ID. Appears in some Apifox examples; not a required schema field. Pass it if needed.
Response
string
New remix task ID.
string
Task status. Common values include
processing, completed, failed.integer
Most recent status update time (Unix timestamp).
Related APIs
⌘I