add caching with api_cache