Thank you for those — I had not seen either. Went through stirfry’s file list, and iNatAPIv1_observation_histogram.html is the exact endpoint you pointed me to, exposed as a tool, but it’s the raw series, not bucketed by hour-of-day either. So the gap seems real rather than something I missed by not looking hard enough.
The timezone point is useful and I hadn’t factored it in. That’s a second, more structural problem than the midnight-default one I mentioned earlier — a wrong-but-present timezone would shift observations into neighbouring hours rather than dumping them at 00:00, which my current warning wouldn’t catch at all. I don’t have a good way to detect that from the API response, since there’s no field distinguishing a trustworthy timezone from a guessed one. If you know of one, I’d want it.
Filed the feature request: Add hour-of-day aggregation to the observations histogram endpoint. Included the month_of_year precedent — it already does exactly this pattern for months, so hour_of_day would just be the same logic applied to a different unit — and flagged the timezone caveat above, since it would affect how any such aggregation should be read.