---
title: Rate Limits
url: https://platform.claude.com/docs/en/api/csharp/organization/workspaces/rate_limits
---

# Rate Limits

## List Workspace Rate Limits

`RateLimitListPage Organization.Workspaces.RateLimits.List(parameters, cancellationToken = default)`

**GET** `/v1/organizations/workspaces/{workspace_id}/rate_limits`

List a workspace's rate limits.

By default, returns only the groups and limiter types that have a
workspace-level override. With `include_inherited=true`, returns every
group with organization-level limits the workspace can see, listing for
each the values it inherits from the organization as well as its own
overrides. Each value's `source` says which it is.

When `limit` is omitted, every matching entry is returned in a single
page; when `limit` truncates the result, follow `next_page` to fetch
the remaining entries.

### Parameters

- `RateLimitListParams parameters`

  - `required string workspaceID` (path parameter)

    The ID of the workspace.

  - `GroupType? groupType` (query parameter)

    Filter by group type.

    - `Batch("batch")`

    - `Files("files")`

    - `ModelGroup("model_group")`

    - `Skills("skills")`

    - `TokenCount("token_count")`

    - `WebSearch("web_search")`

  - `bool includeInherited` (query parameter)

    Also list the limiter values the workspace inherits from the organization, including groups with no workspace-level override.

  - `long? limit` (query parameter)

    Maximum number of items to return per page. Ranges from `1` to `1000`.

    When omitted, every remaining entry is returned in a single page and `next_page` is `null`.

    minimum: 1, maximum: 1000

  - `string? page` (query parameter)

    Opaque cursor from a previous response's `next_page`.

### Returns

- `class WorkspaceRateLimit`

  - `JsonElement Type = "workspace_rate_limit"`

    Object type. Always `workspace_rate_limit` for workspace rate-limit entries.

  - `required Group Group`

    The rate-limit group this entry's limits apply to.

    - `class OrganizationRateLimitModelGroup`

      - `JsonElement Type = "model_group"`

        Always `model_group`: a family of models.

      - `required string ID`

        Opaque identifier of the rate-limit group (for example, `rlg_01VPTCmyiu5ZLsWkcxYG2pY8`). It is the same in every organization and never changes, unlike the entry's own identifier, which differs per organization.

      - `required string DisplayName`

        Human-readable name of the model group (for example, `Claude Sonnet 4.x`). For display only; it may change.

    - `class OrganizationRateLimitBatchGroup`

      - `JsonElement Type = "batch"`

        Always `batch`: the Message Batches API.

      - `required string ID`

        Opaque identifier of the rate-limit group (for example, `rlg_01VPTCmyiu5ZLsWkcxYG2pY8`). It is the same in every organization and never changes, unlike the entry's own identifier, which differs per organization.

    - `class OrganizationRateLimitTokenCountGroup`

      - `JsonElement Type = "token_count"`

        Always `token_count`: the Token Count API.

      - `required string ID`

        Opaque identifier of the rate-limit group (for example, `rlg_01VPTCmyiu5ZLsWkcxYG2pY8`). It is the same in every organization and never changes, unlike the entry's own identifier, which differs per organization.

    - `class OrganizationRateLimitFilesGroup`

      - `JsonElement Type = "files"`

        Always `files`: the Files API.

      - `required string ID`

        Opaque identifier of the rate-limit group (for example, `rlg_01VPTCmyiu5ZLsWkcxYG2pY8`). It is the same in every organization and never changes, unlike the entry's own identifier, which differs per organization.

    - `class OrganizationRateLimitSkillsGroup`

      - `JsonElement Type = "skills"`

        Always `skills`: the Skills API.

      - `required string ID`

        Opaque identifier of the rate-limit group (for example, `rlg_01VPTCmyiu5ZLsWkcxYG2pY8`). It is the same in every organization and never changes, unlike the entry's own identifier, which differs per organization.

    - `class OrganizationRateLimitWebSearchGroup`

      - `JsonElement Type = "web_search"`

        Always `web_search`: the Messages API web search tool.

      - `required string ID`

        Opaque identifier of the rate-limit group (for example, `rlg_01VPTCmyiu5ZLsWkcxYG2pY8`). It is the same in every organization and never changes, unlike the entry's own identifier, which differs per organization.

  - `required IReadOnlyList<WorkspaceRateLimitValue> Limits`

    The workspace's limiter values for this group. By default only the limiter types with a workspace-level override are listed. With `include_inherited` set to `true`, the limiter types the workspace inherits from the organization are listed too, each marked by `source`.

    - `required string Type`

      The limiter type (for example, `requests_per_minute` or `input_tokens_per_minute`).

    - `required long? OrgLimit`

      The organization-level value for the same limiter type, for reference. `null` when the organization has no limit configured for this limiter type.

    - `required Source Source`

      Where `value` comes from. `organization` values are listed only when `include_inherited` is `true`, and then `value` equals `org_limit`.

      - `class WorkspaceRateLimitWorkspaceSource`

        - `JsonElement Type = "workspace"`

          Always `workspace`: a workspace-level override is stored.

      - `class WorkspaceRateLimitOrganizationSource`

        - `JsonElement Type = "organization"`

          Always `organization`: no workspace-level override is stored, so the organization's value applies.

    - `required long Value`

      The workspace's value for this limiter type: the workspace-level override when `source.type` is `workspace`, otherwise the organization's value.

  - `required IReadOnlyList<string>? Models`

    Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`. The list covers the models this workspace has access to, so it can differ between workspaces.

  - `required string RateLimitID`

    The `id` of the organization's RateLimit entry this entry applies to.

  - `required string WorkspaceID`

    ID of the Workspace this entry applies to.

### Example

```csharp
using System;
using Anthropic.Models.Organization.Workspaces.RateLimits;

