Summary
Claude surfaces multiple independent usage limits (session-level, weekly all-models, weekly Sonnet-specific, API rate limits) but labels all of them identically as "Usage Limit" in the UI and error responses. When a limit fires, users cannot determine which limit was hit, when it resets, or what to do next.
Current behaviour (confusing)
You've reached your usage limit. Please try again later.
Same message for all limit types. No reset time. No actionable guidance.
Expected behaviour (actionable)
Daily session budget reached (resets in 4h 22m)
or
Weekly all-models budget at 100% (resets Sunday 10:00)
or
API rate limit: 60 requests/min exceeded (resets in 43 seconds)
Proposed label taxonomy
| Limit type |
Proposed identifier |
| Session daily budget |
session_daily_budget |
| Weekly all-models budget |
weekly_all_models_budget |
| Weekly Sonnet budget |
weekly_sonnet_budget |
| API requests per minute |
api_rpm_limit |
| API tokens per minute |
api_tpm_limit |
Apply in: console UI, in-app error messages, API error response type field, rate limit response headers.
Impact
Without clear labels, users building on the API cannot programmatically distinguish limit types and cannot surface meaningful guidance to their end users. Developers are currently reverse-engineering limit types from context clues.
Reference
https://github.com/daskuntal75/llm-cost-kit/blob/main/docs/anthropic-issues-submit-ready.md
Summary
Claude surfaces multiple independent usage limits (session-level, weekly all-models, weekly Sonnet-specific, API rate limits) but labels all of them identically as "Usage Limit" in the UI and error responses. When a limit fires, users cannot determine which limit was hit, when it resets, or what to do next.
Current behaviour (confusing)
Same message for all limit types. No reset time. No actionable guidance.
Expected behaviour (actionable)
or
or
Proposed label taxonomy
session_daily_budgetweekly_all_models_budgetweekly_sonnet_budgetapi_rpm_limitapi_tpm_limitApply in: console UI, in-app error messages, API error response
typefield, rate limit response headers.Impact
Without clear labels, users building on the API cannot programmatically distinguish limit types and cannot surface meaningful guidance to their end users. Developers are currently reverse-engineering limit types from context clues.
Reference
https://github.com/daskuntal75/llm-cost-kit/blob/main/docs/anthropic-issues-submit-ready.md