Báo giá Seedance và biên nhận thanh toán
ước tính chi phí tạo Seedance và xác minh số tiền cuối cùng bằng các biên nhận thanh toán được xác thực và lưu trữ.
Báo giá Seedance và biên nhận thanh toán
Áp dụng cho seedance-2.0, seedance-2.5, seedance-2.0-fast và seedance-2.0-mini, trên tất cả các kênh tạo video. Base URL: https://apimaster.ai/v1 (https://apimaster.ai/v1). Xác thực mọi yêu cầu với Authorization: Bearer YOUR_API_KEY.
Nhận ước tính
POST https://apimaster.ai/v1/videos/quote chấp nhận các tham số JSON giống như một yêu cầu tạo video tiêu chuẩn, bao gồm model, prompt, duration, resolution, video_urls và các thiết lập tạo video được hỗ trợ khác. Hiện chưa hỗ trợ báo giá cho bản nháp (draft generation), nâng cấp bản nháp và remix.
curl "https://apimaster.ai/v1/videos/quote" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"seedance-2.0","prompt":"A paper boat on a pond","duration":4,"resolution":"480p","generate_audio":false}'
Phản hồi chứa object: "video.quote", quote_id, expires_at (giây Unix), binding: false, funds_reserved: false, và một đối tượng billing được mô tả bên dưới. Báo giá có thời hạn tham khảo là năm phút. Báo giá không trừ tiền, không tạo tác vụ và không bắt đầu tạo video phía nhà cung cấp. Do đó billing.reserved_amount là "0.000000". Mã báo giá chỉ mang tính tham khảo; đây không phải là mã ủy quyền hay khóa giữ giá và không cần gửi kèm khi tạo video.
Giá được tính lại vào thời điểm gửi thực sự và được khoá cố định cho tác vụ đó. Ước tính không phải là đảm bảo về phí tối đa. Tác vụ hoàn thành có thể tốn nhiều hơn hoặc ít hơn ước tính. Yêu cầu thời lượng tự động sử dụng ước tính đầu ra 30 giây; requested_output_seconds là -1.
Việc tạo video vẫn tuân theo kiểm tra của nhà cung cấp. Đối với yêu cầu mở rộng video trên Seedance 2.5, hãy đặt rõ aspect_ratio: "adaptive"; nếu nhà cung cấp từ chối, trường hợp này sẽ được xử lý thông qua quy trình hoàn tiền tiêu chuẩn.
Lấy biên nhận của tác vụ
curl "https://apimaster.ai/v1/videos/task_xxx/billing" \
-H "Authorization: Bearer YOUR_API_KEY"
GET /v1/videos/{task_id}/billing trả về object: "video.billing_receipt" và billing. Chỉ các API key thuộc tài khoản chủ sở hữu tác vụ mới có thể lấy được. Các tác vụ không rõ, của người khác hoặc các tác vụ lịch sử chưa có biên nhận sẽ trả về HTTP 404. Biên nhận được tạo cho các tác vụ mới sau khi tính năng này được bật; các tác vụ cũ không được dựng lại theo chiều ngược lại.
Đối tượng billing tương tự cũng được đưa vào cả hai phản hồi truy vấn tác vụ:
GET /v1/videos/{task_id}:billingở cấp cao nhất.GET /v1/video/generations/{task_id}:data.billing.
settlement_status có thể là pending, settled hoặc refunded; phản hồi báo giá dùng estimate. Hoàn thành tác vụ và quyết toán tài chính là hai việc riêng biệt: chỉ coi các khoản tiền là cuối cùng khi biên nhận ở trạng thái settled hoặc refunded. Yêu cầu lấy biên nhận lặp lại không kích hoạt tạo video, quyết toán hay hoàn tiền. Biên nhận đã chốt giữ nguyên mã và nội dung biên nhận, kể cả sau khi hoàn tiền.
Ví dụ đầy đủ về yêu cầu và phản hồi
Cả hai ví dụ đều dùng Seedance 2.0 ở độ phân giải 480P, thời lượng đầu ra yêu cầu 4 giây, một tệp tham chiếu được đo là 4,042 giây, hệ số kênh bằng 1 và hệ số tài khoản bằng 1,05. Thời lượng hoàn thành và số tiền lấy từ một bài kiểm tra thực; báo giá là một ví dụ minh họa được lắp ghép cho các đầu vào tương ứng. Các ID và URL media là dữ liệu mẫu. Tỷ lệ thực tế đến từ phản hồi API của bạn.
1. Nhận báo giá
POST https://apimaster.ai/v1/videos/quote, JSON yêu cầu:
{
"model": "seedance-2.0",
"prompt": "A paper boat moves gently on a pond.",
"duration": 4,
"resolution": "480p",
"video_urls": [
"https://example.com/reference.mp4"
]
}
| Trường | Kiểu | Ý nghĩa |
|---|---|---|
model |
string | Mã model, ở đây là seedance-2.0. |
prompt |
string | Lời nhắc tạo video. |
duration |
integer | Số giây đầu ra yêu cầu, không phải thời lượng video tham chiếu. |
resolution |
string | Độ phân giải đầu ra, ở đây là 480p. |
video_urls |
array |
URL của các video tham chiếu. Thay dữ liệu mẫu bằng media có thể truy cập; máy chủ sẽ đo từng tệp. |
Phản hồi báo giá:
{
"object": "video.quote",
"quote_id": "quote_example",
"expires_at": 1790949324,
"binding": false,
"funds_reserved": false,
"billing": {
"schema_version": "1",
"settlement_status": "estimate",
"model": "seedance-2.0",
"resolution": "480P",
"tariff_variant": "480P-input",
"tariff_revision": "sd-v1-b79a35d3a29af9af",
"currency": "USD",
"unit": "second",
"base_unit_rate": "0.04319",
"channel_multiplier": 1,
"account_multiplier": 1.05,
"effective_unit_rate": "0.0453495",
"requested_output_seconds": 4,
"estimated_output_seconds": 4,
"estimated_billable_seconds": 9,
"input_videos": [
{
"index": 0,
"media_id": "media_example_hash",
"measured_seconds": 4.042,
"billable_seconds": 5,
"duration_source": "apimaster_probe"
}
],
"billable_input_video_seconds": 5,
"output": null,
"billable_seconds": null,
"rounding": {
"amount_formula": "round(total_billable_seconds * effective_unit_rate / account_unit_usd) * account_unit_usd",
"effective_unit_rate": "nearest_decimal_12_places_half_up",
"input_video": "ceil_each_file_then_sum",
"money": "nearest_account_unit_half_up",
"output_video": "nearest_integer_half_up"
},
"estimated_amount": "0.408146",
"reserved_amount": "0.000000",
"additional_debit_amount": "0.000000",
"final_debit_amount": null,
"refunded_amount": "0.000000",
"net_amount": null,
"initial_quota_units": 0,
"final_quota_units": null,
"account_unit_usd": "0.000002",
"media_charges": {
"audio": "0.000000",
"image": "0.000000",
"input_video_unrounded": "0.2267475",
"other_reference": "0.000000",
"output_video_unrounded": "0.181398"
},
"final_debit_may_exceed_estimate": true,
"created_at": 1790949024,
"settled_at": null
}
}
Đầu vào 4,042 giây được làm tròn lên thành 5 giây. Với 4 giây đầu ra ước tính, ước tính bao gồm tổng cộng 9 giây và có giá 0.408146 USD. Báo giá không trừ tiền; các số tiền cuối cùng vẫn là null.
2. Gửi yêu cầu tạo video và truy vấn hoàn thành
Sau khi gửi tới POST https://apimaster.ai/v1/videos/generations, phản hồi ban đầu chứa mã tác vụ:
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_example"
}
]
}
Sau đó truy vấn GET https://apimaster.ai/v1/videos/task_example bằng một API key từ cùng tài khoản. Sau khi tạo video và quyết toán hoàn tất:
{
"actual_time": 189,
"billing": {
"schema_version": "1",
"receipt_id": "bill_task_example",
"task_id": "task_example",
"settlement_status": "settled",
"model": "seedance-2.0",
"resolution": "480P",
"tariff_variant": "480P-input",
"tariff_revision": "sd-v1-b79a35d3a29af9af",
"currency": "USD",
"unit": "second",
"base_unit_rate": "0.04319",
"channel_multiplier": 1,
"account_multiplier": 1.05,
"effective_unit_rate": "0.0453495",
"requested_output_seconds": 4,
"estimated_output_seconds": 4,
"estimated_billable_seconds": 9,
"input_videos": [
{
"index": 0,
"media_id": "media_example_hash",
"measured_seconds": 4.042,
"billable_seconds": 5,
"duration_source": "apimaster_probe"
}
],
"billable_input_video_seconds": 5,
"output": {
"actual_seconds": 4,
"billable_seconds": 4,
"duration_source": "provider_reported"
},
"billable_seconds": 9,
"rounding": {
"amount_formula": "round(total_billable_seconds * effective_unit_rate / account_unit_usd) * account_unit_usd",
"effective_unit_rate": "nearest_decimal_12_places_half_up",
"input_video": "ceil_each_file_then_sum",
"money": "nearest_account_unit_half_up",
"output_video": "nearest_integer_half_up"
},
"estimated_amount": "0.408146",
"reserved_amount": "0.408146",
"additional_debit_amount": "0.000000",
"final_debit_amount": "0.408146",
"refunded_amount": "0.000000",
"net_amount": "0.408146",
"initial_quota_units": 204073,
"final_quota_units": 204073,
"account_unit_usd": "0.000002",
"media_charges": {
"audio": "0.000000",
"image": "0.000000",
"input_video_unrounded": "0.2267475",
"other_reference": "0.000000",
"output_video_unrounded": "0.181398"
},
"final_debit_may_exceed_estimate": true,
"created_at": 1790949024,
"settled_at": 1790949213
},
"completed_at": 1790949213,
"created_at": 1790949024,
"id": "task_example",
"metadata": {
"url": "https://apimaster.ai/v1/videos/task_example/content"
},
"model": "seedance-2.0",
"object": "video",
"progress": 100,
"status": "completed",
"task_id": "task_example",
"usage": {
"completion_tokens": 80770
}
}
Ở ví dụ này, số tiền trừ ban đầu bằng chi phí cuối cùng, không có khoản trừ thêm hay hoàn tiền nào. billing.output.actual_seconds là thời lượng đầu ra; actual_time là thời gian xử lý. usage.completion_tokens không quyết định số tiền tính. Các trường tùy chọn có thể khác nhau tùy kênh.
GET https://apimaster.ai/v1/videos/task_example/billing trả về { "object": "video.billing_receipt", "billing": ... } với cùng đối tượng billing. Truy vấn tương thích GET https://apimaster.ai/v1/video/generations/task_example đặt nó dưới data.billing.
Các trường của phản hồi ngoài cùng
| Trường | Kiểu | Ý nghĩa |
|---|---|---|
object |
string | Loại phản hồi: video.quote, video hoặc video.billing_receipt. |
quote_id |
string | Mã báo giá tham khảo; không phải khóa giữ giá hay ủy quyền tạo video. |
expires_at |
integer | Thời hạn báo giá tham khảo theo giây Unix, thường là thời điểm tạo cộng 300 giây. |
binding |
boolean | Hiện là false; báo giá không đảm bảo một số tiền cuối cùng. |
funds_reserved |
boolean | Hiện là false; báo giá không trừ hay giữ chỗ tiền. |
billing |
object | Chi tiết thanh toán được mô tả riêng bên dưới. |
code |
integer | Mã phản hồi khi gửi; 200 nghĩa là đã gửi, chưa phải hoàn thành. |
data |
array | Danh sách tác vụ đã gửi; truy vấn tương thích dùng object cho data. |
data[].status |
string | Trạng thái gửi, trong ví dụ này là submitted. |
data[].task_id |
string | Mã tác vụ công khai dùng cho các truy vấn tiếp theo. |
id |
string | Mã tác vụ công khai trong truy vấn hoàn thành. |
task_id |
string | Mã tác vụ, bằng id trong ví dụ này. |
model |
string | Tên model tạo video công khai. |
status |
string | Trạng thái tác vụ; completed nghĩa là đã tạo video xong. Kiểm tra billing.settlement_status để biết quyết toán cuối cùng. |
progress |
number | Phần trăm tiến độ; 100 khi hoàn thành trong ví dụ này. |
actual_time |
number | Số giây xử lý tác vụ, không phải thời lượng video đầu ra. |
created_at |
integer | Thời điểm tạo tác vụ theo giây Unix. |
completed_at |
integer | Thời điểm hoàn thành tác vụ theo giây Unix. |
metadata |
object | Siêu metadata kết quả tạo video. |
metadata.url |
string | URL tải nội dung video. |
usage |
object | Thông tin sử dụng của nhà cung cấp; có thể không có tùy kênh. |
usage.completion_tokens |
integer | Số token của nhà cung cấp; không dùng để tính phí theo giây cho bốn model này. |
Sơ đồ thanh toán
Tất cả số tiền và đơn giá đều là chuỗi thập phân. Thời lượng là giây. Các trường có thể null sẽ là JSON null cho đến khi có giá trị.
| Trường | Kiểu | Ý nghĩa |
|---|---|---|
schema_version |
string | Phiên bản sơ đồ thanh toán, trong ví dụ này là "1". |
receipt_id |
string | Mã biên nhận ổn định; không có trong báo giá. |
task_id |
string | Mã tác vụ công khai liên kết với biên nhận; không có trong báo giá. |
settlement_status |
string | estimate, pending, settled, refunded |
model |
string | Mã model công khai đã áp dụng. |
resolution |
string | Độ phân giải chuẩn hóa dùng để thanh toán. |
tariff_variant |
string | Hạng giá; -input cho biết có video tham chiếu, với tỷ lệ này áp dụng cho cả đầu vào và đầu ra. |
tariff_revision |
string | Dấu vân tay của model, hạng giá, đơn giá cơ sở đã cấu hình và phiên bản quy tắc thanh toán |
currency |
string | Tiền tệ tính phí, hiện là USD. |
unit |
string | Đơn vị của đơn giá; second nghĩa là trên mỗi giây. |
base_unit_rate |
decimal string | Đơn giá cơ sở mỗi giây đã cấu hình cho model và hạng giá này. |
channel_multiplier |
number | Hệ số tổng hợp định giá kênh đã áp dụng. |
account_multiplier |
number | Hệ số tài khoản/nhóm đã áp dụng, trong ví dụ này là 1,05. |
effective_unit_rate |
decimal string | Đơn giá mỗi giây đã áp dụng, được khoá cố định khi gửi và làm tròn tới 12 chữ số thập phân. |
requested_output_seconds |
integer | Thời lượng đầu ra yêu cầu; -1 khi thời lượng tự động |
estimated_output_seconds |
integer | Số giây đầu ra ước tính; thời lượng tự động được ước tính là 30 giây. |
estimated_billable_seconds |
integer | Tổng số giây có thể tính phí ước tính ban đầu, bao gồm video tham chiếu và đầu ra ước tính. |
input_videos |
array | Đo lường từng tệp tham chiếu phía máy chủ, theo thứ tự yêu cầu |
input_videos[].index |
integer | Vị trí video tham chiếu trong yêu cầu, bắt đầu từ không. |
input_videos[].media_id |
string | Băm media phạm vi tài khoản hoặc mã asset thuộc sở hữu; không trả về URL video tham chiếu. |
input_videos[].measured_seconds |
number or null | Thời lượng đo được trước khi làm tròn; có thể null với các asset đã lưu trong bộ nhớ đệm cũ |
input_videos[].billable_seconds |
integer | Thời lượng có thể tính phí đã làm tròn của tham chiếu này |
input_videos[].duration_source |
string | apimaster_probe hoặc apimaster_asset_cache |
billable_input_video_seconds |
integer | Tổng số giây có thể tính phí của từng tham chiếu |
output |
object or null | Thông tin thời lượng đầu ra cuối cùng, có sẵn sau khi quyết toán thành công |
output.actual_seconds |
number or null | Thời lượng đầu ra thực tế do báo cáo/đo được; null nếu không có |
output.billable_seconds |
integer | Số giây đầu ra thực sự dùng trong quyết toán |
output.duration_source |
string | provider_reported, apimaster_probe, provider_billable_seconds, requested_duration_fallback hoặc reservation_fallback |
billable_seconds |
integer or null | Tổng số giây đầu vào/đầu ra có thể tính phí cuối cùng |
rounding |
object | Quy tắc làm tròn đầu vào, đầu ra, tiền và công thức số tiền |
estimated_amount |
decimal string | Chi phí ước tính ban đầu, không phải số tiền cuối cùng hay đảm bảo phí tối đa. |
reserved_amount |
decimal string | Số tiền trừ vào tài khoản ban đầu khi gửi, bằng không với báo giá; không phải khoản giữ chỗ ủy quyền của ngân hàng. |
additional_debit_amount |
decimal string | Khoản trừ thêm khi chi phí cuối cùng vượt số tiền trừ ban đầu. |
final_debit_amount |
decimal string or null | Chi phí ròng cuối cùng của tác vụ sau khi điều chỉnh; bằng không sau khi hoàn tiền toàn bộ |
net_amount |
decimal string or null | Chi phí ròng cuối cùng của tác vụ sau khi điều chỉnh; bằng không sau khi hoàn tiền toàn bộ |
refunded_amount |
decimal string | Số tiền được trả lại từ số tiền trừ ban đầu; bằng số tiền trừ ban đầu nếu hoàn tiền toàn bộ. |
initial_quota_units |
integer | Số đơn vị tài khoản chính xác bị trừ ban đầu; bằng không với báo giá. |
final_quota_units |
integer or null | Số đơn vị tài khoản chính xác của chi phí ròng cuối cùng; null khi đang chờ, bằng không sau khi hoàn tiền toàn bộ. |
account_unit_usd |
decimal string | "0.000002" cho mỗi đơn vị tài khoản |
media_charges |
object | image, audio, other_reference bằng không theo bảng giá hiện tại; input_video_unrounded và output_video_unrounded tách các thành phần video trước khi làm tròn tiền cuối cùng |
final_debit_may_exceed_estimate |
boolean | true; ước tính không phải là giới hạn chi tiêu cứng |
created_at |
integer | Thời điểm tạo chi tiết thanh toán theo giây Unix. |
settled_at |
integer or null | Thời điểm quyết toán hoặc hoàn tiền cuối cùng theo giây Unix; null cho đến khi chốt. |
| Trường | Kiểu | Ý nghĩa |
|---|---|---|
rounding.input_video |
string | ceil_each_file_then_sum: làm tròn lên từng tệp đầu vào, sau đó cộng lại. |
rounding.output_video |
string | nearest_integer_half_up: làm tròn tới giây đầu ra gần nhất, các nửa giây làm tròn lên. |
rounding.effective_unit_rate |
string | nearest_decimal_12_places_half_up: làm tròn đơn giá hiệu lực tới 12 chữ số thập phân. |
rounding.money |
string | nearest_account_unit_half_up: làm tròn số tiền tổng hợp tới các đơn vị tài khoản. |
rounding.amount_formula |
string | Công thức số tiền tổng hợp cuối cùng; số tiền đầu vào và đầu ra không được làm tròn riêng lẻ. |
media_charges.input_video_unrounded |
decimal string | Thành phần video đầu vào trước khi làm tròn tiền. |
media_charges.output_video_unrounded |
decimal string | Thành phần video đầu ra trước khi làm tròn tiền. |
media_charges.image |
decimal string | Phụ phí ảnh riêng biệt, hiện bằng không. |
media_charges.audio |
decimal string | Phụ phí âm thanh riêng biệt, hiện bằng không. |
media_charges.other_reference |
decimal string | Phụ phí tham chiếu khác, hiện bằng không. |
Tính lại chi phí cuối cùng
Với video tham chiếu, hạng giá đầu vào video áp dụng cho cả giây đầu ra và giây video tham chiếu. Ảnh và âm thanh không có phụ phí riêng theo bảng giá Seedance hiện tại. Số lượng token và chi phí nhà cung cấp không phải là đầu vào thanh toán.
- Làm tròn lên thời lượng đo được của từng video đầu vào một cách độc lập, sau đó cộng lại:
input_seconds = sum(ceil(each_video_duration)). - Làm tròn thời lượng đầu ra tới số giây nguyên gần nhất, với các nửa giây dương được làm tròn lên.
- Cộng số giây có thể tính phí của đầu vào và đầu ra.
- Nhân với
effective_unit_rate, chia choaccount_unit_usd, sau đó làm tròn tổng một lần tới đơn vị tài khoản nguyên gần nhất, với các nửa đơn vị dương được làm tròn lên.
final_quota_units = round_half_up(billable_seconds × effective_unit_rate / 0.000002)
net_amount = final_quota_units × 0.000002
net_amount = reserved_amount + additional_debit_amount - refunded_amount
Dùng phép tính thập phân. Không làm tròn riêng các thành phần tiền của đầu vào và đầu ra. Ví dụ, một tác vụ Seedance 2.0 4 giây ở 480P, không có video tham chiếu, với đơn giá cơ sở 0.07031, hệ số kênh 1 và hệ số tài khoản 1.05, có đơn giá hiệu lực là 0.0738255 và chi phí ròng là 0.295302 USD (147651 đơn vị tài khoản).
APIMaster đo thời lượng video tham chiếu thay vì tin các trường của client như input_seconds hoặc reference_seconds. duration/seconds được yêu cầu kiểm soát thời lượng đầu ra. Đối với đầu ra, quyết toán ưu tiên thời lượng do nhà cung cấp báo cáo và đo kiểm đầu ra khi cần; nếu không đo được, có thể dùng số giây có thể tính phí của nhà cung cấp hoặc thời lượng yêu cầu/giữ chỗ làm phương án dự phòng. Biên nhận ghi rõ nguồn. Phương án dự phòng không bao giờ được dán nhãn là thời lượng thực tế đo được một cách độc lập. Các asset đã lưu sẵn hoặc các bản nháp kế thừa từ trước có thể thiếu chi tiết đo lường từng tệp đầy đủ.
actual_time trong phản hồi video là thời gian xử lý tác vụ, không phải thời lượng video đầu ra. usage.completion_tokens, khi có, chỉ mang tính tham khảo.
Lỗi và hoàn tiền
Lỗi tác vụ của nhà cung cấp và thời gian chờ 24 giờ cho tác vụ chưa hoàn thành đã cấu hình sẽ kích hoạt hoàn tiền toàn bộ tự động. Biên nhận của chúng vẫn có thể lấy được và hiển thị refunded với số tiền ròng bằng không sau khi hoàn tiền thành công. Lỗi truy vấn/mạng tạm thời không hoàn tiền hay hủy tác vụ ngay lập tức; việc xử lý sẽ được thử lại.
Một lỗi gửi đã xác nhận không bị tính phí sẽ được hoàn tiền. Kết quả gửi không rõ ràng sẽ được giữ để đối soát tự động (lần đối soát bất đồng bộ đầu tiên sau khoảng 20 phút; các kết quả vẫn chưa rõ sau 24 giờ sẽ được hoàn tiền trong quá trình đối soát). Nếu việc gửi không tạo ra một tác vụ công khai, sẽ không có biên nhận liên kết tác vụ cho lần thử đó. Báo giá không phải là giữ chỗ và không cần giải phóng.
Không có điểm cuối (endpoint) hủy Seedance công khai. Ngắt kết nối hoặc dừng truy vấn không hủy tác vụ. Các kiểm tra trạng thái tác vụ ngăn việc truy vấn lặp lại áp dụng cùng một quyết toán/hoàn tiền hoàn thành lần nữa, trong khi chính endpoint biên nhận chỉ đọc. Đây không phải là bảo đảm exactly-once tuyệt đối cho mọi lỗi hạ tầng; các thao tác tài chính đang chờ không được coi là đã chốt.