RateLimitListParams parameters = new() { WorkspaceID = "workspace_id" };

var page = await client.Organization.Workspaces.RateLimits.List(parameters);
await foreach (var item in page.Paginate())
{
    Console.WriteLine(item);
}
```

#### Response (200)

```json
{
  "data": [
    {
      "group": {
        "id": "id",
        "display_name": "display_name",
        "type": "model_group"
      },
      "limits": [
        {
          "org_limit": 0,
          "source": {
            "type": "workspace"
          },
          "type": "type",
          "value": 0
        }
      ],
      "models": [
        "string"
      ],
      "rate_limit_id": "rate_limit_id",
      "type": "workspace_rate_limit",
      "workspace_id": "workspace_id"
    }
  ],
  "next_page": "next_page"
}
```

## Set Workspace Rate Limits

`WorkspaceRateLimit Organization.Workspaces.RateLimits.Update(parameters, cancellationToken = default)`

**POST** `/v1/organizations/workspaces/{workspace_id}/rate_limits/{rate_limit_id}`

Set or clear rate-limit overrides for one rate-limit group in a workspace.

Only the limiter types named in `limits` change: an integer `value` sets
that type's override and `null` clears it. Types not named keep their
current value. A value above the organization's own limit is stored, but
the organization limit still applies, so the lower of the two is
enforced.

Returns the targeted group's entry with this request applied, in the shape
`GET /v1/organizations/workspaces/{workspace_id}/rate_limits` returns.
Changes take effect within about an hour.

### Parameters

- `RateLimitUpdateParams parameters`

  - `required string workspaceID` (path parameter)

    The ID of the workspace.

  - `required string rateLimitID` (path parameter)

    The `id` of the organization's rate-limit entry to set overrides for.

  - `required IReadOnlyList<WorkspaceRateLimitUpdateValue> limits`

    Limits to set or clear. Unspecified limit types are unchanged.

    minItems: 1, maxItems: 16

    - `required WorkspaceRateLimitType Type`

      Rate limiter type.

      - `FastItpmca("fast_itpmca")`

      - `FastOtpm("fast_otpm")`

      - `InputTokensPerMinute("input_tokens_per_minute")`

      - `InputTokensPerMinuteCacheAware("input_tokens_per_minute_cache_aware")`

      - `OutputTokensPerMinute("output_tokens_per_minute")`

      - `RequestsPerMinute("requests_per_minute")`

      - `TokensPerDay("tokens_per_day")`

      - `TokensPerMinute("tokens_per_minute")`

      - `ToolUsesPerSecond("tool_uses_per_second")`

    - `required long? Value`

      New limit value. Set to null to clear the workspace override and fall back to the organization limit.

      minimum: 0, maximum: 9007199254740991

### Returns

- `class WorkspaceRateLimit`

  - `JsonElement Type = "workspace_rate_limit"`

    Object type. Always `workspace_rate_limit` for workspace rate-limit entries.

  - `required Group Group`

    The rate-limit group this entry's limits apply to.

    - `class OrganizationRateLimitModelGroup`

      - `JsonElement Type = "model_group"`

        Always `model_group`: a family of models.

      - `required string ID`

        Opaque identifier of the rate-limit group (for example, `rlg_01VPTCmyiu5ZLsWkcxYG2pY8`). It is the same in every organization and never changes, unlike the entry's own identifier, which differs per organization.

      - `required string DisplayName`

        Human-readable name of the model group (for example, `Claude Sonnet 4.x`). For display only; it may change.

    - `class OrganizationRateLimitBatchGroup`

      - `JsonElement Type = "batch"`

        Always `batch`: the Message Batches API.

      - `required string ID`

        Opaque identifier of the rate-limit group (for example, `rlg_01VPTCmyiu5ZLsWkcxYG2pY8`). It is the same in every organization and never changes, unlike the entry's own identifier, which differs per organization.

    - `class OrganizationRateLimitTokenCountGroup`

      - `JsonElement Type = "token_count"`

        Always `token_count`: the Token Count API.

      - `required string ID`

        Opaque identifier of the rate-limit group (for example, `rlg_01VPTCmyiu5ZLsWkcxYG2pY8`). It is the same in every organization and never changes, unlike the entry's own identifier, which differs per organization.

    - `class OrganizationRateLimitFilesGroup`

      - `JsonElement Type = "files"`

        Always `files`: the Files API.

      - `required string ID`

        Opaque identifier of the rate-limit group (for example, `rlg_01VPTCmyiu5ZLsWkcxYG2pY8`). It is the same in every organization and never changes, unlike the entry's own identifier, which differs per organization.

    - `class OrganizationRateLimitSkillsGroup`

      - `JsonElement Type = "skills"`

        Always `skills`: the Skills API.

      - `required string ID`

        Opaque identifier of the rate-limit group (for example, `rlg_01VPTCmyiu5ZLsWkcxYG2pY8`). It is the same in every organization and never changes, unlike the entry's own identifier, which differs per organization.

    - `class OrganizationRateLimitWebSearchGroup`

      - `JsonElement Type = "web_search"`

        Always `web_search`: the Messages API web search tool.

      - `required string ID`

        Opaque identifier of the rate-limit group (for example, `rlg_01VPTCmyiu5ZLsWkcxYG2pY8`). It is the same in every organization and never changes, unlike the entry's own identifier, which differs per organization.

  - `required IReadOnlyList<WorkspaceRateLimitValue> Limits`

    The workspace's limiter values for this group. By default only the limiter types with a workspace-level override are listed. With `include_inherited` set to `true`, the limiter types the workspace inherits from the organization are listed too, each marked by `source`.

    - `required string Type`

      The limiter type (for example, `requests_per_minute` or `input_tokens_per_minute`).

    - `required long? OrgLimit`

      The organization-level value for the same limiter type, for reference. `null` when the organization has no limit configured for this limiter type.

    - `required Source Source`

      Where `value` comes from. `organization` values are listed only when `include_inherited` is `true`, and then `value` equals `org_limit`.

      - `class WorkspaceRateLimitWorkspaceSource`

        - `JsonElement Type = "workspace"`

          Always `workspace`: a workspace-level override is stored.

      - `class WorkspaceRateLimitOrganizationSource`

        - `JsonElement Type = "organization"`

          Always `organization`: no workspace-level override is stored, so the organization's value applies.

    - `required long Value`

      The workspace's value for this limiter type: the workspace-level override when `source.type` is `workspace`, otherwise the organization's value.

  - `required IReadOnlyList<string>? Models`

    Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`. The list covers the models this workspace has access to, so it can differ between workspaces.

  - `required string RateLimitID`

    The `id` of the organization's RateLimit entry this entry applies to.

  - `required string WorkspaceID`

    ID of the Workspace this entry applies to.

