Submit Jimeng video task
curl --request POST \
--url https://api.aiohub.org/jimeng/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"req_key": "doubao-seedance-2-0-fast-260128",
"prompt": "A blue ceramic cup on a wooden table in daylight.",
"frames": 121,
"aspect_ratio": "16:9",
"seed": -1
}
'import requests
url = "https://api.aiohub.org/jimeng/"
payload = {
"req_key": "doubao-seedance-2-0-fast-260128",
"prompt": "A blue ceramic cup on a wooden table in daylight.",
"frames": 121,
"aspect_ratio": "16:9",
"seed": -1
}
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({
req_key: 'doubao-seedance-2-0-fast-260128',
prompt: 'A blue ceramic cup on a wooden table in daylight.',
frames: 121,
aspect_ratio: '16:9',
seed: -1
})
};
fetch('https://api.aiohub.org/jimeng/', 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://api.aiohub.org/jimeng/",
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([
'req_key' => 'doubao-seedance-2-0-fast-260128',
'prompt' => 'A blue ceramic cup on a wooden table in daylight.',
'frames' => 121,
'aspect_ratio' => '16:9',
'seed' => -1
]),
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://api.aiohub.org/jimeng/"
payload := strings.NewReader("{\n \"req_key\": \"doubao-seedance-2-0-fast-260128\",\n \"prompt\": \"A blue ceramic cup on a wooden table in daylight.\",\n \"frames\": 121,\n \"aspect_ratio\": \"16:9\",\n \"seed\": -1\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://api.aiohub.org/jimeng/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"req_key\": \"doubao-seedance-2-0-fast-260128\",\n \"prompt\": \"A blue ceramic cup on a wooden table in daylight.\",\n \"frames\": 121,\n \"aspect_ratio\": \"16:9\",\n \"seed\": -1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aiohub.org/jimeng/")
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 \"req_key\": \"doubao-seedance-2-0-fast-260128\",\n \"prompt\": \"A blue ceramic cup on a wooden table in daylight.\",\n \"frames\": 121,\n \"aspect_ratio\": \"16:9\",\n \"seed\": -1\n}"
response = http.request(request)
puts response.read_body{
"id": "task_example",
"task_id": "task_example",
"object": "video",
"model": "doubao-seedance-2-0-fast-260128",
"status": "queued",
"progress": 0,
"created_at": 1791275108
}{
"code": "invalid_duration",
"message": "duration must be between 4 and 30 seconds for this model"
}Create video · Jimeng compatible
Submit a Seedance video task using Jimeng compatible, with examples, input limits and full parameters.
POST
/
jimeng
/
Submit Jimeng video task
curl --request POST \
--url https://api.aiohub.org/jimeng/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"req_key": "doubao-seedance-2-0-fast-260128",
"prompt": "A blue ceramic cup on a wooden table in daylight.",
"frames": 121,
"aspect_ratio": "16:9",
"seed": -1
}
'import requests
url = "https://api.aiohub.org/jimeng/"
payload = {
"req_key": "doubao-seedance-2-0-fast-260128",
"prompt": "A blue ceramic cup on a wooden table in daylight.",
"frames": 121,
"aspect_ratio": "16:9",
"seed": -1
}
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({
req_key: 'doubao-seedance-2-0-fast-260128',
prompt: 'A blue ceramic cup on a wooden table in daylight.',
frames: 121,
aspect_ratio: '16:9',
seed: -1
})
};
fetch('https://api.aiohub.org/jimeng/', 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://api.aiohub.org/jimeng/",
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([
'req_key' => 'doubao-seedance-2-0-fast-260128',
'prompt' => 'A blue ceramic cup on a wooden table in daylight.',
'frames' => 121,
'aspect_ratio' => '16:9',
'seed' => -1
]),
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://api.aiohub.org/jimeng/"
payload := strings.NewReader("{\n \"req_key\": \"doubao-seedance-2-0-fast-260128\",\n \"prompt\": \"A blue ceramic cup on a wooden table in daylight.\",\n \"frames\": 121,\n \"aspect_ratio\": \"16:9\",\n \"seed\": -1\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://api.aiohub.org/jimeng/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"req_key\": \"doubao-seedance-2-0-fast-260128\",\n \"prompt\": \"A blue ceramic cup on a wooden table in daylight.\",\n \"frames\": 121,\n \"aspect_ratio\": \"16:9\",\n \"seed\": -1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aiohub.org/jimeng/")
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 \"req_key\": \"doubao-seedance-2-0-fast-260128\",\n \"prompt\": \"A blue ceramic cup on a wooden table in daylight.\",\n \"frames\": 121,\n \"aspect_ratio\": \"16:9\",\n \"seed\": -1\n}"
response = http.request(request)
puts response.read_body{
"id": "task_example",
"task_id": "task_example",
"object": "video",
"model": "doubao-seedance-2-0-fast-260128",
"status": "queued",
"progress": 0,
"created_at": 1791275108
}{
"code": "invalid_duration",
"message": "duration must be between 4 and 30 seconds for this model"
}If your client uses Jimeng CVSync2Async, you can reuse the request fields below. Switch authentication to an AIOHub API key, set
Submission returns an OpenAI video object with the fields below. Save the top-level
After saving the task identifier, poll the task.
req_key to a Seedance model name and adapt response parsing as shown here. Submission and polling return different structures; this is not the full official Jimeng API.
Setup
Usehttps://api.aiohub.org. Authenticate every request with Authorization: Bearer <AIOHUB_API_KEY>, replacing the placeholder with your full sk- API key rather than Jimeng request signing. The key group must allow the selected model.
Example request
curl "https://api.aiohub.org/jimeng/?Action=CVSync2AsyncSubmitTask&Version=2022-08-31" \
-H "Authorization: Bearer <AIOHUB_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"req_key": "doubao-seedance-2-0-fast-260128",
"prompt": "A blue ceramic cup on a wooden table in daylight.",
"frames": 121,
"aspect_ratio": "16:9",
"seed": -1
}'
task_id; do not read data.task_id.
{"id": "task_example", "task_id": "task_example", "object": "video", "status": "queued"}
Parameter limits
Output is fixed at 720p. Use Ark / Seedance for other resolutions, reference audio or video editing.If creation times out without a task identifier, check the usage log before resubmitting to avoid duplicate generation and charges. Correct parameters after a 400 and check the API key after a 401. See Authentication for access and quota requirements.
Authorizations
API key (sk-xxx)
Query Parameters
Operation name; use this page's fixed value.
Available options:
CVSync2AsyncSubmitTask Protocol version.
Available options:
2022-08-31 Body
application/json
Full Seedance model name.
Example:
"doubao-seedance-2-0-fast-260128"
Prompt, required for text-only generation.
One first-frame image or first and last frames. Cannot be combined with binary_data_base64.
Maximum array length:
2Base64 first-frame or first/last-frame image bytes, without data URL prefixes.
Maximum array length:
2121 means 5 seconds; 241 means 10 seconds.
Available options:
121, 241 Aspect ratio for text generation; image input follows the image.
Available options:
16:9, 4:3, 1:1, 3:4, 9:16, 21:9 Only random seed -1 is supported.
Available options:
-1