Rate Limits API
Rate Limits API를 사용하여 조직의 API 속도 제한을 프로그래밍 방식으로 조회하세요.
Rate Limits API는 조직 및 해당 워크스페이스에 구성된 "rate limit"(속도 제한)에 대한 프로그래밍 방식의 액세스를 제공합니다. 이는 Claude Console의 속도 제한 페이지에 표시되는 것과 동일한 정보입니다.
이 API를 사용하여 다음을 수행할 수 있습니다:
- 게이트웨이와 프록시를 동기화 상태로 유지: Anthropic이 값을 조정할 때 어긋나게 되는 하드코딩된 값 대신, 시작 시와 일정에 따라 현재 제한을 읽어옵니다.
- 내부 알림 구동: Usage and Cost API의 사용량 데이터를 구성된 제한과 비교합니다.
- 워크스페이스 구성 감사: 워크스페이스 재정의가 프로비저닝 자동화에서 예상하는 내용과 일치하는지 확인합니다.
이 페이지의 SDK 및 CLI 예제는 기본 클라이언트를 생성하며, 이 클라이언트는 ANTHROPIC_API_KEY 환경 변수에서 Admin API 키를 읽습니다. SDK는 이러한 엔드포인트를 client.organization.rate_limits 및 client.organization.workspaces.rate_limits로 노출합니다. Python, TypeScript, C#, Go, Java의 list 메서드는 next_page를 자동으로 따라가는 이터레이터를 반환하며, PHP, Ruby, curl 예제는 한 페이지만 읽습니다.
빠른 시작
조직에 구성된 속도 제한을 나열합니다:
client = anthropic.Anthropic()
rate_limits = client.organization.rate_limits.list()
for entry in rate_limits:
models = f" ({', '.join(entry.models)})" if entry.models else ""
print(f"{entry.group.type}{models}")
for limit in entry.limits:
print(f" {limit.type}: {limit.value}")조직 속도 제한
/v1/organizations/rate_limits 엔드포인트는 Messages API 및 이를 지원하는 리소스에 대해 조직 수준에서 적용되는 속도 제한을 반환합니다. Claude Managed Agents와 같은 다른 제품의 제한은 포함되지 않습니다.
핵심 개념
- 속도 제한 그룹: 응답의 각 항목은 하나의 속도 제한 그룹을 나타냅니다. 모델 속도 제한은 여러 모델 버전이 하나의 제한 세트를 공유하도록 그룹화되며, 다른 그룹은 Message Batches API, Files API, Token Counting API, 에이전트 스킬, 웹 검색 도구와 같은 리소스를 다룹니다.
group객체: 모든 항목에 존재하며, 해당 항목이 적용되는 속도 제한 그룹을 식별합니다. 항상group_type값 중 하나인type과rlg_접두사가 붙은 불투명 식별자인id를 가집니다.model_group항목에는Claude Sonnet 4.x와 같이 Anthropic이 현재 그룹에 붙인 레이블인display_name도 있습니다. 이 레이블은 표시 전용이며 변경될 수 있습니다. 다른 그룹 유형에는display_name이 없습니다.group내부의id: 그룹은 모든 조직과 모든 워크스페이스 재정의에서 동일한id를 가지며, 이 값은 절대 변경되지 않습니다. 이를 사용하여 조직 간 항목을 매칭하거나 자체 카탈로그와 대조하세요. 항목 자체의id는 조직마다 다르며,models는 Anthropic이 모델을 그룹 간에 이동할 때 변경됩니다. 둘 다 그룹에 대한 안정적인 키가 아닙니다.group_type:group내부의type으로 대체되어 지원 중단되었습니다. 여전히 반환되며, 항상 해당 값과 같고, 제거 일정은 없습니다.group_type쿼리 매개변수는 지원 중단되지 않았습니다. 값 목록은 그룹 유형별 필터링을 참조하세요.models목록:model_group항목의 경우,models필드는 해당 그룹의 제한에 포함되는 모든 모델 ID와 별칭을 나열합니다. 이 목록을 사용하여 특정 모델 문자열이 어느 그룹에 속하는지 조회하세요. 다른 그룹 유형의 경우models는null입니다.limits목록: 각 그룹은{type, value}쌍의 목록을 가집니다.type필드는 제한기(예:requests_per_minute,input_tokens_per_minute,output_tokens_per_minute)를 식별하고,value는 구성된 제한 값입니다. 각 제한기가 측정되고 적용되는 방식은 속도 제한을 참조하세요.- 워크스페이스 제한의
source: 워크스페이스 엔드포인트에서는 모든 제한 값에source도 포함되며, 이는value의 출처를 나타냅니다. 워크스페이스에 저장된 재정의의 경우{"type": "workspace"}, 조직에서 상속된 값의 경우{"type": "organization"}입니다. 기본적으로 워크스페이스 엔드포인트는 재정의만 반환하므로source.type은 항상workspace이며,include_inherited=true를 전달하면 상속된 값이 나타납니다. 워크스페이스 속도 제한을 참조하세요.
전체 매개변수 세부 정보와 응답 스키마는 Organization Rate Limits API 레퍼런스를 참조하세요.
모든 조직 속도 제한 나열
client = anthropic.Anthropic()
rate_limits = client.organization.rate_limits.list()
for entry in rate_limits:
models = f" ({', '.join(entry.models)})" if entry.models else ""
print(f"{entry.group.type}{models}")
for limit in entry.limits:
print(f" {limit.type}: {limit.value}"){
"data": [
{
"type": "rate_limit",
"group_type": "model_group",
"group": {
"type": "model_group",
"id": "rlg_01Hq7YkP3mZ9dTwRx4cVbN2s",
"display_name": "Claude Opus 5.5"
},
"models": ["claude-opus-5-5"],
"limits": [
{ "type": "requests_per_minute", "value": 4000 },
{ "type": "input_tokens_per_minute", "value": 10000000 },
{ "type": "output_tokens_per_minute", "value": 800000 }
]
},
{
"type": "rate_limit",
"group_type": "model_group",
"group": {
"type": "model_group",
"id": "rlg_01Kd5wMv8nSq2LcXy6tRfJ4b",
"display_name": "Claude Opus 4.x"
},
"models": [
"claude-opus-4-5",
"claude-opus-4-5-20251101",
"claude-opus-4-6",
"claude-opus-4-7",
"claude-opus-4-8"
],
"limits": [
{ "type": "requests_per_minute", "value": 4000 },
{ "type": "input_tokens_per_minute", "value": 10000000 },
{ "type": "output_tokens_per_minute", "value": 800000 }
]
},
{
"type": "rate_limit",
"group_type": "batch",
"group": { "type": "batch", "id": "rlg_01Wn3pBz6kCg9vHtQ7mLxD5a" },
"models": null,
"limits": [{ "type": "enqueued_batch_requests", "value": 500000 }]
}
],
"next_page": null
}특정 모델의 제한 조회
모델 ID 또는 별칭을 model 쿼리 매개변수로 전달하면 해당 모델이 포함된 항목만 반환됩니다:
client = anthropic.Anthropic()
rate_limits = client.organization.rate_limits.list(model="claude-opus-5-5")
for entry in rate_limits:
models = f" ({', '.join(entry.models)})" if entry.models else ""
print(f"{entry.group.type}{models}")
for limit in entry.limits:
print(f" {limit.type}: {limit.value}")모델 문자열이 어떤 그룹과도 일치하지 않으면 엔드포인트는 404 오류를 반환합니다. model 매개변수는 조직 엔드포인트에서만 지원되며, 워크스페이스 엔드포인트는 이를 허용하지 않습니다.
워크스페이스 속도 제한
/v1/organizations/workspaces/{workspace_id}/rate_limits 엔드포인트는 단일 워크스페이스에 구성된 속도 제한 재정의를 반환합니다. 워크스페이스가 상속하는 값도 확인하려면 include_inherited=true를 전달하세요(상속된 값 포함 참조).
기본적으로 응답에는 재정의만 포함되므로, 응답에 없는 항목은 조직에서 상속됩니다:
data에 없는 그룹은 워크스페이스 재정의가 전혀 없는 것입니다. 워크스페이스는 해당 그룹에 대해 조직 수준의 제한을 상속합니다(무제한이 아닙니다).- 존재하는 그룹 내에서
limits[]에 없는 제한기 유형은 해당 제한기에 대한 워크스페이스 재정의가 없는 것입니다. 워크스페이스는 해당 제한기에 대해 조직 값을 상속합니다. - 존재하는 각 제한기에 대해
org_limit은 동일한 제한기의 조직 수준 값이며, 조직에 해당 제한기 유형에 대해 구성된 제한이 없으면null이며,source는{"type": "workspace"}입니다.
전체 매개변수 세부 정보와 응답 스키마는 Workspace Rate Limits API 레퍼런스를 참조하세요.
client = anthropic.Anthropic()
rate_limits = client.organization.workspaces.rate_limits.list(
"wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"
)
for entry in rate_limits:
models = f" ({', '.join(entry.models)})" if entry.models else ""
print(f"{entry.group.type}{models}")
for limit in entry.limits:
print(f" {limit.type}: {limit.value}"){
"data": [
{
"type": "workspace_rate_limit",
"group_type": "model_group",
"group": {
"type": "model_group",
"id": "rlg_01Hq7YkP3mZ9dTwRx4cVbN2s",
"display_name": "Claude Opus 5.5"
},
"models": ["claude-opus-5-5"],
"limits": [
{
"type": "requests_per_minute",
"value": 1000,
"org_limit": 4000,
"source": { "type": "workspace" }
},
{
"type": "input_tokens_per_minute",
"value": 500000,
"org_limit": 10000000,
"source": { "type": "workspace" }
}
]
},
{
"type": "workspace_rate_limit",
"group_type": "model_group",
"group": {
"type": "model_group",
"id": "rlg_01Kd5wMv8nSq2LcXy6tRfJ4b",
"display_name": "Claude Opus 4.x"
},
"models": [
"claude-opus-4-5",
"claude-opus-4-5-20251101",
"claude-opus-4-6",
"claude-opus-4-7",
"claude-opus-4-8"
],
"limits": [
{
"type": "requests_per_minute",
"value": 1000,
"org_limit": 4000,
"source": { "type": "workspace" }
},
{
"type": "input_tokens_per_minute",
"value": 500000,
"org_limit": 10000000,
"source": { "type": "workspace" }
}
]
}
],
"next_page": null
}상속된 값 포함
한 번의 요청으로 워크스페이스에 적용되는 제한을 읽으려면 선택적 include_inherited 쿼리 매개변수를 추가하세요. 기본값은 false이며, Boolean이 아닌 값은 400 오류를 반환합니다. include_inherited=true를 사용하면:
data에는 워크스페이스에 적용되고 조직 수준 값이 있는 각 그룹에 대해 하나의 항목이 포함되며, 워크스페이스가 그중 아무것도 재정의하지 않더라도 마찬가지입니다. 모델 그룹은 워크스페이스가 해당 그룹의 모델 중 하나 이상에 접근할 수 있을 때 적용됩니다.- 각 항목의
limits[]는 해당 그룹에서 조직이 값을 가진 모든 제한기 유형과, 워크스페이스가 재정의하는 모든 유형을 나열합니다. 각 유형은 한 번씩 나타나며, 재정의가 저장된 경우 워크스페이스의 재정의 값을, 그렇지 않으면 조직의 값을 가지므로 하나의 항목에 두 가지가 섞일 수 있습니다. - 각 값의
source로 이를 구분합니다.{"type": "workspace"}는 저장된 재정의이고,{"type": "organization"}은 상속된 값이며, 이 경우value는org_limit과 같습니다.
client = anthropic.Anthropic()
rate_limits = client.organization.workspaces.rate_limits.list(
"wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ",
include_inherited=True,
)
for entry in rate_limits:
models = f" ({', '.join(entry.models)})" if entry.models else ""
print(f"{entry.group.type}{models}")
for limit in entry.limits:
print(f" {limit.type}: {limit.value} ({limit.source.type})"){
"data": [
{
"type": "workspace_rate_limit",
"group_type": "model_group",
"group": {
"type": "model_group",
"id": "rlg_01Hq7YkP3mZ9dTwRx4cVbN2s",
"display_name": "Claude Opus 5.5"
},
"models": ["claude-opus-5-5"],
"limits": [
{
"type": "requests_per_minute",
"value": 1000,
"org_limit": 4000,
"source": { "type": "workspace" }
},
{
"type": "input_tokens_per_minute",
"value": 500000,
"org_limit": 10000000,
"source": { "type": "workspace" }
},
{
"type": "output_tokens_per_minute",
"value": 800000,
"org_limit": 800000,
"source": { "type": "organization" }
}
]
},
{
"type": "workspace_rate_limit",
"group_type": "model_group",
"group": {
"type": "model_group",
"id": "rlg_01Kd5wMv8nSq2LcXy6tRfJ4b",
"display_name": "Claude Opus 4.x"
},
"models": [
"claude-opus-4-5",
"claude-opus-4-5-20251101",
"claude-opus-4-6",
"claude-opus-4-7",
"claude-opus-4-8"
],
"limits": [
{
"type": "requests_per_minute",
"value": 1000,
"org_limit": 4000,
"source": { "type": "workspace" }
},
{
"type": "input_tokens_per_minute",
"value": 500000,
"org_limit": 10000000,
"source": { "type": "workspace" }
},
{
"type": "output_tokens_per_minute",
"value": 800000,
"org_limit": 800000,
"source": { "type": "organization" }
}
]
},
{
"type": "workspace_rate_limit",
"group_type": "batch",
"group": { "type": "batch", "id": "rlg_01Wn3pBz6kCg9vHtQ7mLxD5a" },
"models": null,
"limits": [
{
"type": "enqueued_batch_requests",
"value": 500000,
"org_limit": 500000,
"source": { "type": "organization" }
}
]
}
],
"next_page": null
}그룹 유형별 필터링
두 엔드포인트 모두 응답을 단일 카테고리로 제한하는 선택적 group_type 쿼리 매개변수를 허용합니다:
client = anthropic.Anthropic()
rate_limits = client.organization.rate_limits.list(group_type="batch")
for entry in rate_limits:
models = f" ({', '.join(entry.models)})" if entry.models else ""
print(f"{entry.group.type}{models}")
for limit in entry.limits:
print(f" {limit.type}: {limit.value}")유효한 값은 model_group, batch, token_count, files, skills, web_search입니다.
페이지네이션
두 엔드포인트 모두 page 쿼리 매개변수를 허용하고 next_page 필드를 반환합니다. 현재 응답은 항상 단일 페이지이므로 next_page는 null입니다. 응답이 커질 때 변경 없이 클라이언트가 올바르게 페이지네이션하도록 next_page를 기준으로 반복하세요.
자주 묻는 질문
models 목록에는 어떤 모델 문자열이 표시되나요?
날짜가 포함된 ID(예: claude-sonnet-4-5-20250929)와 날짜가 없는 별칭(예: claude-sonnet-4-5)을 포함하여 해당 그룹에 합산되는 모든 모델 ID와 별칭이 표시됩니다. Messages API에 전달하는 모델 문자열을 조회하면 정확히 하나의 model_group 항목에서 찾을 수 있습니다.
워크스페이스 응답에서 그룹이 누락되었다면 무엇을 의미하나요?
기본적으로 워크스페이스 응답은 재정의만 나열하므로, 누락된 그룹은 워크스페이스 재정의가 없으며 조직 수준 제한을 상속합니다. 워크스페이스 엔드포인트에서 상속된 값을 보려면 include_inherited=true를 전달하거나 조직 엔드포인트를 조회하세요. include_inherited=true를 사용하면, 그룹이 워크스페이스에 적용되지 않거나 조직에 해당 그룹에 대한 제한이 설정되지 않은 경우에만 그룹이 누락됩니다.
이 API로 속도 제한을 업데이트할 수 있나요?
아니요. 워크스페이스 속도 제한을 설정하려면 Claude Console의 속도 제한 페이지로 이동하여 Workspace 드롭다운 메뉴에서 워크스페이스를 선택한 다음, 모델 옆의 Edit를 클릭하세요.
참고 항목
Was this page helpful?