npx skills add ...
npx skills add runwayml/skills --skill rw-integrate-characters
Help users create Runway Characters (GWM-1 avatars) and integrate real-time conversational sessions into their apps
npx skills add runwayml/skills --skill rw-integrate-characters
PREREQUISITES:
+rw-check-compatibility— Project must have a server-side component (API key must NEVER be exposed to the client)+rw-fetch-api-reference— Load the latest API reference from https://docs.dev.runwayml.com/api/ before integrating+rw-setup-api-key— API credentials must be configuredOPTIONAL DEPENDENCIES:
+rw-integrate-documents— Add a knowledge base to your character+rw-integrate-character-embed— Use the React SDK to embed the avatar call UI
Help users create Runway Characters — real-time conversational AI avatars powered by GWM-1.
Use this only when modifying a user's codebase. For direct avatar management or other one-off Runway account actions from the agent, use +use-runway-api instead.
Characters are generated from a single image (any visual style — photorealistic, animated, non-human) with full control over voice, personality, knowledge, and actions. No fine-tuning or training required.
| Concept | Description |
|---|---|
| Avatar | A persistent persona with a defined appearance, voice, and personality. Created once, used many times. |
| Session | A live WebRTC connection for real-time conversation. Connects one user to one avatar. Max duration: 5 minutes. |
| Status | Description |
|---|---|
NOT_READY | Session is being provisioned. Poll until ready. |
READY | Session is ready. The sessionKey is available. |
RUNNING | WebRTC connection is active. Conversation in progress. |
COMPLETED | Session ended normally. |
FAILED | Error occurred. Check the failure field. |
CANCELLED | Explicitly cancelled before completion. |
Important: Session credentials can only be consumed once. If the WebRTC connection fails after credentials are consumed, you must create a new Session.
The API key must stay server-side. The flow is:
POST /v1/realtime_sessions)READY (GET /v1/realtime_sessions/:id)POST /v1/realtime_sessions/:id/consume)@runwayml/sdk — Server-side SDK (session creation, avatar management)@runwayml/avatars-react — Client-side React components (WebRTC, UI)Avatars can be created via the Developer Portal (UI) or the API (programmatic).
.txt files)8be4df61-93ca-11d2-aa0d-00e098032b8c)If the reference image is a local file, upload it first using +rw-integrate-uploads:
referenceImage is required when creating an avatar. It accepts three formats:
| Format | Limit | When to use |
|---|---|---|
https://… URL | 2048 chars | Image already hosted publicly |
data:image/…;base64,… | 5 MB (characters) | Small-to-medium local files (~3.5 MB raw max) |
runway://… URI | 5000 chars | Large files uploaded via /v1/uploads first |
+rw-integrate-uploads) to get a runway:// URI instead of a data URI.For local files over ~3.5 MB, use the upload flow (+integrate-uploads) to get a runway:// URI instead of a data URI.
810dd3a (Improve CLI error details, auth fallback, and skill docs from testing):skills/integrate-characters/SKILL.md
| Preset ID | Name | Style |
|---|---|---|
clara | Clara | Soft, approachable |
victoria | Victoria | Firm, professional |
vincent | Vincent | Knowledgeable, authoritative |
Preview all voices in the Developer Portal.
This is the server-side API route that your client will call. It creates a session, polls until ready, consumes credentials, and returns them.
See +rw-integrate-character-embed for the React SDK components that handle WebRTC connection and rendering. The simplest approach:
key_ followed by 128 hex chars. Ensure it's active.| Browser | Minimum Version |
|---|---|
| Chrome | 74+ |
| Firefox | 78+ |
| Safari | 14.1+ |
| Edge | 79+ |
Users must grant microphone permissions. Camera permissions needed if user video is enabled.
| Resource | Description |
|---|---|
| Developer Portal | Manage avatars, view logs, access dashboard |
| SDK Repository | Report bugs, view examples, check releases |
When reporting issues, include: browser/version, SDK version (npm list @runwayml/avatars-react), error messages, session ID, and steps to reproduce.