diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7252306c59e88b2aa96f3fd302f2307e2d4cba73..6cf6c31cadb758d02e365aba885000e686e488a0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.1.6
+
+- support policy apis
+
 ## 0.1.5
 
 - support notification apis
diff --git a/README.md b/README.md
index 639551ed3d27b11a161d715828f27dc9835c8e90..0541a2cd758fd5f586d5460e72b806e7fde2555f 100644
--- a/README.md
+++ b/README.md
@@ -8,8 +8,8 @@ This is the _unofficial_ MinIO Dart Client SDK that provides simple APIs to acce
 | [listBuckets]           | [getPartialObject]       | [presignedGetObject] | [setBucketNotification]                 |
 | [bucketExists]          | [fGetObject]             | [presignedPutObject] | [removeAllBucketNotification]           |
 | [removeBucket]          | [putObject]              | [presignedPostPolicy]| [listenBucketNotification]              |
-| [listObjects]           | [fPutObject]             |                      | getBucketPolicy                         |
-| [listObjectsV2]         | [copyObject]             |                      | setBucketPolicy                         |
+| [listObjects]           | [fPutObject]             |                      | [getBucketPolicy]                       |
+| [listObjectsV2]         | [copyObject]             |                      | [setBucketPolicy]                       |
 | [listIncompleteUploads] | [statObject]             |                      |                                         |
 |                         | [removeObject]           |                      |                                         |
 |                         | [removeObjects]          |                      |                                         |
@@ -101,3 +101,6 @@ MIT
 [setBucketNotification]: https://pub.dev/documentation/minio/latest/minio/Minio/setBucketNotification.html
 [removeAllBucketNotification]: https://pub.dev/documentation/minio/latest/minio/Minio/removeAllBucketNotification.html
 [listenBucketNotification]: https://pub.dev/documentation/minio/latest/minio/Minio/listenBucketNotification.html
+
+[getBucketPolicy]: https://pub.dev/documentation/minio/latest/minio/Minio/getBucketPolicy.html
+[setBucketPolicy]: https://pub.dev/documentation/minio/latest/minio/Minio/setBucketPolicy.html
diff --git a/lib/src/minio.dart b/lib/src/minio.dart
index de213016de111030ef511c8ecc0c717bde8d3e4b..885cf9e28b24146aff4d29819e773f422e154c82 100644
--- a/lib/src/minio.dart
+++ b/lib/src/minio.dart
@@ -1,3 +1,5 @@
+import 'dart:convert';
+
 import 'package:http/http.dart';
 import 'package:minio/models.dart';
 import 'package:minio/src/minio_client.dart';
@@ -229,6 +231,23 @@ class Minio {
     return NotificationConfiguration.fromXml(node.rootElement);
   }
 
+  /// Get the bucket policy associated with the specified bucket. If `objectPrefix`
+  /// is not empty, the bucket policy will be filtered based on object permissions
+  /// as well.
+  Future<Map<String, dynamic>> getBucketPolicy(bucket) async {
+    MinioInvalidBucketNameError.check(bucket);
+
+    final resp = await _client.request(
+      method: 'GET',
+      bucket: bucket,
+      resource: 'policy',
+    );
+
+    validate(resp, expect: 200);
+
+    return json.decode(resp.body);
+  }
+
   /// gets the region of the bucket
   Future<String> getBucketRegion(String bucket) async {
     MinioInvalidBucketNameError.check(bucket);
@@ -890,7 +909,9 @@ class Minio {
 
   // Remove all the notification configurations in the S3 provider
   Future<void> setBucketNotification(
-      String bucket, NotificationConfiguration config) async {
+    String bucket,
+    NotificationConfiguration config,
+  ) async {
     MinioInvalidBucketNameError.check(bucket);
     assert(config != null);
 
@@ -904,6 +925,28 @@ class Minio {
     validate(resp, expect: 200);
   }
 
+  /// Set the bucket policy on the specified bucket.
+  ///
+  /// [policy] is detailed [here](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html).
+  Future<void> setBucketPolicy(
+    String bucket, [
+    Map<String, dynamic> policy,
+  ]) async {
+    MinioInvalidBucketNameError.check(bucket);
+
+    final method = policy != null ? 'PUT' : 'DELETE';
+    final payload = policy != null ? json.encode(policy) : '';
+
+    final resp = await _client.request(
+      method: method,
+      bucket: bucket,
+      resource: 'policy',
+      payload: payload,
+    );
+
+    validate(resp, expect: 204);
+  }
+
   /// Stat information of the object.
   Future<StatObjectResult> statObject(String bucket, String object) async {
     MinioInvalidBucketNameError.check(bucket);
diff --git a/pubspec.yaml b/pubspec.yaml
index b4dd52c0eef2b79dc7af6364612989a3797a4aec..47766c6dfb15940077acfe29d3bb03e9d35271e7 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,6 +1,6 @@
 name: minio
 description: Unofficial MinIO Dart Client SDK that provides simple APIs to access any Amazon S3 compatible object storage server.
-version: 0.1.5
+version: 0.1.6
 homepage: https://github.com/xtyxtyx/minio-dart
 issue_tracker: https://github.com/xtyxtyx/minio-dart/issues