rate-limits-api changedmanage-claude/rate-limits-api
Nearest release: v2.1.296, published an hour after this site recorded the change. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
Recorded here
Lines+278added
Lines−12removed
From line
157
where the diff opens
First seen
14 Aug 2026
this site's first read of the page
Recorded edits9to this page, all time
### Include inherited values
The whole hunk
from line 157, old and new numbered
/
from line 157
157157* **`group_type`:** Deprecated in favor of the `type` inside `group`. It's still returned, always equals that value, and has no removal date. The `group_type` query parameter isn't deprecated. See [Filtering by group type](https://platform.claude.com/docs/en/manage-claude/rate-limits-api#filtering-by-group-type) for the list of values.
158158* **`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`.
159159* **`limits` list:** Each group carries a list of `{type, value}` pairs. The `type` field identifies the limiter (such as `requests_per_minute`, `input_tokens_per_minute`, or `output_tokens_per_minute`) and `value` is the configured limit. See [Rate limits](https://platform.claude.com/docs/en/api/rate-limits) for how each limiter is measured and enforced.
160* **`source` on workspace limits:** On the workspace endpoint, every limit value also carries `source`, which says where `value` comes from: `{"type": "workspace"}` for an override stored on the workspace, or `{"type": "organization"}` for a value inherited from the organization. By default, the workspace endpoint returns overrides only, so `source.type` is always `workspace` there; inherited values appear when you pass `include_inherited=true`. See [Workspace rate limits](https://platform.claude.com/docs/en/manage-claude/rate-limits-api#workspace-rate-limits).
160161
161162For complete parameter details and response schemas, see the [Organization Rate Limits API reference](https://platform.claude.com/docs/en/api/organization/rate_limits/list).
162163
from line 282
281282 ```
282283</CodeGroup>
283284
284```json
285```text wrap
285286{
286287 "data": [
287288 {
from line 477
476477
477478## Workspace rate limits
478479
479The `/v1/organizations/workspaces/{workspace_id}/rate_limits` endpoint returns the rate limit overrides configured for a single workspace.
480The `/v1/organizations/workspaces/{workspace_id}/rate_limits` endpoint returns the rate limit overrides configured for a single workspace. To also see the values the workspace inherits, pass `include_inherited=true` (see [Include inherited values](https://platform.claude.com/docs/en/manage-claude/rate-limits-api#include-inherited-values)).
480481
481The response only includes overrides, so anything missing from it is inherited from the organization:
482By default, the response only includes overrides, so anything missing from it is inherited from the organization:
482483
483484* A group that is absent from `data` has no workspace override at all. The workspace inherits the organization-level limits for that group (it is not unlimited).
484485* Within a group that is present, a limiter type that is absent from `limits[]` has no workspace override for that limiter. The workspace inherits the organization value for it.
485* For each limiter that is present, `org_limit` is the organization-level value for the same limiter, or `null` if the organization has no configured limit for that limiter type.
486* For each limiter that is present, `org_limit` is the organization-level value for the same limiter, or `null` if the organization has no configured limit for that limiter type, and `source` is `{"type": "workspace"}`.
486487
487488For complete parameter details and response schemas, see the [Workspace Rate Limits API reference](https://platform.claude.com/docs/en/api/organization/workspaces/rate_limits/list).
488489
489490<Tip>
490 To retrieve your organization's workspace IDs, use the [List Workspaces](https://platform.claude.com/docs/en/api/organization/workspaces/list) endpoint, or find them in the [Claude Console](https://platform.claude.com/settings/workspaces). The default workspace cannot have rate limit overrides, so it has no entry on this endpoint; use the organization endpoint to read its limits.
491 To retrieve your organization's workspace IDs, use the [List Workspaces](https://platform.claude.com/docs/en/api/organization/workspaces/list) endpoint, or find them in the [Claude Console](https://platform.claude.com/settings/workspaces). The default workspace cannot have rate limit overrides, and this endpoint returns a 404 error for it, with or without `include_inherited`; use the organization endpoint to read its limits.
491492</Tip>
492493
493494<CodeGroup>
from line 625
624625 ```
625626</CodeGroup>
626627
627```json
628```text wrap
628629{
629630 "data": [
630631 {
from line 638
637638 },
638639 "models": ["claude-opus-5-5"],
639640 "limits": [
640 { "type": "requests_per_minute", "value": 1000, "org_limit": 4000 },
641 { "type": "input_tokens_per_minute", "value": 500000, "org_limit": 10000000 }
641 {
642 "type": "requests_per_minute",
643 "value": 1000,
644 "org_limit": 4000,
645 "source": { "type": "workspace" }
646 },
647 {
648 "type": "input_tokens_per_minute",
649 "value": 500000,
650 "org_limit": 10000000,
651 "source": { "type": "workspace" }
652 }
642653 ]
643654 },
644655 {
from line 668
657668 "claude-opus-4-8"
658669 ],
659670 "limits": [
660 { "type": "requests_per_minute", "value": 1000, "org_limit": 4000 },
661 { "type": "input_tokens_per_minute", "value": 500000, "org_limit": 10000000 }
671 {
672 "type": "requests_per_minute",
673 "value": 1000,
674 "org_limit": 4000,
675 "source": { "type": "workspace" }
676 },
677 {
678 "type": "input_tokens_per_minute",
679 "value": 500000,
680 "org_limit": 10000000,
681 "source": { "type": "workspace" }
682 }
662683 ]
663684 }
664685 ],
from line 687
666687}
667688```
668689
690### Include inherited values
691
692To read a workspace's applicable limits in one request, add the optional `include_inherited` query parameter. It defaults to `false`; a value that isn't a Boolean returns a 400 error. With `include_inherited=true`:
693
694* `data` has one entry for each group that applies to the workspace and has an organization-level value, even if the workspace overrides none of it. A model group applies when the workspace can access at least one of its models.
695* Each entry's `limits[]` lists every limiter type the organization has a value for on that group, plus any type the workspace overrides. Each type appears once, with the workspace's override where one is stored and the organization's value otherwise, so one entry can mix the two.
696* Each value's `source` tells them apart: `{"type": "workspace"}` is a stored override, and `{"type": "organization"}` is an inherited value, where `value` equals `org_limit`.
697
698<CodeGroup>
699 ```bash cURL
700 curl "https://api.anthropic.com/v1/organizations/workspaces/wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ/rate_limits?include_inherited=true" \
701 -H "x-api-key: $ANTHROPIC_API_KEY" \
702 -H "anthropic-version: 2023-06-01"
703 ```
704
705 ```bash CLI
706 ant organization:workspaces:rate-limits list \
707 --workspace-id wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ \
708 --include-inherited
709 ```
710
711 ```python Python
712 client = anthropic.Anthropic()
713
714 rate_limits = client.organization.workspaces.rate_limits.list(
715 "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ",
716 include_inherited=True,
717 )
718
719 for entry in rate_limits:
720 models = f" ({', '.join(entry.models)})" if entry.models else ""
721 print(f"{entry.group.type}{models}")
722 for limit in entry.limits:
723 print(f" {limit.type}: {limit.value} ({limit.source.type})")
724 ```
725
726 ```typescript TypeScript
727 const client = new Anthropic();
728
729 const rateLimits = await client.organization.workspaces.rateLimits.list(
730 "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ",
731 { include_inherited: true }
732 );
733
734 for await (const entry of rateLimits) {
735 const models = entry.models ? ` (${entry.models.join(", ")})` : "";
736 console.log(`${entry.group.type}${models}`);
737 for (const limit of entry.limits) {
738 console.log(` ${limit.type}: ${limit.value} (${limit.source.type})`);
739 }
740 }
741 ```
742
743 ```csharp C#
744 AnthropicClient client = new();
745
746 var rateLimits = await client.Organization.Workspaces.RateLimits.List(
747 "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ",
748 new() { IncludeInherited = true }
749 );
750
751 await foreach (var entry in rateLimits.Paginate())
752 {
753 var models = entry.Models is null ? "" : $" ({string.Join(", ", entry.Models)})";
754 Console.WriteLine($"{entry.Group.Type.GetString()}{models}");
755 foreach (var limit in entry.Limits)
756 {
757 Console.WriteLine($" {limit.Type}: {limit.Value} ({limit.Source.Type.GetString()})");
758 }
759 }
760 ```
761
762 ```go Go
763 client := anthropic.NewClient()
764
765 rateLimits := client.Organization.Workspaces.RateLimits.ListAutoPaging(
766 context.Background(),
767 "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ",
768 anthropic.OrganizationWorkspaceRateLimitListParams{
769 IncludeInherited: anthropic.Bool(true),
770 },
771 )
772
773 for rateLimits.Next() {
774 entry := rateLimits.Current()
775 models := ""
776 if len(entry.Models) > 0 {
777 models = fmt.Sprintf(" (%s)", strings.Join(entry.Models, ", "))
778 }
779 fmt.Printf("%s%s\n", entry.Group.Type, models)
780 for _, limit := range entry.Limits {
781 fmt.Printf(" %s: %d (%s)\n", limit.Type, limit.Value, limit.Source.Type)
782 }
783 }
784 if err := rateLimits.Err(); err != nil {
785 log.Fatal(err)
786 }
787 ```
788
789 ```java Java
790 import com.anthropic.models.organization.workspaces.ratelimits.RateLimitListParams;
791
792 void main() {
793 AnthropicClient client = AnthropicOkHttpClient.fromEnv();
794
795 var params = RateLimitListParams.builder()
796 .includeInherited(true)
797 .build();
798 var rateLimits = client.organization().workspaces().rateLimits()
799 .list("wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ", params);
800
801 for (var entry : rateLimits.autoPager()) {
802 var models = entry.models()
803 .map(modelIds -> " (" + String.join(", ", modelIds) + ")")
804 .orElse("");
805 IO.println(entry.group().type().asString() + models);
806 for (var limit : entry.limits()) {
807 IO.println(" " + limit.type() + ": " + limit.value()
808 + " (" + limit.source().type().asString() + ")");
809 }
810 }
811 }
812 ```
813
814 ```php PHP
815 $client = new Client();
816
817 $rateLimits = $client->organization->workspaces->rateLimits->list(
818 workspaceID: 'wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ',
819 includeInherited: true,
820 );
821
822 foreach ($rateLimits->data as $entry) {
823 $models = $entry->models ? ' (' . implode(', ', $entry->models) . ')' : '';
824 echo "{$entry->group->type}{$models}\n";
825 foreach ($entry->limits as $limit) {
826 echo " {$limit->type}: {$limit->value} ({$limit->source->type})\n";
827 }
828 }
829 ```
830
831 ```ruby Ruby
832 client = Anthropic::Client.new
833
834 workspace_id = "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"
835 rate_limits = client.organization.workspaces.rate_limits.list(workspace_id, include_inherited: true)
836
837 rate_limits.data.each do |entry|
838 models = entry.models ? " (#{entry.models.join(", ")})" : ""
839 puts "#{entry.group.type}#{models}"
840 entry.limits.each do |limit|
841 puts " #{limit.type}: #{limit.value} (#{limit.source.type})"
842 end
843 end
844 ```
845</CodeGroup>
846
847```text wrap
848{
849 "data": [
850 {
851 "type": "workspace_rate_limit",
852 "group_type": "model_group",
853 "group": {
854 "type": "model_group",
855 "id": "rlg_01Hq7YkP3mZ9dTwRx4cVbN2s",
856 "display_name": "Claude Opus 5.5"
857 },
858 "models": ["claude-opus-5-5"],
859 "limits": [
860 {
861 "type": "requests_per_minute",
862 "value": 1000,
863 "org_limit": 4000,
864 "source": { "type": "workspace" }
865 },
866 {
867 "type": "input_tokens_per_minute",
868 "value": 500000,
869 "org_limit": 10000000,
870 "source": { "type": "workspace" }
871 },
872 {
873 "type": "output_tokens_per_minute",
874 "value": 800000,
875 "org_limit": 800000,
876 "source": { "type": "organization" }
877 }
878 ]
879 },
880 {
881 "type": "workspace_rate_limit",
882 "group_type": "model_group",
883 "group": {
884 "type": "model_group",
885 "id": "rlg_01Kd5wMv8nSq2LcXy6tRfJ4b",
886 "display_name": "Claude Opus 4.x"
887 },
888 "models": [
889 "claude-opus-4-5",
890 "claude-opus-4-5-20251101",
891 "claude-opus-4-6",
892 "claude-opus-4-7",
893 "claude-opus-4-8"
894 ],
895 "limits": [
896 {
897 "type": "requests_per_minute",
898 "value": 1000,
899 "org_limit": 4000,
900 "source": { "type": "workspace" }
901 },
902 {
903 "type": "input_tokens_per_minute",
904 "value": 500000,
905 "org_limit": 10000000,
906 "source": { "type": "workspace" }
907 },
908 {
909 "type": "output_tokens_per_minute",
910 "value": 800000,
911 "org_limit": 800000,
912 "source": { "type": "organization" }
913 }
914 ]
915 },
916 {
917 "type": "workspace_rate_limit",
918 "group_type": "batch",
919 "group": { "type": "batch", "id": "rlg_01Wn3pBz6kCg9vHtQ7mLxD5a" },
920 "models": null,
921 "limits": [
922 {
923 "type": "enqueued_batch_requests",
924 "value": 500000,
925 "org_limit": 500000,
926 "source": { "type": "organization" }
927 }
928 ]
929 }
930 ],
931 "next_page": null
932}
933```
934
669935## Filtering by group type
670936
671937Both endpoints accept an optional `group_type` query parameter that restricts the response to a single category:
from line 1088
8221088
8231089### What does it mean if a group is missing from the workspace response?
8241090
825The workspace has no override for that group and inherits the organization-level limit. Query the organization endpoint to see the inherited values.
1091By 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.
8261092
8271093### Can I update rate limits with this API?
8281094
No line in this hunk matches that.