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.4.2
+version:            1.5
 synopsis:           Servant HTTP API specification for https://cachix.org
 homepage:           https://github.com/cachix/cachix#readme
 bug-reports:        https://github.com/cachix/cachix/issues
@@ -59,6 +59,7 @@
     Cachix.Types.NarInfoHash
     Cachix.Types.NixCacheInfo
     Cachix.Types.Permission
+    Cachix.Types.PinCreate
     Cachix.Types.Servant
     Cachix.Types.Session
     Cachix.Types.SigningKeyCreate
diff --git a/src/Cachix/API.hs b/src/Cachix/API.hs
--- a/src/Cachix/API.hs
+++ b/src/Cachix/API.hs
@@ -18,6 +18,7 @@
 import qualified Cachix.Types.NarInfoCreate as NarInfoCreate
 import qualified Cachix.Types.NarInfoHash as NarInfoHash
 import qualified Cachix.Types.NixCacheInfo as NixCacheInfo
+import qualified Cachix.Types.PinCreate as PinCreate
 import Cachix.Types.Servant (Get302, Head)
 import Cachix.Types.Session (Session)
 import qualified Cachix.Types.SigningKeyCreate as SigningKeyCreate
@@ -170,6 +171,14 @@
           :> Capture "name" Text
           :> "key"
           :> ReqBody '[JSON] SigningKeyCreate.SigningKeyCreate
+          :> Post '[JSON] NoContent,
+    createPin ::
+      route
+        :- CachixAuth
+          :> "cache"
+          :> Capture "name" Text
+          :> "pin"
+          :> ReqBody '[JSON] PinCreate.PinCreate
           :> Post '[JSON] NoContent
   }
   deriving (Generic)
diff --git a/src/Cachix/Types/PinCreate.hs b/src/Cachix/Types/PinCreate.hs
new file mode 100644
--- /dev/null
+++ b/src/Cachix/Types/PinCreate.hs
@@ -0,0 +1,20 @@
+module Cachix.Types.PinCreate where
+
+import Data.Aeson (FromJSON, ToJSON)
+import Data.Swagger (ToSchema (..), defaultSchemaOptions, genericDeclareNamedSchemaUnrestricted)
+import Protolude
+
+data Keep = Days Int | Revisions Int | Forever
+  deriving (Show, Eq, Generic, ToJSON, FromJSON)
+
+-- to support Keep with data constructor with arguments
+instance ToSchema Keep where
+  declareNamedSchema = genericDeclareNamedSchemaUnrestricted defaultSchemaOptions
+
+data PinCreate = PinCreate
+  { name :: Text,
+    storePath :: Text,
+    artifacts :: [Text],
+    keep :: Maybe Keep
+  }
+  deriving (Show, Eq, Generic, ToJSON, FromJSON, ToSchema)
