diff --git a/approveapi.cabal b/approveapi.cabal
--- a/approveapi.cabal
+++ b/approveapi.cabal
@@ -1,5 +1,5 @@
 name:           approveapi
-version:        0.1.0.0
+version:        0.1.3.0
 synopsis:       ApproveAPI Haskell Client
 description:    .
                 Haskell client for the ApproveAPI HTTP API
diff --git a/lib/ApproveApi/Core.hs b/lib/ApproveApi/Core.hs
--- a/lib/ApproveApi/Core.hs
+++ b/lib/ApproveApi/Core.hs
@@ -96,14 +96,14 @@
 --
 -- configUserAgent:
 --
--- @"approveapi/0.1.0.0"@
+-- @"approveapi/0.1.3.0"@
 --
 newConfig :: IO ApproveApiConfig
 newConfig = do
     logCxt <- initLogContext
     return $ ApproveApiConfig
         { configHost = "https://approve.sh"
-        , configUserAgent = "approveapi/0.1.0.0"
+        , configUserAgent = "approveapi/0.1.3.0"
         , configLogExecWithContext = runDefaultLogExecWithContext
         , configLogContext = logCxt
         , configAuthMethods = []
diff --git a/lib/ApproveApi/Model.hs b/lib/ApproveApi/Model.hs
--- a/lib/ApproveApi/Model.hs
+++ b/lib/ApproveApi/Model.hs
@@ -125,6 +125,8 @@
   , createPromptRequestLongPoll :: !(Maybe Bool) -- ^ "long_poll" - If true, the request waits (long-polls) until the user responds to the prompt or more than 10 minutes pass. Defaults to false.
   , createPromptRequestExpiresIn :: !(Maybe Double) -- ^ "expires_in" - The number of seconds until this request can no longer be answered.
   , createPromptRequestMetadata :: !(Maybe PromptMetadata) -- ^ "metadata"
+  , createPromptRequestInternalData :: !(Maybe (Map.Map String Text)) -- ^ "internal_data"
+  , createPromptRequestIdempotencyKey :: !(Maybe Text) -- ^ "idempotency_key" - Allows calling &#x60;create_prompt&#x60; multiple times idempotently, such that a prompt is sent at-most once. This key should contain sufficient randomness. Idempotent requests are stored for 24 hours. After that time, the same key will create a new request.
   } deriving (P.Show, P.Eq, P.Typeable)
 
 -- | FromJSON CreatePromptRequest
@@ -141,6 +143,8 @@
       <*> (o .:? "long_poll")
       <*> (o .:? "expires_in")
       <*> (o .:? "metadata")
+      <*> (o .:? "internal_data")
+      <*> (o .:? "idempotency_key")
 
 -- | ToJSON CreatePromptRequest
 instance A.ToJSON CreatePromptRequest where
@@ -156,6 +160,8 @@
       , "long_poll" .= createPromptRequestLongPoll
       , "expires_in" .= createPromptRequestExpiresIn
       , "metadata" .= createPromptRequestMetadata
+      , "internal_data" .= createPromptRequestInternalData
+      , "idempotency_key" .= createPromptRequestIdempotencyKey
       ]
 
 
@@ -176,6 +182,8 @@
   , createPromptRequestLongPoll = Nothing
   , createPromptRequestExpiresIn = Nothing
   , createPromptRequestMetadata = Nothing
+  , createPromptRequestInternalData = Nothing
+  , createPromptRequestIdempotencyKey = Nothing
   }
 
 -- ** Error
@@ -213,6 +221,7 @@
   { promptId :: !(Text) -- ^ /Required/ "id" - A unique id for this prompt.
   , promptSentAt :: !(Double) -- ^ /Required/ "sent_at" - The unix timestamp when this prompt was sent.
   , promptIsExpired :: !(Bool) -- ^ /Required/ "is_expired" - Whether the prompt can still be answered.
+  , promptRequest :: !(CreatePromptRequest) -- ^ /Required/ "request"
   , promptAnswer :: !(Maybe PromptAnswer) -- ^ "answer"
   , promptMetadata :: !(Maybe PromptMetadata) -- ^ "metadata"
   } deriving (P.Show, P.Eq, P.Typeable)
