make api requests throw a more meaningful exception for consumers to handle