diff --git a/cgi-utils.cabal b/cgi-utils.cabal
--- a/cgi-utils.cabal
+++ b/cgi-utils.cabal
@@ -1,5 +1,5 @@
 Name: cgi-utils
-Version: 0.0
+Version: 0.1
 Maintainer: Chris Done (chrisdone@gmail.com)
 Author: Chris Done (chrisdone@gmail.com)
 Copyright: 2010 Chris Done
diff --git a/src/Network/CGI/Session.hs b/src/Network/CGI/Session.hs
--- a/src/Network/CGI/Session.hs
+++ b/src/Network/CGI/Session.hs
@@ -1,6 +1,6 @@
 module Network.CGI.Session 
     (-- * Types
-     Session
+     Session(..)
     ,Sessions
     ,SessionName
     ,SessionM
@@ -8,6 +8,7 @@
     ,makeSessions
     ,initSession
     ,updateSession
+    ,sessionId
     -- * A simple Session monad.
     ,runSessionCGI
     ,runSession
@@ -22,7 +23,7 @@
 import Control.Applicative
 import Control.Concurrent.MVar (MVar,modifyMVar,readMVar,modifyMVar_,newMVar)
 import Control.Monad.Trans (liftIO,lift)
-import Control.Monad.State (StateT,evalStateT,get,modify)
+import Control.Monad.State (StateT,evalStateT,get,modify,gets)
 import Foreign.Marshal.Alloc (alloca)
 import Foreign.Storable (peek,sizeOf)
 import Data.Function
@@ -76,6 +77,10 @@
 sessionDel k =
     modify $ \s@Session{sess_values = vs} ->
         s {sess_values = M.delete k vs }
+
+-- | Session value getter.
+sessionId :: SessionM Integer
+sessionId = gets sess_id
 
 -- | A session consists of a unique id and a map.
 data Session = Session
