The Global Rate Limit by IP is Developer Unfriendly and Counter-Productive #2160
Replies: 4 comments 4 replies
-
Hi @gnito-org, thanks for the note! We're planning some improvements to the rate limiting system. Can you share some more information about what your use case is so we can keep it mind? |
Beta Was this translation helpful? Give feedback.
-
This is a big important question that we care a lot about. The economics of the network matter in the long run, and they also matter now in the early days as things grow. We want to balance permissive access to allow experimentation and growth, but want to be careful about setting expectations, keeping things sustainable, and not "pull the rug" by slashing free limits in the future. I'll also say up front that this is a complex issue, with a lot of different kinds of developers using our APIs for different reasons. We've got alternative clients, mobile-apps apps, web SPA apps, backend apps, analytics services, self-hosters, hobbyists, researchers, moderators, small businesses, bulk-delete tools, startups, large corporations, publishers, investigative journalists, content-creators, etc. When we talk in public we are talking to all those folks at once, and they have different priorities and concerns. The big worst-case hedge is that each component of the network can be self-hosted by other parties. If they don't like our limits or policies, they can individually or collectively run parallel infrastructure. Even if we provide huge API quotas, many folks will probably want to self-host for latency, performance, reliability, technology stack, or other reasons. For the specific situation of "providing services or automation on behalf of a user", we can take a look at relaxing per-IP rate-limits for most authenticated API calls, because (as you mention) we can partially get away with using per-account limits. Of course, then spammers will evade per-account limits by simply creating lots of accounts; there is no silver bullet here. We are also working on OAuth (https://github.com/bluesky-social/proposals/tree/main/0004-oauth), which will open up a lot of flexibility around identifying specific clients/integrations and letting operators (like us) measure usage and set different limits per integration. For some use cases, the public AppView API ( If you (or any other developer) have concerns about specific project or business ideas and want to chat, we are happy to talk through the details. Talking about specific API endpoints, timelines, and estimated calls-per-day-per-user and aggregate calls-per-second can really help clarify the conversation. Happy to do this privately or publicly. |
Beta Was this translation helpful? Give feedback.
-
Thank you for your thoughtful reply and information. In terms of running one's own PDS, that would be my preferred approach. I've been using Twitter's API since the very early days when Alex Payne was the lone warrior hacking it together. Once burned by Twitter's growing hostility towards developers, twice shy. Are you planning on making the implementation more flexible so that one can:
If these capabilities are already implemented, would you be so kind to document how to enable them? As you know, Amazon EC2 instances periodically go bad or are taken out of a commission. Storing any persistent data on the instance is a no-no. |
Beta Was this translation helpful? Give feedback.
-
@emilyliu7321 did you make recently some changes? for i am encountering "ratelimit-limit": "100", "ratelimit-policy": "100;w=86400", which would be radically strict. |
Beta Was this translation helpful? Give feedback.
-
The global rate limit of 3,000 API calls per IP per 5 minutes is extremely discouraging when one wants to develop a service that will have thousands of customers, each performing actions on their own Bluesky account, via the central servers of the bespoke service (for example: social media management, analytics, engagement, etc.).
The API calls for all the customer actions will be via the IP address(es) of the service's servers. The limit of 3,000 means your customers can each perform one operation every 5 minutes if you have 3,000 customers. That is just nuts.
To work around this limitation, the developer is going to spin up multiple servers, each with its own IP address. And guess what? That invalidates any usefulness of that particular rate limit and it unnecessarily increases costs for the developer.
I get it that Bluesky must protect against spam. But, we're not talking about a spamming service here.
Per handle or per app password rate limits are perfectly fine, because it targets abuse while not limiting legitimate large-scale API usage.
Beta Was this translation helpful? Give feedback.
All reactions