Skip to main content
Base URL: https://api2.laozhang.ai/seedance/api/v3Endpoints:
  1. POST /contents/generations/tasks: create a video generation task
  2. GET /contents/generations/tasks/{id}: query task status and result
  3. GET https://api2.laozhang.ai/v1/videos/{id}/content: compatibility endpoint for downloading a completed video
Video generation is asynchronous. The create endpoint may return only the task id; poll the query endpoint until the task succeeds. You can download from the signed content.video_url, or use /v1/videos/{id}/content to download the final video file.
Read this before reviewing billing logs
  • One Seedance video task produces two billing logs, but this is not a duplicate charge. The first row is the submission pre-charge, and the second row is the final settlement after generation. Together they form the final cost of one task.
  • The SeeDance2 0.18x value is not a discount. It is the billing coefficient used to convert the upstream RMB pricing scale to the platform’s USD balance. LaoZhang API pricing is typically about 10% - 20% above the official public reference price; the exact amount is determined by actual token usage and billing logs.
Real-person faces and portrait assetsThe real-person and virtual human asset APIs are hosted at yingtu.ai and use a LaoZhang API key for authentication. An ordinary face image cannot replace the dedicated asset flow for a task that preserves a real identity or person consistency. Complete the Real-Person And Virtual Human Asset API flow. After the asset becomes Active, submit its asset://... URI as a reference_image.

Token Setup

When creating a token for Seedance 2.0 in Token management, use:
Seedance 2.0 requests must use a token assigned to the SeeDance2 group. Tokens in the default group or other video groups may produce no-channel, model mismatch, or billing-group errors.
Do not directly append the official path /api/v3/contents/generations/tasks to https://api2.laozhang.ai. Use the Base URL with the /seedance/api/v3 prefix.
Under the current relay path, GET /contents/generations/tasks without a task ID returns the site HTML instead of API JSON. Do not use the list endpoint in client integrations. Use create task plus query by task ID.

Billing And Pricing

The table below uses the official upstream RMB pricing as a cost-estimation baseline. LaoZhang API balances and logs are displayed in USD, and the SeeDance2 group uses a 0.18x coefficient to convert between the two billing scales. Reconcile the final charge using the console model price, the task’s usage.completion_tokens, and the sum of both billing logs. For planning, estimate LaoZhang API pricing at approximately 10% - 20% above the official public reference price.
Official reference: Volcengine Ark model pricing. Seedance 2.0 official billing is token-based. Cost depends on output resolution, aspect ratio, output duration, whether the request includes input video, and the final usage.completion_tokens returned by the task. It is not a fixed per-request price. Official estimation formula:

Official Pricing Examples

The examples below are from the official pricing page and assume 16:9 output with a 5 second generated video.
When the request includes video_url, official billing includes both input-video processing and output-video generation. Reconcile final cost using the task usage.completion_tokens, upstream billing records, and LaoZhang API call logs.

Why Does One Task Produce Two Billing Logs?

Seedance 2.0 runs asynchronously. When a task is created, the final token usage is not yet known, so the system cannot calculate the exact charge immediately. It first records an estimated pre-charge, then supplements or refunds the difference using the final usage.completion_tokens. One task therefore produces two logs. They are not two independent API calls, and they are not two full charges for the same video:
The second “streaming” row is generated by the settlement process. It does not mean the client used a streaming video API, and it does not represent a new request from another API key. It is normal for this row not to show the token, group, or IP; use the first pre-charge row to identify the request source.
Final task cost = pre-charge log amount + completion-settlement log amount. For example, a pre-charge of about $0.90 followed by a supplement of about $3.58 produces one final task cost of about $4.48. These are not two separate video purchases. If actual usage is below the estimate, the second row may instead return the difference. To reconcile a task:
  1. Search for doubao-seedance-2-0 in the call logs.
  2. Use the pre-charge row to confirm the token, group, and source IP.
  3. Use the completion-settlement row to read the actual completion tokens.
  4. Match the task ID, submission time, and completion time in the asynchronous task page; do not count the two rows as two videos.

What Does the SeeDance2 0.18x Billing Coefficient Mean?

