Rate Limits API

Rate Limits API

Rate Limits API는 조직과 그 워크스페이스에 구성된 속도 제한(rate limit)을 프로그래밍 방식으로 조회하게 해 주는 API예요. Claude Console의 Rate limits 페이지에 표시되는 것과 같은 정보를 제공하지요.

이 API를 활용하면 어떻게 쓸 수 있을까요?

  • 게이트웨이와 프록시 동기화 상태 유지: Anthropic이 조정할 때 흔들리는 값을 하드코딩하는 대신, 시작 시와 주기적으로 현재 제한을 읽을 수 있어요.
  • 내부 알림 강화: Usage and Cost API의 사용 데이터를 구성된 제한과 비교할 수 있어요.
  • 워크스페이스 구성 감사: 워크스페이스 재정의가 프로비저닝 자동화가 기대하는 값과 일치하는지 확인할 수 있어요.

Admin API 자격 증명 필요 이 엔드포인트들은 Admin API에 속해요. Admin API 키, org:admin 범위의 OAuth 토큰, 또는 워크스페이스에 범위가 제한되지 않은 개인·서비스 계정 키로 접근할 수 있어요. 워크스페이스 API 키는 작동하지 않아요. 자세한 내용은 인증을 참고하세요.

이 페이지의 SDK·CLI 예시는 기본 클라이언트를 생성하며, ANTHROPIC_API_KEY 환경 변수에서 Admin API 키를 읽어요. SDK는 이 엔드포인트들을 client.beta.organization.rate_limitsclient.beta.organization.workspaces.rate_limits로 노출하고, Python·TypeScript·C#·Go·Java의 list 메서드는 next_page를 따라가는 이터레이터를 반환하는 반면 PHP·Ruby·curl 예시는 한 페이지를 읽어요.

출처: 문서

본문

빠른 시작

조직에 구성된 속도 제한을 나열해 볼게요:

curl "https://api.anthropic.com/v1/organizations/rate_limits" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01"
ant beta:organization:rate-limits list
client = anthropic.Anthropic()

rate_limits = client.beta.organization.rate_limits.list()

for group in rate_limits:
    models = f" ({', '.join(group.models)})" if group.models else ""
    print(f"{group.group_type}{models}")
    for limit in group.limits:
        print(f"  {limit.type}: {limit.value}")
const client = new Anthropic();

const rateLimits = await client.beta.organization.rateLimits.list();

for await (const group of rateLimits) {
  const models = group.models ? ` (${group.models.join(", ")})` : "";
  console.log(`${group.group_type}${models}`);
  for (const limit of group.limits) {
    console.log(`  ${limit.type}: ${limit.value}`);
  }
}
AnthropicClient client = new();

var rateLimits = await client.Beta.Organization.RateLimits.List();

await foreach (var group in rateLimits.Paginate())
{
    var models = group.Models is null ? "" : $" ({string.Join(", ", group.Models)})";
    Console.WriteLine($"{group.GroupType.Raw()}{models}");
    foreach (var limit in group.Limits)
    {
        Console.WriteLine($"  {limit.Type}: {limit.Value}");
    }
}
client := anthropic.NewClient()

rateLimits := client.Beta.Organization.RateLimits.ListAutoPaging(context.Background(), anthropic.BetaOrganizationRateLimitListParams{})

for rateLimits.Next() {
	group := rateLimits.Current()
	models := ""
	if len(group.Models) > 0 {
		models = fmt.Sprintf(" (%s)", strings.Join(group.Models, ", "))
	}
	fmt.Printf("%s%s\n", group.GroupType, models)
	for _, limit := range group.Limits {
		fmt.Printf("  %s: %d\n", limit.Type, limit.Value)
	}
}
if err := rateLimits.Err(); err != nil {
	log.Fatal(err)
}
AnthropicClient client = AnthropicOkHttpClient.fromEnv();

var rateLimits = client.beta().organization().rateLimits().list();

for (var group : rateLimits.autoPager()) {
    var models = group.models()
        .map(modelIds -> " (" + String.join(", ", modelIds) + ")")
        .orElse("");
    IO.println(group.groupType().asString() + models);
    for (var limit : group.limits()) {
        IO.println("  " + limit.type() + ": " + limit.value());
    }
}
$client = new Client();

