add api error handling