I just read your blog post consulting spotify! I didn't expect that people already start using the internal API for their purposes, but it is good to see! One small correction though - instead of collecting the candidates in the espotify--async-search closure you can pass them through to the async functions sitting below. consult--async-sink will then take care of collecting all candidates. The only action which should be handled by the espotify--async-search function is the input string action, which should then send its candidate below. The other actions should be passed through. Please let me know if you have any suggestions regarding the API or additional commands!