$rateLimits = $client->beta->organization->rateLimits->list();

foreach ($rateLimits->data as $group) {
    $models = $group->models ? ' (' . implode(', ', $group->models) . ')' : '';
    echo "{$group->groupType}{$models}\n";
    foreach ($group->limits as $limit) {
        echo "  {$limit->type}: {$limit->value}\n";
    }
}
client = Anthropic::Client.new

rate_limits = client.beta.organization.rate_limits.list

rate_limits.data.each do |group|
  models = group.models ? " (#{group.models.join(", ")})" : ""
  puts "#{group.group_type}#{models}"
  group.limits.each do |limit|
    puts "  #{limit.type}: #{limit.value}"
  end
end

조직 속도 제한

/v1/organizations/rate_limits 엔드포인트는 Messages API와 그 지원 리소스에 조직 수준에서 적용되는 속도 제한을 반환해요. Claude Managed Agents 같은 다른 제품의 제한은 포함되지 않아요.

핵심 개념

  • 속도 제한 그룹(Rate limit groups): 응답의 각 항목은 하나의 속도 제한 그룹을 나타내요. 모델 속도 제한은 여러 모델 버전이 단일 제한 세트를 공유하도록 그룹화되고, 다른 그룹은 Message Batches API, Files API, Token Counting API, agent skills, 웹 검색 툴 같은 리소스를 포괄해요.
  • group_type: 항목이 어떤 범주의 제한을 다루는지 식별해요. 값 목록은 그룹 타입으로 필터링을 참고하세요.
  • models 리스트: model_group 항목에서 models 필드는 그 그룹의 제한에 집계되는 모든 모델 ID와 별칭을 나열해요. 이 리스트로 어떤 모델 문자열이 어떤 그룹에 속하는지 찾을 수 있어요. 다른 그룹 타입에서 modelsnull이에요.
  • limits 리스트: 각 그룹은 {type, value} 쌍 리스트를 나르며, type 필드는 리미터(예: requests_per_minute, input_tokens_per_minute, output_tokens_per_minute)를, value는 구성된 제한을 식별해요. 각 리미터가 어떻게 측정되고 집행되는지는 Rate limits를 참고하세요.

전체 파라미터 세부사항과 응답 스키마는 Organization Rate Limits API reference를 참고하세요.

모든 조직 속도 제한 나열하기

curl "https://api.anthropic.com/v1/organizations/rate_limits" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01"
ant beta:organization:rate-limits list
client = anthropic.Anthropic()

rate_limits = client.beta.organization.rate_limits.list()

for group in rate_limits:
    models = f" ({', '.join(group.models)})" if group.models else ""
    print(f"{group.group_type}{models}")
    for limit in group.limits:
        print(f"  {limit.type}: {limit.value}")
const client = new Anthropic();

const rateLimits = await client.beta.organization.rateLimits.list();

for await (const group of rateLimits) {
  const models = group.models ? ` (${group.models.join(", ")})` : "";
  console.log(`${group.group_type}${models}`);
  for (const limit of group.limits) {
    console.log(`  ${limit.type}: ${limit.value}`);
  }
}
AnthropicClient client = new();

var rateLimits = await client.Beta.Organization.RateLimits.List();

await foreach (var group in rateLimits.Paginate())
{
    var models = group.Models is null ? "" : $" ({string.Join(", ", group.Models)})";
    Console.WriteLine($"{group.GroupType.Raw()}{models}");
    foreach (var limit in group.Limits)
    {
        Console.WriteLine($"  {limit.Type}: {limit.Value}");
    }
}
client := anthropic.NewClient()

rateLimits := client.Beta.Organization.RateLimits.ListAutoPaging(context.Background(), anthropic.BetaOrganizationRateLimitListParams{})

for rateLimits.Next() {
	group := rateLimits.Current()
	models := ""
	if len(group.Models) > 0 {
		models = fmt.Sprintf(" (%s)", strings.Join(group.Models, ", "))
	}
	fmt.Printf("%s%s\n", group.GroupType, models)
	for _, limit := range group.Limits {
		fmt.Printf("  %s: %d\n", limit.Type, limit.Value)
	}
}
if err := rateLimits.Err(); err != nil {
	log.Fatal(err)
}
AnthropicClient client = AnthropicOkHttpClient.fromEnv();