@@ -224,6 +233,7 @@
       <$> (o .:  "id")
       <*> (o .:  "sent_at")
       <*> (o .:  "is_expired")
+      <*> (o .:  "request")
       <*> (o .:? "answer")
       <*> (o .:? "metadata")
 
@@ -234,6 +244,7 @@
       [ "id" .= promptId
       , "sent_at" .= promptSentAt
       , "is_expired" .= promptIsExpired
+      , "request" .= promptRequest
       , "answer" .= promptAnswer
       , "metadata" .= promptMetadata
       ]
@@ -244,12 +255,14 @@
   :: Text -- ^ 'promptId': A unique id for this prompt.
   -> Double -- ^ 'promptSentAt': The unix timestamp when this prompt was sent.
   -> Bool -- ^ 'promptIsExpired': Whether the prompt can still be answered.
+  -> CreatePromptRequest -- ^ 'promptRequest' 
   -> Prompt
-mkPrompt promptId promptSentAt promptIsExpired =
+mkPrompt promptId promptSentAt promptIsExpired promptRequest =
   Prompt
   { promptId
   , promptSentAt
   , promptIsExpired
+  , promptRequest
   , promptAnswer = Nothing
   , promptMetadata = Nothing
   }
diff --git a/lib/ApproveApi/ModelLens.hs b/lib/ApproveApi/ModelLens.hs
--- a/lib/ApproveApi/ModelLens.hs
+++ b/lib/ApproveApi/ModelLens.hs
@@ -108,8 +108,18 @@
 createPromptRequestMetadataL f CreatePromptRequest{..} = (\createPromptRequestMetadata -> CreatePromptRequest { createPromptRequestMetadata, ..} ) <$> f createPromptRequestMetadata
 {-# INLINE createPromptRequestMetadataL #-}
 
+-- | 'createPromptRequestInternalData' Lens
+createPromptRequestInternalDataL :: Lens_' CreatePromptRequest (Maybe (Map.Map String Text))
+createPromptRequestInternalDataL f CreatePromptRequest{..} = (\createPromptRequestInternalData -> CreatePromptRequest { createPromptRequestInternalData, ..} ) <$> f createPromptRequestInternalData
+{-# INLINE createPromptRequestInternalDataL #-}
 
+-- | 'createPromptRequestIdempotencyKey' Lens
+createPromptRequestIdempotencyKeyL :: Lens_' CreatePromptRequest (Maybe Text)
+createPromptRequestIdempotencyKeyL f CreatePromptRequest{..} = (\createPromptRequestIdempotencyKey -> CreatePromptRequest { createPromptRequestIdempotencyKey, ..} ) <$> f createPromptRequestIdempotencyKey
+{-# INLINE createPromptRequestIdempotencyKeyL #-}
 
+
+
 -- * Error
 
 -- | 'errorError' Lens
@@ -135,6 +145,11 @@
 promptIsExpiredL :: Lens_' Prompt (Bool)
 promptIsExpiredL f Prompt{..} = (\promptIsExpired -> Prompt { promptIsExpired, ..} ) <$> f promptIsExpired
 {-# INLINE promptIsExpiredL #-}
+
+-- | 'promptRequest' Lens
+promptRequestL :: Lens_' Prompt (CreatePromptRequest)
+promptRequestL f Prompt{..} = (\promptRequest -> Prompt { promptRequest, ..} ) <$> f promptRequest
+{-# INLINE promptRequestL #-}
 
 -- | 'promptAnswer' Lens
 promptAnswerL :: Lens_' Prompt (Maybe PromptAnswer)
diff --git a/openapi.yaml b/openapi.yaml
--- a/openapi.yaml
+++ b/openapi.yaml
@@ -158,6 +158,25 @@
     Prompt:
       example:
         sent_at: 0.8008281904610115
+        request:
+          metadata:
+            browser: browser
+            operating_system: operating_system
+            location: location
+            time: time
+            ip_address: ip_address
+          long_poll: true
+          reject_text: reject_text
+          internal_data:
+            key: internal_data
+          approve_redirect_url: approve_redirect_url
+          reject_redirect_url: reject_redirect_url
+          idempotency_key: idempotency_key
+          approve_text: approve_text
+          body: body
+          title: title
+          user: user
+          expires_in: 6.027456183070403
         metadata:
           browser: browser
           operating_system: operating_system
@@ -171,7 +190,7 @@
             browser: browser
             operating_system: operating_system
             ip_address: ip_address
-          time: 6.027456183070403
+          time: 1.4658129805029452
         id: id
       properties:
         id:
@@ -183,6 +202,8 @@
         is_expired:
           description: Whether the prompt can still be answered.
           type: boolean
+        request:
+          $ref: '#/components/schemas/CreatePromptRequest'
         answer:
           $ref: '#/components/schemas/PromptAnswer'
         metadata:
@@ -190,6 +211,7 @@
       required:
       - id
       - is_expired
+      - request
       - sent_at
       type: object
     CreatePromptRequest:
@@ -202,13 +224,16 @@
           ip_address: ip_address
         long_poll: true
         reject_text: reject_text
+        internal_data:
+          key: internal_data
         approve_redirect_url: approve_redirect_url
         reject_redirect_url: reject_redirect_url
+        idempotency_key: idempotency_key
         approve_text: approve_text
         body: body
         title: title
         user: user
-        expires_in: 0.8008281904610115
+        expires_in: 6.027456183070403
       properties:
         user:
           description: The user to send the approval request to. Can be either an email address or a phone number.
@@ -239,6 +264,13 @@
           type: number
         metadata:
           $ref: '#/components/schemas/PromptMetadata'
+        internal_data:
+          additionalProperties:
+            type: string
+          type: object
+        idempotency_key:
+          description: Allows calling `create_prompt` multiple times idempotently, such that a prompt is sent at-most once. This key should contain sufficient randomness. Idempotent requests are stored for 24 hours. After that time, the same key will create a new request.
+          type: string
       required:
       - body
       - user
@@ -267,6 +299,10 @@
           description: The operating system initiating the action, i.e. Mac OS X.
           type: string
       type: object
+    PromptInternalData:
+      additionalProperties:
+        type: string
+      type: object
     PromptAnswer:
       example:
         result: true
@@ -274,7 +310,7 @@
           browser: browser
           operating_system: operating_system
           ip_address: ip_address
-        time: 6.027456183070403
+        time: 1.4658129805029452
       properties:
         result:
           description: The user's answer to whether or not they approve this prompt.
diff --git a/tests/Instances.hs b/tests/Instances.hs
--- a/tests/Instances.hs
+++ b/tests/Instances.hs
@@ -109,6 +109,8 @@
       <*> arbitrary -- createPromptRequestLongPoll :: Maybe Bool
       <*> arbitrary -- createPromptRequestExpiresIn :: Maybe Double
       <*> arbitrary -- createPromptRequestMetadata :: Maybe PromptMetadata
+      <*> arbitrary -- createPromptRequestInternalData :: Maybe (Map.Map String Text)
+      <*> arbitrary -- createPromptRequestIdempotencyKey :: Maybe Text
     
 instance Arbitrary Error where
   arbitrary =
@@ -121,6 +123,7 @@
       <$> arbitrary -- promptId :: Text
       <*> arbitrary -- promptSentAt :: Double
       <*> arbitrary -- promptIsExpired :: Bool
+      <*> arbitrary -- promptRequest :: CreatePromptRequest
       <*> arbitrary -- promptAnswer :: Maybe PromptAnswer
       <*> arbitrary -- promptMetadata :: Maybe PromptMetadata
     
