---
title: "Gets information about the server's capabilities."
method: GET
path: "/_matrix/client/v3/capabilities"
tags: ["Capabilities"]
---

# Gets information about the server's capabilities.

`GET /_matrix/client/v3/capabilities`

## Request

- Base URL: `https://matrix.org`
- URL: `https://matrix.org/_matrix/client/v3/capabilities`
- Auth: one of:
  - API key in query parameter `access_token`
  - HTTP bearer
- TypeScript: <https://skmtc.dev/matrix/apis/matrix-client-server-api/docs/_matrix/client/v3/capabilities/get.ts> (a function with typed inputs; its response is checked against the schema)

Gets information about the server's supported feature set
and other relevant capabilities.

## Response `200`

The capabilities of the server.

- object
  - `capabilities` object, required: The custom capabilities the server supports, using the Java package naming convention.
    - `m.3pid_changes` object: Capability to indicate if the user can change 3PID associations on their account.
      - `enabled` boolean, required: True if the user can perform the action, false otherwise.
    - `m.account_moderation` object: Capability to indicate if the user can perform account moderation actions via [server administration](https://spec.matrix.org/v1.19/client-server-api/#server-administration) endpoints. This property should be omitted altogether if `suspend` and `lock` would be `false`.
      - `lock` boolean: `true` if the user can lock a user via [`PUT /admin/lock/{userId}`](https://spec.matrix.org/v1.19/client-server-api/#put_matrixclientv1adminlockuserid), `false` otherwise. Defaults to `false`.
      - `suspend` boolean: `true` if the user can suspend a user via [`PUT /admin/suspend/{userId}`](https://spec.matrix.org/v1.19/client-server-api/#put_matrixclientv1adminsuspenduserid), `false` otherwise. Defaults to `false`.
    - `m.change_password` object: Capability to indicate if the user can change their password.
      - `enabled` boolean, required: True if the user can perform the action, false otherwise.
    - `m.forget_forced_upon_leave` object: Capability to indicate if the server automatically forgets rooms once the user leaves.
      - `enabled` boolean, required: True if the user can perform the action, false otherwise.
    - `m.get_login_token` object: Capability to indicate if the user can generate tokens to log further clients into their account.
      - `enabled` boolean, required: True if the user can perform the action, false otherwise.
    - `m.profile_fields` object: Capability to indicate if the user can set or modify extended profile fields via [`PUT /_matrix/client/v3/profile/{userId}/{keyName}`](https://spec.matrix.org/v1.19/client-server-api/#put_matrixclientv3profileuseridkeyname). If absent, clients SHOULD assume custom profile fields are supported, provided the homeserver advertises a specification version that includes `m.profile_fields` in the [`/versions`](https://spec.matrix.org/v1.19/client-server-api/#get_matrixclientversions) response.
      - `allowed` string[]: If present, a list of profile fields that clients are allowed to create, modify or delete, provided `enabled` is `true`; no other profile fields may be changed. If absent, clients may set all profile fields except those forbidden by the `disallowed` list, where present.
      - `disallowed` string[]: This property has no meaning if `allowed` is also specified. Otherwise, if present, a list of profile fields that clients are _not_ allowed to create, modify or delete. Provided `enabled` is `true`, clients MAY assume that they can set any profile field which is not included in this list.
      - `enabled` boolean, required: `true` if the user can create, update or delete any profile fields, `false` otherwise.
    - `m.room_versions` object: The room versions the server supports.
      - `available` object, required: A detailed description of the room versions the server supports.
      - `default` string, required: The default room version the server is using for new rooms.
    - `m.set_avatar_url` object: **Deprecated:** Capability to indicate if the user can change their avatar. Refer to `m.profile_fields` for extended profile management. For backwards compatibility, servers that directly or indirectly include the `avatar_url` profile field in the `m.profile_fields` capability MUST also set this capability accordingly.
      - `enabled` boolean, required: True if the user can perform the action, false otherwise.
    - `m.set_displayname` object: **Deprecated:** Capability to indicate if the user can change their display name. Refer to `m.profile_fields` for extended profile management. For backwards compatibility, servers that directly or indirectly include the `displayname` profile field in the `m.profile_fields` capability MUST also set this capability accordingly.
      - `enabled` boolean, required: True if the user can perform the action, false otherwise.

## Other responses

- `429`: This request was rate-limited.

---

[API](https://skmtc.dev/matrix/apis/matrix-client-server-api.md) - [All operations](https://skmtc.dev/matrix/apis/matrix-client-server-api/llms.txt) - [OpenAPI document](https://skmtc.dev/matrix/apis/matrix-client-server-api/revisions/c7fe4072c681?raw)
