Skip to content

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:

  1. Upload local image, video, or audio assets when the user does not already have HTTPS URLs.
  2. Pass the returned runway:// URI into the Seedance generation endpoint that matches the primary input type.
  3. Read task_id from the generation response.
  4. Poll the Runway status endpoint until the task reaches SUCCEEDED or FAILED.
  5. 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"
    }
  ]
}