ข้อความเป็นวิดีโอ
เริ่มด้วยพรอมต์ข้อความเมื่อไม่ต้องใช้สื่อต้นฉบับ เลือก seedance-2.0 หรือ seedance-2.5 และตรวจสอบการตั้งค่าเอาต์พุตเฉพาะโมเดล
API วิดีโอ
เปรียบเทียบ API วิดีโอ Seedance สำหรับข้อความเป็นวิดีโอและขั้นตอนที่ใช้สื่ออ้างอิง ตรวจสอบอินพุตที่รองรับ ราคา การโพลงาน และการดึงวิดีโอที่เสร็จแล้ว
โมเดล Seedance ปัจจุบันคิดค่าบริการตามโทเคนเอาต์พุต ระยะเวลามีผลต่อการประมาณการใช้งาน ไม่ใช่หน่วยชำระบัญชี เก็บ ID งานเพื่อดึงผลลัพธ์หรือรายงานความล้มเหลว
ออกแบบสำหรับงานเฉพาะ
เริ่มด้วยพรอมต์ข้อความเมื่อไม่ต้องใช้สื่อต้นฉบับ เลือก seedance-2.0 หรือ seedance-2.5 และตรวจสอบการตั้งค่าเอาต์พุตเฉพาะโมเดล
ทำให้ภาพเริ่มต้นเคลื่อนไหวด้วยพรอมต์การเคลื่อนไหว ใช้คู่มือภาพเป็นวิดีโอของโมเดลที่เลือก ไม่ผสมฟิลด์จากโหมดอินพุตอื่น
ส่งเฟรมแรกและเฟรมสุดท้ายเมื่อจำเป็นเพื่อกำหนดจุดเริ่มและจบของช็อต ตรวจสอบบทบาทเฟรมและข้อกำหนดสื่อในคู่มือโมเดล
รวมสื่ออ้างอิงตามบทบาทภาพ วิดีโอ และเสียงในเอกสาร ต้องมีภาพหรือวิดีโออ้างอิงอย่างน้อยหนึ่งรายการ ใช้เพียงเสียงอ้างอิงไม่ได้
หน่วยคิดค่าบริการ
USD ต่อหนึ่งล้านโทเคนเอาต์พุต อัตราที่ใช้ขึ้นอยู่กับโมเดล ความละเอียดเอาต์พุต และเงื่อนไขวิดีโออ้างอิง
ข้อจำกัดการดำเนินงาน
คู่มือการเชื่อมต่อ
ขอบเขตแค็ตตาล็อกปัจจุบัน
เปรียบเทียบ ID API การดำเนินการ ผู้ให้บริการ และราคา ตรวจสอบวันที่แค็ตตาล็อกและหน่วยคิดค่าบริการของแต่ละการดำเนินการก่อนประมาณค่าใช้จ่าย
สร้างวิดีโอด้วย Seedance 2.0
POST /v1/video/seedance ข้อมูลอ้างอิง ส่งงานวิดีโอ GET /v1/jobs/{id} ข้อมูลอ้างอิง โพลงาน 480p · มีวิดีโออ้างอิง
ราคาอย่างเป็นทางการ
ราคา API Hop ประหยัด 5%
480p · ไม่มีวิดีโออ้างอิง
ราคาอย่างเป็นทางการ
ราคา API Hop ประหยัด 5%
720p · มีวิดีโออ้างอิง
ราคาอย่างเป็นทางการ
ราคา API Hop ประหยัด 5%
720p · ไม่มีวิดีโออ้างอิง
ราคาอย่างเป็นทางการ
ราคา API Hop ประหยัด 5%
1080p · มีวิดีโออ้างอิง
ราคาอย่างเป็นทางการ
ราคา API Hop ประหยัด 5%
1080p · ไม่มีวิดีโออ้างอิง
ราคาอย่างเป็นทางการ
ราคา API Hop ประหยัด 5%
4k · มีวิดีโออ้างอิง
ราคาอย่างเป็นทางการ
ราคา API Hop ประหยัด 5%
4k · ไม่มีวิดีโออ้างอิง
ราคาอย่างเป็นทางการ
ราคา API Hop ประหยัด 5%
ราคาอ้างอิงยังไม่ได้รับการตรวจสอบอย่างอิสระ โปรดตรวจสอบอัตราปัจจุบัน หน่วยคิดค่าบริการ และข้อกำหนดที่เกี่ยวข้องของผู้เผยแพร่ก่อนเปรียบเทียบต้นทุน
สร้างวิดีโอด้วย Seedance 2.5
POST /v1/video/seedance ข้อมูลอ้างอิง ส่งงานวิดีโอ GET /v1/jobs/{id} ข้อมูลอ้างอิง โพลงาน 480p · มีวิดีโออ้างอิง
ราคาอย่างเป็นทางการ
ราคา API Hop ประหยัด 2%
480p · ไม่มีวิดีโออ้างอิง
ราคาอย่างเป็นทางการ
ราคา API Hop ประหยัด 2%
720p · มีวิดีโออ้างอิง
ราคาอย่างเป็นทางการ
ราคา API Hop ประหยัด 2%
720p · ไม่มีวิดีโออ้างอิง
ราคาอย่างเป็นทางการ
ราคา API Hop ประหยัด 2%
1080p · มีวิดีโออ้างอิง
ราคาอย่างเป็นทางการ
ราคา API Hop ประหยัด 2%
1080p · ไม่มีวิดีโออ้างอิง
ราคาอย่างเป็นทางการ
ราคา API Hop ประหยัด 2%
ราคาอ้างอิงยังไม่ได้รับการตรวจสอบอย่างอิสระ โปรดตรวจสอบอัตราปัจจุบัน หน่วยคิดค่าบริการ และข้อกำหนดที่เกี่ยวข้องของผู้เผยแพร่ก่อนเปรียบเทียบต้นทุน
ตัวอย่างคำขอ
ตัวอย่างคำขอสร้างวิดีโอเหล่านี้ส่งงานข้อความเป็นวิดีโอ Seedance 2.5 หนึ่งงาน เก็บ jobId และโพล GET /v1/jobs/{jobId} โดยจำกัดเวลา ดึง outputResult หลัง COMPLETED เท่านั้น และจัดการ FAILED กับ CANCELLED แยกกัน นี่คือตัวอย่างการเชื่อมต่อ ไม่ใช่ตัวอย่างวิดีโอที่สร้าง
# Requires bash, curl and jq. A polling timeout does not cancel the job.
set -euo pipefail
BASE_URL="https://api.apihop.ai"
API_KEY='YOUR_API_KEY'
created=$(curl --fail-with-body --silent --show-error --max-time 30 \
"$BASE_URL/v1/video/seedance" \
-H "Authorization: Bearer $API_KEY" -H 'Content-Type: application/json' \
--data '{"model":"seedance-2.5","prompt":"A calm city street at dawn","duration":5,"resolution":"720p"}')
job_id=$(printf '%s' "$created" | jq -er '.data.jobId | select(. != null) | tostring')
deadline=$((SECONDS + 600))
while (( SECONDS < deadline )); do
job=$(curl --fail-with-body --silent --show-error --max-time 30 \
"$BASE_URL/v1/jobs/$job_id" -H "Authorization: Bearer $API_KEY")
status=$(printf '%s' "$job" | jq -er '.data.status')
case "$status" in
COMPLETED) printf '%s' "$job" | jq -e '.data.outputResult'; exit 0 ;;
FAILED|CANCELLED) printf 'Job %s: %s\n' "$job_id" "$status" >&2; exit 1 ;;
esac
sleep 5
done
printf 'Polling timed out; retain jobId for a later status check: %s\n' "$job_id" >&2
exit 1const baseUrl = "https://api.apihop.ai";
const headers = { Authorization: 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' };
async function request(path, options = {}) {
const response = await fetch(baseUrl + path, { ...options, headers, signal: AbortSignal.timeout(30000) });
if (!response.ok) throw new Error('HTTP ' + response.status);
const result = await response.json();
if (result.success === false) throw new Error(JSON.stringify(result.error));
return result.data;
}
const created = await request('/v1/video/seedance', { method: 'POST', body: JSON.stringify({"model":"seedance-2.5","prompt":"A calm city street at dawn","duration":5,"resolution":"720p"}) });
if (!created?.jobId) throw new Error('Missing data.jobId');
const deadline = Date.now() + 10 * 60 * 1000;
let completed = false;
while (Date.now() < deadline) {
const job = await request('/v1/jobs/' + encodeURIComponent(created.jobId));
if (job.status === 'COMPLETED') {
if (job.outputResult == null) throw new Error('Completed job has no outputResult');
console.log(job.outputResult);
completed = true;
break;
}
if (['FAILED', 'CANCELLED'].includes(job.status)) throw new Error('Job ' + job.status);
await new Promise(resolve => setTimeout(resolve, 5000));
}
if (!completed) throw new Error('Polling timed out; retain jobId for a later status check: ' + created.jobId);import json
import time
import urllib.request
base_url = "https://api.apihop.ai"
headers = {'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json'}
def request(path, body=None):
data = json.dumps(body).encode() if body is not None else None
req = urllib.request.Request(base_url + path, data=data, headers=headers)
with urllib.request.urlopen(req, timeout=30) as response:
result = json.load(response)
if result.get('success') is False:
raise RuntimeError(result.get('error'))
return result['data']
created = request('/v1/video/seedance', json.loads("{\"model\":\"seedance-2.5\",\"prompt\":\"A calm city street at dawn\",\"duration\":5,\"resolution\":\"720p\"}"))
job_id = str(created['jobId'])
deadline = time.monotonic() + 600
while time.monotonic() < deadline:
job = request('/v1/jobs/' + job_id)
if job['status'] == 'COMPLETED':
if job.get('outputResult') is None:
raise RuntimeError('Completed job has no outputResult')
print(job['outputResult'])
break
if job['status'] in ('FAILED', 'CANCELLED'):
raise RuntimeError('Job ' + job['status'])
time.sleep(5)
else:
raise TimeoutError('Polling timed out; retain jobId for a later status check: ' + job_id) ใช้ URL หลักของ API จากเอกสารบัญชีและแทนที่ตัวยึดตำแหน่งในตัวอย่าง ส่งคีย์ API ในส่วนหัว Authorization ห้ามใส่ใน URL หรือไฟล์ที่คอมมิต