Improve signup API client and error handling