BSD-3-Clause licensed by Justin Le
Maintained by
This version can be pinned in stack with:advent-of-code-api-,2162

Module documentation for


advent-of-code-api on Hackage Build Status

Haskell bindings for Advent of Code REST API. Caches and throttles requests automatically.

Specify your requests with AoC and AoCOpts, and run them with runAoC.


-- Fetch prompts for day 5
runAoC myOpts $ AoCPrompt (mkDay_ 5)

-- Fetch input for day 8
runAoC myOpts $ AoCInput (mkDay_ 8)

-- Submit answer "hello" for Day 10, Part 1
runAoC myOpts $ AoCSubmit (mkDay_ 10) Part1 "hello"

Please use responsibly. All actions are rate-limited to a default of one request every three seconds, with ability to adjust up to as fast as a hard-coded limit of one request per second.

Note that leaderboard API is not yet supported.

Requires libcurl, with future plans to move to a “pure Haskell” networking backend.

Session Keys

Session keys are required for all commands, but if you enter a bogus key you should be able to get at least Part 1 from AoCPrompt.

The session key can be found by logging in on a web client and checking the cookies. You can usually check these with in-browser developer tools.



Version 0.1.2.X


December 7, 2018

  • Fixed cache to store prompts at .html instead of .yaml
  • SubIncorrect and SubWait now include fields for wait times.
  • Re-implemented submission result parsers using attoparsec


December 7, 2018

  • More robust parser for submission results. Also now reports “hints” if possible.


December 5, 2018

  • Initial Release