Use Runway Api logo

Use Runway Api

Organization
runwayml
use-runway-api

Directly use the Runway API from the agent to generate media, manage resources, and inspect account state

Overview

Publisherrunwayml
Repositoryskills
Skill nameuse-runway-api
Stars
68
Forks
17
Bundled files
2
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 2 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by runwayml on GitHub. Read the source before you install it.

Installation

Install the Use Runway Api AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/runwayml/skills.git /tmp/skills
mkdir -p .claude/skills
cp -r /tmp/skills/skills/use-runway-api .claude/skills/use-runway-api
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Use Runway Api in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Use Runway Api on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Use Runway Api is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

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
    ![Fox in a snowy forest](https://storage.runway.../signed-url)
    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:

VariableDescription
RUNWAY_SKILLS_API_SECRETProduction API key
RUNWAY_SKILLS_API_SECRET_STAGEStage API key (used with --stage)
RUNWAY_SKILLS_BASE_URLOverride the base URL for any environment
RUNWAY_SKILLS_DIROptional. 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.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Use Runway Api AI skill do?

Directly use the Runway API from the agent to generate media, manage resources, and inspect account state

Why use Use Runway Api on TypingMind?

Because you install it once and use it with any model. Use Runway Api is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Use Runway Api in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/runwayml/skills/tree/main/skills/use-runway-api. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Use Runway Api?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Use Runway Api?

As many as you like. As long as a model supports skills, you can use Use Runway Api with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Use Runway Api AI skill free?

Yes. It is published on GitHub by runwayml under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