### Example

```csharp
using System;
using Anthropic.Models.Organization.Workspaces.RateLimits;

RateLimitUpdateParams parameters = new()
{
    WorkspaceID = "workspace_id",
    RateLimitID = "rate_limit_id",
    Limits =
    [
        new()
        {
            Type = WorkspaceRateLimitType.FastItpmca,
            Value = 0,
        },
    ],
};

var workspaceRateLimit = await client.Organization.Workspaces.RateLimits.Update(parameters);

Console.WriteLine(workspaceRateLimit);
```

#### Response (200)

```json
{
  "group": {
    "id": "id",
    "display_name": "display_name",
    "type": "model_group"
  },
  "limits": [
    {
      "org_limit": 0,
      "source": {
        "type": "workspace"
      },
      "type": "type",
      "value": 0
    }
  ],
  "models": [
    "string"
  ],
  "rate_limit_id": "rate_limit_id",
  "type": "workspace_rate_limit",
  "workspace_id": "workspace_id"
}
```

## Domain types

### Workspace Rate Limit

- `class WorkspaceRateLimit`

  - `JsonElement Type = "workspace_rate_limit"`

    Object type. Always `workspace_rate_limit` for workspace rate-limit entries.

  - `required Group Group`

    The rate-limit group this entry's limits apply to.

    - `class OrganizationRateLimitModelGroup`

      - `JsonElement Type = "model_group"`

        Always `model_group`: a family of models.

      - `required string ID`

        Opaque identifier of the rate-limit group (for example, `rlg_01VPTCmyiu5ZLsWkcxYG2pY8`). It is the same in every organization and never changes, unlike the entry's own identifier, which differs per organization.

      - `required string DisplayName`

        Human-readable name of the model group (for example, `Claude Sonnet 4.x`). For display only; it may change.

    - `class OrganizationRateLimitBatchGroup`

      - `JsonElement Type = "batch"`

        Always `batch`: the Message Batches API.

      - `required string ID`

        Opaque identifier of the rate-limit group (for example, `rlg_01VPTCmyiu5ZLsWkcxYG2pY8`). It is the same in every organization and never changes, unlike the entry's own identifier, which differs per organization.

    - `class OrganizationRateLimitTokenCountGroup`

      - `JsonElement Type = "token_count"`

        Always `token_count`: the Token Count API.

      - `required string ID`

        Opaque identifier of the rate-limit group (for example, `rlg_01VPTCmyiu5ZLsWkcxYG2pY8`). It is the same in every organization and never changes, unlike the entry's own identifier, which differs per organization.

    - `class OrganizationRateLimitFilesGroup`

      - `JsonElement Type = "files"`

        Always `files`: the Files API.

      - `required string ID`

        Opaque identifier of the rate-limit group (for example, `rlg_01VPTCmyiu5ZLsWkcxYG2pY8`). It is the same in every organization and never changes, unlike the entry's own identifier, which differs per organization.

    - `class OrganizationRateLimitSkillsGroup`

      - `JsonElement Type = "skills"`

        Always `skills`: the Skills API.

      - `required string ID`

        Opaque identifier of the rate-limit group (for example, `rlg_01VPTCmyiu5ZLsWkcxYG2pY8`). It is the same in every organization and never changes, unlike the entry's own identifier, which differs per organization.

    - `class OrganizationRateLimitWebSearchGroup`

      - `JsonElement Type = "web_search"`

        Always `web_search`: the Messages API web search tool.

      - `required string ID`

        Opaque identifier of the rate-limit group (for example, `rlg_01VPTCmyiu5ZLsWkcxYG2pY8`). It is the same in every organization and never changes, unlike the entry's own identifier, which differs per organization.

  - `required IReadOnlyList<WorkspaceRateLimitValue> Limits`

    The workspace's limiter values for this group. By default only the limiter types with a workspace-level override are listed. With `include_inherited` set to `true`, the limiter types the workspace inherits from the organization are listed too, each marked by `source`.

    - `required string Type`

      The limiter type (for example, `requests_per_minute` or `input_tokens_per_minute`).

    - `required long? OrgLimit`

      The organization-level value for the same limiter type, for reference. `null` when the organization has no limit configured for this limiter type.

    - `required Source Source`

      Where `value` comes from. `organization` values are listed only when `include_inherited` is `true`, and then `value` equals `org_limit`.

      - `class WorkspaceRateLimitWorkspaceSource`

        - `JsonElement Type = "workspace"`

          Always `workspace`: a workspace-level override is stored.

      - `class WorkspaceRateLimitOrganizationSource`

        - `JsonElement Type = "organization"`

          Always `organization`: no workspace-level override is stored, so the organization's value applies.

    - `required long Value`

      The workspace's value for this limiter type: the workspace-level override when `source.type` is `workspace`, otherwise the organization's value.

  - `required IReadOnlyList<string>? Models`

    Model names this entry's limits apply to, including aliases. `null` when `group.type` is not `"model_group"`. The list covers the models this workspace has access to, so it can differ between workspaces.

  - `required string RateLimitID`

    The `id` of the organization's RateLimit entry this entry applies to.

  - `required string WorkspaceID`

    ID of the Workspace this entry applies to.

