diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -4,31 +4,39 @@
 
 import qualified Data.Text as Text
 import qualified Data.Text.IO as TIO
+import           Nuxeo.ElasticSearch
 import           Nuxeo.Log
 import           Options.Applicative
 
-data NuxeoCli = NuxeoCli { cliLogFile :: String }
+data NuxeoCli = NuxeoCli { cliLogFile :: String
+                         , cliLogin :: String
+                         , cliPassword :: String
+                         , cliUrl :: String }
 
 args :: Parser NuxeoCli
 args = NuxeoCli
-       <$> strOption (long "log" <> help "Log file")
+       <$> option auto (long "log" <> help "Log file" <> value "server.log")
+       <*> option auto (long "login" <> help "Instance login")
+       <*> option auto (long "password" <> help "Instance password")
+       <*> option auto (long "url" <> help "Instance base url")
 
 -- | Exemple to extract errors from Nuxeo log
 nuxeocli :: NuxeoCli -> IO()
-nuxeocli (NuxeoCli logFile) = (filter (\l -> nuxeoLogEntryType l == Error) <$> parseNuxeoLog logFile)
-                              >>= mapM_ (\t -> TIO.putStrLn $
-                                          Text.replicate 10 "=" <> "\n"
-                                          <> Text.replicate 5 " " <> (Text.pack $ show $ nuxeoLogEntryDthr t)
-                                          <> "\n" <> Text.replicate 10 "=" <> "\n"
-                                          <> (Text.pack $ show $ nuxeoLogEntryType t)
-                                          <> " - "
-                                          <> nuxeoLogEntryAction t
-                                          <> "\n\n"
-                                          <> nuxeoLogEntryLog t
-                                        )
+nuxeocli (NuxeoCli logFile login password url) = (filter (\l -> nuxeoLogEntryType l == Error) <$> parseNuxeoLog logFile)
+                                                 >>= mapM_ (\t -> TIO.putStrLn $
+                                                             Text.replicate 10 "=" <> "\n"
+                                                             <> Text.replicate 5 " " <> (Text.pack $ show $ nuxeoLogEntryDthr t)
+                                                             <> "\n" <> Text.replicate 10 "=" <> "\n"
+                                                             <> (Text.pack $ show $ nuxeoLogEntryType t)
+                                                             <> " - "
+                                                             <> nuxeoLogEntryAction t
+                                                             <> "\n\n"
+                                                             <> nuxeoLogEntryLog t
+                                                           )
 
 main :: IO()
-main = nuxeocli =<< execParser opts
+main = do
+  nuxeocli =<< execParser opts
   where
     opts = info (args <**> helper)
       (fullDesc
diff --git a/nuxeo.cabal b/nuxeo.cabal
--- a/nuxeo.cabal
+++ b/nuxeo.cabal
@@ -2,16 +2,16 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 7b38063f3f56ba357f013f162de10b1a9863401f14d65a0c9118af59eb7b2f85
+-- hash: cf3e6fd641583c528a2a5475ffe131d7fcc51c3422ff94c20479a26d67b9054d
 
 name:           nuxeo
-version:        0.3.0.2
+version:        0.3.0.3
 description:    Nuxeo tools
 category:       System
 homepage:       https://github.com/apeyroux/nuxeo#readme
 bug-reports:    https://github.com/apeyroux/nuxeo/issues
 author:         Alexandre Peyroux
-maintainer:     alex@xn--wxa.email
+maintainer:     alex@px.io
 license:        BSD3
 license-file:   LICENSE
 build-type:     Simple
@@ -23,6 +23,7 @@
 
 library
   exposed-modules:
+      Nuxeo.ElasticSearch
       Nuxeo.Log
   other-modules:
       Paths_nuxeo
@@ -30,13 +31,17 @@
       src
   ghc-options: -Wall
   build-depends:
-      attoparsec
+      aeson
+    , attoparsec
     , base >=4.2 && <5
     , bytestring
     , conduit
     , conduit-extra
+    , http-conduit
+    , http-types
     , text
     , time
+    , url
   default-language: Haskell2010
 
 executable nuxeo
@@ -45,7 +50,7 @@
       Paths_nuxeo
   hs-source-dirs:
       app
-  ghc-options: -Wall
+  ghc-options: -Wall -threaded -rtsopts
   build-depends:
       base >=4.2 && <5
     , nuxeo
diff --git a/src/Nuxeo/ElasticSearch.hs b/src/Nuxeo/ElasticSearch.hs
new file mode 100644
--- /dev/null
+++ b/src/Nuxeo/ElasticSearch.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+module Nuxeo.ElasticSearch (
+  reindex
+  ) where
+
+import           Data.Aeson (object, (.=))
+import qualified Data.ByteString.Char8 as C8
+import           Network.HTTP.Simple
+import           Network.URL
+
+-- | POST
+-- @
+-- {"params":{},"context":{}}
+-- @
+-- to __"/nuxeo/site/automation/Elasticsearch.Index"__
+reindex :: String -> String -> String -> IO (Either String String)
+reindex
+  instanceLogin
+  instancePassword
+  instanceUrl =
+  -- check if instanceUrl is formated
+  case importURL esUrl of
+    Just _ -> do
+      initReq <- parseRequest req
+      let request = setRequestBasicAuth (C8.pack instanceLogin) (C8.pack instancePassword) $ setRequestBodyJSON requestObject initReq
+      response <- httpLBS request
+      if getResponseStatusCode response /= 204 
+        then pure $ Left $ "Request error: " <> (show $ getResponseStatusCode response)
+        else pure $ Right "Reindexing taken in account"
+    Nothing -> pure $ Left "Request error: bad url"
+  where
+    esUrlPath = "/nuxeo/site/automation/Elasticsearch.Index"
+    esUrl = instanceUrl <> esUrlPath
+    req = "POST " <> esUrl
+    requestObject = object ["params" .= object [], "context"  .= object []]
