The gist: write a CLI that makes HTTP network requests and responds with the output.

curl and wget are common programs used to transfer data to or from a server, like downloading a file over HTTP. This project is writing something similar to them. Start with just GET requests and then go from there.

I always call this idea httpal because it's kinda fun. It's your buddy for making requests!


This could look something like:


That would make a GET request to that API endpoint for Fantastic Mr. Fox and return the JSON, which could then be output to a file like:

httpal > fmf.json


  • Making network requests, often times available within the standard library of a language
  • Outputting the response body
  • Basic CLI interactions

Extra Credit

  • Follow redirects
  • Support different forms of authentication and request headers
  • Support other HTTP methods like PUT, POST, and DELETE
  • Support specifying a request body file, like a JSON file, to include in the request body
  • Support other protocols! Maybe a better name would be reqbud. 😬
  • What if program specifically catered to those interacting with GraphQL APIs? That means it would always POST to the same endpoint but allow for configurable requests and variables. gqlpal???
  • What if there was a way to load requests for a project from a variety of spec files and easily make those requests? Like a CLI version of Postman or Paw.

See Also