Our X-RateLimit-Reset headers are bad and we should feel bad
I've found at least four different formats used on the Fediverse for the X-RateLimit-Reset header:
- A datestamp (Mastodon)
- Unix epoch in seconds
- Time offset in seconds (N seconds from now)
- Unix epoch in milliseconds (Holos)
It's possible to use some heuristics for these (looks like a date, looks like an integer, range of the integer), which are pretty reliable.
The new RateLimit headers from IETF are very nice, but don't seem to be well-supported yet.
3 replies
@evan I have a Python function I've built up over time for handling rate limiting headers (no canonical location for it; I just copy it around when needed). I've come across epoch (GitHub) and ISO 8601 (Mastodon, Jira). I'll take a look at the RateLimit spec, thanks.
https://forge.colobox.com/rfinnie/rf-tools/src/branch/main/bin/mastodon-downloader#L50
(For the last few weeks I've been working on moving stuff to Forgejo, and I'm surprised their API doesn't have rate limit headers.)
Of course, you can just bang on the API until you get 429 restricted, too.
@evan 429? Amateur hour.
You need to keep banging on the API until the server is overwhelmed and times out. That's the 2026 way.