diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+## 0.7.2.0
+* Add `getTokenFromEnvThrow`.
+* Add the `MissingToken` constructor to the `CloudException` type.
+
 ## 0.7.1.1
 * Metadata update.
 * Remove server type and image list webpages.
diff --git a/hetzner.cabal b/hetzner.cabal
--- a/hetzner.cabal
+++ b/hetzner.cabal
@@ -2,7 +2,7 @@
 category: Cloud
 synopsis: Hetzner Cloud and DNS library.
 description: Hetzner Cloud and DNS library. Check the readme and documentation for more details.
-version: 0.7.1.1
+version: 0.7.2.0
 cabal-version: 1.18
 build-type: Simple
 author: Daniel Casanueva (coding `at` danielcasanueva.eu)
diff --git a/src/Hetzner/Cloud.hs b/src/Hetzner/Cloud.hs
--- a/src/Hetzner/Cloud.hs
+++ b/src/Hetzner/Cloud.hs
@@ -38,6 +38,7 @@
   ( -- * Tokens
     Token (..)
   , getTokenFromEnv
+  , getTokenFromEnvThrow
     -- * Server metadata
   , Metadata (..)
   , getMetadata
@@ -275,6 +276,13 @@
 getTokenFromEnv :: IO (Maybe Token)
 getTokenFromEnv = fmap fromString <$> System.lookupEnv "HETZNER_API_TOKEN"
 
+-- | Calls 'getTokenFromEnv' and throws a 'MissingToken' exception if
+--   the token is missing.
+getTokenFromEnvThrow :: IO Token
+getTokenFromEnvThrow = do
+  mtoken <- getTokenFromEnv
+  maybe (throwIO MissingToken) pure mtoken
+
 -- | An error returned by Hetzner.
 data Error = Error
   { -- | Error code.
@@ -545,6 +553,7 @@
 data CloudException =
     CloudError Error
   | JSONError (HTTP.Response ByteString) String
+  | MissingToken
     deriving Show
 
 instance Exception CloudException
