What does Roblox count as an HTTP request in the HTTP request budget?

Roblox states that there can only be a maximum of 500 HTTP requests per minute.

My game currently only makes HTTP requests in 4 scenarios, aside from 2 standalone ones at the start of the server.

2 when a player joins: 1 to fetch their data from Firestore and 1 to check if they’re a server booster
1 when a player leaves: To save their data
1 every 45 seconds: To fetch the game’s current likes
2 every 120 seconds: To log any admin commands and any exploits detected in that interval

Realistically, this shouldn’t cause me to reach the HTTP budget. Even if 60 players join AND 60 players leave in those 60 seconds, I’d still be making at maximum only 183 requests (2(60)+60+1+2).

However, the service does seem to be buffering. Players server hop and are stuck with their old data because the request to save hasn’t been processed yet. I’ve also looked at the Network --> Server section of the Developer Console and monitored the outgoing HTTP requests and max time a request took. After being in the game for around 20 minutes, I saw 200 requests total had been sent, yet the peak time was 30060ms, which is equivalent to 30 seconds, the time Roblox has listed that HttpService will stall for when throttling:

This makes no sense. Less than maximum requests per MINUTE were sent over a 20 MINUTE PERIOD. Assuming that they’re going at a constant rate (for this intent and purpose), that would mean that 10 requests were being sent per minute. Accordingly, ONLY 2% of the budget was being used, yet the service was still throttling.

My question is if other requests, such as TextService requests (every time a player chats) etc. are counted in the HTTP request budget. Any insight on what’s causing this throttle and how to fix it would be greatly appreciated, as it’s causing a bad player experience. Thank you.

Updated: I did the test again so I could actually take a screenshot.

15 minutes in, 149 requests, and it’s already stalled.

1 Like

from my experience with robloxs api if you call it for less than 3 seconds it gives a 429 error. It usually means having to add 10000 ms to my request loop

According to the other developers, there are some undocumented restrictions on HttpService.

One being concurrent connection limitations. If you’re sending a batch of requests (say you are testing with all the users joining at once and the requests take a couple hundred ms), it’s feasible you could hit this limit.

There may also be greater restrictions when there is only one player in the server:

Another possibility is that studio http requests are limited as well and they carry over from edit mode to play testing. So for example, you use a plugin that’s making a lot of http requests per minute and then you hit “Play” and so you start the game with part of the request budget already used.

Note: I haven’t actually confirmed any of this info. Just passing it along.

EDIT: Also, as far as I know, you are not allowed to call roblox apis using HttpService So if you’re getting the game likes through the roblox api and no proxy in between, I would expect issues.

Is there another way you suggest handling this? It’s certainly an issue on Roblox’s end—without throttling the requests rarely take more than 500ms. Also, this throttling was not after a server reboot; it was at a random time in the server where the amount of players joining and leaving were drastically lower than what they would be than after a reboot.

I’m using http://rprxy.xyz/

Is there another way you suggest handling this?

One way you could try is to use a queue. Instead of sending the request right away, add it to a queue. Set up a loop that checks the queue, takes the next request off, sends it, waits for it to return, repeat.

Is the limit per game or server?

2 Likes