Yes, apparently the getUserAccessTokenURL1 action doesn't do any IO or use the ResourceT transformer, so you can bind it directly to IO actions. Actually, since it works with literally any monad, you could instantiate it Identity and run it as a pure computation: let token = runIdentity . runInstagram ... Best regards, Marcin Mrotek