diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+1.0.1:
+
+- Include `README`
+- Include usage example
+
 1.0.0:
 
 - Initial release
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,41 @@
+# `openai`
+
+This provides a binding to OpenAI's API using `servant`
+
+Example usage:
+
+```haskell
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns        #-}
+{-# LANGUAGE OverloadedStrings     #-}
+{-# LANGUAGE OverloadedLists       #-}
+
+module Main where
+
+import Data.Foldable (traverse_)
+import OpenAI.V1
+import OpenAI.V1.Chat.Completions
+
+import qualified Data.Text as Text
+import qualified Data.Text.IO as Text.IO
+import qualified System.Environment as Environment
+
+main :: IO ()
+main = do
+    key <- Environment.getEnv "OPENAI_KEY"
+
+    clientEnv <- getClientEnv "https://api.openai.com"
+
+    let Methods{ createChatCompletion } = makeMethods clientEnv (Text.pack key)
+
+    text <- Text.IO.getLine
+
+    ChatCompletionObject{ choices } <- createChatCompletion _CreateChatCompletion
+        { messages = [ User{ content = [ Text{ text } ], name = Nothing } ]
+        , model = "gpt-4o-mini"
+        }
+
+    let display Choice{ message } = Text.IO.putStrLn (messageToContent message)
+
+    traverse_ display choices
+```
diff --git a/openai.cabal b/openai.cabal
--- a/openai.cabal
+++ b/openai.cabal
@@ -1,9 +1,15 @@
 cabal-version:      2.4
 name:               openai
-version:            1.0.0
+version:            1.0.1
 synopsis:           Servant bindings to OpenAI
 description:        This package provides comprehensive and type-safe bindings
-                    to OpenAI using Servant
+                    to OpenAI, providing both a Servant interface and
+                    non-Servant interface for convenience.
+                    .
+                    Read the @README@ below for a fully worked usage example.
+                    .
+                    Otherwise, browse the "OpenAI.V1" module, which is the
+                    intended package entrypoint.
 license:            BSD-3-Clause
 license-file:       LICENSE
 author:             Gabriella Gonzalez
@@ -11,6 +17,7 @@
 copyright:          2024 Gabriella Gonzalez
 build-type:         Simple
 extra-source-files: CHANGELOG.md
+                    README.md
 
 library
     default-language:   Haskell2010
diff --git a/src/OpenAI/V1.hs b/src/OpenAI/V1.hs
--- a/src/OpenAI/V1.hs
+++ b/src/OpenAI/V1.hs
@@ -1,4 +1,43 @@
 -- | @\/v1@
+--
+-- Example usage:
+--
+-- @
+-- {-# LANGUAGE DuplicateRecordFields #-}
+-- {-# LANGUAGE NamedFieldPuns        #-}
+-- {-# LANGUAGE OverloadedStrings     #-}
+-- {-# LANGUAGE OverloadedLists       #-}
+--
+-- module Main where
+--
+-- import "Data.Foldable" (`Data.Foldable.traverse_`)
+-- import "OpenAI.V1"
+-- import "OpenAI.V1.Chat.Completions"
+--
+-- import qualified "Data.Text" as Text
+-- import qualified "Data.Text.IO" as Text.IO
+-- import qualified "System.Environment" as Environment
+--
+-- main :: `IO` ()
+-- main = do
+--     key <- Environment.`System.Environment.getEnv` \"OPENAI_KEY\"
+--
+--     clientEnv <- `OpenAI.V1.getClientEnv` \"https://api.openai.com\"
+--
+--     let `OpenAI.V1.Methods`{ createChatCompletion } = `OpenAI.V1.makeMethods` clientEnv (Text.`Data.Text.pack` key)
+--
+--     text <- Text.IO.`Data.Text.IO.getLine`
+--
+--     `OpenAI.V1.Chat.Completions.ChatCompletionObject`{ `OpenAI.V1.Chat.Completions.choices` } <- createChatCompletion `OpenAI.V1.Chat.Completions._CreateChatCompletion`
+--         { `OpenAI.V1.Chat.Completions.messages` = [ `OpenAI.V1.Chat.Completions.User`{ `OpenAI.V1.Chat.Completions.content` = [ `OpenAI.V1.Chat.Completions.Text`{ `OpenAI.V1.Chat.Completions.text` } ], `OpenAI.V1.Chat.Completions.name` = `Nothing` } ]
+--         , `OpenAI.V1.Chat.Completions.model` = \"gpt-4o-mini\"
+--         }
+--
+--     let display `OpenAI.V1.Chat.Completions.Choice`{ `OpenAI.V1.Chat.Completions.message` } = Text.IO.`Data.Text.IO.putStrLn` (`OpenAI.V1.Chat.Completions.messageToContent` message)
+--
+--     `Data.Foldable.traverse_` display choices
+-- @
+
 module OpenAI.V1
     ( -- * Methods
       getClientEnv
