Nice work! May I inquire as to the design decision behind storing a hash of the long token server-side for verification of the long token, versus digitally signing the short token plus a nonce and including this signature in the API key (instead of a long token), as some other API key schemes do?
Both are valid approaches of course, I'm just interested to hear your thoughts on the relative tradeoffs.