Rate Limits API
Frage die API-Ratenlimits deiner Organisation programmatisch mit der Rate Limits API ab.
Die Rate Limits API bietet programmatischen Zugriff auf die „rate limits“ (Ratenlimits), die für deine Organisation und ihre Workspaces konfiguriert sind. Dies sind dieselben Informationen, die auf der Seite Ratenlimits in der Claude Console angezeigt werden.
Verwende diese API, um:
- Gateways und Proxys synchron zu halten: Lies deine aktuellen Limits beim Start und nach Zeitplan aus, anstatt Werte fest zu codieren, die abweichen, wenn Anthropic sie anpasst.
- Interne Benachrichtigungen zu betreiben: Vergleiche Nutzungsdaten aus der Usage and Cost API mit deinen konfigurierten Limits.
- Die Workspace-Konfiguration zu prüfen: Überprüfe, ob Workspace-Überschreibungen dem entsprechen, was deine Bereitstellungsautomatisierung erwartet.
Die SDK- und CLI-Beispiele auf dieser Seite erstellen den Standard-Client, der den Admin-API-Key aus der Umgebungsvariable ANTHROPIC_API_KEY liest. Die SDKs stellen diese Endpunkte als client.organization.rate_limits und client.organization.workspaces.rate_limits bereit; die List-Methoden in Python, TypeScript, C#, Go und Java geben einen Iterator zurück, der next_page für dich verfolgt, während die Beispiele für PHP, Ruby und curl eine Seite lesen.
Schnellstart
Liste die für deine Organisation konfigurierten Ratenlimits auf:
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}")Ratenlimits der Organisation
Der Endpunkt /v1/organizations/rate_limits gibt die Ratenlimits zurück, die auf Organisationsebene für die Messages API und ihre unterstützenden Ressourcen angewendet werden. Limits für andere Produkte, wie Claude Managed Agents, sind nicht enthalten.
Wichtige Konzepte
- Ratenlimit-Gruppen: Jeder Eintrag in der Antwort repräsentiert eine Ratenlimit-Gruppe. Modell-Ratenlimits sind so gruppiert, dass sich mehrere Modellversionen einen einzigen Satz von Limits teilen, und andere Gruppen decken Ressourcen wie die Message Batches API, die Files API, die Token Counting API, Agent Skills und das Web-Search-Tool ab.
group-Objekt: Es ist in jedem Eintrag vorhanden und identifiziert die Ratenlimit-Gruppe, für die der Eintrag gilt. Es hat immertype, einen dergroup_type-Werte, undid, einen opaken Bezeichner mit dem Präfixrlg_. Beimodel_group-Einträgen hat es außerdemdisplay_name, Anthropics aktuelle Bezeichnung für die Gruppe, wie etwaClaude Sonnet 4.x. Die Bezeichnung dient nur der Anzeige und kann sich ändern. Andere Gruppentypen haben keinendisplay_name.- Die
idinnerhalb vongroup: Eine Gruppe hat in jeder Organisation und bei jeder Workspace-Überschreibung dieselbeid, und diese ändert sich nie. Verwende sie, um Einträge organisationsübergreifend oder mit deinem eigenen Katalog abzugleichen. Die eigeneiddes Eintrags unterscheidet sich je nach Organisation, undmodelsändert sich, wenn Anthropic ein Modell zwischen Gruppen verschiebt. Keines von beiden ist ein stabiler Schlüssel für die Gruppe. group_type: Abgekündigt zugunsten vontypeinnerhalb vongroup. Es wird weiterhin zurückgegeben, entspricht immer diesem Wert und hat kein Entfernungsdatum. Der Query-Parametergroup_typeist nicht abgekündigt. Siehe Filtern nach Gruppentyp für die Liste der Werte.models-Liste: Beimodel_group-Einträgen listet das Feldmodelsjede Modell-ID und jeden Alias auf, die auf die Limits dieser Gruppe angerechnet werden. Verwende diese Liste, um nachzuschlagen, zu welcher Gruppe ein beliebiger Modell-String gehört. Bei anderen Gruppentypen istmodelsnull.limits-Liste: Jede Gruppe enthält eine Liste von{type, value}-Paaren. Das Feldtypeidentifiziert den Limiter (wierequests_per_minute,input_tokens_per_minuteoderoutput_tokens_per_minute) undvalueist das konfigurierte Limit. Siehe Ratenlimits, um zu erfahren, wie jeder Limiter gemessen und durchgesetzt wird.sourcebei Workspace-Limits: Beim Workspace-Endpunkt enthält jeder Limit-Wert außerdemsource, das angibt, wohervaluestammt:{"type": "workspace"}für eine im Workspace gespeicherte Überschreibung oder{"type": "organization"}für einen von der Organisation geerbten Wert. Standardmäßig gibt der Workspace-Endpunkt nur Überschreibungen zurück, daher istsource.typedort immerworkspace; geerbte Werte erscheinen, wenn duinclude_inherited=trueübergibst. Siehe Workspace-Ratenlimits.
Vollständige Parameterdetails und Antwortschemas findest du in der API-Referenz für Organisations-Ratenlimits.
Alle Ratenlimits der Organisation auflisten
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
}Die Limits für ein bestimmtes Modell nachschlagen
Übergib eine beliebige Modell-ID oder einen Alias als Query-Parameter model, um nur den Eintrag zurückzugeben, der sie enthält:
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}")Wenn der Modell-String keiner Gruppe entspricht, gibt der Endpunkt einen 404-Fehler zurück. Der Parameter model wird nur vom Organisations-Endpunkt unterstützt; der Workspace-Endpunkt akzeptiert ihn nicht.
Workspace-Ratenlimits
Der Endpunkt /v1/organizations/workspaces/{workspace_id}/rate_limits gibt die Ratenlimit-Überschreibungen zurück, die für einen einzelnen Workspace konfiguriert sind. Um auch die Werte zu sehen, die der Workspace erbt, übergib include_inherited=true (siehe Geerbte Werte einbeziehen).
Standardmäßig enthält die Antwort nur Überschreibungen, daher wird alles, was darin fehlt, von der Organisation geerbt:
- Eine Gruppe, die in
datafehlt, hat überhaupt keine Workspace-Überschreibung. Der Workspace erbt die Limits auf Organisationsebene für diese Gruppe (er ist nicht unbegrenzt). - Innerhalb einer vorhandenen Gruppe hat ein Limiter-Typ, der in
limits[]fehlt, keine Workspace-Überschreibung für diesen Limiter. Der Workspace erbt dafür den Wert der Organisation. - Für jeden vorhandenen Limiter ist
org_limitder Wert auf Organisationsebene für denselben Limiter odernull, wenn die Organisation kein konfiguriertes Limit für diesen Limiter-Typ hat, undsourceist{"type": "workspace"}.
Vollständige Parameterdetails und Antwortschemas findest du in der API-Referenz für Workspace-Ratenlimits.
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
}Geerbte Werte einbeziehen
Um die geltenden Limits eines Workspace in einer einzigen Anfrage auszulesen, füge den optionalen Query-Parameter include_inherited hinzu. Er ist standardmäßig false; ein Wert, der kein Boolean ist, gibt einen 400-Fehler zurück. Mit include_inherited=true:
dataenthält einen Eintrag für jede Gruppe, die für den Workspace gilt und einen Wert auf Organisationsebene hat, auch wenn der Workspace nichts davon überschreibt. Eine Modellgruppe gilt, wenn der Workspace auf mindestens eines ihrer Modelle zugreifen kann.- Die
limits[]jedes Eintrags listen jeden Limiter-Typ auf, für den die Organisation einen Wert in dieser Gruppe hat, sowie jeden Typ, den der Workspace überschreibt. Jeder Typ erscheint einmal, mit der Überschreibung des Workspace, wo eine gespeichert ist, und andernfalls mit dem Wert der Organisation, sodass ein Eintrag beides mischen kann. - Das
sourcejedes Werts unterscheidet sie:{"type": "workspace"}ist eine gespeicherte Überschreibung, und{"type": "organization"}ist ein geerbter Wert, bei demvaluegleichorg_limitist.
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
}Filtern nach Gruppentyp
Beide Endpunkte akzeptieren einen optionalen Query-Parameter group_type, der die Antwort auf eine einzelne Kategorie beschränkt:
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}")Gültige Werte sind model_group, batch, token_count, files, skills und web_search.
Paginierung
Beide Endpunkte akzeptieren einen page-Query-Parameter und geben ein next_page-Feld zurück. Antworten sind derzeit immer eine einzelne Seite, daher ist next_page gleich null. Iteriere über next_page, damit dein Client ohne Änderungen korrekt paginiert, wenn die Antwort wächst.
Häufig gestellte Fragen
Welche Modell-Strings erscheinen in der models-Liste?
Jede Modell-ID und jeder Alias, der auf die Gruppe angerechnet wird, einschließlich datierter IDs (wie claude-sonnet-4-5-20250929) und undatierter Aliase (wie claude-sonnet-4-5). Schlage einen beliebigen Modell-String nach, den du an die Messages API übergibst, und du findest ihn in genau einem model_group-Eintrag.
Was bedeutet es, wenn eine Gruppe in der Workspace-Antwort fehlt?
Standardmäßig listet die Workspace-Antwort nur Überschreibungen auf, daher hat eine fehlende Gruppe keine Workspace-Überschreibung und erbt das Limit auf Organisationsebene. Übergib include_inherited=true, um geerbte Werte beim Workspace-Endpunkt zu sehen, oder frage den Organisations-Endpunkt ab. Mit include_inherited=true fehlt eine Gruppe nur, wenn sie nicht für den Workspace gilt oder die Organisation kein Limit dafür festgelegt hat.
Kann ich Ratenlimits mit dieser API aktualisieren?
Nein. Um Workspace-Ratenlimits festzulegen, gehe zur Seite Ratenlimits in der Claude Console, wähle den Workspace aus dem Dropdown-Menü Workspace aus und klicke neben einem Modell auf Edit.
Siehe auch
Was this page helpful?