diff --git a/apps/meteor/app/utils/client/lib/RestApiClient.ts b/apps/meteor/app/utils/client/lib/RestApiClient.ts
index 0621fe9850da92300e6adaf959286526630b987c..38b2dc44b5ee01fc72b8ec67d45174a69708ada0 100644
--- a/apps/meteor/app/utils/client/lib/RestApiClient.ts
+++ b/apps/meteor/app/utils/client/lib/RestApiClient.ts
@@ -28,11 +28,16 @@ export const APIClient = new RestApiClient({
 	baseUrl: baseURI.replace(/\/$/, ''),
 });
 
-APIClient.use(function (request, next) {
+APIClient.use(async function (request, next) {
 	try {
-		return next(...request);
-	} catch (e) {
-		return new Promise((resolve, reject) => {
+		return await next(...request);
+	} catch (error) {
+		if (!(error instanceof Response) || error.status !== 400) {
+			throw error;
+		}
+
+		return new Promise(async (resolve, reject) => {
+			const e = await error.json();
 			process2faReturn({
 				error: e,
 				result: null,
diff --git a/packages/api-client/src/index.ts b/packages/api-client/src/index.ts
index 90905a7812b5b464ac04734ee38869e2061dc801..c75b39da3b387fa9ebbb50eb2d0e9ea0562569cc 100644
--- a/packages/api-client/src/index.ts
+++ b/packages/api-client/src/index.ts
@@ -161,6 +161,11 @@ export class RestClient implements RestClientInterface {
 			...options,
 			headers: { ...this.getCredentialsAsHeaders(), ...this.headers, ...headers },
 			method,
+		}).then(function (response) {
+			if (!response.ok) {
+				return Promise.reject(response);
+			}
+			return response;
 		});
 	}