var rateLimits = client.beta().organization().rateLimits().list();

for (var group : rateLimits.autoPager()) {
    var models = group.models()
        .map(modelIds -> " (" + String.join(", ", modelIds) + ")")
        .orElse("");
    IO.println(group.groupType().asString() + models);
    for (var limit : group.limits()) {
        IO.println("  " + limit.type() + ": " + limit.value());
    }
}
$client = new Client();

$rateLimits = $client->beta->organization->rateLimits->list();

foreach ($rateLimits->data as $group) {
    $models = $group->models ? ' (' . implode(', ', $group->models) . ')' : '';
    echo "{$group->groupType}{$models}\n";
    foreach ($group->limits as $limit) {
        echo "  {$limit->type}: {$limit->value}\n";
    }
}
client = Anthropic::Client.new

rate_limits = client.beta.organization.rate_limits.list

rate_limits.data.each do |group|
  models = group.models ? " (#{group.models.join(", ")})" : ""
  puts "#{group.group_type}#{models}"
  group.limits.each do |limit|
    puts "  #{limit.type}: #{limit.value}"
  end
end
{
  "data": [
    {
      "type": "rate_limit",
      "group_type": "model_group",
      "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",
      "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",
      "models": null,
      "limits": [{ "type": "enqueued_batch_requests", "value": 500000 }]
    }
  ],
  "next_page": null
}

특정 모델의 제한 조회하기

model 쿼리 파라미터로 어떤 모델 ID나 별칭을 전달하면 그것을 포함하는 항목만 반환해요:

curl "https://api.anthropic.com/v1/organizations/rate_limits?model=claude-opus-5" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01"
ant beta:organization:rate-limits list --model claude-opus-5
client = anthropic.Anthropic()

rate_limits = client.beta.organization.rate_limits.list(model="claude-opus-5")

for group in rate_limits:
    models = f" ({', '.join(group.models)})" if group.models else ""
    print(f"{group.group_type}{models}")
    for limit in group.limits:
        print(f"  {limit.type}: {limit.value}")
const client = new Anthropic();

const rateLimits = await client.beta.organization.rateLimits.list({ model: "claude-opus-5" });

for await (const group of rateLimits) {
  const models = group.models ? ` (${group.models.join(", ")})` : "";
  console.log(`${group.group_type}${models}`);
  for (const limit of group.limits) {
    console.log(`  ${limit.type}: ${limit.value}`);
  }
}
AnthropicClient client = new();

var rateLimits = await client.Beta.Organization.RateLimits.List(new()
{
    Model = "claude-opus-5"
});

await foreach (var group in rateLimits.Paginate())
{
    var models = group.Models is null ? "" : $" ({string.Join(", ", group.Models)})";
    Console.WriteLine($"{group.GroupType.Raw()}{models}");
    foreach (var limit in group.Limits)
    {
        Console.WriteLine($"  {limit.Type}: {limit.Value}");
    }
}
client := anthropic.NewClient()

rateLimits := client.Beta.Organization.RateLimits.ListAutoPaging(context.Background(), anthropic.BetaOrganizationRateLimitListParams{
	Model: anthropic.String(anthropic.ModelClaudeOpus5),
})

for rateLimits.Next() {
	group := rateLimits.Current()
	models := ""
	if len(group.Models) > 0 {
		models = fmt.Sprintf(" (%s)", strings.Join(group.Models, ", "))
	}
	fmt.Printf("%s%s\n", group.GroupType, models)
	for _, limit := range group.Limits {
		fmt.Printf("  %s: %d\n", limit.Type, limit.Value)
	}
}
if err := rateLimits.Err(); err != nil {
	log.Fatal(err)
}
import com.anthropic.models.beta.organization.ratelimits.RateLimitListParams;
import com.anthropic.models.messages.Model;

