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 Comments
ryan@m29.us · 2 pts · 104d
@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.)
evan@activitypub.space · 2 pts · 104d
Of course, you can just bang on the API until you get 429 restricted, too.
julian@activitypub.space · 2 pts · 104d
@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.