{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://api.dev.runwayml.com/schemas/runway/avatar.json", "title": "Runway Avatar", "description": "Represents an avatar persona in the Runway Characters system. Avatars are persistent conversational video agents with defined appearance, voice, and personality, created from a single reference image.", "type": "object", "required": ["id", "name"], "properties": { "id": { "type": "string", "format": "uuid", "description": "The unique identifier for the avatar." }, "name": { "type": "string", "description": "A human-readable name for the avatar persona.", "minLength": 1 }, "referenceImage": { "type": "string", "format": "uri", "description": "The HTTPS URL of the reference image used for the avatar's appearance. Any visual style works, from photorealistic humans to animated mascots." }, "personality": { "type": "string", "description": "Instructions defining the avatar's personality, behavior, and conversational style." }, "voice": { "$ref": "#/$defs/VoiceConfig", "description": "Voice configuration for the avatar." }, "openingMessage": { "type": "string", "description": "An optional opening message that the avatar speaks when a session starts." }, "documentIds": { "type": "array", "description": "List of knowledge document IDs attached to the avatar, providing additional context during conversations.", "maxItems": 50, "items": { "type": "string", "format": "uuid" } }, "createdAt": { "type": "string", "format": "date-time", "description": "The ISO 8601 timestamp when the avatar was created." } }, "$defs": { "VoiceConfig": { "type": "object", "description": "Configuration for the avatar's voice, specifying the voice provider and preset.", "required": ["type", "presetId"], "properties": { "type": { "type": "string", "description": "The voice provider type.", "enum": ["runway-live-preset"] }, "presetId": { "type": "string", "description": "The identifier of the voice preset to use for the avatar." } } }, "RealtimeSession": { "type": "object", "description": "A live WebRTC session connecting a user to an avatar for real-time conversational interaction. Sessions have a maximum duration of 5 minutes.", "required": ["id", "status"], "properties": { "id": { "type": "string", "format": "uuid", "description": "The unique identifier of the session." }, "status": { "type": "string", "description": "The current status of the session.", "enum": ["PENDING", "READY", "ACTIVE", "ENDED"] }, "model": { "type": "string", "description": "The model type used for the session.", "enum": ["gwm1_avatars"] }, "serverUrl": { "type": "string", "format": "uri", "description": "The WebRTC server URL to connect to." }, "token": { "type": "string", "description": "The one-time authentication token for the WebRTC connection." }, "roomName": { "type": "string", "description": "The name of the WebRTC room to join." }, "maxSessionDurationSeconds": { "type": "integer", "description": "Maximum session duration in seconds.", "maximum": 300 } } }, "Document": { "type": "object", "description": "A domain-specific knowledge document that avatars can reference during conversations to provide accurate, contextual responses.", "required": ["id", "name"], "properties": { "id": { "type": "string", "format": "uuid", "description": "The unique identifier of the document." }, "name": { "type": "string", "description": "A human-readable name for the knowledge document." }, "content": { "type": "string", "description": "The text content of the knowledge document. Each avatar supports up to 50,000 tokens of knowledge across all attached documents." }, "createdAt": { "type": "string", "format": "date-time", "description": "The ISO 8601 timestamp when the document was uploaded." } } }, "PresetAvatar": { "type": "string", "description": "Available preset avatar identifiers for quick session creation without custom avatar setup.", "enum": [ "game-character", "music-superstar", "game-character-man", "cat-character", "influencer", "tennis-coach", "human-resource", "fashion-designer", "cooking-teacher" ] } } }