diff --git a/api-data-store-server-java/src/main/java/ch/ethz/sis/afsclient/client/AfsClient.java b/api-data-store-server-java/src/main/java/ch/ethz/sis/afsclient/client/AfsClient.java
index 04643c684931e3795a23de5489e8b83dc7362b4e..fa151f65157082e898a19c2fd80f4aea338551f6 100644
--- a/api-data-store-server-java/src/main/java/ch/ethz/sis/afsclient/client/AfsClient.java
+++ b/api-data-store-server-java/src/main/java/ch/ethz/sis/afsclient/client/AfsClient.java
@@ -276,7 +276,9 @@ public final class AfsClient implements PublicAPI
             }
         } else if (statusCode >= 400 && statusCode < 500)
         {
-            throw ClientExceptions.CLIENT_ERROR.getInstance(statusCode);
+            // jsonObjectMapper can't deserialize immutable lists sent in the error message.
+            String res = new String(httpResponse.body(), StandardCharsets.UTF_8);
+            throw ClientExceptions.API_ERROR.getInstance(res);
         } else if (statusCode >= 500 && statusCode < 600)
         {
             throw ClientExceptions.SERVER_ERROR.getInstance(statusCode);
diff --git a/server-data-store/src/test/java/ch/ethz/sis/afsserver/client/OpenBisAuthApiClientTest.java b/server-data-store/src/test/java/ch/ethz/sis/afsserver/client/OpenBisAuthApiClientTest.java
index d10cdcfc41bf8013d896bd47202c37492722aa5f..e36ca1f2eeb57ec1888285e05ff333ba7f2c44ca 100644
--- a/server-data-store/src/test/java/ch/ethz/sis/afsserver/client/OpenBisAuthApiClientTest.java
+++ b/server-data-store/src/test/java/ch/ethz/sis/afsserver/client/OpenBisAuthApiClientTest.java
@@ -91,7 +91,6 @@ public class OpenBisAuthApiClientTest extends BaseApiClientTest
         {
             ThrowableReason reason = (ThrowableReason) e.getCause();
             String message = ((ExceptionReason) reason.getReason()).getMessage();
-            System.out.println(message);
             assertTrue(message.matches(
                     "(?s).*Session .* don't have rights \\[Read\\] over .*to perform the operation List(?s).*"));
         }
@@ -111,7 +110,6 @@ public class OpenBisAuthApiClientTest extends BaseApiClientTest
         {
             ThrowableReason reason = (ThrowableReason) e.getCause();
             String message = ((ExceptionReason) reason.getReason()).getMessage();
-            System.out.println(message);
             assertTrue(message.matches("(?s).*Session .* doesn't exist(?s).*"));
         }
     }
@@ -131,7 +129,6 @@ public class OpenBisAuthApiClientTest extends BaseApiClientTest
         {
             ThrowableReason reason = (ThrowableReason) e.getCause();
             String message = ((ExceptionReason) reason.getReason()).getMessage();
-            System.out.println(message);
             assertTrue(message.matches(
                     "(?s).*Session .* don't have rights \\[Write\\] over .* to perform the operation Write(?s).*"));
         }
@@ -155,7 +152,6 @@ public class OpenBisAuthApiClientTest extends BaseApiClientTest
         {
             ThrowableReason reason = (ThrowableReason) e.getCause();
             String message = ((ExceptionReason) reason.getReason()).getMessage();
-            System.out.println(message);
             assertTrue(message.matches(
                     "(?s).*Session .* don't have rights \\[(Write|Read), (Write|Read)\\] over .* to perform the operation Move(?s).*"));
         }