diff --git a/cachix-api.cabal b/cachix-api.cabal
--- a/cachix-api.cabal
+++ b/cachix-api.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.2
 name:               cachix-api
-version:            1.1
+version:            1.2
 synopsis:           Servant HTTP API specification for https://cachix.org
 homepage:           https://github.com/cachix/cachix#readme
 bug-reports:        https://github.com/cachix/cachix/issues
@@ -39,7 +39,8 @@
   import:          defaults
   exposed-modules:
     Cachix.API
-    Cachix.API.Deploy
+    Cachix.API.Deploy.V1
+    Cachix.API.Deploy.V2
     Cachix.API.Error
     Cachix.API.Signing
     Cachix.API.WebSocketSubprotocol
@@ -47,7 +48,10 @@
     Cachix.Types.ByteStringStreaming
     Cachix.Types.ContentTypes
     Cachix.Types.Deploy
+    Cachix.Types.Deployment
     Cachix.Types.DeployResponse
+    Cachix.Types.DeployResponse.V1
+    Cachix.Types.DeployResponse.V2
     Cachix.Types.NarFileName
     Cachix.Types.NarInfo
     Cachix.Types.NarInfoCreate
diff --git a/src/Cachix/API.hs b/src/Cachix/API.hs
--- a/src/Cachix/API.hs
+++ b/src/Cachix/API.hs
@@ -3,8 +3,7 @@
 {-# LANGUAGE TypeOperators #-}
 
 module Cachix.API
-  ( api,
-    BinaryCacheAPI (..),
+  ( BinaryCacheAPI (..),
     API,
     CachixAuth,
   )
@@ -127,6 +126,3 @@
   deriving (Generic)
 
 type API = "api" :> "v1" :> ToServantApi BinaryCacheAPI
-
-api :: Proxy API
-api = Proxy
diff --git a/src/Cachix/API/Deploy.hs b/src/Cachix/API/Deploy.hs
deleted file mode 100644
--- a/src/Cachix/API/Deploy.hs
+++ /dev/null
@@ -1,28 +0,0 @@
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-{-# LANGUAGE TypeOperators #-}
-
-module Cachix.API.Deploy where
-
-import Cachix.API (CachixAuth)
-import qualified Cachix.Types.Deploy as Deploy
-import qualified Cachix.Types.DeployResponse as DeployResponse
-import Protolude
-import Servant.API
-import Servant.API.Generic
-
-data DeployAPI route = DeployAPI
-  { activate ::
-      route
-        :- CachixAuth
-        :> "deploy"
-        :> "activate"
-        :> ReqBody '[JSON] Deploy.Deploy
-        :> Post '[JSON] DeployResponse.DeployResponse
-  }
-  deriving (Generic)
-
-type API = "api" :> "v1" :> ToServantApi DeployAPI
-
-api :: Proxy API
-api = Proxy
diff --git a/src/Cachix/API/Deploy/V1.hs b/src/Cachix/API/Deploy/V1.hs
new file mode 100644
--- /dev/null
+++ b/src/Cachix/API/Deploy/V1.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE TypeOperators #-}
+
+module Cachix.API.Deploy.V1 where
+
+import Cachix.API (CachixAuth)
+import qualified Cachix.Types.Deploy as Deploy
+import qualified Cachix.Types.DeployResponse.V1 as DeployResponse.V1
+import qualified Cachix.Types.Deployment as Deployment
+import Data.UUID (UUID)
+import Protolude
+import Servant.API
+import Servant.API.Generic
+
+type API = "api" :> "v1" :> ToServantApi DeployAPI
+
+data DeployAPI route = DeployAPI
+  { activate :: route :- Activate,
+    getDeployment :: route :- GetDeployment
+  }
+  deriving (Generic)
+
+type Activate =
+  CachixAuth
+    :> "deploy"
+    :> "activate"
+    :> ReqBody '[JSON] Deploy.Deploy
+    :> Post '[JSON] DeployResponse.V1.DeployResponse
+
+type GetDeployment =
+  CachixAuth
+    :> "deploy"
+    :> "deployment"
+    :> Capture "uuid" UUID
+    :> Get '[JSON] Deployment.Deployment
diff --git a/src/Cachix/API/Deploy/V2.hs b/src/Cachix/API/Deploy/V2.hs
new file mode 100644
--- /dev/null
+++ b/src/Cachix/API/Deploy/V2.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE TypeOperators #-}
+
+module Cachix.API.Deploy.V2 where
+
+import Cachix.API (CachixAuth)
+import qualified Cachix.Types.Deploy as Deploy
+import qualified Cachix.Types.DeployResponse.V2 as DeployResponse.V2
+import Protolude
+import Servant.API
+import Servant.API.Generic
+
+type API = "api" :> "v2" :> ToServantApi DeployAPI
+
+data DeployAPI route = DeployAPI
+  { activate :: route :- Activate
+  }
+  deriving (Generic)
+
+type Activate =
+  CachixAuth
+    :> "deploy"
+    :> "activate"
+    :> ReqBody '[JSON] Deploy.Deploy
+    :> Post '[JSON] DeployResponse.V2.DeployResponse
diff --git a/src/Cachix/Types/Deploy.hs b/src/Cachix/Types/Deploy.hs
--- a/src/Cachix/Types/Deploy.hs
+++ b/src/Cachix/Types/Deploy.hs
@@ -1,12 +1,7 @@
 {-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveAnyClass #-}
 
 module Cachix.Types.Deploy where
 
-import Data.Aeson
-  ( FromJSON,
-    ToJSON,
-  )
 import Data.HashMap.Strict
 import Data.Swagger (ToSchema)
 import Deriving.Aeson
diff --git a/src/Cachix/Types/DeployResponse.hs b/src/Cachix/Types/DeployResponse.hs
--- a/src/Cachix/Types/DeployResponse.hs
+++ b/src/Cachix/Types/DeployResponse.hs
@@ -1,16 +1,3 @@
-{-# LANGUAGE DeriveAnyClass #-}
-
-module Cachix.Types.DeployResponse where
-
-import Data.Aeson
-  ( FromJSON,
-    ToJSON,
-  )
-import Data.HashMap.Strict
-import Data.Swagger (ToSchema)
-import Protolude
+module Cachix.Types.DeployResponse (module V2) where
 
-newtype DeployResponse = DeployResponse
-  { agents :: HashMap Text Text
-  }
-  deriving (Show, Generic, FromJSON, ToJSON, ToSchema, NFData)
+import Cachix.Types.DeployResponse.V2 as V2
diff --git a/src/Cachix/Types/DeployResponse/V1.hs b/src/Cachix/Types/DeployResponse/V1.hs
new file mode 100644
--- /dev/null
+++ b/src/Cachix/Types/DeployResponse/V1.hs
@@ -0,0 +1,15 @@
+module Cachix.Types.DeployResponse.V1 where
+
+import Data.Aeson
+  ( FromJSON,
+    ToJSON,
+  )
+import Data.HashMap.Strict
+import Data.Swagger (ToSchema)
+import Protolude
+
+newtype DeployResponse = DeployResponse
+  { agents :: HashMap Text Text
+  }
+  deriving stock (Show, Generic)
+  deriving anyclass (FromJSON, ToJSON, ToSchema, NFData)
diff --git a/src/Cachix/Types/DeployResponse/V2.hs b/src/Cachix/Types/DeployResponse/V2.hs
new file mode 100644
--- /dev/null
+++ b/src/Cachix/Types/DeployResponse/V2.hs
@@ -0,0 +1,23 @@
+module Cachix.Types.DeployResponse.V2 where
+
+import Data.Aeson
+  ( FromJSON,
+    ToJSON,
+  )
+import Data.HashMap.Strict
+import Data.Swagger (ToSchema)
+import Data.UUID (UUID)
+import Protolude
+
+data Details = Details
+  { id :: UUID,
+    url :: Text
+  }
+  deriving stock (Show, Generic)
+  deriving anyclass (FromJSON, ToJSON, ToSchema, NFData)
+
+newtype DeployResponse = DeployResponse
+  { agents :: HashMap Text Details
+  }
+  deriving stock (Show, Generic)
+  deriving anyclass (FromJSON, ToJSON, ToSchema, NFData)
diff --git a/src/Cachix/Types/Deployment.hs b/src/Cachix/Types/Deployment.hs
new file mode 100644
--- /dev/null
+++ b/src/Cachix/Types/Deployment.hs
@@ -0,0 +1,31 @@
+module Cachix.Types.Deployment where
+
+import Data.Aeson
+  ( FromJSON,
+    ToJSON,
+  )
+import Data.Swagger (ToSchema)
+import Data.Time.Clock (UTCTime)
+import Data.UUID (UUID)
+import Protolude
+
+data Status
+  = Pending
+  | InProgress
+  | Cancelled
+  | Failed
+  | Succeeded
+  deriving stock (Eq, Generic, Show)
+  deriving anyclass (FromJSON, ToJSON, ToSchema, NFData)
+
+data Deployment = Deployment
+  { id :: UUID,
+    index :: Int64,
+    createdOn :: UTCTime,
+    startedOn :: Maybe UTCTime,
+    storePath :: Text,
+    closureSize :: Maybe Int64,
+    status :: Status
+  }
+  deriving stock (Show, Generic)
+  deriving anyclass (FromJSON, ToJSON, ToSchema, NFData)
