npx skills add ...
npx skills add runwayml/skills --skill rw-integrate-video
Help users integrate Runway video generation APIs (text-to-video, image-to-video, video-to-video)
npx skills add runwayml/skills --skill rw-integrate-video
PREREQUISITE: Run
+rw-check-compatibilityfirst. Run+rw-fetch-api-referenceto load the latest API reference before integrating. Requires+rw-setup-api-keyfor API credentials. Requires+rw-integrate-uploadswhen the user has local files to use as input.
Help users add Runway video generation to their server-side code.
| Model | Best For | Input | Cost | Speed |
|---|---|---|---|---|
seedance2 | Reference image and video, long duration | Text, Image, and/or Video | 36 credits/sec | Standard |
gen4.5 | High quality, general purpose | Text and/or Image | 12 credits/sec | Standard |
gen4_turbo | Fast, image-driven | Image required | 5 credits/sec | Fast |
gen4_aleph | Video editing/transformation | Video + Text/Image | 15 credits/sec | Standard |
veo3 | Premium Google model | Text/Image | 40 credits/sec | Standard |
veo3.1 | High quality Google model | Text/Image | 20-40 credits/sec | Standard |
veo3.1_fast | Fast Google model | Text/Image | 10-15 credits/sec | Fast |
Model selection guidance:
gen4.5 — best balance of quality and costseedance2 — up to 15s, supports reference image and videogen4_turbo (requires image) or veo3.1_fastveo3 (most expensive)gen4_aleph or seedance2promptImage, promptVideo, videoUri, and references[].uri are fetched server-side by the Runway API — treat them like any outbound fetch:
runway:// URIs from +rw-integrate-uploads — scoped to your account, no arbitrary web content.https://, allowlist trusted hosts, reject private addresses. See the Express.js example below.req.body.imageUrl (or similar) straight into promptImage / promptVideo. The SDK snippets below use raw URLs for brevity — they aren't production templates.POST /v1/text_to_videoGenerate video from a text prompt only.
Compatible models: seedance2, gen4.5, veo3, veo3.1, veo3.1_fast
POST /v1/image_to_videoAnimate a still image into a video.
Compatible models: seedance2, gen4.5, gen4_turbo, veo3, veo3.1, veo3.1_fast
Recommended: upload via +rw-integrate-uploads and pass the returned runway:// URI.
External URLs also work — only pass origins you control (see Security):
POST /v1/video_to_videoTransform an existing video with a text prompt and/or reference image.
Compatible models: gen4_aleph, seedance2
seedance2 VTV input requirements: max 15 seconds, max 32 MB, min 720p resolution, MP4 recommended.
Seedance 2 supports text-to-video, image-to-video (two modes), and video-to-video. It uses pixel-based ratios: 1280:720, 720:1280, 960:960, 1112:834, 834:1112, 1470:630, 992:432, 864:496, 752:560, 640:640, 560:752, 496:864.
Use a specific image as the first and/or last frame. The references field cannot be used in this mode.
promptImage is an array of objects with uri (required) and position ("first" or "last", defaults to first).
Use an image as a stylistic/content reference rather than a literal frame. promptImage is still required (as a URI string or single-item array).
These two ITV modes are mutually exclusive — you cannot use
positioninpromptImageandreferencesin the same request.
Transform an existing video guided by a text prompt, optionally with an image reference.
VTV input requirements: max 15 seconds, max 32 MB, min 720p resolution, MP4 recommended.
| Parameter | Type | Required | Description |
|---|---|---|---|
model | string | Yes | Must be "seedance2" |
promptText | string | Yes | Text description of the desired video |
duration | number | Yes (TTV/ITV) | Duration in seconds |
ratio | string | Yes (TTV/ITV) | 1280:720, 720:1280, 960:960, 1112:834, 834:1112, 1470:630 |
promptImage | string or array | Yes (ITV) | URI string or array of { uri, position? } objects |
promptVideo | string | Yes (seedance2 VTV) | Input video URI (seedance2 only) |
videoUri | string | Yes (gen4_aleph VTV) | Input video URI (gen4_aleph only) |
references | array | No | Image references — [{ type: "image", uri: "..." }] (ITV Mode 2 and VTV only) |
POST /v1/character_performanceAnimate a character with facial/body performance.
Compatible models: act_two
| Parameter | Type | Description |
|---|---|---|
model | string | Model ID (required) |
promptText | string | Text prompt describing the video |
promptImage | string | URL, data URI, or runway:// URI of input image |
ratio | string | Aspect ratio, e.g. '1280:720', '720:1280' |
duration | number | Video length in seconds (2-15, model-dependent) |
When helping the user integrate, follow this pattern:
+rw-integrate-uploads so inputs are runway:// URIs. External URLs only from origins you control (see Security).TaskFailedErrorFor browser uploads: POST files to your server, upload via
+rw-integrate-uploads, and pass therunway://URI. Don't accept raw URLs from the browser.
gen4_turbo requires an image — it cannot do text-only generation.gen4_aleph and seedance2 — use for editing/transforming existing videos.waitForTaskOutput() has a default 10-minute timeout. For long-running generations, you may want to implement your own polling loop or increase the timeout.+rw-integrate-uploads to upload first, then pass the runway:// URI.