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.

1 points · 3 comments · view on lemmy.world

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 (1 reply)

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.