Văn bản thành video
Bắt đầu với prompt văn bản khi không cần phương tiện nguồn. Chọn seedance-2.0 hoặc seedance-2.5 và kiểm tra cài đặt đầu ra riêng của mô hình.
API video
So sánh API video Seedance cho quy trình văn bản thành video và dựa trên tham chiếu. Xem đầu vào hỗ trợ, giá, thăm dò tác vụ và lấy video đã hoàn tất.
Mô hình Seedance hiện tại tính phí theo token đầu ra. Thời lượng ảnh hưởng mức sử dụng ước tính; không phải đơn vị quyết toán. Giữ ID tác vụ để lấy kết quả hoặc báo lỗi.
Dành cho tác vụ cụ thể
Bắt đầu với prompt văn bản khi không cần phương tiện nguồn. Chọn seedance-2.0 hoặc seedance-2.5 và kiểm tra cài đặt đầu ra riêng của mô hình.
Tạo chuyển động cho ảnh đầu bằng prompt chuyển động. Dùng hướng dẫn ảnh thành video của mô hình đã chọn, không trộn trường từ chế độ đầu vào khác.
Cung cấp khung hình đầu và khi cần khung hình cuối để định hướng điểm đầu, cuối cảnh quay. Kiểm tra vai trò khung hình và yêu cầu phương tiện trong hướng dẫn mô hình.
Kết hợp tham chiếu theo vai trò hình ảnh, video và âm thanh trong tài liệu. Cần ít nhất một ảnh hoặc video tham chiếu; chỉ âm thanh tham chiếu là chưa đủ.
Đơn vị tính phí
USD trên mỗi triệu token đầu ra. Mức giá áp dụng phụ thuộc vào mô hình, độ phân giải đầu ra và điều kiện video tham chiếu.
Giới hạn vận hành
Hướng dẫn tích hợp
Phạm vi danh mục hiện tại
So sánh ID API, thao tác, nhà cung cấp và giá. Kiểm tra ngày danh mục và đơn vị tính phí của từng thao tác trước khi ước tính chi phí sử dụng.
Tạo video bằng Seedance 2.0.
POST /v1/video/seedance Tham khảo Gửi tác vụ video GET /v1/jobs/{id} Tham khảo Thăm dò tác vụ 480p · Có video tham chiếu
Giá chính thức
Giá API Hop Tiết kiệm 5%
480p · Không có video tham chiếu
Giá chính thức
Giá API Hop Tiết kiệm 5%
720p · Có video tham chiếu
Giá chính thức
Giá API Hop Tiết kiệm 5%
720p · Không có video tham chiếu
Giá chính thức
Giá API Hop Tiết kiệm 5%
1080p · Có video tham chiếu
Giá chính thức
Giá API Hop Tiết kiệm 5%
1080p · Không có video tham chiếu
Giá chính thức
Giá API Hop Tiết kiệm 5%
4k · Có video tham chiếu
Giá chính thức
Giá API Hop Tiết kiệm 5%
4k · Không có video tham chiếu
Giá chính thức
Giá API Hop Tiết kiệm 5%
Giá tham chiếu chưa được xác minh độc lập. Kiểm tra mức giá hiện tại, đơn vị tính phí và điều khoản áp dụng của nhà phát hành trước khi so sánh chi phí.
Tạo video bằng Seedance 2.5.
POST /v1/video/seedance Tham khảo Gửi tác vụ video GET /v1/jobs/{id} Tham khảo Thăm dò tác vụ 480p · Có video tham chiếu
Giá chính thức
Giá API Hop Tiết kiệm 2%
480p · Không có video tham chiếu
Giá chính thức
Giá API Hop Tiết kiệm 2%
720p · Có video tham chiếu
Giá chính thức
Giá API Hop Tiết kiệm 2%
720p · Không có video tham chiếu
Giá chính thức
Giá API Hop Tiết kiệm 2%
1080p · Có video tham chiếu
Giá chính thức
Giá API Hop Tiết kiệm 2%
1080p · Không có video tham chiếu
Giá chính thức
Giá API Hop Tiết kiệm 2%
Giá tham chiếu chưa được xác minh độc lập. Kiểm tra mức giá hiện tại, đơn vị tính phí và điều khoản áp dụng của nhà phát hành trước khi so sánh chi phí.
Ví dụ yêu cầu
Các ví dụ yêu cầu tạo video này gửi một tác vụ văn bản thành video Seedance 2.5, giữ jobId và thăm dò GET /v1/jobs/{jobId} với giới hạn thời gian. Chỉ lấy outputResult sau COMPLETED; xử lý riêng FAILED và CANCELLED. Đây là ví dụ tích hợp, không phải trình diễn video đã tạo.
# 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) Dùng URL cơ sở API trong tài liệu tài khoản và thay các chỗ giữ chỗ của ví dụ. Gửi khóa API trong header Authorization; tuyệt đối không đưa vào URL hoặc tệp đã commit.