void main() {
    AnthropicClient client = AnthropicOkHttpClient.fromEnv();

    var params = RateLimitListParams.builder()
        .model(Model.CLAUDE_OPUS_5.asString())
        .build();
    var rateLimits = client.beta().organization().rateLimits().list(params);

    for (var group : rateLimits.autoPager()) {
        var models = group.models()
            .map(modelIds -> " (" + String.join(", ", modelIds) + ")")
            .orElse("");
        IO.println(group.groupType().asString() + models);
        for (var limit : group.limits()) {
            IO.println("  " + limit.type() + ": " + limit.value());
        }
    }
}
use Anthropic\Messages\Model;

$client = new Client();

$rateLimits = $client->beta->organization->rateLimits->list(
    model: Model::CLAUDE_OPUS_5->value,
);

foreach ($rateLimits->data as $group) {
    $models = $group->models ? ' (' . implode(', ', $group->models) . ')' : '';
    echo "{$group->groupType}{$models}\n";
    foreach ($group->limits as $limit) {
        echo "  {$limit->type}: {$limit->value}\n";
    }
}
client = Anthropic::Client.new

rate_limits = client.beta.organization.rate_limits.list(model: Anthropic::Model::CLAUDE_OPUS_5)

rate_limits.data.each do |group|
  models = group.models ? " (#{group.models.join(", ")})" : ""
  puts "#{group.group_type}#{models}"
  group.limits.each do |limit|
    puts "  #{limit.type}: #{limit.value}"
  end
end

모델 문자열이 어떤 그룹과도 일치하지 않으면 엔드포인트는 404 오류를 반환해요. model 파라미터는 조직 엔드포인트에서만 지원되고, 워크스페이스 엔드포인트는 이를 받지 않아요.

워크스페이스 속도 제한

/v1/organizations/workspaces/{workspace_id}/rate_limits 엔드포인트는 단일 워크스페이스에 구성된 속도 제한 재정의를 반환해요.

응답은 재정의만 포함하므로, 응답에서 빠진 것은 조직에서 상속돼요:

  • data에서 없는 그룹은 워크스페이스 재정의가 전혀 없다는 뜻이에요. 워크스페이스는 그 그룹의 조직 수준 제한을 상속해요(무제한이 아니에요).
  • 존재하는 그룹 내에서 limits[]에 없는 리미터 타입은 그 리미터에 대한 워크스페이스 재정의가 없다는 뜻이에요. 워크스페이스는 그 값에 조직 값을 상속해요.
  • 존재하는 각 리미터에 대해 org_limit은 같은 리미터의 조직 수준 값이며, 조직이 그 리미터 타입에 대해 구성된 제한이 없으면 null이에요.

전체 파라미터 세부사항과 응답 스키마는 Workspace Rate Limits API reference를 참고하세요.

조직의 워크스페이스 ID를 가져오려면 List Workspaces 엔드포인트를 사용하거나 Claude Console에서 찾을 수 있어요. 기본 워크스페이스는 속도 제한 재정의를 가질 수 없으므로 이 엔드포인트에 항목이 없어요. 그 제한을 읽으려면 조직 엔드포인트를 사용하세요.

curl "https://api.anthropic.com/v1/organizations/workspaces/wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ/rate_limits" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01"
ant beta:organization:workspaces:rate-limits list \
  --workspace-id wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ
client = anthropic.Anthropic()

rate_limits = client.beta.organization.workspaces.rate_limits.list(
    "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"
)

for group in rate_limits:
    models = f" ({', '.join(group.models)})" if group.models else ""
    print(f"{group.group_type}{models}")
    for limit in group.limits:
        print(f"  {limit.type}: {limit.value}")
const client = new Anthropic();

const rateLimits = await client.beta.organization.workspaces.rateLimits.list(
  "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"
);

for await (const group of rateLimits) {
  const models = group.models ? ` (${group.models.join(", ")})` : "";
  console.log(`${group.group_type}${models}`);
  for (const limit of group.limits) {
    console.log(`  ${limit.type}: ${limit.value}`);
  }
}
AnthropicClient client = new();

var rateLimits = await client.Beta.Organization.Workspaces.RateLimits.List(
    "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"
);

