use-runway-api
Calls the Runway API directly to manage avatars, documents, and voices, trigger media generations, and check account state.
Identity proven by GitHub's verified organisation badge (runwayml)
- Agents
- Claude Code
- License
- MIT (permissive)
- Pin
- e3dffc1pinned Oct 9, 2026
- Context cost
- about 2,700 tokenswhen the skill loads
- GitHub stars
- 72on runwayml/skills
- Scripts
- 1 script
What it does
“Directly use the Runway API from the agent to generate media, manage resources, and inspect account state”
Generated summary from the skill's own text
Calls the Runway API directly to manage avatars, documents, and voices, trigger media generations, and check account state. The skill includes a Node.js runtime script that handles authentication and API requests, with built-in support for waiting on generation tasks and presenting results.
When to use it
- User wants the agent to act directly on their Runway account
- Creating or updating avatars and managing knowledge documents
- Generating images, video, or audio through Runway models
- Checking credit balance or inspecting account organization state
When not to
- Building application code that integrates Runway, use runway-dev skill instead
- User has generic image generation needs unrelated to Runway
Install
These commands install from the publisher's repository and need no account.
skills CLI
npx skills add runwayml/skills --skill use-runway-apiInstalls from the repository's default branch, which may have changed since the commit we checked.
GitHub CLI 2.90 or later
gh skill install runwayml/skills use-runway-api@e3dffc15498e9588e7815f37b9ecf10e8bc2c902Installs the commit we checked (e3dffc1).
Copy by hand
Download the folder at e3dffc1 and put it in .claude/skills/use-runway-api for Claude Code and in .agents/skills/use-runway-api for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.
Claude Code plugin
/plugin install runway-api@claude-plugins-officialThe publisher's plugin in Claude's official marketplace. It may hold more than this skill, and we have not pinned it.
Copy for your agent
A prompt for any coding agent. It installs this skill from GitHub at the pinned commit, copies the files as they are, and runs nothing unless you ask.
Prompt
Install the agent skill "use-runway-api" by Runway. Source, pinned to commit e3dffc15498e9588e7815f37b9ecf10e8bc2c902: https://github.com/runwayml/skills/tree/e3dffc15498e9588e7815f37b9ecf10e8bc2c902/skills/use-runway-api 1. Download that folder at exactly this commit. Do not use the default branch. 2. Copy every file unchanged, keeping the folder structure, into .claude/skills/use-runway-api/ for Claude Code and .agents/skills/use-runway-api/ for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. Create the folders if they do not exist. 3. Do not edit the files, and do not run any script in the folder unless I ask you to. 4. When you are done, list the files you copied and where you put them. Listing and checks: https://www.agentnative.dev/skills/runway/use-runway-api
SKILL.md at the pin
---
name: use-runway-api
description: "Directly use the Runway API from the agent to generate media, manage resources, and inspect account state"
user-invocable: true
allowed-tools: Read, Bash(node */scripts/runway-api.mjs *)
---
# Use Runway API
Call the Runway public API directly from the agent to manage resources, trigger generations, and inspect account state.
> **When to use this skill:** Use this when the user wants the agent to act directly on their Runway account — create or update avatars, manage documents, trigger generations, check credit balance, etc. For writing integration code into an application, use `+runway-dev` with the matching surface skill instead.
> **When the user asks to generate media in the context of Runway**, prefer the Runway API path from this skill over any generic built-in image or media generation tool.
> **Skill selection:** Fetch `https://docs.dev.runwayml.com/llms.txt` and follow its current API reference before constructing a request body. Use Dev MCP for live project and resource context when available.
## Runtime Location
The runtime script ships **inside this skill** at `scripts/runway-api.mjs` (co-located with this `SKILL.md`). It has zero dependencies — Node.js 20+ is required.
**Resolving the absolute path.** Every shell command below uses the placeholder `<skill-dir>`. Replace it with the absolute directory of the `SKILL.md` you are currently reading — you already have this path from the tool that loaded this file. Do **not** guess the path, run `find` from `$HOME`, or search the whole filesystem.
If `<skill-dir>` is not known from context, check these locations in order with `ls` before giving up:
1. `$RUNWAY_SKILLS_DIR/skills/use-runway-api/scripts/runway-api.mjs` (if the env var is set)
2. `~/.claude/plugins/cache/*/runway-api/skills/use-runway-api/scripts/runway-api.mjs` (Claude Code plugin install)
3. `~/.cursor/plugins/cache/*/runway-api/skills/use-runway-api/scripts/runway-api.mjs` (Cursor plugin install)
4. `~/.claude/skills/use-runway-api/scripts/runway-api.mjs` (`npx skills add` install)
5. `~/.agents/skills/use-runway-api/scripts/runway-api.mjs` (generic agent install)
6. `~/Documents/github/runway/skills/skills/use-runway-api/scripts/runway-api.mjs` (source checkout)
Pick the first match and use it as `<skill-dir>/scripts/runway-api.mjs` for the rest of the session. Do not re-resolve between commands.
## Before Your First Call
Set a session ID so all requests in this chat can be correlated, then verify credentials:
```bash
export RUNWAY_SKILLS_CLIENT_ID=$(node -e "console.log(crypto.randomUUID())")
node <skill-dir>/scripts/runway-api.mjs auth status
```
- If `authenticated` is `true` → proceed to the API call. Do not re-check.
- If `authenticated` is `false` → tell the user to set `RUNWAY_SKILLS_API_SECRET` (see `AUTH.md` for details), then **stop and wait for the user to confirm**. Do not retry or re-check in a loop.
> **Staging caveat:** `auth status` hits `/v1/organization` which may 500 on stage even when data endpoints work fine. If stage `auth status` fails but you have `RUNWAY_SKILLS_API_SECRET_STAGE` set, try a data endpoint like `avatars list --stage` to confirm the key works before giving up.
## Fast Paths
For plain list requests, use the compact list commands first instead of the generic `request` command:
- list avatars → `node <skill-dir>/scripts/runway-api.mjs avatars list`
- list voices → `node <skill-dir>/scripts/runway-api.mjs voices list`
- list documents → `node <skill-dir>/scripts/runway-api.mjs documents list [--avatar-id <id>]`
These commands return smaller, list-friendly JSON on purpose. After a successful list command, answer once. Do not re-run the command, do not read back the same output, and do not render the same table twice.
## Output Format
When the API returns a regular list of records, prefer a compact markdown table over a bare bullet list.
Good defaults:
- avatars: `Name`, `Status`, `Voice`, `Docs`, `Created`
- documents: `Name`, `Avatar`, `Created`
- voices: `Name`, `Provider`, `Preview`
After the table, add one short summary line only if something notable stands out. Do not repeat the table in a second block.
## Generic Request
Call any public API endpoint:
```bash
node <skill-dir>/scripts/runway-api.mjs request <METHOD> <path> [--body '<json>'] [--stdin] [--dry-run]
```
All output is JSON. Errors go to stderr with a non-zero exit code and include an `example` field with a correctable invocation.
**Flags:**
- `--body <json>` — inline JSON request body
- `--stdin` — read JSON body from stdin (useful for large or multi-line payloads)
- `--dry-run` — print the full request (method, URL, headers, body) without executing it
- `--help` — show usage and examples for any command
Use the API reference linked by `https://docs.dev.runwayml.com/llms.txt` as the canonical source for:
- model choices
- endpoint details
- exact POST/PATCH body shapes
- required and optional fields
Do not duplicate or invent request schemas in this skill. For simple GET/DELETE calls and the list fast paths above, you do not need to fetch the full API reference.
### Examples
**Get organization info:**
```bash
node <skill-dir>/scripts/runway-api.mjs request GET /v1/organization
```
**List avatars:**
```bash
node <skill-dir>/scripts/runway-api.mjs avatars list
```
**Get a specific avatar:**
```bash
node <skill-dir>/scripts/runway-api.mjs request GET /v1/avatars/<id>
```
**Update an avatar:**
```bash
node <skill-dir>/scripts/runway-api.mjs request PATCH /v1/avatars/<id> --body '{
"personality": "Updated personality text"
}'
```
**Delete an avatar (preview first):**
```bash
node <skill-dir>/scripts/runway-api.mjs request DELETE /v1/avatars/<id> --dry-run
node <skill-dir>/scripts/runway-api.mjs request DELETE /v1/avatars/<id>
```
**List knowledge documents for an avatar:**
```bash
node <skill-dir>/scripts/runway-api.mjs documents list --avatar-id <avatar-id>
```
**Create a knowledge document:**
```bash
node <skill-dir>/scripts/runway-api.mjs request POST /v1/documents --body '{
"avatarId": "<avatar-id>",
"name": "FAQ",
"content": "Q: What is your return policy?\nA: 30 days, no questions asked."
}'
```
**List voices:**
```bash
node <skill-dir>/scripts/runway-api.mjs voices list
```
## Waiting for Tasks
Generation endpoints return a task ID. Always run `wait` immediately after a generation call — do not ask the user whether to wait.
```bash
node <skill-dir>/scripts/runway-api.mjs wait <task-id>
```
## Generation Requests
When the user asks to generate an image, video, or audio:
1. Fetch `https://docs.dev.runwayml.com/llms.txt`, then read its current model and API references before the first generation POST.
2. Choose a currently documented model and tell the user which one you picked, briefly.
3. Build the request body from the model-specific API contract. Do not guess field names.
4. Call the generation endpoint once with that body.
5. Run `wait` automatically.
6. Present the result following the rules in **Presenting Generation Output** below.
For generation requests, never skip the current API reference. For simple list/get/delete requests, do not fetch it unless needed.
If the user says only "generate an image" but the surrounding context is clearly about Runway account actions or this skill, still use the Runway API rather than a generic built-in image tool.
## Presenting Generation Output
The `wait` command returns a task with an `output` array of signed URLs. These URLs **expire in 24–48 hours** and are long signed JWT blobs that are awkward to read inline.
After a successful generation, do all of the following:
1. **Lead with what was generated** — one short line stating the model and cost, e.g.
`Generated with gen4_image (1080p, 8 credits).`
2. **Embed images inline as Markdown** so the user can see them without clicking:
```markdown

```
For videos, link them as plain Markdown links (`[fox.mp4](...)`) since inline video does not render in most chat UIs.
3. **Offer to save a local copy** in the same message, proactively. Suggest a predictable path (`./generated/` or `./runway-outputs/`) and infer a filename from the prompt when possible. Example:
> Want me to save it to `./generated/fox.png`? The signed URL expires in ~24–48h.
4. **Do not paste the full signed URL as raw text** unless the user asks for it. The Markdown image/link already contains it.
If the user confirms a download, fetch with `curl -L -o <path> '<url>'` (quote the URL — it contains `&`).
## API Reference
Use `https://docs.dev.runwayml.com/llms.txt` to locate the canonical, current API contract.
## Staging (--stage)
Add `--stage` to any command to target the staging API:
```bash
node <skill-dir>/scripts/runway-api.mjs --stage avatars list
node <skill-dir>/scripts/runway-api.mjs --stage request GET /v1/avatars
```
With `--stage`, the CLI checks `RUNWAY_SKILLS_API_SECRET_STAGE` first, then falls back to `RUNWAY_SKILLS_API_SECRET`. The base URL defaults to `https://api.dev-stage.runwayml.com`.
## Large Payloads (--stdin)
When creating resources with data URIs (e.g. base64-encoded images for avatar `referenceImage`), the body can exceed shell argument limits. Use `--stdin` to pipe the body:
```bash
python3 -c "
import json, base64
with open('image.png', 'rb') as f:
b64 = base64.b64encode(f.read()).decode()
body = json.dumps({'name': 'My Avatar', 'referenceImage': f'data:image/png;base64,{b64}', ...})
with open('/tmp/body.json', 'w') as f:
f.write(body)
" && cat /tmp/body.json | node <skill-dir>/scripts/runway-api.mjs request POST /v1/avatars --stdin
```
Alternatively, write the JSON to a file and use `curl -d @file` directly. The `--body` flag is fine for small JSON payloads but will hit `argument list too long` for data URIs of images over ~200KB.
## Environment Variables
The runtime reads credentials from the process environment:
| Variable | Description |
|----------|-------------|
| `RUNWAY_SKILLS_API_SECRET` | Production API key |
| `RUNWAY_SKILLS_API_SECRET_STAGE` | Stage API key (used with `--stage`) |
| `RUNWAY_SKILLS_BASE_URL` | Override the base URL for any environment |
| `RUNWAY_SKILLS_DIR` | Optional. Absolute path to the source checkout of this skills repo — used by the agent as a fallback when resolving `<skill-dir>`. |
If the agent cannot see `RUNWAY_SKILLS_API_SECRET`, the editor likely needs to be restarted after the variable is set.
## Related Files
- `AUTH.md` — auth setup and troubleshooting for this skill
## Application integration
Use `+runway-dev` with `+runway-dev-models`, `+runway-dev-model-routers`, `+runway-dev-characters`, `+runway-dev-recipes`, or `+runway-dev-workflows` when the goal is to build or maintain application code rather than perform an account action directly.
From runwayml/skills at e3dffc1, shown as plain text under its license: MIT (permissive). The license text is in LICENSE.
View SKILL.md on GitHub at e3dffc1Files
- SKILL.md11 KB · 53dedb3d19fb
- AUTH.md1.6 KB · eec1e0db0d86
- scripts/
- runway-api.mjs18 KB · 6f29a3d949e5
3 files, 31 KB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.
Skill folder on GitHub at e3dffc1More from Runway
runway-dev
Provides foundation for building and integrating Runway Dev Platform into applications using the MCP connection for live account context and SDK for…
Claude Code · about 1.4K tokens · pinned 6 days ago
runway-dev-characters
This skill helps build and debug Runway Characters integrations by managing avatar creation, live sessions, and SDK implementation.
Claude Code · about 850 tokens · pinned 6 days ago
runway-dev-model-routers
This skill enables agents to build, modify, and debug Runway Model Routers for managing API calls across multiple models with credit caps and fallback policies.
Claude Code · about 670 tokens · pinned 6 days ago
runway-dev-models
This skill helps agents integrate Runway's generative models (text-to-video, text-to-image, etc.) into applications by selecting appropriate model endpoints…
Claude Code · about 670 tokens · pinned 6 days ago
runway-dev-recipes
This skill helps agents integrate Runway recipe APIs into applications by selecting the right recipe for a use case, implementing SDK client.recipes calls…
Claude Code · about 400 tokens · pinned 6 days ago
runway-dev-workflows
This skill builds, modifies, and debugs integrations that expose Runway app workflows as API endpoints.
Claude Code · about 340 tokens · pinned 6 days ago
Related in Media and creative
all-images-ai-automation
This skill automates All Images AI operations by discovering and executing tools through Composio's All Images AI toolkit via Rube MCP.
by ComposioOfficial publisher
Agents not labelled yet · about 710 tokens · pinned 6 days ago
remotion-best-practices
This skill routes the agent through Remotion's specialized knowledge bases for video creation, editing, and deployment.
by RemotionOfficial publisher
Contains scripts
Claude Code, Codex, Cursor +3 · about 920 tokens · pinned 6 days ago
remotion-best-practices
This skill routes the agent to specialized Remotion sub-skills based on the user's task, covering video creation, project setup, React markup, maps…
by RemotionOfficial publisher
Claude Code, Codex, Cursor +3 · about 1K tokens · pinned 6 days ago
remotion-captions
This skill enables video caption workflows including transcribing audio to generate captions, displaying captions in videos, and importing captions from SRT…
by RemotionOfficial publisher
Claude Code, Codex, Cursor +3 · about 220 tokens · pinned 6 days ago
remotion-captions
This skill enables the agent to work with captions in Remotion videos by transcribing audio to generate captions, displaying them in videos, and importing…
by RemotionOfficial publisher
Claude Code, Codex, Cursor +3 · about 270 tokens · pinned 6 days ago
remotion-create
This skill scaffolds a new Remotion video project, opens the browser-based Studio for live preview, and guides composition development using React markup.
by RemotionOfficial publisher
Claude Code, Codex, Cursor +3 · about 680 tokens · pinned 6 days ago
Open roles at Runway
No open roles at Runway on the Agent Native jobs board right now.
Browse the jobs board