diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,8 @@
-## [_Unreleased_](https://github.com/freckle/freckle-app/compare/freckle-http-v0.2.0.0...main)
+## [_Unreleased_](https://github.com/freckle/freckle-app/compare/freckle-http-v0.3.0.0...main)
+
+## [v0.3.0.0](https://github.com/freckle/freckle-app/compare/freckle-http-v0.2.0.0...freckle-http-v0.3.0.0)
+
+- Update `HttpCache.set` to accept TTL (and use it in memcached implementation)
 
 ## [v0.2.0.0](https://github.com/freckle/freckle-app/compare/freckle-http-v0.1.0.0...freckle-http-v0.2.0.0)
 
diff --git a/freckle-http.cabal b/freckle-http.cabal
--- a/freckle-http.cabal
+++ b/freckle-http.cabal
@@ -1,6 +1,6 @@
 cabal-version:      1.18
 name:               freckle-http
-version:            0.2.0.0
+version:            0.3.0.0
 license:            MIT
 license-file:       LICENSE
 maintainer:         Freckle Education
@@ -118,7 +118,7 @@
         base >=4.16.4.0 && <5,
         bytestring >=0.11.4.0,
         freckle-http,
-        freckle-prelude >=0.0.1.1,
+        freckle-prelude >=0.0.4.0,
         hspec >=2.8.1,
         hspec-expectations-json >=1.0.0.7,
         hspec-expectations-lifted >=0.10.0,
diff --git a/library/Freckle/App/Http/Cache.hs b/library/Freckle/App/Http/Cache.hs
--- a/library/Freckle/App/Http/Cache.hs
+++ b/library/Freckle/App/Http/Cache.hs
@@ -68,7 +68,7 @@
 
 data HttpCache m t = HttpCache
   { get :: CacheKey -> m (Either SomeException (Maybe t))
-  , set :: CacheKey -> t -> m (Either SomeException ())
+  , set :: CacheKey -> t -> CacheTTL -> m (Either SomeException ())
   , evict :: CacheKey -> m (Either SomeException ())
   }
 
@@ -176,7 +176,7 @@
              , "ttl" .= fromCacheTTL ttl
              ]
       let cresp = CachedResponse {response = resp, inserted = now, ttl = ttl}
-      fromEx () $ settings.cache.set key $ settings.codec.serialise cresp
+      fromEx () $ settings.cache.set key (settings.codec.serialise cresp) ttl
 
     gunzipResponseBody req resp
 
diff --git a/library/Freckle/App/Http/Cache/Memcached.hs b/library/Freckle/App/Http/Cache/Memcached.hs
--- a/library/Freckle/App/Http/Cache/Memcached.hs
+++ b/library/Freckle/App/Http/Cache/Memcached.hs
@@ -74,7 +74,7 @@
 memcachedHttpCache =
   HttpCache
     { get = try . Memcached.get
-    , set = \k v -> try $ Memcached.set k v 0
+    , set = \k v t -> try $ Memcached.set k v t
     , evict = try . Memcached.delete
     }
 
diff --git a/library/Freckle/App/Http/Cache/State.hs b/library/Freckle/App/Http/Cache/State.hs
--- a/library/Freckle/App/Http/Cache/State.hs
+++ b/library/Freckle/App/Http/Cache/State.hs
@@ -75,7 +75,7 @@
 stateHttpCache =
   HttpCache
     { get = \key -> fmap Right $ use $ cacheL . mapL . at key
-    , set = \key resp -> fmap Right $ cacheL . mapL . at key ?= resp
+    , set = \key resp _ -> fmap Right $ cacheL . mapL . at key ?= resp
     , evict = \key -> fmap Right $ cacheL . mapL . at key .= Nothing
     }
 
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
 name: freckle-http
-version: 0.2.0.0
+version: 0.3.0.0
 maintainer: Freckle Education
 category: HTTP
 github: freckle/freckle-app
