from line 8
88 **The Admin API is unavailable for individual accounts.** To collaborate with teammates and add members, set up your organization on the [Organization](https://platform.claude.com/settings/organization) page (`platform.claude.com/settings/organization`) in the Claude Console.
99</Tip>
1010
11The Rate Limits API provides programmatic access to the rate limits configured for your organization and its workspaces. This is the same information shown on the [Rate limits](https://platform.claude.com/usage/limits) page in the Claude Console. You can also use it to set and clear a workspace’s rate limits.
11The Rate Limits API provides programmatic access to the rate limits configured for your organization and its workspaces. This is the same information shown on the [Rate limits page in the Claude Console](https://platform.claude.com/usage/limits). You can also use it to set and clear a workspace’s rate limits.
1212
1313Use this API to:
1414
from line 21
2121 **Admin API credentials required.** These endpoints are part of the Admin API. You can access them using an [Admin API key](https://platform.claude.com/docs/en/manage-claude/admin-api-keys), an OAuth token with the `org:admin` scope, or a personal or service account key that isn’t scoped to a workspace; workspace API keys don’t work. See [Authentication](https://platform.claude.com/docs/en/manage-claude/admin-api#authentication) for details.
2222</Check>
2323
24The SDK and CLI examples on this page construct the default client, which reads the Admin API key from the `ANTHROPIC_API_KEY` environment variable. The SDKs expose these endpoints as `client.organization.rate_limits` (typescript: `client.organization.rateLimits`; csharp, go: `client.Organization.RateLimits`; java: `client.organization().rateLimits()`; php: `$client->organization->rateLimits`) and `client.organization.workspaces.rate_limits` (typescript: `client.organization.workspaces.rateLimits`; csharp, go: `client.Organization.Workspaces.RateLimits`; java: `client.organization().workspaces().rateLimits()`; php: `$client->organization->workspaces->rateLimits`); the Python, TypeScript, C#, Go, and Java list methods return an iterator that follows `next_page` for you, while the PHP, Ruby, and curl examples read one page.
24The SDK’s default client and the CLI read the Admin API key from the `ANTHROPIC_API_KEY` environment variable. The SDK exposes these endpoints as `client.organization.rate_limits` (typescript: `client.organization.rateLimits`; csharp, go: `client.Organization.RateLimits`; java: `client.organization().rateLimits()`; php: `$client->organization->rateLimits`) and `client.organization.workspaces.rate_limits` (typescript: `client.organization.workspaces.rateLimits`; csharp, go: `client.Organization.Workspaces.RateLimits`; java: `client.organization().workspaces().rateLimits()`; php: `$client->organization->workspaces->rateLimits`). The comments in each list example say whether it fetches more pages or reads only the first.
2525
2626## Quick start
2727
from line 29
2929
3030<CodeGroup>
3131 ```bash cURL
32 # Returns one page, which holds every entry when `limit` is omitted.
3233 curl "https://api.anthropic.com/v1/organizations/rate_limits" \
3334 -H "x-api-key: $ANTHROPIC_API_KEY" \
3435 -H "anthropic-version: 2026-10-21"
from line 36
3536 ```
3637
3738 ```bash CLI
39 # Automatically fetches more pages as needed.
3840 ant organization:rate-limits list
3941 ```
4042
from line 45
4345
4446 rate_limits = client.organization.rate_limits.list()
4547
48 # Automatically fetches more pages as needed.
4649 for entry in rate_limits:
4750 models = f" ({', '.join(entry.models)})" if entry.models else ""
4851 print(f"{entry.group.type}{models}")
from line 58
5558
5659 const rateLimits = await client.organization.rateLimits.list();
5760
61 // Automatically fetches more pages as needed.
5862 for await (const entry of rateLimits) {
5963 const models = entry.models ? ` (${entry.models.join(", ")})` : "";
6064 console.log(`${entry.group.type}${models}`);
from line 73
6973
7074 var rateLimits = await client.Organization.RateLimits.List();
7175
76 // Automatically fetches more pages as needed.
7277 await foreach (var entry in rateLimits.Paginate())
7378 {
7479 var models = entry.Models is null ? "" : $" ({string.Join(", ", entry.Models)})";
from line 90
8590
8691 rateLimits := client.Organization.RateLimits.ListAutoPaging(context.Background(), anthropic.OrganizationRateLimitListParams{})
8792
93 // Automatically fetches more pages as needed.
8894 for rateLimits.Next() {
8995 entry := rateLimits.Current()
9096 models := ""
from line 112
106112
107113 var rateLimits = client.organization().rateLimits().list();
108114
115 // Automatically fetches more pages as needed.
109116 for (var entry : rateLimits.autoPager()) {
110117 var models = entry.models()
111118 .map(modelIds -> " (" + String.join(", ", modelIds) + ")")
from line 129
122129
123130 $rateLimits = $client->organization->rateLimits->list();
124131
132 // Reads only the first page, which holds every entry when `limit` is omitted.
125133 foreach ($rateLimits->data as $entry) {
126134 $models = $entry->models ? ' (' . implode(', ', $entry->models) . ')' : '';
127135 echo "{$entry->group->type}{$models}\n";
from line 144
136144
137145 rate_limits = client.organization.rate_limits.list
138146
147 # Reads only the first page, which holds every entry when `limit` is omitted.
139148 rate_limits.data.each do |entry|
140149 models = entry.models ? " (#{entry.models.join(", ")})" : ""
141150 puts "#{entry.group.type}#{models}"
from line 161
152161
153162### Key concepts
154163
155* **Rate limit groups:** Each entry in the response represents one rate limit group. Model rate limits are grouped so that several model versions share a single set of limits, and other groups cover resources such as the Message Batches API, the Files API, the Token Counting API, agent skills, and the web search tool.
156* **`group` object:** Present on every entry, it identifies the rate limit group the entry applies to. It always has `type`, which is one of the `group_type` values, and `id`, an opaque identifier with the `rlg_` prefix. On `model_group` entries it also has `display_name`, Anthropic’s current label for the group, such as `Claude Sonnet 4.x`. The label is for display only and may change. Other group types have no `display_name`.
164* **Rate limit groups:** Each entry in the response represents one rate limit group. Model rate limits are grouped so that several model versions share a single set of limits. The other groups cover the Message Batches API and the web search tool.
165* **`group` object:** Present on every entry, it identifies the rate limit group the entry applies to. It always has `type`, which is one of the `group_type` values, and `id`, an opaque identifier with the `rlg_` prefix. On `model_group` entries it also has `display_name`, Anthropic’s current label for the group, such as `Claude Sonnet 4.x`. The label is for display only and might change. Other group types have no `display_name`.
157166* **The `id` inside `group`:** A group has the same `id` in every organization and on every workspace override, and it never changes. Use it to match entries across organizations or against your own catalog. The entry’s own `id` differs for each organization, and `models` changes when Anthropic moves a model between groups. Neither is a stable key for the group.
158167* **`group_type`:** The query parameter that restricts the list to one group type. See [Filtering by group type](https://platform.claude.com/docs/en/manage-claude/rate-limits-api#filtering-by-group-type) for the values.
159168* **`models` list:** For `model_group` entries, the `models` field lists every model ID and alias that counts against that group’s limits. Use this list to look up which group any model string falls under. For other group types, `models` is `null`.
from line 175
166175
167176<CodeGroup>
168177 ```bash cURL
178 # Returns one page, which holds every entry when `limit` is omitted.
169179 curl "https://api.anthropic.com/v1/organizations/rate_limits" \
170180 -H "x-api-key: $ANTHROPIC_API_KEY" \
171181 -H "anthropic-version: 2026-10-21"
from line 182
172182 ```
173183
174184 ```bash CLI
185 # Automatically fetches more pages as needed.
175186 ant organization:rate-limits list
176187 ```
177188
from line 191
180191
181192 rate_limits = client.organization.rate_limits.list()
182193
194 # Automatically fetches more pages as needed.
183195 for entry in rate_limits:
184196 models = f" ({', '.join(entry.models)})" if entry.models else ""
185197 print(f"{entry.group.type}{models}")
from line 204
192204
193205 const rateLimits = await client.organization.rateLimits.list();
194206
207 // Automatically fetches more pages as needed.
195208 for await (const entry of rateLimits) {
196209 const models = entry.models ? ` (${entry.models.join(", ")})` : "";
197210 console.log(`${entry.group.type}${models}`);
from line 219
206219
207220 var rateLimits = await client.Organization.RateLimits.List();
208221
222 // Automatically fetches more pages as needed.
209223 await foreach (var entry in rateLimits.Paginate())
210224 {
211225 var models = entry.Models is null ? "" : $" ({string.Join(", ", entry.Models)})";
from line 236
222236
223237 rateLimits := client.Organization.RateLimits.ListAutoPaging(context.Background(), anthropic.OrganizationRateLimitListParams{})
224238
239 // Automatically fetches more pages as needed.
225240 for rateLimits.Next() {
226241 entry := rateLimits.Current()
227242 models := ""
from line 258
243258
244259 var rateLimits = client.organization().rateLimits().list();
245260
261 // Automatically fetches more pages as needed.
246262 for (var entry : rateLimits.autoPager()) {
247263 var models = entry.models()
248264 .map(modelIds -> " (" + String.join(", ", modelIds) + ")")
from line 275
259275
260276 $rateLimits = $client->organization->rateLimits->list();
261277
278 // Reads only the first page, which holds every entry when `limit` is omitted.
262279 foreach ($rateLimits->data as $entry) {
263280 $models = $entry->models ? ' (' . implode(', ', $entry->models) . ')' : '';
264281 echo "{$entry->group->type}{$models}\n";
from line 290
273290
274291 rate_limits = client.organization.rate_limits.list
275292
293 # Reads only the first page, which holds every entry when `limit` is omitted.
276294 rate_limits.data.each do |entry|
277295 models = entry.models ? " (#{entry.models.join(", ")})" : ""
278296 puts "#{entry.group.type}#{models}"
from line 358
340358
341359<CodeGroup>
342360 ```bash cURL
361 # Returns one page, which holds every entry when `limit` is omitted.
343362 curl "https://api.anthropic.com/v1/organizations/rate_limits?model=claude-opus-5-5" \
344363 -H "x-api-key: $ANTHROPIC_API_KEY" \
345364 -H "anthropic-version: 2026-10-21"
from line 365
346365 ```
347366
348367 ```bash CLI
368 # Automatically fetches more pages as needed.
349369 ant organization:rate-limits list --model claude-opus-5-5
350370 ```
351371
from line 374
354374
355375 rate_limits = client.organization.rate_limits.list(model="claude-opus-5-5")
356376
377 # Automatically fetches more pages as needed.
357378 for entry in rate_limits:
358379 models = f" ({', '.join(entry.models)})" if entry.models else ""
359380 print(f"{entry.group.type}{models}")
from line 389
368389 model: "claude-opus-5-5"
369390 });
370391
392 // Automatically fetches more pages as needed.
371393 for await (const entry of rateLimits) {
372394 const models = entry.models ? ` (${entry.models.join(", ")})` : "";
373395 console.log(`${entry.group.type}${models}`);
from line 407
385407 Model = "claude-opus-5-5"
386408 });
387409
410 // Automatically fetches more pages as needed.
388411 await foreach (var entry in rateLimits.Paginate())
389412 {
390413 var models = entry.Models is null ? "" : $" ({string.Join(", ", entry.Models)})";
from line 426
403426 Model: anthropic.String(anthropic.ModelClaudeOpus5_5),
404427 })
405428
429 // Automatically fetches more pages as needed.
406430 for rateLimits.Next() {
407431 entry := rateLimits.Current()
408432 models := ""
from line 455
431455 .build();
432456 var rateLimits = client.organization().rateLimits().list(params);
433457
458 // Automatically fetches more pages as needed.
434459 for (var entry : rateLimits.autoPager()) {
435460 var models = entry.models()
436461 .map(modelIds -> " (" + String.join(", ", modelIds) + ")")
from line 477
452477 model: Model::CLAUDE_OPUS_5_5->value,
453478 );
454479
480 // Reads only the first page, which holds every entry when `limit` is omitted.
455481 foreach ($rateLimits->data as $entry) {
456482 $models = $entry->models ? ' (' . implode(', ', $entry->models) . ')' : '';
457483 echo "{$entry->group->type}{$models}\n";
from line 492
466492
467493 rate_limits = client.organization.rate_limits.list(model: Anthropic::Model::CLAUDE_OPUS_5_5)
468494
495 # Reads only the first page, which holds every entry when `limit` is omitted.
469496 rate_limits.data.each do |entry|
470497 models = entry.models ? " (#{entry.models.join(", ")})" : ""
471498 puts "#{entry.group.type}#{models}"
from line 523
496523
497524<CodeGroup>
498525 ```bash cURL
526 # Returns one page, which holds every entry when `limit` is omitted.
499527 curl "https://api.anthropic.com/v1/organizations/workspaces/wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ/rate_limits" \
500528 -H "x-api-key: $ANTHROPIC_API_KEY" \
501529 -H "anthropic-version: 2026-10-21"
from line 530
502530 ```
503531
504532 ```bash CLI
533 # Automatically fetches more pages as needed.
505534 ant organization:workspaces:rate-limits list \
506535 --workspace-id wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ
507536 ```
from line 542
513542 "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"
514543 )
515544
545 # Automatically fetches more pages as needed.
516546 for entry in rate_limits:
517547 models = f" ({', '.join(entry.models)})" if entry.models else ""
518548 print(f"{entry.group.type}{models}")
from line 557
527557 "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"
528558 );
529559
560 // Automatically fetches more pages as needed.
530561 for await (const entry of rateLimits) {
531562 const models = entry.models ? ` (${entry.models.join(", ")})` : "";
532563 console.log(`${entry.group.type}${models}`);
from line 574
543574 "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"
544575 );
545576
577 // Automatically fetches more pages as needed.
546578 await foreach (var entry in rateLimits.Paginate())
547579 {
548580 var models = entry.Models is null ? "" : $" ({string.Join(", ", entry.Models)})";
from line 595
563595 anthropic.OrganizationWorkspaceRateLimitListParams{},
564596 )
565597
598 // Automatically fetches more pages as needed.
566599 for rateLimits.Next() {
567600 entry := rateLimits.Current()
568601 models := ""
from line 618
585618 var rateLimits = client.organization().workspaces().rateLimits()
586619 .list("wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ");
587620
621 // Automatically fetches more pages as needed.
588622 for (var entry : rateLimits.autoPager()) {
589623 var models = entry.models()
590624 .map(modelIds -> " (" + String.join(", ", modelIds) + ")")
from line 637
603637 workspaceID: 'wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ',
604638 );
605639
640 // Reads only the first page, which holds every entry when `limit` is omitted.
606641 foreach ($rateLimits->data as $entry) {
607642 $models = $entry->models ? ' (' . implode(', ', $entry->models) . ')' : '';
608643 echo "{$entry->group->type}{$models}\n";
from line 653
618653 workspace_id = "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"
619654 rate_limits = client.organization.workspaces.rate_limits.list(workspace_id)
620655
656 # Reads only the first page, which holds every entry when `limit` is omitted.
621657 rate_limits.data.each do |entry|
622658 models = entry.models ? " (#{entry.models.join(", ")})" : ""
623659 puts "#{entry.group.type}#{models}"
from line 738
702738
703739<CodeGroup>
704740 ```bash cURL
741 # Returns one page, which holds every entry when `limit` is omitted.
705742 curl "https://api.anthropic.com/v1/organizations/workspaces/wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ/rate_limits?include_inherited=true" \
706743 -H "x-api-key: $ANTHROPIC_API_KEY" \
707744 -H "anthropic-version: 2026-10-21"
from line 745
708745 ```
709746
710747 ```bash CLI
748 # Automatically fetches more pages as needed.
711749 ant organization:workspaces:rate-limits list \
712750 --workspace-id wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ \
713751 --include-inherited
from line 759
721759 include_inherited=True,
722760 )
723761
762 # Automatically fetches more pages as needed.
724763 for entry in rate_limits:
725764 models = f" ({', '.join(entry.models)})" if entry.models else ""
726765 print(f"{entry.group.type}{models}")
from line 775
736775 { include_inherited: true }
737776 );
738777
778 // Automatically fetches more pages as needed.
739779 for await (const entry of rateLimits) {
740780 const models = entry.models ? ` (${entry.models.join(", ")})` : "";
741781 console.log(`${entry.group.type}${models}`);
from line 793
753793 new() { IncludeInherited = true }
754794 );
755795
796 // Automatically fetches more pages as needed.
756797 await foreach (var entry in rateLimits.Paginate())
757798 {
758799 var models = entry.Models is null ? "" : $" ({string.Join(", ", entry.Models)})";
from line 816
775816 },
776817 )
777818
819 // Automatically fetches more pages as needed.
778820 for rateLimits.Next() {
779821 entry := rateLimits.Current()
780822 models := ""
from line 845
803845 var rateLimits = client.organization().workspaces().rateLimits()
804846 .list("wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ", params);
805847
848 // Automatically fetches more pages as needed.
806849 for (var entry : rateLimits.autoPager()) {
807850 var models = entry.models()
808851 .map(modelIds -> " (" + String.join(", ", modelIds) + ")")
from line 867
824867 includeInherited: true,
825868 );
826869
870 // Reads only the first page, which holds every entry when `limit` is omitted.
827871 foreach ($rateLimits->data as $entry) {
828872 $models = $entry->models ? ' (' . implode(', ', $entry->models) . ')' : '';
829873 echo "{$entry->group->type}{$models}\n";
from line 883
839883 workspace_id = "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"
840884 rate_limits = client.organization.workspaces.rate_limits.list(workspace_id, include_inherited: true)
841885
886 # Reads only the first page, which holds every entry when `limit` is omitted.
842887 rate_limits.data.each do |entry|
843888 models = entry.models ? " (#{entry.models.join(", ")})" : ""
844889 puts "#{entry.group.type}#{models}"
from line 1001
9561001* `web_search`: `tool_uses_per_second` only
9571002* `batch`: `requests_per_minute` only
9581003
959Other group types don’t accept any limiter type. You can clear any of the limiter types listed earlier on any group. The list endpoints can return limiter types that you can’t set, such as `enqueued_batch_requests`; sending one returns a 400 error.
1004You can clear any of the limiter types listed earlier on any of these groups. The list endpoints can return limiter types that you can’t set, such as `enqueued_batch_requests`; sending one returns a 400 error.
9601005
9611006The API stores a value above the organization’s limit for the same limiter type, but it enforces the lower of the two. The response’s `org_limit` shows the organization’s value.
9621007
from line 1010
9651010The API checks the whole request before it changes anything, so an invalid entry fails the request with a 400 error and changes nothing. If a request passes validation, the API then applies the entries one at a time. If applying one fails, the request returns an error and the entries before it stay applied. Each entry sets or clears an absolute value, so you can safely send the same request again. A resend replaces any change that someone else made in between to the limiter types it names.
9661011
9671012<Note>
968 Setting workspace rate limits isn’t available on [Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws) yet.
1013 Setting workspace rate limits is not available on [Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws).
9691014</Note>
9701015
9711016Raise the workspace’s requests per minute for the Claude Opus 5.5 group to 2,000 and clear its input tokens per minute override:
from line 1099
10541099 ```
10551100
10561101 ```go Go
1057 client := anthropic.NewClient()
1102 import (
1103 "context"
1104 "fmt"
1105 "log"
10581106
1059 entry, err := client.Organization.Workspaces.RateLimits.Update(
1060 context.Background(),
1061 "rlt_01NwFawrTvAijwqn8AjKVBPS",
1062 anthropic.OrganizationWorkspaceRateLimitUpdateParams{
1063 WorkspaceID: "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ",
1064 Limits: []anthropic.WorkspaceRateLimitUpdateValueParam{
1065 {Type: "requests_per_minute", Value: anthropic.Int(2000)},
1066 {Type: "input_tokens_per_minute", Value: param.Null[int64]()},
1067 },
1068 },
1107 "github.com/anthropics/anthropic-sdk-go/v2"
1108 "github.com/anthropics/anthropic-sdk-go/v2/packages/param"
10691109 )
1070 if err != nil {
1071 log.Fatal(err)
1072 }
10731110
1074 for _, limit := range entry.Limits {
1075 fmt.Printf("%s: %d\n", limit.Type, limit.Value)
1111 func main() {
1112 client := anthropic.NewClient()
1113
1114 entry, err := client.Organization.Workspaces.RateLimits.Update(
1115 context.Background(),
1116 "rlt_01NwFawrTvAijwqn8AjKVBPS",
1117 anthropic.OrganizationWorkspaceRateLimitUpdateParams{
1118 WorkspaceID: "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ",
1119 Limits: []anthropic.WorkspaceRateLimitUpdateValueParam{
1120 {Type: "requests_per_minute", Value: anthropic.Int(2000)},
1121 {Type: "input_tokens_per_minute", Value: param.Null[int64]()},
1122 },
1123 },
1124 )
1125 if err != nil {
1126 log.Fatal(err)
1127 }
1128
1129 for _, limit := range entry.Limits {
1130 fmt.Printf("%s: %d\n", limit.Type, limit.Value)
1131 }
10761132 }
10771133 ```
10781134
from line 1231
11751231
11761232<CodeGroup>
11771233 ```bash cURL
1234 # Returns one page, which holds every entry when `limit` is omitted.
11781235 curl "https://api.anthropic.com/v1/organizations/rate_limits?group_type=batch" \
11791236 -H "x-api-key: $ANTHROPIC_API_KEY" \
11801237 -H "anthropic-version: 2026-10-21"
from line 1238
11811238 ```
11821239
11831240 ```bash CLI
1241 # Automatically fetches more pages as needed.
11841242 ant organization:rate-limits list --group-type batch
11851243 ```
11861244
from line 1247
11891247
11901248 rate_limits = client.organization.rate_limits.list(group_type="batch")
11911249
1250 # Automatically fetches more pages as needed.
11921251 for entry in rate_limits:
11931252 models = f" ({', '.join(entry.models)})" if entry.models else ""
11941253 print(f"{entry.group.type}{models}")
from line 1260
12011260
12021261 const rateLimits = await client.organization.rateLimits.list({ group_type: "batch" });
12031262
1263 // Automatically fetches more pages as needed.
12041264 for await (const entry of rateLimits) {
12051265 const models = entry.models ? ` (${entry.models.join(", ")})` : "";
12061266 console.log(`${entry.group.type}${models}`);
from line 1280
12201280 GroupType = GroupType.Batch
12211281 });
12221282
1283 // Automatically fetches more pages as needed.
12231284 await foreach (var entry in rateLimits.Paginate())
12241285 {
12251286 var models = entry.Models is null ? "" : $" ({string.Join(", ", entry.Models)})";
from line 1299
12381299 GroupType: anthropic.OrganizationRateLimitListParamsGroupTypeBatch,
12391300 })
12401301
1302 // Automatically fetches more pages as needed.
12411303 for rateLimits.Next() {
12421304 entry := rateLimits.Current()
12431305 models := ""
from line 1327
12651327 .build();
12661328 var rateLimits = client.organization().rateLimits().list(params);
12671329
1330 // Automatically fetches more pages as needed.
12681331 for (var entry : rateLimits.autoPager()) {
12691332 var models = entry.models()
12701333 .map(modelIds -> " (" + String.join(", ", modelIds) + ")")
from line 1350
12871350 groupType: GroupType::BATCH,
12881351 );
12891352
1353 // Reads only the first page, which holds every entry when `limit` is omitted.
12901354 foreach ($rateLimits->data as $entry) {
12911355 $models = $entry->models ? ' (' . implode(', ', $entry->models) . ')' : '';
12921356 echo "{$entry->group->type}{$models}\n";
from line 1365
13011365
13021366 rate_limits = client.organization.rate_limits.list(group_type: :batch)
13031367
1368 # Reads only the first page, which holds every entry when `limit` is omitted.
13041369 rate_limits.data.each do |entry|
13051370 models = entry.models ? " (#{entry.models.join(", ")})" : ""
13061371 puts "#{entry.group.type}#{models}"
from line 1376
13111376 ```
13121377</CodeGroup>
13131378
1314Valid values are `model_group`, `batch`, `token_count`, `files`, `skills`, and `web_search`.
1379Valid values are `model_group`, `batch`, `token_count`, `files`, `skills`, and `web_search`. The `token_count`, `files`, and `skills` values return an empty `data` list, because neither list endpoint returns the limits for the Token Counting API, the Files API, or the Skills API.
13151380
13161381## Pagination
13171382
1318Both endpoints accept a `page` query parameter and return a `next_page` field. Responses are currently always a single page, so `next_page` is `null`. Loop on `next_page` so your client paginates correctly without changes when the response grows.
1383Both list endpoints accept optional `limit` and `page` query parameters and return a `next_page` field. `limit` ranges from 1 to 1,000. If you omit it, the response contains every remaining entry and `next_page` is `null`. If `limit` cuts the list short, `next_page` holds a cursor: pass it as `page`, with the same filters, to get the next entries. Loop on `next_page` so your client gets every entry.
13191384
13201385## Frequently asked questions
13211386
from line 1394
13291394
13301395By default, the workspace response lists only overrides, so a missing group has no workspace override and inherits the organization-level limit. Pass `include_inherited=true` to see inherited values on the workspace endpoint, or query the organization endpoint. With `include_inherited=true`, a group is missing only when it doesn’t apply to the workspace or the organization has no limit set for it.
13311396
1332### Can I update rate limits with this API?
1397### Can you update rate limits with this API?
13331398
1334**For a workspace:** Yes. The [Set Workspace Rate Limits](https://platform.claude.com/docs/en/api/organization/workspaces/rate_limits/update) endpoint sets or clears a workspace’s overrides for one rate limit group. Pass the top-level `id` of the matching entry in the [organization endpoint’s response](https://platform.claude.com/docs/en/manage-claude/rate-limits-api#list-all-organization-rate-limits) as `rate_limit_id`, not the `rlg_` `id` inside its `group`. The lower of the workspace override and the organization-level limit applies, and a change takes effect within about an hour. For the request body and an example, see [this page’s section on setting workspace rate limits](https://platform.claude.com/docs/en/manage-claude/rate-limits-api#set-workspace-rate-limits). You can also set workspace rate limits on the [Rate limits](https://platform.claude.com/usage/limits) page in the Claude Console: select the workspace from the **Workspace** dropdown menu, and click **Edit** next to a model.
1399**For a workspace:** Yes. The [Set Workspace Rate Limits](https://platform.claude.com/docs/en/api/organization/workspaces/rate_limits/update) endpoint sets or clears a workspace’s overrides for one rate limit group. Pass the top-level `id` of the matching entry in the [organization endpoint’s response](https://platform.claude.com/docs/en/manage-claude/rate-limits-api#list-all-organization-rate-limits) as `rate_limit_id`, not the `rlg_` `id` inside its `group`. The lower of the workspace override and the organization-level limit applies, and a change takes effect within about an hour. For the request body and an example, see [Set workspace rate limits](https://platform.claude.com/docs/en/manage-claude/rate-limits-api#set-workspace-rate-limits). You can also set workspace rate limits on the [Rate limits page in the Claude Console](https://platform.claude.com/usage/limits): select the workspace from the **Workspace** dropdown menu, and click **Edit** next to a model.
13351400
13361401**For an organization:** No. To request higher limits, see [Requesting higher limits](https://platform.claude.com/docs/en/api/rate-limits#requesting-higher-limits).
13371402