Seedance 2.5
Seedance 2.5 models are called through one unified, asynchronous job API. Start a task with POST /api/generate, then poll GET /api/generate/{taskId} until it finishes. This family exposes 10 endpoints.
Overview
Every endpoint shares the same envelope — only model and the input fields change. Run any from the Models Market playground.
Three mutually exclusive modes — match fields to the model slug:
- image-to-video:
first_frame_urlonly;aspect_ratiomust beadaptive; setfirst_frame_portrait_kind: skipfor scenes. - first-last-frame:
first_frame_url+last_frame_url; also requiresadaptive. - omni-reference:
reference_image_urlsplus optional video/audio; mark portraitsvirtual/real, backgroundsskip; fixed ratios like16:9work.
On direct routes, only portraits are ingested to the portrait library; scenes, video, and audio stay as direct URLs. Copy the full API doc from the model API tab.
reference_image_urls with reference_portrait_kinds per slot:virtual (portrait library — real or AI; real is equivalent), skip (background/scene — default when omitted). Single-frame and first/last-frame models use first_frame_url / last_frame_url (ingested by default); set first_frame_portrait_kind to skip to keep a direct URL.Seedance 2 reference media limits
Reference images
- Formats
- JPEG, PNG, WEBP, BMP, TIFF, GIF
- Width / height
- 300-6000 px
- Aspect ratio
- 0.4-2.5
- File size
- < 30 MB
Reference videos
- Formats
- MP4, MOV
- Resolution tiers
- 480p, 720p
- Duration per file
- 2-15 s
- Count / total duration
- Up to 3 / no more than 15 s total
- Width / height
- 300-6000 px
- Total pixels
- 409600-927408
- Aspect ratio
- 0.4-2.5
- File size
- <= 50 MB
- Frame rate
- 24-60 FPS
Reference audio
- Formats
- WAV, MP3
- Duration per file
- 2-15 s
- Count / total duration
- Up to 3 / no more than 15 s total
- File size
- <= 15 MB
- Sample rate / channels
- Not publicly disclosed
- Audio codec
- Not publicly disclosed
Output video
- resolution
- 480p, 720p, 1080p, 4k
- aspect_ratio
- 1:1, 4:3, 3:4, 16:9, 9:16, 21:9, adaptive
- Exact pixel dimensions
- Not publicly disclosed; a fixed width and height are not guaranteed
Authentication
Create an API key at /api-keys, then send it as a Bearer token. Requests from the browser while logged in also work via the session cookie.
Authorization: Bearer <YOUR_API_KEY>Create Task
POST https://97ai.97claude.com/api/generateBody: { "model": "<slug>", "input": { … } }
Response: { "taskId": "<id>", "state": "waiting" }
Query Result
GET https://97ai.97claude.com/api/generate/<taskId>Response: { "taskId", "state": "waiting" | "success" | "fail", "resultUrls": [ … ], "creditsConsumed", "failMsg", "balance" }
state becomes success or fail. Failed tasks are not billed.Endpoints
| Model | Task | model slug |
|---|---|---|
| Seedance 2.5 | Text to Video | seedance-2.5-text-to-video |
| Seedance 2.5 Text to Video | Text to Video | seedance-2.5-text-to-video-480p |
| Seedance 2.5 Image to Video | Image to Video | seedance-2.5-image-to-video |
| Seedance 2.5 Image to Video | Image to Video | seedance-2.5-image-to-video-480p |
| Seedance 2.5 First & Last Frame | Image to Video | seedance-2.5-first-last-frame |
| Seedance 2.5 First & Last Frame | Image to Video | seedance-2.5-first-last-frame-480p |
| Seedance 2.5 Omni Reference | Image to Video | seedance-2.5-omni-reference |
| Seedance 2.5 Omni Reference | Image to Video | seedance-2.5-omni-reference-480p |
| Seedance 2.5 Spicy Text to Video | Text to Video | seedance-2.5-spicy-text-to-video |
| Seedance 2.5 Spicy Image to Video | Image to Video | seedance-2.5-spicy-image-to-video |
Seedance 2.5 · Text to Video
seedance-2.5-text-to-videofirst_frame_urlstringoptionalFirst-frame image URL or asset://{assetId}. Mutually exclusive with reference_* fields.
last_frame_urlstringoptionalLast-frame image URL or asset://{assetId}. Requires first_frame_url.
first_frame_portrait_kindenum<string>optionalPortrait-library route: ingest hint for first_frame_url. Default skip (direct URL). Use virtual/real to upload portraits to the asset library.
last_frame_portrait_kindenum<string>optionalPortrait-library route: ingest hint for last_frame_url. Default skip (direct URL). Use virtual/real to upload portraits to the asset library.
promptstringrequiredText prompt describing the video to generate (max 30000 characters).
reference_image_urlsarray<string>optionalReference image URLs (max 30). Mutually exclusive with first/last frame fields.
reference_video_urlsarray<string>optionalReference video URLs (max 10; total duration ≤30s).
reference_audio_urlsarray<string>optionalReference audio URLs (max 10; total duration ≤30s).
generate_audiobooleanoptionalGenerate synchronized audio with the video.
return_last_framebooleanoptionalReturn the generated video's last frame. Cannot be true when draft=true.
resolutionenum<string>optionalOutput video resolution.
aspect_ratioenum<string>optionalOutput aspect ratio.
durationintegeroptionalVideo duration from 4 to 30 seconds, or -1 for automatic selection.
output_formatenum<string>optionalVideo output format.
web_searchbooleanoptionalEnable online search for the generation.
nsfw_checkerbooleanoptionalEnable content safety checking.
curl -X POST https://97ai.97claude.com/api/generate \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5-text-to-video",
"input": {
"aspect_ratio": "16:9",
"duration": 5,
"generate_audio": true,
"output_format": "mp4",
"resolution": "720p",
"return_last_frame": false,
"web_search": false,
"prompt": "在房间里跳舞"
}
}'Seedance 2.5 Text to Video · Text to Video
seedance-2.5-text-to-videofirst_frame_urlstringoptionalFirst-frame image URL or asset://{assetId}. Mutually exclusive with reference_* fields.
last_frame_urlstringoptionalLast-frame image URL or asset://{assetId}. Requires first_frame_url.
first_frame_portrait_kindenum<string>optionalPortrait-library route: ingest hint for first_frame_url. Default skip (direct URL). Use virtual/real to upload portraits to the asset library.
last_frame_portrait_kindenum<string>optionalPortrait-library route: ingest hint for last_frame_url. Default skip (direct URL). Use virtual/real to upload portraits to the asset library.
promptstringrequiredText prompt describing the video to generate (max 30000 characters).
reference_image_urlsarray<string>optionalReference image URLs (max 30). Mutually exclusive with first/last frame fields.
reference_video_urlsarray<string>optionalReference video URLs (max 10; total duration ≤30s).
reference_audio_urlsarray<string>optionalReference audio URLs (max 10; total duration ≤30s).
generate_audiobooleanoptionalGenerate synchronized audio with the video.
return_last_framebooleanoptionalReturn the generated video's last frame. Cannot be true when draft=true.
resolutionenum<string>optionalOutput video resolution.
aspect_ratioenum<string>optionalOutput aspect ratio.
durationintegeroptionalVideo duration from 4 to 30 seconds, or -1 for automatic selection.
output_formatenum<string>optionalVideo output format.
web_searchbooleanoptionalEnable online search for the generation.
nsfw_checkerbooleanoptionalEnable content safety checking.
curl -X POST https://97ai.97claude.com/api/generate \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5-text-to-video",
"input": {
"aspect_ratio": "16:9",
"duration": 5,
"generate_audio": true,
"output_format": "mp4",
"resolution": "480p",
"return_last_frame": false,
"web_search": false,
"prompt": "在房间里跳舞"
}
}'Seedance 2.5 Image to Video · Image to Video
seedance-2.5-image-to-videofirst_frame_urlstringrequiredURL of the input image to animate, or asset://{assetId} after portrait ingest.
first_frame_portrait_kindenum<string>optionalPortrait-library route: ingest hint for first_frame_url. Default skip (direct URL). Use virtual/real to upload portraits to the asset library.
promptstringrequiredText prompt describing the video motion and style.
generate_audiobooleanoptionalGenerate synchronized audio with the video.
return_last_framebooleanoptionalReturn the generated video's last frame. Cannot be true when draft=true.
resolutionenum<string>optionalOutput video resolution.
aspect_ratioenum<string>optionalMust be adaptive — the direct route follows the input image aspect ratio for keyframe-driven tasks.
durationintegeroptionalVideo duration from 4 to 30 seconds, or -1 for automatic selection.
output_formatenum<string>optionalVideo output format.
web_searchbooleanoptionalEnable online search for the generation.
nsfw_checkerbooleanoptionalEnable content safety checking.
curl -X POST https://97ai.97claude.com/api/generate \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5-image-to-video",
"input": {
"aspect_ratio": "adaptive",
"duration": 5,
"generate_audio": true,
"output_format": "mp4",
"resolution": "720p",
"return_last_frame": false,
"web_search": false,
"prompt": "在房间里跳舞",
"first_frame_url": "https://frw-images.aiaipic.win/users/3514640099037941760/ai_generated/20260818/038f9f68-004f-4017-a09d-74b3da84e569.png",
"first_frame_portrait_kind": "virtual"
}
}'Seedance 2.5 Image to Video · Image to Video
seedance-2.5-image-to-video-480pfirst_frame_urlstringrequiredURL of the input image to animate, or asset://{assetId} after portrait ingest.
first_frame_portrait_kindenum<string>optionalPortrait-library route: ingest hint for first_frame_url. Default skip (direct URL). Use virtual/real to upload portraits to the asset library.
promptstringrequiredText prompt describing the video motion and style.
generate_audiobooleanoptionalGenerate synchronized audio with the video.
return_last_framebooleanoptionalReturn the generated video's last frame. Cannot be true when draft=true.
resolutionenum<string>optionalOutput video resolution.
aspect_ratioenum<string>optionalMust be adaptive — the direct route follows the input image aspect ratio for keyframe-driven tasks.
durationintegeroptionalVideo duration from 4 to 30 seconds, or -1 for automatic selection.
output_formatenum<string>optionalVideo output format.
web_searchbooleanoptionalEnable online search for the generation.
nsfw_checkerbooleanoptionalEnable content safety checking.
curl -X POST https://97ai.97claude.com/api/generate \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5-image-to-video-480p",
"input": {
"aspect_ratio": "adaptive",
"duration": 5,
"generate_audio": true,
"output_format": "mp4",
"resolution": "480p",
"return_last_frame": false,
"web_search": false,
"prompt": "在房间里跳舞",
"first_frame_url": "https://frw-images.aiaipic.win/users/3514640099037941760/ai_generated/20260818/038f9f68-004f-4017-a09d-74b3da84e569.png",
"first_frame_portrait_kind": "virtual"
}
}'Seedance 2.5 First & Last Frame · Image to Video
seedance-2.5-first-last-framefirst_frame_urlstringrequiredFirst-frame image URL or asset://{assetId}. Mutually exclusive with reference_* fields.
last_frame_urlstringrequiredLast-frame image URL or asset://{assetId}. Requires first_frame_url.
first_frame_portrait_kindenum<string>optionalPortrait-library route: ingest hint for first_frame_url. Default skip (direct URL). Use virtual/real to upload portraits to the asset library.
last_frame_portrait_kindenum<string>optionalPortrait-library route: ingest hint for last_frame_url. Default skip (direct URL). Use virtual/real to upload portraits to the asset library.
promptstringrequiredText prompt describing the transition and motion.
generate_audiobooleanoptionalGenerate synchronized audio with the video.
return_last_framebooleanoptionalReturn the generated video's last frame. Cannot be true when draft=true.
resolutionenum<string>optionalOutput video resolution.
aspect_ratioenum<string>optionalMust be adaptive — the direct route follows the input image aspect ratio for keyframe-driven tasks.
durationintegeroptionalVideo duration from 4 to 30 seconds, or -1 for automatic selection.
output_formatenum<string>optionalVideo output format.
web_searchbooleanoptionalEnable online search for the generation.
nsfw_checkerbooleanoptionalEnable content safety checking.
curl -X POST https://97ai.97claude.com/api/generate \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5-first-last-frame",
"input": {
"aspect_ratio": "adaptive",
"duration": 5,
"generate_audio": true,
"output_format": "mp4",
"resolution": "720p",
"return_last_frame": false,
"web_search": false,
"prompt": "在房间里跳舞",
"first_frame_url": "https://frw-images.aiaipic.win/users/3514640099037941760/ai_generated/20260818/038f9f68-004f-4017-a09d-74b3da84e569.png",
"first_frame_portrait_kind": "virtual",
"last_frame_url": "https://frw-images.aiaipic.win/users/3514640099037941760/image/20260819/fb280368-8f54-41eb-aacf-cee1c189b29b.png",
"last_frame_portrait_kind": "skip"
}
}'Seedance 2.5 First & Last Frame · Image to Video
seedance-2.5-first-last-frame-480pfirst_frame_urlstringrequiredFirst-frame image URL or asset://{assetId}. Mutually exclusive with reference_* fields.
last_frame_urlstringrequiredLast-frame image URL or asset://{assetId}. Requires first_frame_url.
first_frame_portrait_kindenum<string>optionalPortrait-library route: ingest hint for first_frame_url. Default skip (direct URL). Use virtual/real to upload portraits to the asset library.
last_frame_portrait_kindenum<string>optionalPortrait-library route: ingest hint for last_frame_url. Default skip (direct URL). Use virtual/real to upload portraits to the asset library.
promptstringrequiredText prompt describing the transition and motion.
generate_audiobooleanoptionalGenerate synchronized audio with the video.
return_last_framebooleanoptionalReturn the generated video's last frame. Cannot be true when draft=true.
resolutionenum<string>optionalOutput video resolution.
aspect_ratioenum<string>optionalMust be adaptive — the direct route follows the input image aspect ratio for keyframe-driven tasks.
durationintegeroptionalVideo duration from 4 to 30 seconds, or -1 for automatic selection.
output_formatenum<string>optionalVideo output format.
web_searchbooleanoptionalEnable online search for the generation.
nsfw_checkerbooleanoptionalEnable content safety checking.
curl -X POST https://97ai.97claude.com/api/generate \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5-first-last-frame-480p",
"input": {
"aspect_ratio": "adaptive",
"duration": 5,
"generate_audio": true,
"output_format": "mp4",
"resolution": "480p",
"return_last_frame": false,
"web_search": false,
"prompt": "在房间里跳舞",
"first_frame_url": "https://frw-images.aiaipic.win/users/3514640099037941760/ai_generated/20260818/038f9f68-004f-4017-a09d-74b3da84e569.png",
"first_frame_portrait_kind": "virtual",
"last_frame_url": "https://frw-images.aiaipic.win/users/3514640099037941760/image/20260819/fb280368-8f54-41eb-aacf-cee1c189b29b.png",
"last_frame_portrait_kind": "skip"
}
}'Seedance 2.5 Omni Reference · Image to Video
seedance-2.5-omni-referencepromptstringrequiredPrompt describing the target video, style, dynamics, and atmosphere.
reference_image_urlsarray<string>optionalReference image URLs (max 30). Scene/background images stay as URLs unless marked for portrait ingest.
reference_portrait_kindsarray<string>optionalPer-image ingest hint aligned with reference_image_urls: virtual (portrait library — AI or real person), real (optional alias, same as virtual), skip (direct URL; default when omitted).
reference_imagesarray<object>optionalStructured reference images: [{ url, portrait: "virtual"|"real"|"skip" }]. Alternative to reference_image_urls + reference_portrait_kinds.
virtual_portraitsarray<string>optionalPortrait URLs always uploaded to the virtual portrait library before generation.
real_portraitsarray<string>optionalPortrait URLs (including real-person photos) uploaded to the virtual portrait library before generation.
reference_video_urlsarray<string>optionalReference video URLs (max 10; total duration ≤30s). Never uploaded to the asset library.
reference_audio_urlsarray<string>optionalReference audio URLs (max 10; total duration ≤30s). Never uploaded to the asset library.
generate_audiobooleanoptionalGenerate synchronized audio with the video.
return_last_framebooleanoptionalReturn the generated video's last frame. Cannot be true when draft=true.
resolutionenum<string>optionalOutput video resolution.
aspect_ratioenum<string>optionalOutput aspect ratio.
durationintegeroptionalVideo duration from 4 to 30 seconds, or -1 for automatic selection.
output_formatenum<string>optionalVideo output format.
web_searchbooleanoptionalEnable online search for the generation.
nsfw_checkerbooleanoptionalEnable content safety checking.
curl -X POST https://97ai.97claude.com/api/generate \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5-omni-reference",
"input": {
"aspect_ratio": "16:9",
"duration": 5,
"generate_audio": true,
"output_format": "mp4",
"resolution": "720p",
"return_last_frame": false,
"web_search": false,
"prompt": " @image1与 @image2在 @image3的场景中,参考 @video1的运镜,背景音乐参考 @audio1",
"reference_image_urls": [
"https://frw-images.aiaipic.win/users/3514640099037941760/ai_generated/20260818/038f9f68-004f-4017-a09d-74b3da84e569.png",
"https://frw-images.aiaipic.win/users/3514640099037941760/ai_generated/20260818/038f9f68-004f-4017-a09d-74b3da84e569.png",
"https://frw-images.aiaipic.win/users/3514640099037941760/image/20260819/fb280368-8f54-41eb-aacf-cee1c189b29b.png"
],
"reference_portrait_kinds": [
"virtual",
"virtual",
"skip"
],
"reference_video_urls": [
"https://frw-images.aiaipic.win/users/3492453287637028864/video/20260818/3524765235086888960.mp4"
],
"reference_audio_urls": [
"https://frw-images.aiaipic.win/users/3492453287637028864/audio/20260818/3524725649950380032.mp3"
]
}
}'Seedance 2.5 Omni Reference · Image to Video
seedance-2.5-omni-reference-480ppromptstringrequiredPrompt describing the target video, style, dynamics, and atmosphere.
reference_image_urlsarray<string>optionalReference image URLs (max 30). Scene/background images stay as URLs unless marked for portrait ingest.
reference_portrait_kindsarray<string>optionalPer-image ingest hint aligned with reference_image_urls: virtual (portrait library — AI or real person), real (optional alias, same as virtual), skip (direct URL; default when omitted).
reference_imagesarray<object>optionalStructured reference images: [{ url, portrait: "virtual"|"real"|"skip" }]. Alternative to reference_image_urls + reference_portrait_kinds.
virtual_portraitsarray<string>optionalPortrait URLs always uploaded to the virtual portrait library before generation.
real_portraitsarray<string>optionalPortrait URLs (including real-person photos) uploaded to the virtual portrait library before generation.
reference_video_urlsarray<string>optionalReference video URLs (max 10; total duration ≤30s). Never uploaded to the asset library.
reference_audio_urlsarray<string>optionalReference audio URLs (max 10; total duration ≤30s). Never uploaded to the asset library.
generate_audiobooleanoptionalGenerate synchronized audio with the video.
return_last_framebooleanoptionalReturn the generated video's last frame. Cannot be true when draft=true.
resolutionenum<string>optionalOutput video resolution.
aspect_ratioenum<string>optionalOutput aspect ratio.
durationintegeroptionalVideo duration from 4 to 30 seconds, or -1 for automatic selection.
output_formatenum<string>optionalVideo output format.
web_searchbooleanoptionalEnable online search for the generation.
nsfw_checkerbooleanoptionalEnable content safety checking.
curl -X POST https://97ai.97claude.com/api/generate \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5-omni-reference-480p",
"input": {
"aspect_ratio": "16:9",
"duration": 5,
"generate_audio": true,
"output_format": "mp4",
"resolution": "480p",
"return_last_frame": false,
"web_search": false,
"prompt": " @image1与 @image2在 @image3的场景中,参考 @video1的运镜,背景音乐参考 @audio1",
"reference_image_urls": [
"https://frw-images.aiaipic.win/users/3514640099037941760/ai_generated/20260818/038f9f68-004f-4017-a09d-74b3da84e569.png",
"https://frw-images.aiaipic.win/users/3514640099037941760/ai_generated/20260818/038f9f68-004f-4017-a09d-74b3da84e569.png",
"https://frw-images.aiaipic.win/users/3514640099037941760/image/20260819/fb280368-8f54-41eb-aacf-cee1c189b29b.png"
],
"reference_portrait_kinds": [
"virtual",
"virtual",
"skip"
],
"reference_video_urls": [
"https://frw-images.aiaipic.win/users/3492453287637028864/video/20260818/3524765235086888960.mp4"
],
"reference_audio_urls": [
"https://frw-images.aiaipic.win/users/3492453287637028864/audio/20260818/3524725649950380032.mp3"
]
}
}'Seedance 2.5 Spicy Text to Video · Text to Video
seedance-2.5-spicy-text-to-videopromptstringrequiredText prompt describing the video motion and style. Spicy mode favors bolder, higher-contrast results.
durationintegeroptionalVideo length in seconds (4-16).
resolutionenum<string>optionalOutput video resolution.
aspect_ratioenum<string>optionalOutput video aspect ratio.
camera_fixedbooleanoptionalWhether to keep the camera fixed.
generate_audiobooleanoptionalWhether to generate synchronized audio.
curl -X POST https://97ai.97claude.com/api/generate \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5-spicy-text-to-video",
"input": {
"aspect_ratio": "16:9",
"duration": 5,
"generate_audio": true,
"output_format": "mp4",
"resolution": "720p",
"return_last_frame": false,
"web_search": false,
"prompt": "在房间里跳舞"
}
}'Seedance 2.5 Spicy Image to Video · Image to Video
seedance-2.5-spicy-image-to-videopromptstringrequiredText prompt describing the video motion and style. Spicy mode favors bolder, higher-contrast results.
image_urlstringrequiredURL of the input image to animate.
last_imagestringoptionalOptional closing image. Together with image_url, this selects strict first/last-frame keyframe generation.
durationintegeroptionalNormal mode: 4-16 seconds. Two-image keyframe mode: 4-30 seconds.
resolutionenum<string>optionalNormal mode supports its listed tiers. Two-image keyframe mode supports 480p, 720p, or 1080p.
aspect_ratioenum<string>optionalNormal mode uses a selected ratio. Two-image keyframe mode requires adaptive and follows the opening image ratio.
camera_fixedbooleanoptionalWhether to keep the camera fixed.
generate_audiobooleanoptionalWhether to generate synchronized audio.
watermarkbooleanoptionalFor two-image keyframe mode, add an AI-generated watermark to the output.
curl -X POST https://97ai.97claude.com/api/generate \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5-spicy-image-to-video",
"input": {
"aspect_ratio": "adaptive",
"duration": 5,
"generate_audio": true,
"output_format": "mp4",
"resolution": "720p",
"return_last_frame": false,
"web_search": false,
"prompt": "在房间里跳舞",
"image_url": "https://frw-images.aiaipic.win/users/3514640099037941760/ai_generated/20260818/038f9f68-004f-4017-a09d-74b3da84e569.png",
"first_frame_portrait_kind": "virtual"
}
}'