Skip to main content
POST
/
api
/
v1
/
client
/
job
/
asset-upload
Upload a custom asset for Seedance
curl --request POST \
  --url https://api.crun.ai/api/v1/client/job/asset-upload \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "name": "fashion-model-front",
  "asset_type": "Image",
  "asset_url": "https://example.com/assets/fashion-model-front.jpg"
}
'
{
  "code": 200,
  "message": "success",
  "data": {
    "AssetId": "asset-20260420153000-ab12c"
  }
}

Overview

Use this endpoint when your Seedance workflow needs a reviewed asset ID instead of a direct public URL. Typical cases:
  • Real-person photos
  • Realistic AI characters or avatars
  • Any material that needs to enter the asset review process before generation
Only assets whose Status is Active can be used in Seedance generation requests.

When Upload Is Required

Asset typeTypical contentHow to use
Normal imageLandscapes, products, buildings, animals, cartoons, pure scene materialUse the public URL directly in the video generation request
Human face imagePhotos containing a real personUpload first, wait for review, then use the approved asset ID
Realistic humanoid imageAI characters, virtual idols, digital humans, realistic avatarsUpload first, wait for review, then use the approved asset ID

Flow

  1. Prepare a publicly accessible resource URL.
  2. Call Seedance Asset Upload API with name, asset_type, and asset_url.
  3. If the upload succeeds, the API returns an asset_id.
  4. Asset requires review, wait until the review is approved before using it in generation. Call Seedance Asset Info API and keep polling until Status becomes Active.
  5. Use the approved asset identifier in Seedance video generation requests, typically in the form asset://xxx.

Request Example

{
  "name": "fashion-model-front",
  "asset_type": "Image",
  "asset_url": "https://example.com/assets/fashion-model-front.jpg"
}

Response Example

{
  "code": 200,
  "message": "success",
  "data": {
    "AssetId": "asset-20260420153000-ab12c"
  }
}

Use Uploaded Assets In Seedance

After approval, pass the asset ID into the Seedance video generation endpoint:
  • img_urls
  • last_frame_image
  • reference_images
  • reference_videos
  • reference_audios

Asset Info

Query upload status and wait for the asset to become active

Seedance 2.0 Image to Video

Use uploaded image assets in image-to-video requests

Seedance 2.0 Reference to Video

Use uploaded image, video, and audio assets in reference-to-video requests

Authorizations

x-api-key
string
header
required

All APIs require authentication via API Key.

Get API Key:

  1. Visit API Key Management Page to get your API Key

Usage: Add to request header:

x-api-key: YOUR_API_KEY

Note:

  • Keep your API Key secure and do not share it with others
  • If you suspect your API Key has been compromised, reset it immediately in the management page

Body

application/json
name
string
required

Display name of the asset.

Required string length: 1 - 64
Example:

"fashion-model-front"

asset_type
enum<string>
required

Type of asset being uploaded.

Available options:
Image,
Video,
Audio
Example:

"Image"

asset_url
string<uri>
required

Publicly accessible asset URL. Image, video, and audio uploads only support URL input; Base64 is not supported.

Input Requirements

General Rules

  • When passing image, video, or audio materials, only URLs are supported.
  • Base64 encoding is NOT supported.

Image Requirements

  • Formats: jpeg, png, webp, bmp, tiff, gif, heic, heif
  • Aspect Ratio (width / height): (0.4, 2.5)
  • Dimensions (px): (300, 6000)
  • File Size: less than 30 MB per image

Video Requirements

  • Formats: mp4, mov
  • Resolution: 480p, 720p
  • Duration: [2, 15] seconds
  • Dimensions:
    • Aspect Ratio (width / height): [0.4, 2.5]
    • Width/Height (px): [300, 6000]
    • Total Pixels: width × height ∈ [409600, 927408]
  • File Size: ≤ 50 MB per video
  • Frame Rate (FPS): [24, 60]

Audio Requirements

  • Formats: wav, mp3
  • Duration: [2, 15] seconds
  • File Size: ≤ 15 MB per audio
Example:

"https://example.com/assets/fashion-model-front.jpg"

Response

Upload request accepted

code
enum<integer>

Response status code

  • 200: Success - Request has been processed successfully
  • 401: Unauthorized - Authentication credentials are missing or invalid
  • 402: Insufficient Credits - Account does not have enough credits to perform the operation
  • 404: Not Found - The requested resource or endpoint does not exist
  • 422: Validation Error - The request parameters failed validation checks
  • 429: Rate Limited - Request limit has been exceeded for this resource
  • 455: Service Unavailable - System is currently undergoing maintenance
  • 500: Server Error - An unexpected error occurred while processing the request
  • 501: Generation Failed - Content generation task failed
  • 505: Feature Disabled - The requested feature is currently disabled
Available options:
200,
401,
402,
404,
422,
429,
455,
500,
501,
505
message
string

Response message, error description when failed

Example:

"success"

data
object