diff --git a/roles/neovim/files/after/plugin/nvim-rest.lua b/roles/neovim/files/after/plugin/nvim-rest.lua
new file mode 100644
index 00000000..1bc5b33f
--- /dev/null
+++ b/roles/neovim/files/after/plugin/nvim-rest.lua
@@ -0,0 +1,17 @@
+local status_ok, rest_nvim = pcall(require, "rest-nvim")
+if not status_ok then
+  return
+end
+
+local nmap = require("opdavies.keymap").nmap
+
+-- Run the request.
+nmap { "<leader>rr", "require('rest-nvim').run()" }
+
+-- Preview the request.
+nmap { "<leader>rp", "require('rest-nvim').run(true)" }
+
+-- Re-run the last request.
+nmap { "<leader>rl", "require('rest-nvim').last()" }
+
+rest_nvim.setup()
diff --git a/roles/neovim/files/lua/opdavies/plugins.lua b/roles/neovim/files/lua/opdavies/plugins.lua
index c4748a30..2a01d519 100644
--- a/roles/neovim/files/lua/opdavies/plugins.lua
+++ b/roles/neovim/files/lua/opdavies/plugins.lua
@@ -121,6 +121,9 @@ return packer.startup(function()
   use "kristijanhusak/vim-dadbod-completion"
   use "kristijanhusak/vim-dadbod-ui"
 
+  -- HTTP client
+  use "rest-nvim/rest.nvim"
+
   -- Text objects
   use "kana/vim-textobj-indent"
   use "kana/vim-textobj-user"