Documentation Index Fetch the complete documentation index at: https://docs.apimart.ai/llms.txt
Use this file to discover all available pages before exploring further.
cURL (Step 1: Create verification session)
cURL (Step 2: Query verification result)
cURL (Step 3: Submit real-person assets)
Python
JavaScript
curl --request POST \
--url https://api.apimart.ai/v1/seedance2/real-avatar \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"callback_url": "https://example.com/callback",
"project_name": "default"
}'
200 (Step 1: Create verification session)
200 (Step 3: Submit assets)
400
401
402
429
500
{
"code" : 200 ,
"data" : {
"id" : "task_01K..." ,
"status" : "completed"
}
}
Authentication
All requests require Bearer Token authentication Get your API Key: Visit the API Key Management page to obtain your API Key Add the following header to each request: Authorization: Bearer YOUR_API_KEY
Request Parameters
Step 1: Create Real-Person Verification Session
Callback URL after verification is complete The system sends a callback notification to this address once the user completes H5 verification
Project name Default: default
Response
Response status code, 200 on success
Task information Local task ID, used to query the H5 link and byted_token
Task status, initially completed (session created successfully)
Query the task to obtain the H5 verification link:
GET /v1/tasks/task_01K...
{
"code" : 200 ,
"data" : {
"id" : "task_01K..." ,
"status" : "completed" ,
"result" : {
"byted_token" : "token_xxx" ,
"h5_link" : "https://..." ,
"raw_response" : {}
}
}
}
Step 2: Query Real-Person Verification Result
Authentication token obtained from the Step 1 task result After the user completes H5 verification, query the task via GET /v1/tasks/{id} to get byted_token, then use it here to retrieve the verification result and real-person asset group GroupId
Project name Default: default
Step 3: Batch Submit Real-Person Assets
Real-person asset group ID The GroupId obtained from the Step 2 verification result
Project name Default: default
Asset type Options:
Video - Video asset (default, recommended for real-person portraits)
Image - Image asset
Default: Video
Asset list, supports submitting multiple assets in one request Asset URL — must be publicly accessible
Example: {
"assets" : [
{
"url" : "https://example.com/avatar-a.png" ,
"name" : "avatar-a"
},
{
"url" : "https://example.com/avatar-b.png" ,
"name" : "avatar-b"
}
]
}
Response
Response status code, 200 on success
Asset review task information Local task ID, used to query asset review status
Task object type, always seedance.avatar.asset.task
Initial task status, processing after submission
Query Review Result
Asset submission is an asynchronous task. Use the Get Task Status endpoint to poll:
All Approved
{
"code" : 200 ,
"data" : {
"id" : "task_01K..." ,
"status" : "completed" ,
"progress" : 100 ,
"result" : {
"assets" : [
{
"asset_id" : "asset_a" ,
"asset_url" : "asset://asset_a" ,
"status" : "Active"
},
{
"asset_id" : "asset_b" ,
"asset_url" : "asset://asset_b" ,
"status" : "Active"
}
],
"usable_assets" : [
{
"asset_id" : "asset_a" ,
"asset_url" : "asset://asset_a" ,
"status" : "Active"
},
{
"asset_id" : "asset_b" ,
"asset_url" : "asset://asset_b" ,
"status" : "Active"
}
],
"failed_assets" : []
}
}
}
Partial Failure
{
"code" : 200 ,
"data" : {
"id" : "task_01K..." ,
"status" : "failed" ,
"progress" : 100 ,
"result" : {
"assets" : [
{
"asset_id" : "asset_a" ,
"asset_url" : "asset://asset_a" ,
"status" : "Active"
},
{
"asset_id" : "asset_b" ,
"asset_url" : "asset://asset_b" ,
"status" : "Failed"
}
],
"usable_assets" : [
{
"asset_id" : "asset_a" ,
"asset_url" : "asset://asset_a" ,
"status" : "Active"
}
],
"failed_assets" : [
{
"asset_id" : "asset_b" ,
"asset_url" : "asset://asset_b" ,
"status" : "Failed"
}
]
},
"error" : {
"code" : "task_failed" ,
"message" : "Some assets failed review"
}
}
}
result.usable_assets[].asset_url can be used directly in Seedance 2.0 video generation
Assets in result.failed_assets must be replaced or resubmitted
Using Approved Assets
Pass the asset://... URL directly to the Seedance 2.0 Video Generation endpoint:
{
"model" : "doubao-seedance-2.0-face" ,
"prompt" : "Generate a video using the reference portrait" ,
"image_with_roles" : [
{
"url" : "asset://asset_a" ,
"role" : "reference_image"
}
]
}
Real-person avatar assets are recommended for use with doubao-seedance-2.0-face or doubao-seedance-2.0-fast-face models
Once the server detects the asset:// prefix, it submits the generation task directly without triggering another asset review