0.18x is not a discount, and it is not applied again to reduce the final bill. It is the Seedance 2.0 currency-conversion coefficient. Upstream model prices use an RMB-denominated scale, while LaoZhang API balances and billing logs are displayed in USD. Use the following interpretation:
The 0.18 x 7 = 1.26 result explains the nominal currency-conversion coefficient; it does not mean that every task has a fixed 26% markup. Seedance tasks are still settled from the model price and actual token usage. For planning, LaoZhang API pricing is typically about 10% - 20% above the official public reference price. The final charge is the sum of both billing logs.
Task details may expose this coefficient as topup_convert_ratio: 0.18 while also showing group_ratio: 1. These fields serve different purposes; group_ratio: 1 does not mean that 0.18x was omitted. The pre-charge log shows SeeDance2 and 0.18x, while the final settlement row does not repeat the group and should not be interpreted as full-price billing.

API Flow

1

Create task

Call POST /contents/generations/tasks, put the plain model ID in model, and provide the prompt plus optional assets in the content array.
2

Poll status

Call GET /contents/generations/tasks/{id} until status reaches a terminal state.
3

Download result

After the task succeeds, download the video from content.video_url, or call the compatibility download endpoint /v1/videos/{id}/content to download the video file. If return_last_frame=true was set, read content.last_frame_url as well.
Status values:
The Ark-style detail response from GET /contents/generations/tasks/{id} uses status=succeeded and content.video_url. A LaoZhang-compatible task object may also expose status=completed, top-level result_url, and nested data.content.video_url. Client code should tolerate these success shapes and keep /v1/videos/{id}/content as a stable download entry point.

Models

model must be a plain model ID. Do not use console endpoint IDs, and do not append human-readable labels to the model name.
Do not pass an ep-... endpoint ID in client requests. The LaoZhang relay matches channels by plain model ID.

Create Task

Create a Seedance 2.0 video generation task.

Headers

Request Parameters

content Items

Common role values:
Audio cannot be the only reference asset. When using audio_url, include at least one image or video asset in the same request.

Text-to-Video

The create response usually contains only the task ID:

First and Last Frame

Image, Video, and Audio References

Query Task

Query the status of a video generation task.
Successful response example:
Result URLs are temporary signed URLs, usually valid for 24 hours. In production, download successful results immediately and copy them to your own object storage.

Download Result

Download the video file for a completed task through the LaoZhang compatibility endpoint.
This compatibility endpoint uses https://api2.laozhang.ai/v1, not /seedance/api/v3. After the task succeeds, it resolves the stored task result server-side and returns or redirects to a downloadable MP4.
If the task detail response contains content.video_url, you can download that signed URL directly. If the detail body is abnormal, no URL can be parsed, or you only need the video file, use /v1/videos/{id}/content.

Full Python Example

Common Integration Questions

No. The first row is the pre-charge recorded when the task is created. The second row is the supplement or refund calculated from the final usage.completion_tokens. Together they form the complete settlement for one task; add both amounts to get the final cost. It is normal for the second row not to show the token, group, or IP, and it is not another API key request.
No. 0.18x converts the upstream RMB pricing scale to the platform’s USD balance; it is not an additional discount on the final bill. Using the reference rate 1 USD ≈ 7 RMB, the nominal conversion is 0.18 x 7 = 1.26, but this does not mean every task has a fixed 26% markup. LaoZhang API pricing is typically about 10% - 20% above the official public reference price. The final charge is based on actual token usage and the sum of both billing logs.
The current path is /seedance/api/v3/contents/generations/tasks. Do not remove /api from the official path.
No. The request model must be the plain model ID, such as doubao-seedance-2-0-260128. Do not send doubao-seedance-2-0-260128 (2.0-audio-video).
Not recommended. The LaoZhang relay matches channels by plain model ID, so do not pass ep-....
In the Ark-style detail response, the final video URL is usually content.video_url. LaoZhang-compatible task objects may also return top-level result_url or nested data.content.video_url.For download-only clients, call the compatibility download endpoint:/v1/videos/{id}/content
No. Audio references must be sent with at least one image or video asset, otherwise the official API rejects the request.