TokenHub yagona API orqali ByteDance Seedance 2.0 video yaratish modelariga murojaat qiling. Text-to-video, image-to-video, video tahrirlash, audio asosidagi yaratish va boshqalarni qo‘llab-quvvatlaydi. Ushbu qo‘llanma sizni to‘liq integratsiya jarayoni bilan tanishtiradi.
Joriy e’lon qilingan modellar va narxlarni Modellar va Narxlar sahifalarida ko‘ring. Sahifalar avtomatik yangilanadi.
Using Gemini to write prompts or scripts? See the text-generation API examples. For an unlisted model, use the model ID provided by your account administrator. Gemini API
Responses API oqimli javoblari va hisob-kitob
Query your balance and usage or manage API keys with an access token generated in Settings. View account API documentation
API kalitlarini nom yoki prefiks boʻyicha qidiring va har sahifada 20 ta kalitni koʻring. Yangi kalitlar birinchi sahifada koʻrinadi. Boshqa oynada yoki API orqali yaratilgan kalitlarni koʻrish uchun roʻyxatni yangilang. API Keys
th-xxxxxxxxxxxx...)https://tokenhub.store/api/v1Barcha so‘rovlar headerda API Key ni talab qiladi:
Authorization: Bearer th-your-api-keyPOST/videos/generationsVideo generatsiya vazifasini yaratadi, task ID qaytaradi
GET/videos/generations/{task_id}Vazifa holatini so‘raydi, muvaffaqiyatli bo‘lsa video URL qaytaradi
| Model ID | Kirish | Narx | Tavsif |
|---|---|---|---|
| doubao-seedance-2.0 | Video kiritmasdan | $6.970/1M (1080p $7.727) | Flagman model, eng yuqori sifat. 1080p qo'llab-quvvatlanadi. |
| Video kiritish bilan | $4.242/1M (1080p $4.697) | Video kiritish bilan flagman, tejamkor. | |
| doubao-seedance-2.0-fast | Video kiritmasdan | $5.606/1M | Tezkor model, yanada tezroq yaratish. |
| Video kiritish bilan | $3.333/1M | Video kiritish bilan tezkor model, eng arzon. |
To‘lov tafsilotlari:
Misol: doubao-seedance-2.0 video kiritmasdan (≤720p) ishlatib, ~1M tokens bilan 5 soniyalik video yaratganda → narx ≈ $6.970
| Parametr | Turi | Majburiy | Tavsif |
|---|---|---|---|
| model | string | Majburiy | Model ID, masalan "doubao-seedance-2.0" |
| prompt | string | Majburiy | Video tavsifi matni. Odatda inglizcha promptlar yaxshiroq natija beradi |
| duration | number | Ixtiyoriy | Video davomiyligi (sek), diapazon 4–15, standart 5 |
| resolution | string | Ixtiyoriy | "480p", "720p" yoki "1080p" (standart 720p; 1080p faqat doubao-seedance-2.0 uchun) |
| aspect_ratio | string | Ixtiyoriy | Aspekt nisbati: "adaptive" (standart), "16:9", "9:16", "1:1" va hokazo. |
| image_url | string | Ixtiyoriy | Ma’lumot uchun rasm URL manzili (image-to-video) |
| image_urls | string[] | Ixtiyoriy | Bir nechta ma’lumot uchun rasm URL manzillari massivi |
| video_url | string | Ixtiyoriy | Ma’lumot uchun video URL manzili (video editing / video-to-video) |
| video_urls | string[] | Ixtiyoriy | Bir nechta ma’lumot uchun video URL manzillari massivi (maks. 3) |
| video_durations | number[] | Ixtiyoriy | Har bir video uchun sekundlarda davomiyliklar massivi, masalan [3, 5] |
| input_video_duration | number | Ixtiyoriy | Sekundlarda kirish videosining umumiy davomiyligi (video_durations ga muqobil) |
| audio_url | string | Ixtiyoriy | Ma’lumot uchun audio URL manzili (background music / SFX) |
| audio_urls | string[] | Ixtiyoriy | Bir nechta ma’lumot uchun audio URL manzillari massivi (maks. 3) |
| generate_audio | boolean | Ixtiyoriy | Ovoz yaratish kerakmi, sukut bo‘yicha true |
| watermark | boolean | Ixtiyoriy | Suv belgisi qo‘shilsinmi, sukut bo‘yicha false |
| content | array | Ixtiyoriy | Media resurslari massivi. Har bir element: { type: "image_url", image_url: { url }, role }. Qo‘llab-quvvatlanadigan rollar: first_frame (max 1), last_frame (max 1), reference_image, reference_video, reference_audio |
Siz matn, rasm, video va audioni kirish sifatida erkin birlashtirishingiz mumkin. Quyidagi cheklovlarga e’tibor bering:
Eng asosiy foydalanish — videoni yaratish uchun sahnani matn bilan tavsiflang.
curl -X POST https://tokenhub.store/api/v1/videos/generations \
-H "Authorization: Bearer th-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2.0",
"prompt": "A golden retriever running on a sunny beach, waves crashing in the background, cinematic slow motion, 4K quality",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"watermark": false
}'Javob:
{
"id": "xxxxxx-task-id",
"object": "video.generation.task",
"model": "doubao-seedance-2.0",
"status": "queued",
"created": 1719900000
}Video yaratish asinxron — jarayon tugaguncha holatini tekshirib turing.
# Poll task status using the task_id from creation response
curl https://tokenhub.store/api/v1/videos/generations/YOUR_TASK_ID \
-H "Authorization: Bearer th-your-api-key"Topshiriq jarayonda:
{
"id": "YOUR_TASK_ID",
"object": "video.generation.task",
"model": "doubao-seedance-2.0",
"status": "running",
"created": 1719900000
}Topshiriq yakunlandi (video URL olindi):
{
"id": "YOUR_TASK_ID",
"object": "video.generation.task",
"model": "doubao-seedance-2.0",
"status": "succeeded",
"created": 1719900000,
"data": [
{
"video_url": "https://tokenhub-data.tos-cn-hongkong.volces.com/user_sd_file/YOUR_TASK_ID.mp4",
"cover_image_url": "https://tokenhub-data.tos-cn-hongkong.volces.com/user_sd_file/YOUR_TASK_ID_cover.jpg"
}
],
"usage": {
"video_duration": 5
}
}import requests
import time
API_BASE = "https://tokenhub.store/api/v1"
API_KEY = "th-your-api-key"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
# Step 1: Create video generation task
payload = {
"model": "doubao-seedance-2.0",
"prompt": "A majestic eagle soaring over snow-capped mountains, golden hour lighting, cinematic aerial shot",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"watermark": False
}
resp = requests.post(f"{API_BASE}/videos/generations", json=payload, headers=headers)
task = resp.json()
task_id = task["id"]
print(f"Task created: {task_id}, status: {task['status']}")
# Step 2: Poll for result
while True:
resp = requests.get(f"{API_BASE}/videos/generations/{task_id}", headers=headers)
result = resp.json()
status = result["status"]
print(f"Status: {status}")
if status == "succeeded":
video_url = result["data"][0]["video_url"]
duration = result["usage"]["video_duration"]
print(f"Video ready! Duration: {duration}s")
print(f"URL: {video_url}")
break
elif status == "failed":
print(f"Failed: {result.get('error', {}).get('message', 'Unknown error')}")
break
time.sleep(5)const API_BASE = "https://tokenhub.store/api/v1";
const API_KEY = "th-your-api-key";
const headers = {
"Authorization": `Bearer ${API_KEY}`,
"Content-Type": "application/json"
};
// Step 1: Create task
const createResp = await fetch(`${API_BASE}/videos/generations`, {
method: "POST",
headers,
body: JSON.stringify({
model: "doubao-seedance-2.0",
prompt: "A majestic eagle soaring over snow-capped mountains, cinematic aerial shot",
duration: 5,
resolution: "720p",
aspect_ratio: "16:9",
watermark: false,
}),
});
const task = await createResp.json();
console.log("Task created:", task.id);
// Step 2: Poll for result
const poll = async () => {
while (true) {
const resp = await fetch(`${API_BASE}/videos/generations/${task.id}`, { headers });
const result = await resp.json();
console.log("Status:", result.status);
if (result.status === "succeeded") {
console.log("Video URL:", result.data[0].video_url);
console.log("Duration:", result.usage.video_duration, "seconds");
return result;
}
if (result.status === "failed") {
console.error("Failed:", result.error?.message);
return result;
}
await new Promise(r => setTimeout(r, 5000));
}
};
await poll();import requests, time
API_BASE = "https://tokenhub.store/api/v1"
headers = {
"Authorization": "Bearer th-your-api-key",
"Content-Type": "application/json"
}
# Image-to-Video with a single reference image
payload = {
"model": "doubao-seedance-2.0",
"prompt": "The woman in the photo turns to face the camera and smiles warmly, her hair gently blowing in the wind",
"duration": 5,
"resolution": "720p",
"image_url": "https://your-bucket.com/portrait.jpg",
"watermark": False
}
resp = requests.post(f"{API_BASE}/videos/generations", json=payload, headers=headers)
task_id = resp.json()["id"]
print(f"Task: {task_id}")
# Poll for result
while True:
r = requests.get(f"{API_BASE}/videos/generations/{task_id}", headers=headers).json()
if r["status"] == "succeeded":
print(f"Done: {r['data'][0]['video_url']}")
break
elif r["status"] == "failed":
print(f"Error: {r.get('error', {}).get('message')}")
break
time.sleep(5)Kiritilgan rasmingizda haqiqiy odam bo'lsa, TokenHub so'rovni real-person generation-ni qo'llab-quvvatlaydigan upstream'ga avtomatik yo'naltiradi. Client tomonda hech qanday o'zgarish talab qilinmaydi.
Agar upstream content filter kiritilgan rasmdagi haqiqiy odamni aniqlasa, avtomatik ishga tushadi.
So'rov shakli odatiy image-to-video bilan bir xil — POST /v1/videos/generations body ham aynan o'sha.
GET polling ham xuddi shunday — POST qaytargan istalgan id bilan /v1/videos/generations/{id} ga murojaat qiling, status succeeded yoki failed bo'lguncha. id qayta yozilishi server tomonda boshqariladi; siz request davomida doim bir xil id ni ko'rasiz.
Hisobingiz uchun real-person-capable provider sozlanmagan bo'lsa, 400 status bilan qaytariladi. Qo'llab-quvvatlanadigan provider'ni yoqish uchun administratoringizga murojaat qiling.
Upstream asset preparation 5 daqiqadan oshsa, GET orqali status: failed bilan qaytariladi. So'rovni xavfsiz qayta yuborish mumkin.
pat-id mijozingiz uchun shaffof emas — status o'zgarguncha pollingni davom ettiring.
# POST
curl -X POST https://tokenhub.store/api/v1/videos/generations \
-H "Authorization: Bearer $TH_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2.0",
"prompt": "let her dance and spin",
"duration": 8,
"resolution": "480p",
"content": [
{ "type": "image_url", "image_url": { "url": "https://example.com/portrait.png" }, "role": "first_frame" }
]
}'
# → {"id":"pat-abc123","status":"queued"}
# GET (asset still uploading)
curl https://tokenhub.store/api/v1/videos/generations/pat-abc123 -H "Authorization: Bearer $TH_KEY"
# → {"id":"pat-abc123","status":"queued"}
# GET (upstream task running)
# → {"id":"pat-abc123","status":"running"}
# GET (complete — id stays pat-, video_url in data)
# → {"id":"pat-abc123","status":"succeeded","data":[{"video_url":"..."}]}Tavsiya etilgan format: [Subject] + [Action] + [Environment/Background] + [Camera/Style]
"A young woman walking through a cherry blossom garden, petals falling in slow motion, soft natural lighting, cinematic 35mm film look""Close-up of hands pouring latte art into a ceramic cup, steam rising, warm cafe ambiance, shallow depth of field""Aerial drone shot of a winding river through autumn forest, golden and red leaves, morning mist, 4K cinematic"TokenHub’ga ro‘yxatdan o‘ting va Seedance 2.0 Video Generation API’dan hoziroq foydalanishni boshlang
© 2026 TokenHub · Powered by ByteDance Seedance 2.0 · support@tokenhub.store