await foreach (var group in rateLimits.Paginate())
{
    var models = group.Models is null ? "" : $" ({string.Join(", ", group.Models)})";
    Console.WriteLine($"{group.GroupType.Raw()}{models}");
    foreach (var limit in group.Limits)
    {
        Console.WriteLine($"  {limit.Type}: {limit.Value}");
    }
}
client := anthropic.NewClient()

rateLimits := client.Beta.Organization.Workspaces.RateLimits.ListAutoPaging(
	context.Background(),
	"wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ",
	anthropic.BetaOrganizationWorkspaceRateLimitListParams{},
)

for rateLimits.Next() {
	group := rateLimits.Current()
	models := ""
	if len(group.Models) > 0 {
		models = fmt.Sprintf(" (%s)", strings.Join(group.Models, ", "))
	}
	fmt.Printf("%s%s\n", group.GroupType, models)
	for _, limit := range group.Limits {
		fmt.Printf("  %s: %d\n", limit.Type, limit.Value)
	}
}
if err := rateLimits.Err(); err != nil {
	log.Fatal(err)
}
AnthropicClient client = AnthropicOkHttpClient.fromEnv();

var rateLimits = client.beta().organization().workspaces().rateLimits()
    .list("wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ");

for (var group : rateLimits.autoPager()) {
    var models = group.models()
        .map(modelIds -> " (" + String.join(", ", modelIds) + ")")
        .orElse("");
    IO.println(group.groupType().asString() + models);
    for (var limit : group.limits()) {
        IO.println("  " + limit.type() + ": " + limit.value());
    }
}
$client = new Client();

$rateLimits = $client->beta->organization->workspaces->rateLimits->list(
    workspaceID: 'wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ',
);

foreach ($rateLimits->data as $group) {
    $models = $group->models ? ' (' . implode(', ', $group->models) . ')' : '';
    echo "{$group->groupType}{$models}\n";
    foreach ($group->limits as $limit) {
        echo "  {$limit->type}: {$limit->value}\n";
    }
}
client = Anthropic::Client.new

workspace_id = "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"
rate_limits = client.beta.organization.workspaces.rate_limits.list(workspace_id)

rate_limits.data.each do |group|
  models = group.models ? " (#{group.models.join(", ")})" : ""
  puts "#{group.group_type}#{models}"
  group.limits.each do |limit|
    puts "  #{limit.type}: #{limit.value}"
  end
end
{
  "data": [
    {
      "type": "workspace_rate_limit",
      "group_type": "model_group",
      "models": ["claude-opus-5-5"],
      "limits": [
        { "type": "requests_per_minute", "value": 1000, "org_limit": 4000 },
        { "type": "input_tokens_per_minute", "value": 500000, "org_limit": 10000000 }
      ]
    },
    {
      "type": "workspace_rate_limit",
      "group_type": "model_group",
      "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 },
        { "type": "input_tokens_per_minute", "value": 500000, "org_limit": 10000000 }
      ]
    }
  ],
  "next_page": null
}

그룹 타입으로 필터링하기

두 엔드포인트 모두 응답을 단일 범주로 제한하는 선택적 group_type 쿼리 파라미터를 받아요:

curl "https://api.anthropic.com/v1/organizations/rate_limits?group_type=batch" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01"
ant beta:organization:rate-limits list --group-type batch
client = anthropic.Anthropic()

rate_limits = client.beta.organization.rate_limits.list(group_type="batch")

for group in rate_limits:
    models = f" ({', '.join(group.models)})" if group.models else ""
    print(f"{group.group_type}{models}")
    for limit in group.limits:
        print(f"  {limit.type}: {limit.value}")
const client = new Anthropic();

const rateLimits = await client.beta.organization.rateLimits.list({ group_type: "batch" });

for await (const group of rateLimits) {
  const models = group.models ? ` (${group.models.join(", ")})` : "";
  console.log(`${group.group_type}${models}`);
  for (const limit of group.limits) {
    console.log(`  ${limit.type}: ${limit.value}`);
  }
}
using Anthropic.Models.Beta.Organization.RateLimits;

AnthropicClient client = new();

var rateLimits = await client.Beta.Organization.RateLimits.List(new()
{
    GroupType = GroupType.Batch
});

