Curl Quests
An interactive terminal game for learning curl and HTTP APIs through hands-on quests. Each quest spins up a real local server, gives you instructions, and verifies your work directly against the database no guessing, just doing.
Requirements
- Rust & Cargo: install via rustup (includes both)
- curl: usually pre-installed on macOS/Linux
- jq: required for Quest 11 onwards
Check your versions:
Get started (two ways)
Option A: Install via Cargo (recommended)
Option B: Clone and build manually
Navigating the app
When you launch curl-quests you'll see a terminal UI with a quest grid and a top navigation bar.
| Key | Action |
|---|---|
← / → |
Move between tabs (Levels / Instructions / Exit) |
Enter |
Open selected tab or quest |
Esc |
Go back / dismiss |
q |
Quit |
Inside a quest:
| Key | Action |
|---|---|
Tab / Shift+Tab |
Switch focus between sections |
↑ / ↓ |
Scroll instructions or navigate command history |
Shift+↑ / Shift+↓ |
Scroll terminal output |
← / → |
Resize the left/right columns |
Enter |
Run the typed curl command |
Ctrl+V |
Paste from clipboard |
Ctrl+C |
Copy last command output |
Focus moves through: Instructions → Solutions → Terminal → Answer → Submit → Back
Quests
| # | Quest | Folder |
|---|---|---|
| 1 | Day 1: Inventory Check | quests/01-Get |
| 2 | Day 2: Adding Items | quests/02-Post |
| 3 | Day 3: Maintain and Update | quests/03-Put-Patch-Delete |
| 4 | The Elemental Search | quests/04-Query & Encoding |
| 5 | Payslip Uploader | quests/05-File-Upload |
| 6 | Strict API Contracts | quests/06-Headers |
| 7 | The Manager's Secret | quests/07-Header-Inspection |
| 8 | The Galactic Relay | quests/08-Status-Codes |
| 9 | The Digital Detour | quests/09-Redirects |
| 10 | Identity & Access | quests/10-Auth-JWT |
| 11 | JSON Querying with jq | quests/11-JQ |
How to solve a quest
- Launch the app and press
Enteron Levels - Select a quest and press
Enterto open it - Read the Instructions panel on the left
- Use the Terminal panel on the right to run
curlcommands against the local server - If the quest asks for an answer, type it in the Answer box
- Tab to Submit and press
Enterto verify the app checks your work against the database - If it fails, read the error and try again. The server stays running until you go back.
Start from Quest 1 and work your way up each quest builds on concepts from the previous ones.
Tips
- The server is already running when you open a quest you don't need to start anything manually.
- Read the instructions fully before running any command. The quest often tells you the exact endpoint and method to use.
- If a command produces no output, the server may still be starting. Wait a second and try again.
- Disable AI assistance while solving you'll learn far more by reading the error, checking the curl man page, and trying again.
Troubleshooting
-
curl-quests: command not foundaftercargo installmake sure~/.cargo/binis in yourPATH:Add that line to your
~/.bashrcor~/.zshrcto make it permanent. -
(no output — is the server running?)in the terminal the server needs a moment to bind the port. PressEnteragain to rerun the command. -
Quest stuck / server not responding press
Escto go back to the quest grid, then re-enter the quest. This restarts the server and reseeds the database. -
jq: command not foundinstall jq before attempting Quest 11+:- macOS:
brew install jq - Ubuntu/Debian:
sudo apt install jq
- macOS:
Contact
For any issues, contact either: