diff --git a/src/access_api_handler.cc b/src/access_api_handler.cc
index 9d97d9e..fc7b97b 100644
--- a/src/access_api_handler.cc
+++ b/src/access_api_handler.cc
@@ -11,6 +11,7 @@
 #include "src/commands/schema_constants.h"
 #include "src/data_encoding.h"
 #include "src/json_error_codes.h"
+#include "src/utils.h"
 
 namespace weave {
 
@@ -21,7 +22,7 @@
 const char kStateCapacity[] = "_accessRevocationList.capacity";
 const char kUserId[] = "userId";
 const char kApplicationId[] = "applicationId";
-const char kExpirationTimeout[] = "expirationTimeoutSec";
+const char kExpirationTime[] = "expirationTime";
 const char kBlackList[] = "revocationListEntries";
 
 bool GetIds(const base::DictionaryValue& parameters,
@@ -64,7 +65,7 @@
             "applicationId": {
               "type": "string"
             },
-            "expirationTimeoutSec": {
+            "expirationTime": {
               "type": "integer"
             }
           }
@@ -83,6 +84,9 @@
                   },
                   "applicationId": {
                     "type": "string"
+                  },
+                  "expirationTime": {
+                    "type": "integer"
                   }
                 },
                 "additionalProperties": false
@@ -128,13 +132,15 @@
     return;
   }
 
-  int timeout_sec = 0;
-  parameters.GetInteger(kExpirationTimeout, &timeout_sec);
+  int time_j2k = 0;
+  if (!parameters.GetInteger(kExpirationTime, &time_j2k)) {
+    Error::AddToPrintf(&error, FROM_HERE, errors::commands::kInvalidPropValue,
+                       "Expiration time is missing");
+    command->Abort(error.get(), nullptr);
+    return;
+  }
 
-  base::Time expiration =
-      base::Time::Now() + base::TimeDelta::FromSeconds(timeout_sec);
-
-  manager_->Block(user_id, app_id, expiration,
+  manager_->Block(user_id, app_id, FromJ2000Time(time_j2k),
                   base::Bind(&AccessApiHandler::OnCommandDone,
                              weak_ptr_factory_.GetWeakPtr(), cmd));
 }
diff --git a/src/access_api_handler_unittest.cc b/src/access_api_handler_unittest.cc
index 25dd4da..79f2d49 100644
--- a/src/access_api_handler_unittest.cc
+++ b/src/access_api_handler_unittest.cc
@@ -104,7 +104,7 @@
           "applicationId": {
             "type": "string"
           },
-          "expirationTimeoutSec": {
+          "expirationTime": {
             "type": "integer"
           }
         }
@@ -123,6 +123,9 @@
                 },
                 "applicationId": {
                   "type": "string"
+                },
+                "expirationTime": {
+                  "type": "integer"
                 }
               },
               "additionalProperties": false
@@ -159,7 +162,7 @@
     'parameters': {
       'userId': 'AQID',
       'applicationId': 'AwQF',
-      'expirationTimeoutSec': 1234
+      'expirationTime': 1234
     }
   })");
 
diff --git a/src/privet/auth_manager.cc b/src/privet/auth_manager.cc
index 795dafa..90cf62b 100644
--- a/src/privet/auth_manager.cc
+++ b/src/privet/auth_manager.cc
@@ -17,6 +17,7 @@
 #include "src/privet/constants.h"
 #include "src/privet/openssl_utils.h"
 #include "src/string_utils.h"
+#include "src/utils.h"
 
 extern "C" {
 #include "third_party/libuweave/src/macaroon.h"
@@ -28,20 +29,11 @@
 
 namespace {
 
-const time_t kJ2000ToTimeT = 946684800;
 const size_t kMaxMacaroonSize = 1024;
 const size_t kMaxPendingClaims = 10;
 const char kInvalidTokenError[] = "invalid_token";
 const int kSessionIdTtlMinutes = 1;
 
-uint32_t ToJ2000Time(const base::Time& time) {
-  return std::max(time.ToTimeT(), kJ2000ToTimeT) - kJ2000ToTimeT;
-}
-
-base::Time FromJ2000Time(uint32_t time) {
-  return base::Time::FromTimeT(time + kJ2000ToTimeT);
-}
-
 template <class T>
 void AppendToArray(T value, std::vector<uint8_t>* array) {
   auto begin = reinterpret_cast<const uint8_t*>(&value);
diff --git a/src/utils.cc b/src/utils.cc
index 28828d7..5d1c3e3 100644
--- a/src/utils.cc
+++ b/src/utils.cc
@@ -26,6 +26,8 @@
 const char kErrorCodeKey[] = "code";
 const char kErrorMessageKey[] = "message";
 
+const time_t kJ2000ToTimeT = 946684800;
+
 }  // anonymous namespace
 
 namespace errors {
@@ -69,4 +71,12 @@
   return output;
 }
 
+uint32_t ToJ2000Time(const base::Time& time) {
+  return std::max(time.ToTimeT(), kJ2000ToTimeT) - kJ2000ToTimeT;
+}
+
+base::Time FromJ2000Time(uint32_t time) {
+  return base::Time::FromTimeT(time + kJ2000ToTimeT);
+}
+
 }  // namespace weave
diff --git a/src/utils.h b/src/utils.h
index 99d7bda..40c76b4 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -8,6 +8,7 @@
 #include <memory>
 #include <string>
 
+#include <base/time/time.h>
 #include <base/values.h>
 #include <weave/error.h>
 
@@ -31,6 +32,9 @@
 
 std::unique_ptr<base::DictionaryValue> ErrorInfoToJson(const Error& error);
 
+uint32_t ToJ2000Time(const base::Time& time);
+base::Time FromJ2000Time(uint32_t time);
+
 }  // namespace weave
 
 #endif  // LIBWEAVE_SRC_UTILS_H_