await foreach (var group in rateLimits.Paginate())
{
    var models = group.Models is null ? "" : $" ({string.Join(", ", group.Models)})";
    Console.WriteLine($"{group.GroupType.Raw()}{models}");
    foreach (var limit in group.Limits)
    {
        Console.WriteLine($"  {limit.Type}: {limit.Value}");
    }
}
client := anthropic.NewClient()

rateLimits := client.Beta.Organization.RateLimits.ListAutoPaging(context.Background(), anthropic.BetaOrganizationRateLimitListParams{
	GroupType: anthropic.BetaOrganizationRateLimitListParamsGroupTypeBatch,
})

for rateLimits.Next() {
	group := rateLimits.Current()
	models := ""
	if len(group.Models) > 0 {
		models = fmt.Sprintf(" (%s)", strings.Join(group.Models, ", "))
	}
	fmt.Printf("%s%s\n", group.GroupType, models)
	for _, limit := range group.Limits {
		fmt.Printf("  %s: %d\n", limit.Type, limit.Value)
	}
}
if err := rateLimits.Err(); err != nil {
	log.Fatal(err)
}
import com.anthropic.models.beta.organization.ratelimits.RateLimitListParams;

void main() {
    AnthropicClient client = AnthropicOkHttpClient.fromEnv();

    var params = RateLimitListParams.builder()
        .groupType(RateLimitListParams.GroupType.BATCH)
        .build();
    var rateLimits = client.beta().organization().rateLimits().list(params);

    for (var group : rateLimits.autoPager()) {
        var models = group.models()
            .map(modelIds -> " (" + String.join(", ", modelIds) + ")")
            .orElse("");
        IO.println(group.groupType().asString() + models);
        for (var limit : group.limits()) {
            IO.println("  " + limit.type() + ": " + limit.value());
        }
    }
}
use Anthropic\Beta\Organization\RateLimits\RateLimitListParams\GroupType;
// ...

$client = new Client();

$rateLimits = $client->beta->organization->rateLimits->list(
    groupType: GroupType::BATCH,
);

foreach ($rateLimits->data as $group) {
    $models = $group->models ? ' (' . implode(', ', $group->models) . ')' : '';
    echo "{$group->groupType}{$models}\n";
    foreach ($group->limits as $limit) {
        echo "  {$limit->type}: {$limit->value}\n";
    }
}
client = Anthropic::Client.new

rate_limits = client.beta.organization.rate_limits.list(group_type: :batch)

rate_limits.data.each do |group|
  models = group.models ? " (#{group.models.join(", ")})" : ""
  puts "#{group.group_type}#{models}"
  group.limits.each do |limit|
    puts "  #{limit.type}: #{limit.value}"
  end
end

유효한 값은 model_group, batch, token_count, files, skills, web_search이에요.

페이지네이션

두 엔드포인트 모두 page 쿼리 파라미터를 받고 next_page 필드를 반환해요. 응답은 현재 항상 단일 페이지이므로 next_pagenull이에요. 응답이 커져도 변경 없이 클라이언트가 올바르게 페이지네이션하도록 next_page에서 반복하세요.

자주 묻는 질문

models 리스트에는 어떤 모델 문자열이 나타나나요?

그룹에 집계되는 모든 모델 ID와 별칭이요. 날짜가 있는 ID(예: claude-sonnet-4-5-20250929)와 날짜 없는 별칭(예: claude-sonnet-4-5)을 포함해요. Messages API에 전달하는 어떤 모델 문자열을 조회해도 정확히 하나의 model_group 항목에서 찾을 수 있어요.

워크스페이스 응답에서 그룹이 빠져 있다면 무슨 의미인가요?

워크스페이스에 그 그룹에 대한 재정의가 없고 조직 수준 제한을 상속한다는 뜻이에요. 상속된 값을 보려면 조직 엔드포인트를 조회하세요.

이 API로 속도 제한을 업데이트할 수 있나요?

아니요. 워크스페이스 속도 제한을 설정하려면 Claude Console에서 워크스페이스를 열고 Rate limits 탭을 사용하세요.

함께 보기

더 알아보기 (Learn more)