diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+[0.8.2](https://github.com/guillaume-nargeot/hpc-coveralls/issues?q=milestone:v0.8.2+is:closed)
+-----
+* Add option to send repo token (issue #36)
+
 [0.8.1](https://github.com/guillaume-nargeot/hpc-coveralls/issues?q=milestone:v0.8.1+is:closed)
 -----
 * Include additional test modules in package generated by sdist (issue #34)
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -117,6 +117,10 @@
 
 Please also note that there is an [open issue](https://github.com/lemurheavy/coveralls-public/issues/216) on coveralls issue tracker in order to improve this (add support for partial line coverage).
 
+#### --repo-token
+
+This option allows to specify your repo token when sending the report to coveralls.io.
+
 #### --display-report
 
 This boolean option prints the raw json coverage report to be sent to coveralls.io.
diff --git a/hpc-coveralls.cabal b/hpc-coveralls.cabal
--- a/hpc-coveralls.cabal
+++ b/hpc-coveralls.cabal
@@ -1,5 +1,5 @@
 name:           hpc-coveralls
-version:        0.8.1
+version:        0.8.2
 synopsis:       Coveralls.io support for Haskell.
 description:
   This utility converts and sends Haskell projects hpc code coverage to
diff --git a/src/HpcCoverallsCmdLine.hs b/src/HpcCoverallsCmdLine.hs
--- a/src/HpcCoverallsCmdLine.hs
+++ b/src/HpcCoverallsCmdLine.hs
@@ -11,6 +11,7 @@
 data HpcCoverallsArgs = CmdMain
     { excludeDirs   :: [String]
     , testSuites    :: [String]
+    , repoToken     :: Maybe String
     , displayReport :: Bool
     , printResponse :: Bool
     , dontSend      :: Bool
@@ -19,12 +20,13 @@
 
 hpcCoverallsArgs :: HpcCoverallsArgs
 hpcCoverallsArgs = CmdMain
-    { excludeDirs   = []                &= explicit &= typDir     &= name "exclude-dir"    &= help "Exclude sources files under the matching directory from the coverage report"
-    , displayReport = False             &= explicit               &= name "display-report" &= help "Display the json code coverage report that will be sent to coveralls.io"
-    , printResponse = False             &= explicit               &= name "print-response" &= help "Prints the json reponse received from coveralls.io"
-    , dontSend      = False             &= explicit               &= name "dont-send"      &= help "Do not send the report to coveralls.io"
-    , coverageMode  = AllowPartialLines &= explicit &= typ "MODE" &= name "coverage-mode"  &= help "Coverage conversion mode: AllowPartialLines (default), StrictlyFullLines"
-    , testSuites    = []                &= typ "TEST-SUITE" &= args
+    { excludeDirs   = []                &= explicit &= typDir      &= name "exclude-dir"    &= help "Exclude sources files under the matching directory from the coverage report"
+    , displayReport = False             &= explicit                &= name "display-report" &= help "Display the json code coverage report that will be sent to coveralls.io"
+    , printResponse = False             &= explicit                &= name "print-response" &= help "Prints the json reponse received from coveralls.io"
+    , dontSend      = False             &= explicit                &= name "dont-send"      &= help "Do not send the report to coveralls.io"
+    , coverageMode  = AllowPartialLines &= explicit &= typ "MODE"  &= name "coverage-mode"  &= help "Coverage conversion mode: AllowPartialLines (default), StrictlyFullLines"
+    , repoToken     = Nothing           &= explicit &= typ "TOKEN" &= name "repo-token"     &= help "Coveralls repo token"
+    , testSuites    = []                &= typ "TEST-SUITES" &= args
     } &= summary ("hpc-coveralls-" ++ versionString version ++ ", (C) Guillaume Nargeot 2014-2015")
       &= program "hpc-coveralls"
     where versionString = intercalate "." . map show . versionBranch
diff --git a/src/HpcCoverallsMain.hs b/src/HpcCoverallsMain.hs
--- a/src/HpcCoverallsMain.hs
+++ b/src/HpcCoverallsMain.hs
@@ -38,7 +38,7 @@
 writeJson filePath = BSL.writeFile filePath . encode
 
 getConfig :: HpcCoverallsArgs -> Maybe Config
-getConfig hca = Config (excludeDirs hca) (coverageMode hca) <$> listToMaybe (testSuites hca)
+getConfig hca = Config (excludeDirs hca) (coverageMode hca) (repoToken hca) <$> listToMaybe (testSuites hca)
 
 main :: IO ()
 main = do
diff --git a/src/Trace/Hpc/Coveralls.hs b/src/Trace/Hpc/Coveralls.hs
--- a/src/Trace/Hpc/Coveralls.hs
+++ b/src/Trace/Hpc/Coveralls.hs
@@ -11,6 +11,7 @@
 
 module Trace.Hpc.Coveralls ( generateCoverallsFromTix ) where
 
+import           Control.Applicative
 import           Data.Aeson
 import           Data.Aeson.Types ()
 import           Data.Function
@@ -82,12 +83,14 @@
           Mix _ _ _ _ mixEntries = mix
           getExprSource' = getExprSource $ lines source
 
-toCoverallsJson :: String -> String -> LixConverter -> TestSuiteCoverageData -> Value
-toCoverallsJson serviceName jobId converter testSuiteCoverageData = object [
-    "service_job_id" .= jobId,
-    "service_name" .= serviceName,
-    "source_files" .= toJsonCoverageList testSuiteCoverageData]
-    where toJsonCoverageList = map (uncurry $ coverageToJson converter) . M.toList
+toCoverallsJson :: String -> String -> Maybe String -> LixConverter -> TestSuiteCoverageData -> Value
+toCoverallsJson serviceName jobId repoTokenM converter testSuiteCoverageData =
+    object $ mcons (("repo_token" .=) <$> repoTokenM) base
+    where base = [
+              "service_job_id" .= jobId,
+              "service_name" .= serviceName,
+              "source_files" .= toJsonCoverageList testSuiteCoverageData]
+          toJsonCoverageList = map (uncurry $ coverageToJson converter) . M.toList
 
 mergeModuleCoverageData :: ModuleCoverageData -> ModuleCoverageData -> ModuleCoverageData
 mergeModuleCoverageData (source, mix, tixs1) (_, _, tixs2) =
@@ -125,9 +128,10 @@
                          -> IO Value -- ^ code coverage result in json format
 generateCoverallsFromTix serviceName jobId config = do
     testSuitesCoverages <- mapM (`readCoverageData` excludedDirPatterns) testSuiteNames
-    return $ toCoverallsJson serviceName jobId converter $ mergeCoverageData testSuitesCoverages
+    return $ toCoverallsJson serviceName jobId repoTokenM converter $ mergeCoverageData testSuitesCoverages
     where excludedDirPatterns = excludedDirs config
           testSuiteNames = testSuites config
+          repoTokenM = repoToken config
           converter = case coverageMode config of
               StrictlyFullLines -> strictConverter
               AllowPartialLines -> looseConverter
diff --git a/src/Trace/Hpc/Coveralls/Config.hs b/src/Trace/Hpc/Coveralls/Config.hs
--- a/src/Trace/Hpc/Coveralls/Config.hs
+++ b/src/Trace/Hpc/Coveralls/Config.hs
@@ -5,5 +5,6 @@
 data Config = Config {
     excludedDirs :: ![FilePath],
     coverageMode :: !CoverageMode,
+    repoToken    :: !(Maybe String),
     testSuites   :: ![String]
     }
diff --git a/src/Trace/Hpc/Coveralls/Util.hs b/src/Trace/Hpc/Coveralls/Util.hs
--- a/src/Trace/Hpc/Coveralls/Util.hs
+++ b/src/Trace/Hpc/Coveralls/Util.hs
@@ -30,6 +30,10 @@
 listToMaybe [] = Nothing
 listToMaybe xs = Just xs
 
+mcons :: Maybe a -> [a] -> [a]
+mcons Nothing xs = xs
+mcons (Just x) xs = x : xs
+
 matchAny :: [String] -> String -> Bool
 matchAny patterns fileName = any (`isPrefixOf` fileName) patterns
 
