Models Hub
API ReferenceSeedance 2.x

Asset Upload & Management

Upload image, video, and audio assets via /api/assets/upload and reference them with asset:// in Seedance 2.x tasks.

Edit this page

Seedance 2.x reference images, videos, and audio can be uploaded to the asset library first and then referenced in video generation requests with asset://<asset_id>. The asset endpoints all authenticate with your user API key, which is ideal when you need to reuse assets and avoid passing a public URL every time.

Assets and generation tasks must live on the same upstream account, otherwise the asset:// reference cannot be resolved. Where an asset is stored is decided by the ?model= query parameter — the asset goes to whichever upstream serves that model. Always pass ?model=, and use the same model name for the subsequent generation task.

Seedance 2.5 accepts far more reference material than 2.0 (30 images, 10 videos, 10 audio clips, plus audio-only input), which makes the asset library considerably more useful there.

Endpoints

OperationEndpoint
Upload assetPOST /api/assets/upload
Query asset detailGET /api/assets/{id}

Upload specifications

Asset upload only supports URLs, not Base64.

TypeFormatsLimits
Imagejpeg, png, webp, bmp, tiff, gif, heic, heifAspect ratio 0.4 to 2.5; width or height 300 to 6000 px; under 30MB
Videomp4, mov480p or 720p; 2 to 15 seconds; aspect ratio 0.4 to 2.5; width or height 300 to 6000 px; up to 50MB; 24 to 60 FPS
Audiowav, mp32 to 15 seconds; up to 15MB

Upload an asset

Seedance 2.5

curl -X POST "$MODELSOK_BASE_URL/api/assets/upload?model=seedance-2.5" \
  -H "Authorization: Bearer $MODELSOK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/image.png",
    "asset_type": "Image",
    "name": "sample image"
  }'

Overseas 2.0 series

curl -X POST "$MODELSOK_BASE_URL/api/assets/upload?model=seedance-2.0" \
  -H "Authorization: Bearer $MODELSOK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/image.png",
    "asset_type": "Image",
    "name": "sample image"
  }'

Domestic models

curl -X POST "$MODELSOK_BASE_URL/api/assets/upload?model=doubao-seedance-2-0-260128" \
  -H "Authorization: Bearer $MODELSOK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/image.png",
    "asset_type": "Image",
    "name": "sample image"
  }'

On success, save data.Id:

{
  "code": 0,
  "message": "ok",
  "data": {
    "Id": "asset-20260325152211-vcchd"
  }
}

Query asset detail

curl "$MODELSOK_BASE_URL/api/assets/asset-20260325152211-vcchd?model=dreamina-seedance-2-0-fast-260128" \
  -H "Authorization: Bearer $MODELSOK_API_KEY"

Example response:

{
  "code": 0,
  "message": "ok",
  "data": {
    "AssetType": "Image",
    "CreateTime": "2026-03-25T15:22:11Z",
    "GroupId": "group-20260324135506-xxxxx",
    "Id": "asset-20260325152211-vcchd",
    "Name": "sample image",
    "ProjectName": "default",
    "Status": "Active",
    "URL": "https://example.com/image.png",
    "UpdateTime": "2026-03-25T15:22:11Z"
  }
}

Once the Status in the detail response is Active, the asset can be used in video generation requests.

Reference assets in video generation

Official Seedance 2.0 content[] format:

{
  "model": "doubao-seedance-2-0-260128",
  "content": [
    {
      "type": "text",
      "text": "Make the character dance"
    },
    {
      "type": "image_url",
      "image_url": {
        "url": "asset://asset-20260325152211-vcchd"
      },
      "role": "reference_image"
    }
  ],
  "resolution": "480p",
  "ratio": "16:9",
  "duration": 5,
  "watermark": false
}

Generic video /v1/video/generations format:

{
  "model": "doubao-seedance-2-0-260128",
  "prompt": "Make the character dance",
  "image": "asset://asset-20260325152211-vcchd",
  "duration": 5,
  "size": "480p",
  "metadata": {
    "ratio": "16:9",
    "watermark": false
  }
}

Video and audio assets use the same asset://<asset_id> syntax, placed in metadata.video_url and metadata.audio_url respectively.

On this page