Skip to content

livekit-plugins-runway: Runway API returns 'Unrecognized key: livekit' on POST /v1/realtime_sessions #5547

@PrinceCarter

Description

@PrinceCarter

Description

The livekit-plugins-runway plugin (v1.5.6) sends a livekit key in the request body to POST /v1/realtime_sessions, but Runway's public API at api.dev.runwayml.com rejects it with:

Unrecognized key: livekit

Plugin code reference

In livekit/plugins/runway/avatar.py, the _create_session method constructs:

body = {
    "model": "gwm1_avatars",
    "avatar": self._avatar,
    "livekit": {
        "url": livekit_url,
        "token": livekit_token,
        "roomName": room_name,
        "agentIdentity": self._local_participant_identity,
    },
}

This is sent to POST {api_url}/v1/realtime_sessions.

Runway's documented API

The Runway Characters integration guide shows a different flow that does not include the livekit key:

client.realtimeSessions.create({
    model: 'gwm1_avatars',
    avatar: { type: 'custom', avatarId },
    personality,
    startScript,
})

Instead, the documented flow creates a session, polls until READY, then calls /v1/realtime_sessions/:id/consume to retrieve LiveKit connection credentials (url, token, roomName) from Runway's own LiveKit server.

Expected behavior

The plugin's approach (passing your own LiveKit credentials so Runway joins your room) is essential for the agent integration use case — it allows your LiveKit agent (with custom STT/LLM/TTS) to coexist with Runway's avatar video in the same room.

Questions

  1. Is the livekit key on POST /v1/realtime_sessions a feature that hasn't been deployed to the public API yet?
  2. Does it require a specific account flag or API key tier to be enabled?
  3. Is there an ETA for when this will be available on the public API?

Environment

  • livekit-plugins-runway: 1.5.6 (latest)
  • livekit-agents: 1.5.6
  • Python: 3.14
  • Runway API URL: https://api.dev.runwayml.com

Full error

Failed to start Runway avatar session: message='Runway API returned an error',
status_code=400, retryable=False,
body={"error":"Unrecognized key: livekit"}

cc @robinandeer (PR author of #5355)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions