{"record":{"id":"ff2f937316fd427c","repo":"BerriAI/litellm","slug":"priority-based-rate-limit-exceeded-model-model","errorCode":null,"errorMessage":"Priority-based rate limit exceeded. Model: {model}, Priority: {priority}, Rate limit type: {status['rate_limit_type']}, Model TPM: {model_group_info.tpm if model_group_info.tpm is not None else 'not configured'}, Model RPM: {model_group_info.rpm if model_group_info.rpm is not None else 'not configured'}, Remaining: {status['limit_remaining']}, Model saturation: {saturation:.1%}","messagePattern":"Priority-based rate limit exceeded\\. Model: (.+?), Priority: (.+?), Rate limit type: (.+?), Model TPM: (.+?), Model RPM: (.+?), Remaining: (.+?), Model saturation: (.+?)","errorType":"http","errorClass":"ProxyRateLimitError","httpStatus":429,"severity":"error","filePath":"litellm/proxy/hooks/dynamic_rate_limiter_v3.py","lineNumber":488,"sourceCode":"                            f\"Rate limit type: {status['rate_limit_type']}, \"\n                            f\"Model TPM: {model_group_info.tpm if model_group_info.tpm is not None else 'not configured'}, \"\n                            f\"Model RPM: {model_group_info.rpm if model_group_info.rpm is not None else 'not configured'}, \"\n                            f\"Remaining: {status['limit_remaining']}\"\n                        },\n                        headers={\n                            \"retry-after\": str(self.v3_limiter.window_size),\n                            \"rate_limit_type\": str(status[\"rate_limit_type\"]),\n                            \"x-litellm-priority\": priority or \"default\",\n                        },\n                        rate_limit_type=map_v3_rate_limit_type(status[\"rate_limit_type\"]),\n                        model=resolved_model,\n                        llm_provider=llm_provider,\n                    )\n                if descriptor_key == \"priority_model\":\n                    verbose_proxy_logger.debug(\n                        f\"Enforcing priority limits for {model}, saturation: {saturation:.1%}, priority: {priority}\"\n                    )\n                    raise ProxyRateLimitError(\n                        detail={\n                            \"error\": f\"Priority-based rate limit exceeded. \"\n                            f\"Model: {model}, \"\n                            f\"Priority: {priority}, \"\n                            f\"Rate limit type: {status['rate_limit_type']}, \"\n                            f\"Model TPM: {model_group_info.tpm if model_group_info.tpm is not None else 'not configured'}, \"\n                            f\"Model RPM: {model_group_info.rpm if model_group_info.rpm is not None else 'not configured'}, \"\n                            f\"Remaining: {status['limit_remaining']}, \"\n                            f\"Model saturation: {saturation:.1%}\"\n                        },\n                        headers={\n                            \"retry-after\": str(self.v3_limiter.window_size),\n                            \"rate_limit_type\": str(status[\"rate_limit_type\"]),\n                            \"x-litellm-priority\": priority or \"default\",\n                            \"x-litellm-saturation\": f\"{saturation:.2%}\",\n                        },\n                        rate_limit_type=map_v3_rate_limit_type(status[\"rate_limit_type\"]),\n                        model=resolved_model,","sourceCodeStart":470,"sourceCodeEnd":506,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/proxy/hooks/dynamic_rate_limiter_v3.py#L470-L506","documentation":"Error \"Priority-based rate limit exceeded. Model: {model}, Priority: {priority}, Rate limit type: {status['rate_limit_type']}, Model TPM: {model_group_info.tpm if model_group_info.tpm is not None else 'not configured'}, Model RPM: {model_group_info.rpm if model_group_info.rpm is not None else 'not configured'}, Remaining: {status['limit_remaining']}, Model saturation: {saturation:.1%}\" thrown in BerriAI/litellm.","triggerScenarios":"Thrown at litellm/proxy/hooks/dynamic_rate_limiter_v3.py:488 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use a higher priority for latency-critical traffic, or retry after saturation decreases.","Reduce request volume for this priority tier.","Raise the model TPM/RPM limits."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}