Skip to content

Element X requests /_matrix/client/unstable/org.matrix.msc4143/rtc/transports without access token and fails with MISSING_MATRIX_RTC_TRANSPORT #6544

Description

@ElefanD

Steps to reproduce

  1. Use a self-hosted Synapse 1.150.0 homeserver configured for MatrixRTC with LiveKit and lk-jwt-service.
  2. Configure /.well-known/matrix/client with org.matrix.msc4143.rtc_foci pointing to the LiveKit JWT service.
  3. Enable in Synapse:
    • experimental_features.msc3266_enabled: true
    • experimental_features.msc4222_enabled: true
    • experimental_features.msc4143_enabled: true
    • matrix_rtc.transports with type: livekit and the correct livekit_service_url
  4. Sign in to Element X Android on this homeserver.
  5. Open a DM or room and try to start a call.
  6. Watch Synapse logs during the attempt.

Outcome

What did you expect?

Element X should successfully discover the MatrixRTC transport and start the call flow, or at minimum request the rtc/transports endpoint with the user's access token.

What happened instead?

Element X shows that the server is not configured to work with Element Call and fails with:

MISSING_MATRIX_RTC_TRANSPORT

In Synapse logs, Element X requests:

GET /_matrix/client/unstable/org.matrix.msc4143/rtc/transports

without an access token, receives:

401 Missing access token

and then proceeds to request an OpenID token afterwards.

The same rtc/transports endpoint works correctly when called manually with a valid bearer access token, returning:

{"rtc_transports":[{"type":"livekit","livekit_service_url":"https://site.com/livekit/jwt"}]}

So the server-side endpoint exists and works, but Element X appears to call it unauthenticated.

Relevant Synapse log lines:

Element X:
GET /_matrix/client/unstable/org.matrix.msc4143/rtc/transports -> 401 Missing access token
User-Agent: Element X/26.03.3 (...)

Then:
POST /_matrix/client/v3/user/@Stive:site.com/openid/request_token -> 200

Manual verification with bearer token:
GET /_matrix/client/unstable/org.matrix.msc4143/rtc/transports -> 200
{"rtc_transports":[{"type":"livekit","livekit_service_url":"https://site.com/livekit/jwt"}]}

Your phone model

Samsung SM-S938B

Operating system version

Android 16

Application version and app store

Element X 26.03.3

Homeserver

Self-hosted Synapse 1.150.0 on site.com with LiveKit 1.10.1 and lk-jwt-service 0.4.1

Will you send logs?

Yes

Are you willing to provide a PR?

No

Metadata

Metadata

Assignees

No one assigned

    Labels

    T-DefectSomething isn't working: bugs, crashes, hangs and other reported problems

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions