Claude Code Plugins

Community-maintained marketplace

Feedback

Runway AI API for video generation via curl. Use this skill to generate videos from images, text, or other videos.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name runway
description Runway AI API for video generation via curl. Use this skill to generate videos from images, text, or other videos.
vm0_secrets RUNWAY_API_KEY

Runway API

Use the Runway API via direct curl calls to generate AI videos from images, text, or video inputs.

Official docs: https://docs.dev.runwayml.com/


When to Use

Use this skill when you need to:

  • Generate video from images (image-to-video)
  • Generate video from text prompts (text-to-video)
  • Transform existing videos (video-to-video)
  • Generate images from text (text-to-image)
  • Upscale video resolution (4X upscale)
  • Generate sound effects or speech

Prerequisites

  1. Sign up at Runway Developer Portal
  2. Purchase credits ($10 for 1000 credits)
  3. Create an API key in the dashboard
  4. Store it in the environment variable RUNWAY_API_KEY
export RUNWAY_API_KEY="your-api-key"

Pricing

  • Credits are consumed per generation
  • ~25 credits per 5-second video

Important: When using $VAR in a command that pipes to another command, wrap the command containing $VAR in bash -c '...'. Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.

bash -c 'curl -s "https://api.example.com" -H "Authorization: Bearer $API_KEY"' | jq .

How to Use

All examples below assume you have RUNWAY_API_KEY set.

Base URL: https://api.dev.runwayml.com/v1

Required headers for all requests:

  • Authorization: Bearer ${RUNWAY_API_KEY}
  • X-Runway-Version: 2024-11-06
  • Content-Type: application/json

1. Check Organization Credits

Check your credit balance:

bash -c 'curl -s -X GET "https://api.dev.runwayml.com/v1/organization" --header "Authorization: Bearer ${RUNWAY_API_KEY}" --header "X-Runway-Version: 2024-11-06"' | jq .

2. Image to Video

Generate a video from an image:

Write to /tmp/runway_request.json:

{
  "model": "gen4_turbo",
  "promptImage": "https://example.com/your-image.jpg",
  "promptText": "A timelapse of clouds moving across the sky",
  "ratio": "1280:720",
  "duration": 5
}

Then run:

bash -c 'curl -s -X POST "https://api.dev.runwayml.com/v1/image_to_video" --header "Authorization: Bearer ${RUNWAY_API_KEY}" --header "X-Runway-Version: 2024-11-06" --header "Content-Type: application/json" -d @/tmp/runway_request.json' | jq .

Response:

{
  "id": "task-id-here"
}

3. Text to Video

Generate a video from text only:

Note: Text-to-video only supports duration values of 4, 6, or 8 seconds (not arbitrary values like image-to-video).

Write to /tmp/runway_request.json:

{
  "model": "veo3.1",
  "promptText": "A serene forest with sunlight filtering through the trees",
  "ratio": "1280:720",
  "duration": 6
}

Then run:

bash -c 'curl -s -X POST "https://api.dev.runwayml.com/v1/text_to_video" --header "Authorization: Bearer ${RUNWAY_API_KEY}" --header "X-Runway-Version: 2024-11-06" --header "Content-Type: application/json" -d @/tmp/runway_request.json' | jq .

4. Video to Video

Transform an existing video:

Write to /tmp/runway_request.json:

{
  "model": "gen4_aleph",
  "videoUri": "https://example.com/source-video.mp4",
  "promptText": "Add magical sparkles and fairy dust effects",
  "ratio": "1280:720"
}

Then run:

bash -c 'curl -s -X POST "https://api.dev.runwayml.com/v1/video_to_video" --header "Authorization: Bearer ${RUNWAY_API_KEY}" --header "X-Runway-Version: 2024-11-06" --header "Content-Type: application/json" -d @/tmp/runway_request.json' | jq .

5. Text to Image

Generate images from text:

Write to /tmp/runway_request.json:

{
  "model": "gen4_image_turbo",
  "promptText": "A futuristic cityscape at sunset",
  "ratio": "1920:1080",
  "referenceImages": []
}

Then run:

bash -c 'curl -s -X POST "https://api.dev.runwayml.com/v1/text_to_image" --header "Authorization: Bearer ${RUNWAY_API_KEY}" --header "X-Runway-Version: 2024-11-06" --header "Content-Type: application/json" -d @/tmp/runway_request.json' | jq .

6. Check Task Status

Poll for task completion:

export TASK_ID="your-task-id"

bash -c 'curl -s -X GET "https://api.dev.runwayml.com/v1/tasks/${TASK_ID}" --header "Authorization: Bearer ${RUNWAY_API_KEY}" --header "X-Runway-Version: 2024-11-06"' | jq .

Response when complete:

{
  "id": "task-id",
  "status": "SUCCEEDED",
  "output": ["https://cdn.runwayml.com/generated-video.mp4"]
}

Possible statuses: PENDING, RUNNING, SUCCEEDED, FAILED


7. Cancel a Task

Cancel a running task:

export TASK_ID="your-task-id"

bash -c 'curl -s -X DELETE "https://api.dev.runwayml.com/v1/tasks/${TASK_ID}" --header "Authorization: Bearer ${RUNWAY_API_KEY}" --header "X-Runway-Version: 2024-11-06"'

8. Video Upscale (4X)

Upscale video resolution:

Write to /tmp/runway_request.json:

{
  "model": "upscale_v1",
  "videoUri": "https://example.com/low-res-video.mp4"
}

Then run:

bash -c 'curl -s -X POST "https://api.dev.runwayml.com/v1/video_upscale" --header "Authorization: Bearer ${RUNWAY_API_KEY}" --header "X-Runway-Version: 2024-11-06" --header "Content-Type: application/json" -d @/tmp/runway_request.json' | jq .

9. Generate Sound Effects

Generate audio from text:

Write to /tmp/runway_request.json:

{
  "model": "eleven_text_to_sound_v2",
  "promptText": "Thunder rumbling in the distance"
}

Then run:

bash -c 'curl -s -X POST "https://api.dev.runwayml.com/v1/sound_effect" --header "Authorization: Bearer ${RUNWAY_API_KEY}" --header "X-Runway-Version: 2024-11-06" --header "Content-Type: application/json" -d @/tmp/runway_request.json' | jq .

Available Models

Endpoint Models
Image to Video gen4_turbo, gen3a_turbo, veo3.1, veo3
Text to Video veo3.1, veo3.1_fast, veo3
Video to Video gen4_aleph
Text to Image gen4_image_turbo, gen4_image
Video Upscale upscale_v1

Aspect Ratios

Common ratios for video generation:

  • 1280:720 (16:9 landscape)
  • 720:1280 (9:16 portrait)
  • 1024:1024 (1:1 square)

Guidelines

  1. Poll for completion: Video generation is async; poll /tasks/{id} until status is SUCCEEDED
  2. Use appropriate models: gen4_turbo is faster, gen4_aleph for video-to-video
  3. Download promptly: Output URLs may expire after some time
  4. Monitor credits: Check /organization endpoint to track usage
  5. Handle rate limits: API returns 429 when rate limited; add delays