diff --git a/Network/HTTP/Semantics/Client.hs b/Network/HTTP/Semantics/Client.hs
--- a/Network/HTTP/Semantics/Client.hs
+++ b/Network/HTTP/Semantics/Client.hs
@@ -30,6 +30,7 @@
     responseHeaders,
     responseBodySize,
     getResponseBodyChunk,
+    getResponseBodyChunk',
     getResponseTrailers,
 
     -- * Aux
@@ -133,7 +134,11 @@
 -- | Reading a chunk of the response body.
 --   An empty 'ByteString' returned when finished.
 getResponseBodyChunk :: Response -> IO ByteString
-getResponseBodyChunk (Response rsp) = inpObjBody rsp
+getResponseBodyChunk = fmap fst . getResponseBodyChunk'
+
+-- | Generalization of 'getResponseBodyChunk' which also returns if the 'ByteString' is the final one
+getResponseBodyChunk' :: Response -> IO (ByteString, Bool)
+getResponseBodyChunk' (Response rsp) = inpObjBody rsp
 
 -- | Reading response trailers.
 --   This function must be called after 'getResponseBodyChunk'
diff --git a/Network/HTTP/Semantics/Server.hs b/Network/HTTP/Semantics/Server.hs
--- a/Network/HTTP/Semantics/Server.hs
+++ b/Network/HTTP/Semantics/Server.hs
@@ -15,6 +15,7 @@
     requestHeaders,
     requestBodySize,
     getRequestBodyChunk,
+    getRequestBodyChunk',
     getRequestTrailers,
 
     -- * Aux
@@ -125,7 +126,11 @@
 -- | Reading a chunk of the request body.
 --   An empty 'ByteString' returned when finished.
 getRequestBodyChunk :: Request -> IO ByteString
-getRequestBodyChunk (Request req) = inpObjBody req
+getRequestBodyChunk = fmap fst . getRequestBodyChunk'
+
+-- | Generalization of 'getRequestBodyChunk' which also returns if the 'ByteString' is the final one
+getRequestBodyChunk' :: Request -> IO (ByteString, Bool)
+getRequestBodyChunk' (Request req) = inpObjBody req
 
 -- | Reading request trailers.
 --   This function must be called after 'getRequestBodyChunk'
diff --git a/Network/HTTP/Semantics/Types.hs b/Network/HTTP/Semantics/Types.hs
--- a/Network/HTTP/Semantics/Types.hs
+++ b/Network/HTTP/Semantics/Types.hs
@@ -47,7 +47,7 @@
 
 ----------------------------------------------------------------
 
-type InpBody = IO ByteString
+type InpBody = IO (ByteString, Bool)
 
 data OutBody
     = OutBodyNone
diff --git a/http-semantics.cabal b/http-semantics.cabal
--- a/http-semantics.cabal
+++ b/http-semantics.cabal
@@ -1,6 +1,6 @@
 cabal-version:      >=1.10
 name:               http-semantics
-version:            0.0.0
+version:            0.0.1
 license:            BSD3
 license-file:       LICENSE
 maintainer:         Kazu Yamamoto <kazu@iij.ad.jp>
