We have started experiencing a similar issue since start of last week -- HTTP 400 out of nothing.
Then we tried without argument 'hourlyEnd' and it worked, but result contains only next 24 hours.
Then we tried adding back argument 'hourlyEnd' that is about 10 days ahead of current time (~240 hours) and errors came back again.
Then we tried adjusting argument 'hourlyEnd' by moving it a bit earlier, between 230 and 235 hours ahead of current time, and for some geographical locations closer to GMT it worked, but for other locations towards East it needed a lower value.
Our guess is that if requested argument 'hourlyEnd' happens to be greater than the what the hourly forecast can return furthermost in the future, then the request is rejected with HTTP 400.
It would be better if the API only returned what is available instead of totally failing.