# 429 with no retry-after: stop retrying, check billing
## Symptom
Every request returns HTTP 429, `rate_limit_error`. The response has no `retry-after` header, and waiting plus retrying changes nothing.
## Confirm the cause
Look at `error.details.error_code` on the Messages API response. If it is `enforced_spend_limit_reached`, your organization hit its tier's monthly spend cap, not a rate limit. Spend-cap pauses last until 00:00 UTC on the first day of the next month. Note a related but different case: a 400 with the message starting "You have reached your specified API usage limits" is a spend limit you set yourself on the billing page, not the tier cap.
## Fix
1. Confirm on the Billing page in the Claude Console what the cap and current spend are.
2. To restore access now, request a higher limit (Rate limits page) or contact support for urgent needs.
3. If the 400 variant, raise or remove the self-set limit on the billing page.
4. Do not burn retry budget on this: the SDK's automatic retries fail until access resumes.
## Verify
After the limit is raised, requests succeed immediately with the same payload. Log which error_code you saw so the next on-call does not treat it as a rate limit.