Runway Seedance 2
Runway Seedance 2 Integration¶
This page documents how to integrate Seedance 2 through Media Studio's Runway API adapter. It describes the Runway-backed surface only.
Endpoint Mapping¶
Runway exposes seedance2, seedance2_fast, seedance2_mini, and seedance2_5 through three video endpoint families. Choose the endpoint by the primary input type.
| Capability | Runway endpoint | Media Studio endpoint | Primary input |
|---|---|---|---|
| Text to video | POST /v1/text_to_video |
/api/v1/runway/video/generation/generate-video-from-text |
prompt |
| Image to video | POST /v1/image_to_video |
/api/v1/runway/video/generation/generate-video-from-image |
image_url |
| Video to video | POST /v1/video_to_video |
/api/v1/runway/video/generation/generate-video-from-video |
video_uri |
Full Workflow¶
Seedance generation is asynchronous. A complete client flow is:
- Upload local image, video, or audio assets when the user does not already have HTTPS URLs.
- Pass the returned
runway://URI into the Seedance generation endpoint that matches the primary input type. - Read
task_idfrom the generation response. - Poll the Runway status endpoint until the task reaches
SUCCEEDEDorFAILED. - Use the generated output URL from the successful status response. Runway output URLs are signed and expire.
1. Upload an asset¶
curl -X POST "$MEDIA_STUDIO_URL/api/v1/runway/upload-asset" \
-H "X-API-Key: Bearer $API_ACCESS_TOKEN" \
-F "file=@./product-reference.jpg"
Example response:
{
"uri": "runway://...",
"expires_in_hours": 24,
"message": "Ephemeral Runway asset uploaded. Use uri in Seedance image/video/audio fields."
}
Use the returned uri in references, reference_videos, reference_audio, image_url, or video_uri, depending on the generation endpoint.
2. Create a Seedance task¶
For image-to-video with a locally uploaded reference image:
curl -X POST "$MEDIA_STUDIO_URL/api/v1/runway/video/generation/generate-video-from-image" \
-H "X-API-Key: Bearer $API_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Create a polished product advertisement with smooth cinematic movement.",
"image_url": [
{
"uri": "runway://...",
"position": "first"
}
],
"model": "seedance2",
"aspect_ratio": "16:9",
"resolution": "480p",
"duration": 10
}'
Example response:
{
"status": "success",
"result": {
"task_id": "155d4e3f-3e7b-41d3-a47b-c1fbcf588201",
"status": "PENDING",
"provider": "runway"
}
}
3. Poll for completion¶
curl -X GET "$MEDIA_STUDIO_URL/api/v1/runway/status/155d4e3f-3e7b-41d3-a47b-c1fbcf588201" \
-H "X-API-Key: Bearer $API_ACCESS_TOKEN"
Poll until result.status is SUCCEEDED or FAILED.
Example successful response:
{
"status": "success",
"result": {
"task_id": "155d4e3f-3e7b-41d3-a47b-c1fbcf588201",
"status": "SUCCEEDED",
"provider": "runway",
"result": [
"https://dnznrvs05pmza.cloudfront.net/..."
]
}
}
Supported Seedance Inputs¶
| Input | Text to video | Image to video | Video to video |
|---|---|---|---|
| Prompt | Required, except seedance2_5 may omit it when at least one reference is provided |
Required | Required |
| Image reference | references, up to 9 for Seedance 2.0 models or 30 for seedance2_5 |
image_url, up to 2 prompt images |
references, up to 9 for Seedance 2.0 models or 30 for seedance2_5 |
| Video reference | reference_videos, up to 3 for Seedance 2.0 models or 10 for seedance2_5 |
Not used | video_uri, plus reference_videos up to 3 for Seedance 2.0 models or 9 for seedance2_5 |
| Audio reference | reference_audio, up to 3 for Seedance 2.0 models or 10 for seedance2_5; older Seedance models require an image or video reference |
reference_audio, up to 3 for Seedance 2.0 models or 10 for seedance2_5 |
reference_audio, up to 3 for Seedance 2.0 models or 10 for seedance2_5 |
| Duration | Seedance 2.0 models: 4-15 seconds; seedance2_5: 4-30 seconds |
Seedance 2.0 models: 4-15 seconds; seedance2_5: 4-30 seconds |
Seedance 2.0 models: 4-15 seconds; seedance2_5: 4-30 seconds |
| Resolution | seedance2, seedance2_5: 480p, 720p, 1080p; seedance2_fast, seedance2_mini: 480p, 720p |
seedance2, seedance2_5: 480p, 720p, 1080p; seedance2_fast, seedance2_mini: 480p, 720p |
seedance2, seedance2_5: 480p, 720p, 1080p; seedance2_fast, seedance2_mini: 480p, 720p |
seedance2_5 text-to-video can omit prompt when at least one image, video, or audio reference is provided. For video-to-video, mode may be reference or extend; in extend mode, Media Studio does not send ratio because Runway matches the input video's aspect ratio.
For seedance2_5, combined reference video and audio duration must stay under Runway's limit. Media Studio validates reference counts locally and lets Runway validate media durations.
Pricing¶
Media Studio uses Runway's credit pricing for Seedance usage tracking. Runway credits are priced at $0.01 per credit in the developer portal. Source: https://docs.dev.runwayml.com/guides/pricing/
| Model | Resolution | Runway price | Media Studio unit price |
|---|---|---|---|
seedance2 |
480p, 720p |
36 credits/sec | $0.36/sec |
seedance2 |
1080p |
40 credits/sec | $0.40/sec |
seedance2_fast |
480p, 720p |
29 credits/sec | $0.29/sec |
seedance2_mini |
480p, 720p |
16 credits/sec, 64 credit minimum | $0.16/sec |
seedance2_5 |
480p |
20 credits/sec output, plus 10 credits/sec input/reference video; 80 credit minimum | $0.20/sec output + $0.10/sec input/reference video |
seedance2_5 |
720p |
30 credits/sec output, plus 15 credits/sec input/reference video; 80 credit minimum | $0.30/sec output + $0.15/sec input/reference video |
seedance2_5 |
1080p |
68 credits/sec output, plus 34 credits/sec input/reference video; 80 credit minimum | $0.68/sec output + $0.34/sec input/reference video |
Resolution Mapping¶
Media Studio exposes a friendly resolution field and converts it to Runway's Seedance pixel-based ratio.
| Aspect ratio | 480p | 720p | 1080p |
|---|---|---|---|
21:9 |
992:432 |
1470:630 |
2206:946 |
16:9 |
864:496 |
1280:720 |
1920:1080 |
4:3 |
752:560 |
1112:834 |
1664:1248 |
1:1 |
640:640 |
960:960 |
1440:1440 |
3:4 |
560:752 |
834:1112 |
1248:1664 |
9:16 |
496:864 |
720:1280 |
1080:1920 |
For seedance2_5 only, Media Studio sends 854:480 and 480:854 for the
480p 16:9 and 9:16 variants. These are the dimensions currently accepted by
Runway's live API, even though the Runway changelog lists 864:496 and
496:864 for those two request values.
Use 480p for prompt and seed iteration. Reuse the approved prompt and seed at 1080p for seedance2 or seedance2_5; the fast and mini variants are capped at 720p.
Upload Local Assets¶
Use Media Studio's Runway upload endpoint when a user has a local image, video, or audio file. It proxies Runway's ephemeral upload API and returns a runway:// URI.
curl -X POST "$MEDIA_STUDIO_URL/api/v1/runway/upload-asset" \
-H "X-API-Key: Bearer $API_ACCESS_TOKEN" \
-F "file=@./reference-audio.mp3"
Example response:
{
"uri": "runway://...",
"expires_in_hours": 24,
"message": "Ephemeral Runway asset uploaded. Use uri in Seedance image/video/audio fields."
}
Runway ephemeral uploads are valid for 24 hours, support files from 512 bytes to 200 MB, and can be used anywhere Runway accepts a URL or data URI.
Supported upload formats:
| Asset type | Extensions | Content type |
|---|---|---|
| Image | .jpg, .jpeg |
image/jpg, image/jpeg |
| Image | .png |
image/png |
| Image | .webp |
image/webp |
| Video | .mp4 |
video/mp4 |
| Video | .mov |
video/quicktime |
| Video | .mkv |
video/x-matroska |
| Video | .webm |
video/webm |
| Video | .3gp |
video/3gpp |
| Video | .ogv |
video/ogg |
| Video, supported but discouraged | .avi, .flv, .mpg, .mpeg |
video/x-msvideo, video/x-flv, video/mpeg |
| Audio | .mp3 |
audio/mpeg, audio/mp3 |
| Audio | .wav |
audio/wav, audio/wave, audio/x-wav |
| Audio | .flac |
audio/flac, audio/x-flac |
| Audio | .m4a |
audio/mp4, audio/x-m4a |
| Audio | .aac |
audio/aac, audio/x-aac |
GIF images are not supported. Runway validates media content type, not only file extension.
Examples¶
Text To Video¶
{
"prompt": "Ocean waves crash against black volcanic rocks at sunset with slow cinematic camera movement.",
"model": "seedance2",
"aspect_ratio": "16:9",
"resolution": "480p",
"duration": 5
}
Reference To Video With Audio¶
{
"prompt": "A drummer performs an energetic solo on stage, with visuals cutting in sync to the beat.",
"model": "seedance2",
"aspect_ratio": "16:9",
"resolution": "480p",
"duration": 10,
"references": [
{
"uri": "https://samplelib.com/jpeg/sample-city-park-400x300.jpg"
}
],
"reference_audio": [
{
"type": "audio",
"uri": "https://samplelib.com/lib/preview/mp3/sample-9s.mp3"
}
]
}
Image To Video¶
{
"prompt": "The camera slowly pushes in as petals fall around the subject.",
"image_url": [
{
"uri": "https://samplelib.com/jpeg/sample-city-park-400x300.jpg",
"position": "first"
}
],
"model": "seedance2",
"aspect_ratio": "16:9",
"resolution": "480p",
"duration": 10
}
Image To Video With Start And End Frames¶
{
"prompt": "Transition from the first frame to the final product hero frame with smooth premium camera motion.",
"image_url": [
{
"uri": "https://samplelib.com/jpeg/sample-city-park-400x300.jpg",
"position": "first"
},
{
"uri": "https://samplelib.com/jpeg/sample-birch-400x300.jpg",
"position": "last"
}
],
"model": "seedance2",
"aspect_ratio": "16:9",
"resolution": "480p",
"duration": 10
}
Video To Video¶
{
"prompt": "Transform the parked cars and surrounding trees into a peaceful winter street scene with fresh snow, bare branches, soft overcast light, and gentle cinematic camera motion.",
"video_uri": "https://samplelib.com/lib/preview/mp4/sample-5s.mp4",
"model": "seedance2",
"aspect_ratio": "16:9",
"resolution": "480p",
"duration": 10
}
Video To Video With Audio¶
{
"prompt": "Transform the outdoor clip into a rhythmic nighttime street scene where the parked cars, trees, and lighting pulses move subtly in sync with the beat.",
"video_uri": "https://samplelib.com/lib/preview/mp4/sample-5s.mp4",
"model": "seedance2",
"aspect_ratio": "16:9",
"resolution": "480p",
"duration": 10,
"reference_audio": [
{
"type": "audio",
"uri": "https://samplelib.com/lib/preview/mp3/sample-9s.mp3"
}
]
}