You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/en-us/cloud-services/http-service.md
+98-19Lines changed: 98 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -61,6 +61,73 @@ end
61
61
62
62
### Supported Open Cloud endpoints
63
63
64
+
The following endpoints are supported. Due to current limitations on `Class.HttpService`, the `..` string is not allowed in URL path parameters to Roblox domains. This means, for example, that data stores and entries containing this string are currently inaccessible from `Class.HttpService`.
Due to current limitations on `Class.HttpService`, the `..` string is not allowed in URL path parameters to Roblox domains. This means data stores and entries containing this string are currently
@@ -107,15 +188,13 @@ inaccessible from `Class.HttpService`.
107
188
For each Roblox game server, there is a limit of 500 HTTP requests per minute. Exceeding this can cause request-sending methods to stall for around 30 seconds. Your `Global.LuaGlobals.pcall()` may also fail with a message of `Number of requests exceeded limit`.
108
189
109
190
- Open Cloud requests consume the same overall limit of 500 HTTP requests per minute enforced on all other requests.
110
-
- Each Open Cloud endpoint has its own limit per API key owner (can be a user or a group) that is enforced no matter where the calls come from (`Class.HttpService`, the web, etc.). The following headers are returned with every response and allow you to view the limits and your remaining quota:
191
+
- Each endpoint has its own limit per API key owner (can be a user or a group) that is enforced no matter where the calls come from (`Class.HttpService`, the web, etc.).
111
192
112
-
-`x-ratelimit-limit` - The total number of requests allowed to be made per API key owner (usually per minute).
113
-
-`x-ratelimit-remaining` - The number of requests the API key used is still allowed to make. If this number is 0 and you receive a HTTP 429 response status code, then you have reached the rate limit for this endpoint.
114
-
-`x-ratelimit-reset` - The number of seconds left before `x-ratelimit-remaining` resets to `x-ratelimit-limit`.
193
+
For detailed information about Open Cloud rate limits, authentication-based rate limiting, and best practices, see [Rate Limits](/cloud/reference/rate-limits).
115
194
116
195
### Additional considerations
117
196
118
197
- Web requests can fail for many reasons. Use `Global.LuaGlobals.pcall()` and have a plan for when
119
-
requests fail.
198
+
requests fail.
120
199
- Requests should provide a secure form of authentication, such as a pre-shared secret key, so that bad actors cannot pose as one of your Roblox game servers.
121
200
- Be aware of the general capacity and rate-limiting policies of the web servers to which requests are being sent.
description: Explains rate limiting on Open Cloud endpoints.
4
+
---
5
+
6
+
Rate limits control the number of requests you can make to endpoints within a specific time window. These limits help ensure service stability and protect Roblox resources from abuse.
7
+
8
+
## Discovery
9
+
10
+
There are two ways to determine rate limits: the reference documentation and response headers.
11
+
12
+
### Documentation pages
13
+
14
+
Specific rate limits for each endpoint are under the **Limits** section on their documentation pages. View these sections to understand the rate limits that apply before making requests.
15
+
16
+
<Alertseverity="info">
17
+
We strive to be as transparent as possible about rate limits, but additional, undocumented limits may apply for DDoS protection and service stability. Always ensure your application handles HTTP 429 rate limit responses. See [Handling rate limits](#handling-rate-limits) for guidance.
18
+
19
+
If you hit an undocumented rate limit that blocks your use case (or you would like higher limits for an endpoint), please leave feedback explaining your needs in the [Developer Forum](https://devforum.roblox.com/).
20
+
</Alert>
21
+
22
+
### Response headers
23
+
24
+
Every API response includes headers that provide information about your current rate limit status.
|`x-ratelimit-limit`| The total number of requests allowed within the rate limit window. This may include multiple limit values for different time windows. |
29
+
|`x-ratelimit-remaining`| The number of requests you can still make with your current authentication. When this reaches 0, you receive HTTP 429 responses. |
30
+
|`x-ratelimit-reset`| The number of seconds remaining until your rate limit quota resets to the full limit. |
31
+
32
+
Here's an example of rate limit headers in an API response:
33
+
34
+
```text
35
+
x-ratelimit-limit: 1000, 1000;w=60, 1000;w=60
36
+
x-ratelimit-remaining: 998
37
+
x-ratelimit-reset: 20
38
+
```
39
+
40
+
In this example:
41
+
42
+
- You have 998 requests remaining out of your total limit.
43
+
- Your quota will reset in 20 seconds.
44
+
45
+
## Behavior
46
+
47
+
Rate limit behavior differs by authentication method and whether you make requests from within a Roblox experience.
48
+
49
+
### API key
50
+
51
+
Rate limits for API keys are applied across all API keys per owner, which can be either a user or a group. These limits are enforced consistently regardless of where the requests originate—whether from `Class.HttpService`, web applications, or other sources.
52
+
53
+
#### In-experience with HttpService
54
+
55
+
When calling endpoints in-experience using `Class.HttpService`, requests also contribute to the fixed limit of 500 HTTP requests per minute per Roblox game server. See [In-experience HTTP requests](/cloud-services/http-service) for more details.
56
+
57
+
### OAuth 2.0
58
+
59
+
OAuth 2.0 rate limits are applied per access token. Since each access token represents a unique combination of user and application, every user using your app receives their own independent rate limit quota.
60
+
61
+
## Handling rate limits
62
+
63
+
Write your code to expect and handle HTTP 429 (Too Many Requests) responses due to documented limits, abuse prevention, or high-load scenarios. When rate limited, check the `retry-after` response header as a guideline for when to retry. If there is no `retry-after` response header present, implement an exponential backoff retry strategy.
Copy file name to clipboardExpand all lines: content/en-us/reference/cloud/cloud.docs.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -5608,7 +5608,7 @@
5608
5608
"post": {
5609
5609
"tags": ["Cloud"],
5610
5610
"summary": "Generate Speech Asset",
5611
-
"description": "Generates an English speech audio asset from the specified text.",
5611
+
"description": "Generates an English speech audio asset from the specified text.\n\nThis endpoint requires the `asset:read` and `asset:write` scopes in\naddition to the `universe:write` scope.\n\nThe response returns an `Operation` object that must be prefixed with\n`/assets/v1`. For example, the URL to discover the result of the operation\ncould be\n`https://apis.roblox.com/assets/v1/operations/8b42ef30-9c17-4526-b8cf-2ff0136ca94d`.",
0 commit comments