diff --git a/lib/passwordstate/client.rb b/lib/passwordstate/client.rb
index b8a5da696b2edd38f7feb53de72dec81e4bb8b65..9444ecf505c24f77d72d3563a9b19cc32571669f 100644
--- a/lib/passwordstate/client.rb
+++ b/lib/passwordstate/client.rb
@@ -152,9 +152,17 @@ module Passwordstate
 
       return if http.body.nil?
 
+      body_cleaner = lambda do |obj|
+        obj.each { |k, v| v.replace('[ REDACTED ]') if k.is_a?(String) && %w[password apikey].include?(k.downcase) } if obj.is_a? Hash
+      end
+
       clean_body = JSON.parse(http.body) rescue nil
       if clean_body
-        clean_body = clean_body.each { |k, v| v.replace('[ REDACTED ]') if k.is_a?(String) && %w[password apikey].include?(k.downcase) }.to_json if http.body
+        if clean_body.is_a? Array
+          clean_body.each { |val| body_cleaner.call(val) }
+        else
+          body_cleaner.call(clean_body)
+        end
       else
         clean_body = http.body
       end