### Workspace Rate Limit Organization Source

- `class WorkspaceRateLimitOrganizationSource`

  - `JsonElement Type = "organization"`

    Always `organization`: no workspace-level override is stored, so the organization's value applies.

### Workspace Rate Limit Type

- `enum WorkspaceRateLimitType`

  Rate limiter type.

  - `FastItpmca("fast_itpmca")`

  - `FastOtpm("fast_otpm")`

  - `InputTokensPerMinute("input_tokens_per_minute")`

  - `InputTokensPerMinuteCacheAware("input_tokens_per_minute_cache_aware")`

  - `OutputTokensPerMinute("output_tokens_per_minute")`

  - `RequestsPerMinute("requests_per_minute")`

  - `TokensPerDay("tokens_per_day")`

  - `TokensPerMinute("tokens_per_minute")`

  - `ToolUsesPerSecond("tool_uses_per_second")`

### Workspace Rate Limit Update Value

- `class WorkspaceRateLimitUpdateValue`

  - `required WorkspaceRateLimitType Type`

    Rate limiter type.

    - `FastItpmca("fast_itpmca")`

    - `FastOtpm("fast_otpm")`

    - `InputTokensPerMinute("input_tokens_per_minute")`

    - `InputTokensPerMinuteCacheAware("input_tokens_per_minute_cache_aware")`

    - `OutputTokensPerMinute("output_tokens_per_minute")`

    - `RequestsPerMinute("requests_per_minute")`

    - `TokensPerDay("tokens_per_day")`

    - `TokensPerMinute("tokens_per_minute")`

    - `ToolUsesPerSecond("tool_uses_per_second")`

  - `required long? Value`

    New limit value. Set to null to clear the workspace override and fall back to the organization limit.

    minimum: 0, maximum: 9007199254740991

### Workspace Rate Limit Value

- `class WorkspaceRateLimitValue`

  - `required string Type`

    The limiter type (for example, `requests_per_minute` or `input_tokens_per_minute`).

  - `required long? OrgLimit`

    The organization-level value for the same limiter type, for reference. `null` when the organization has no limit configured for this limiter type.

  - `required Source Source`

    Where `value` comes from. `organization` values are listed only when `include_inherited` is `true`, and then `value` equals `org_limit`.

    - `class WorkspaceRateLimitWorkspaceSource`

      - `JsonElement Type = "workspace"`

        Always `workspace`: a workspace-level override is stored.

    - `class WorkspaceRateLimitOrganizationSource`

      - `JsonElement Type = "organization"`

        Always `organization`: no workspace-level override is stored, so the organization's value applies.

  - `required long Value`

    The workspace's value for this limiter type: the workspace-level override when `source.type` is `workspace`, otherwise the organization's value.

### Workspace Rate Limit Workspace Source

- `class WorkspaceRateLimitWorkspaceSource`

  - `JsonElement Type = "workspace"`

    Always `workspace`: a workspace-level override is stored.
