diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,5 +1,3 @@
-![](https://github.com/fission-suite/PROJECTNAME/raw/master/assets/logo.png?sanitize=true)
-
 # ipfs-haskell
 
 [![Build Status](https://travis-ci.org/fission-suite/PROJECTNAME.svg?branch=master)](https://travis-ci.org/fission-suite/ipfs-haskell)
diff --git a/ipfs.cabal b/ipfs.cabal
--- a/ipfs.cabal
+++ b/ipfs.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 9ed6b01b56d1d0c1aa8f9fe456f538e8fe6bec8bc9bad95f54741a0b89025112
+-- hash: 284ab00afa21672d9c0d28245f1677069ac516cab3572cffcbc7dd5a92867875
 
 name:           ipfs
-version:        1.0.3
+version:        1.1.0
 synopsis:       Access IPFS locally and remotely
 description:    Interact with the IPFS network by shelling out to a local IPFS node or communicating via the HTTP interface of a remote IPFS node.
 category:       Network
@@ -37,6 +37,7 @@
       Network.IPFS.Add
       Network.IPFS.Add.Error
       Network.IPFS.BinPath.Types
+      Network.IPFS.Bytes.Types
       Network.IPFS.CID.Types
       Network.IPFS.Client
       Network.IPFS.Client.Add
@@ -44,6 +45,7 @@
       Network.IPFS.Client.Error.Types
       Network.IPFS.Client.Param
       Network.IPFS.Client.Pin
+      Network.IPFS.Client.Stat
       Network.IPFS.DAG
       Network.IPFS.DAG.Link
       Network.IPFS.DAG.Link.Types
@@ -74,6 +76,7 @@
       Network.IPFS.SparseTree
       Network.IPFS.SparseTree.Types
       Network.IPFS.Stat
+      Network.IPFS.Stat.Types
       Network.IPFS.Timeout.Types
       Network.IPFS.Types
       Network.IPFS.URL.Types
diff --git a/library/Network/IPFS/Bytes/Types.hs b/library/Network/IPFS/Bytes/Types.hs
new file mode 100644
--- /dev/null
+++ b/library/Network/IPFS/Bytes/Types.hs
@@ -0,0 +1,13 @@
+module Network.IPFS.Bytes.Types (Bytes(..)) where
+
+import           Network.IPFS.Prelude
+
+newtype Bytes = Bytes { unBytes :: Natural }
+  deriving newtype ( Eq
+                   , Show
+                   )
+
+instance FromJSON Bytes where
+  parseJSON val = do
+    nat <- parseJSON val
+    return <| Bytes nat
diff --git a/library/Network/IPFS/Client.hs b/library/Network/IPFS/Client.hs
--- a/library/Network/IPFS/Client.hs
+++ b/library/Network/IPFS/Client.hs
@@ -2,6 +2,7 @@
   ( API
   , add
   , cat
+  , stat
   , pin
   , unpin
   ) where
@@ -15,25 +16,31 @@
 
 import qualified Network.IPFS.File.Types      as File
 import           Network.IPFS.CID.Types
+import           Network.IPFS.Stat.Types
 
-import qualified Network.IPFS.Client.Add as Add
-import qualified Network.IPFS.Client.Cat as Cat
-import qualified Network.IPFS.Client.Pin as Pin
+import qualified Network.IPFS.Client.Add    as Add
+import qualified Network.IPFS.Client.Cat    as Cat
+import qualified Network.IPFS.Client.Pin    as Pin
+import qualified Network.IPFS.Client.Stat as Stat
 
 type API
   = "api"
   :> "v0"
   :> V0API
 
-type V0API = "add" :> Add.API
-        :<|> "cat" :> Cat.API
-        :<|> "pin" :> Pin.API
+type V0API = "add"  :> Add.API
+        :<|> "cat"  :> Cat.API
+        :<|> "stat" :> Stat.API
+        :<|> "pin"  :> Pin.API
 
 add   :: Lazy.ByteString -> ClientM CID
 cat   :: Text            -> ClientM File.Serialized
+stat  :: Text            -> ClientM Stat
 pin   :: Text            -> ClientM Pin.Response
 unpin :: Text -> Bool    -> ClientM Pin.Response
 
 add :<|> cat
+    :<|> stat 
     :<|> pin
-    :<|> unpin = client <| Proxy @API
+    :<|> unpin 
+    = client <| Proxy @API
diff --git a/library/Network/IPFS/Client/Stat.hs b/library/Network/IPFS/Client/Stat.hs
new file mode 100644
--- /dev/null
+++ b/library/Network/IPFS/Client/Stat.hs
@@ -0,0 +1,10 @@
+module Network.IPFS.Client.Stat (API) where
+
+import Servant
+
+import           Network.IPFS.Stat.Types
+import qualified Network.IPFS.Client.Param as Param
+
+type API = "stat"
+        :> Param.CID
+        :> Get '[JSON] Stat
diff --git a/library/Network/IPFS/Remote/Class.hs b/library/Network/IPFS/Remote/Class.hs
--- a/library/Network/IPFS/Remote/Class.hs
+++ b/library/Network/IPFS/Remote/Class.hs
@@ -3,6 +3,7 @@
   , runRemote
   , ipfsAdd
   , ipfsCat
+  , ipfsStat
   , ipfsPin
   , ipfsUnpin
   ) where
@@ -18,15 +19,18 @@
 import qualified Network.IPFS.Client.Pin as Pin
 import qualified Network.IPFS.File.Types      as File
 
+
 class MonadIO m => MonadRemoteIPFS m where
   runRemote :: ClientM a       -> m (Either ClientError a)
   ipfsAdd   :: Lazy.ByteString -> m (Either ClientError CID)
   ipfsCat   :: CID             -> m (Either ClientError File.Serialized)
+  ipfsStat  :: CID             -> m (Either ClientError Stat)
   ipfsPin   :: CID             -> m (Either ClientError Pin.Response)
   ipfsUnpin :: CID -> Bool     -> m (Either ClientError Pin.Response)
 
   -- defaults
   ipfsAdd raw                   = runRemote <| IPFS.Client.add raw
-  ipfsCat   (CID cid)           = runRemote <| IPFS.Client.cat cid
-  ipfsPin   (CID cid)           = runRemote <| IPFS.Client.pin cid
+  ipfsCat (CID cid)             = runRemote <| IPFS.Client.cat cid
+  ipfsStat (CID cid)            = runRemote <| IPFS.Client.stat cid
+  ipfsPin (CID cid)             = runRemote <| IPFS.Client.pin cid
   ipfsUnpin (CID cid) recursive = runRemote <| IPFS.Client.unpin cid recursive
diff --git a/library/Network/IPFS/Stat.hs b/library/Network/IPFS/Stat.hs
--- a/library/Network/IPFS/Stat.hs
+++ b/library/Network/IPFS/Stat.hs
@@ -1,4 +1,9 @@
-module Network.IPFS.Stat (getSize) where
+module Network.IPFS.Stat 
+  ( getStatRemote
+  , getSizeRemote
+  , getSize
+  , module Network.IPFS.Stat.Types
+  ) where
 
 import           Data.ByteString.Lazy.Char8 as CL
 import           Data.List as List
@@ -7,11 +12,36 @@
 
 import           Network.IPFS.Prelude
 import           Network.IPFS.Local.Class   as IPFS
+import           Network.IPFS.Remote.Class  as Remote
 import qualified Network.IPFS.Internal.UTF8 as UTF8
 
-import           Network.IPFS.Get.Error as IPFS.Get
+import           Network.IPFS.Get.Error     as IPFS.Get
 import qualified Network.IPFS.Process.Error as Process
-import           Network.IPFS.Types     as IPFS
+
+import           Network.IPFS.Types as IPFS
+import           Network.IPFS.Stat.Types 
+import           Network.IPFS.Bytes.Types 
+
+getStatRemote :: 
+     MonadRemoteIPFS m
+  => IPFS.CID 
+  -> m (Either IPFS.Get.Error Stat)
+getStatRemote cid = 
+  Remote.ipfsStat cid >>= \case
+    Left err -> 
+      return . Left . UnexpectedOutput <| UTF8.textShow err
+
+    Right stat -> 
+      return <| Right stat
+
+getSizeRemote :: 
+     MonadRemoteIPFS m
+  => IPFS.CID 
+  -> m (Either IPFS.Get.Error Bytes)
+getSizeRemote cid = 
+  getStatRemote cid >>= \case
+    Left err -> return <| Left err
+    Right stat -> return . Right <| cumulativeSize stat
 
 getSize ::
   MonadLocalIPFS m
diff --git a/library/Network/IPFS/Stat/Types.hs b/library/Network/IPFS/Stat/Types.hs
new file mode 100644
--- /dev/null
+++ b/library/Network/IPFS/Stat/Types.hs
@@ -0,0 +1,25 @@
+module Network.IPFS.Stat.Types (Stat(..)) where
+
+import Network.IPFS.Prelude
+import Network.IPFS.Bytes.Types
+
+
+data Stat = Stat 
+  { blockSize      :: Bytes
+  , cumulativeSize :: Bytes
+  , dataSize       :: Bytes
+  , hash           :: Text
+  , linksSize      :: Bytes
+  , numLinks       :: Natural
+  }
+
+instance FromJSON Stat where
+  parseJSON = withObject "Stat" \obj -> do
+    blockSize      <- obj .: "BlockSize"
+    cumulativeSize <- obj .: "CumulativeSize"
+    dataSize       <- obj .: "DataSize"
+    hash           <- obj .: "Hash"
+    linksSize      <- obj .: "LinksSize"
+    numLinks       <- obj .: "NumLinks"
+
+    return Stat {..}
diff --git a/library/Network/IPFS/Types.hs b/library/Network/IPFS/Types.hs
--- a/library/Network/IPFS/Types.hs
+++ b/library/Network/IPFS/Types.hs
@@ -16,6 +16,8 @@
   , Ignored
   , Gateway (..)
   , ErrorBody (..)
+  , Stat (..)
+  , Bytes (..)
   ) where
 
 import Network.IPFS.BinPath.Types
@@ -30,3 +32,5 @@
 import Network.IPFS.Ignored.Types
 import Network.IPFS.Gateway.Types
 import Network.IPFS.Client.Error.Types
+import Network.IPFS.Stat.Types
+import Network.IPFS.Bytes.Types
