From 9726841e015e76af63ffdbf39508228981a15127 Mon Sep 17 00:00:00 2001 From: Hugh Nimmo-Smith Date: Fri, 20 Feb 2026 09:39:55 +0000 Subject: [PATCH] Spec for MSC4335: M_USER_LIMIT_EXCEEDED error code --- .../client_server/newsfragments/2315.feature | 1 + content/client-server-api/_index.md | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 changelogs/client_server/newsfragments/2315.feature diff --git a/changelogs/client_server/newsfragments/2315.feature b/changelogs/client_server/newsfragments/2315.feature new file mode 100644 index 00000000..77fecc1d --- /dev/null +++ b/changelogs/client_server/newsfragments/2315.feature @@ -0,0 +1 @@ +Add `M_USER_LIMIT_EXCEEDED` common error code, as per [MSC4335](https://github.com/matrix-org/matrix-spec-proposals/pull/4335). diff --git a/content/client-server-api/_index.md b/content/client-server-api/_index.md index 5f74ad40..3ffdc89d 100644 --- a/content/client-server-api/_index.md +++ b/content/client-server-api/_index.md @@ -147,6 +147,37 @@ state (e.g.: sending messages, account data, etc) and not routes which only read state (e.g.: [`/sync`](#get_matrixclientv3sync), [`/user/{userId}/account_data/{type}`](#get_matrixclientv3useruseridaccount_datatype), etc). +`M_USER_LIMIT_EXCEEDED` +{{% added-in v="1.18" %}} The request cannot be completed because the user has +exceeded (or the request would cause them to exceed) a limit associated with +their account. For example, a user may have reached their allocated storage +quota, reached a maximum number of allowed rooms, devices, or other +account-scoped resources, or exceeded usage limits for specific features. + +The error response MUST have an `info_uri` field (string), which is a URI +that the client can present to the user to provide more context on the +encountered limit and, if applicable, guidance on how to increase the limit. +The homeserver MAY return different values for `info_uri` depending on the type +of limit reached. + +The error response MAY include a `can_upgrade` field (boolean, default `false`). +If `true`, it indicates that the specific limit encountered can be increased, +for example by upgrading the user's account tier. If absent or `false`, the +limit is a hard limit that cannot be increased. + +The HTTP status code will depend on depend on the particular endpoint. + +Example response: + +```json +{ + "errcode": "M_USER_LIMIT_EXCEEDED", + "error": "You have exceeded your storage quota of 10GB", + "info_uri": "https://example.com/homeserver/about?limit_type=quota", + "can_upgrade": true +} +``` + `M_UNKNOWN` An unknown error has occurred.