Skip to main content
POST
/
v1
/
seedance2
/
real-avatar
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"
  }'
{
  "code": 200,
  "data": {
    "id": "task_01K...",
    "status": "completed"
  }
}

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 --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"
  }'
{
  "code": 200,
  "data": {
    "id": "task_01K...",
    "status": "completed"
  }
}

Authentication

Authorization
string
required
All requests require Bearer Token authenticationGet your API Key:Visit the API Key Management page to obtain your API KeyAdd the following header to each request:
Authorization: Bearer YOUR_API_KEY

Request Parameters

Step 1: Create Real-Person Verification Session

callback_url
string
required
Callback URL after verification is completeThe system sends a callback notification to this address once the user completes H5 verification
project_name
string
default:"default"
Project nameDefault: default

Response

code
integer
Response status code, 200 on success
data
object
Task information
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

byted_token
string
required
Authentication token obtained from the Step 1 task resultAfter 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
string
default:"default"
Project nameDefault: default

Step 3: Batch Submit Real-Person Assets

group_id
string
required
Real-person asset group IDThe GroupId obtained from the Step 2 verification result
project_name
string
default:"default"
Project nameDefault: default
asset_type
string
default:"Video"
Asset typeOptions:
  • Video - Video asset (default, recommended for real-person portraits)
  • Image - Image asset
Default: Video
assets
array
required
Asset list, supports submitting multiple assets in one requestExample:
{
  "assets": [
    {
      "url": "https://example.com/avatar-a.png",
      "name": "avatar-a"
    },
    {
      "url": "https://example.com/avatar-b.png",
      "name": "avatar-b"
    }
  ]
}

Response

code
integer
Response status code, 200 on success
data
object
Asset review task information

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