diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2Controller.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2Controller.java
index d733dc6..0cd6171 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2Controller.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2Controller.java
@@ -243,7 +243,7 @@
                     new OAuth2RevokeTokenRequest(
                             new FormRequestWrapper(request, form));
             tokenService.revokeToken(revokeTokenRequest);
-            return Response.ok().build();
+            return Response.ok("SUCCESS").build();
         }
         catch (OAuthProblemException e) {
             throw responseHandler.throwit(e);
@@ -279,7 +279,7 @@
                     new OAuth2RevokeTokenSuperRequest(
                             new FormRequestWrapper(request, form));
             tokenService.revokeTokenViaSuperClient(revokeTokenRequest);
-            return Response.ok().build();
+            return Response.ok("SUCCESS").build();
         }
         catch (OAuthSystemException e) {
             throw responseHandler.throwit(e);
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java
index 4dd7c83..7fc6077 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java
@@ -203,7 +203,7 @@
             scopeService.verifyScope(context, OAuth2Scope.ADMIN);
             clientService.updatePrivilege(context.getUsername(), clientId,
                     Boolean.valueOf(isSuper));
-            return Response.ok().build();
+            return Response.ok("SUCCESS").build();
         }
         catch (KustvaktException e) {
             throw responseHandler.throwit(e);
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/UserGroupController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/UserGroupController.java
index 75fd96c..a70292c 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/UserGroupController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/UserGroupController.java
@@ -177,7 +177,7 @@
         try {
             scopeService.verifyScope(context, OAuth2Scope.CREATE_USER_GROUP);
             service.createUserGroup(group, context.getUsername());
-            return Response.ok().build();
+            return Response.ok("SUCCESS").build();
         }
         catch (KustvaktException e) {
             throw kustvaktResponseHandler.throwit(e);
@@ -276,7 +276,7 @@
             scopeService.verifyScope(context,
                     OAuth2Scope.ADD_USER_GROUP_MEMBER);
             service.inviteGroupMembers(group, context.getUsername());
-            return Response.ok().build();
+            return Response.ok("SUCCESS").build();
         }
         catch (KustvaktException e) {
             throw kustvaktResponseHandler.throwit(e);
@@ -298,7 +298,7 @@
                     OAuth2Scope.EDIT_USER_GROUP_MEMBER_ROLE);
             service.editMemberRoles(context.getUsername(), groupId,
                     memberUsername, roleIds);
-            return Response.ok().build();
+            return Response.ok("SUCCESS").build();
         }
         catch (KustvaktException e) {
             throw kustvaktResponseHandler.throwit(e);
@@ -333,7 +333,7 @@
                     OAuth2Scope.ADD_USER_GROUP_MEMBER_ROLE);
             service.addMemberRoles(context.getUsername(), groupId,
                     memberUsername, roleIds);
-            return Response.ok().build();
+            return Response.ok("SUCCESS").build();
         }
         catch (KustvaktException e) {
             throw kustvaktResponseHandler.throwit(e);
@@ -367,7 +367,7 @@
                     OAuth2Scope.DELETE_USER_GROUP_MEMBER_ROLE);
             service.deleteMemberRoles(context.getUsername(), groupId,
                     memberUsername, roleIds);
-            return Response.ok().build();
+            return Response.ok("SUCCESS").build();
         }
         catch (KustvaktException e) {
             throw kustvaktResponseHandler.throwit(e);
@@ -395,7 +395,7 @@
             scopeService.verifyScope(context,
                     OAuth2Scope.ADD_USER_GROUP_MEMBER);
             service.acceptInvitation(groupId, context.getUsername());
-            return Response.ok().build();
+            return Response.ok("SUCCESS").build();
         }
         catch (KustvaktException e) {
             throw kustvaktResponseHandler.throwit(e);
@@ -426,7 +426,7 @@
                     OAuth2Scope.DELETE_USER_GROUP_MEMBER);
             service.deleteGroupMember(context.getUsername(), groupId,
                     context.getUsername());
-            return Response.ok().build();
+            return Response.ok("SUCCESS").build();
         }
         catch (KustvaktException e) {
             throw kustvaktResponseHandler.throwit(e);
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/VirtualCorpusController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/VirtualCorpusController.java
index 6c979ff..3a55bc6 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/VirtualCorpusController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/VirtualCorpusController.java
@@ -293,7 +293,7 @@
         catch (KustvaktException e) {
             throw kustvaktResponseHandler.throwit(e);
         }
-        return Response.ok().build();
+        return Response.ok("SUCCESS").build();
     }
 
     /**
