محدودیتهای Rate Limit API Claude: راهنمای کامل (۲۰۲۶)
هر تیر rate limit، header و بهترین روشها برای Anthropic API
شروع به ساخت با Hypereal AI
دسترسی به Kling, Flux, Sora, Veo و موارد دیگر از طریق یک API واحد. اعتبار رایگان برای شروع، مقیاسپذیری تا میلیونها.
بدون نیاز به کارت اعتباری • بیش از ۱۰۰ هزار توسعهدهنده • آماده برای شرکتها
محدودیتهای Rate Limit API Claude: راهنمای کامل برای ۲۰۲۶
اگر در حال ساختن اپلیکیشن با Anthropic Claude API هستید، درک محدودیتهای rate limit حیاتی است. به rate limit در زمان اشتباه بخورید و اپلیکیشن شما متوقف میشود، کاربران خطا میبینند، و صف شما متراکم میشود. این راهنما هر تیر rate limit، نحوه تشخیص زمان نزدیک شدن به محدودیتها، و استراتژیهای اثباتشده برای مدیریت بلندمدت آنها را پوشش میدهد.
نحوه کار محدودیتهای Rate Limit API Claude
Anthropic محدودیتهای rate limit را روی Claude API با سه بُعد بهطور همزمان اعمال میکند:
| بُعد | چه چیزی اندازه میگیرد | نحوه ریست |
|---|---|---|
| درخواست در دقیقه (RPM) | تعداد فراخوانیهای API | پنجره rolling ۱ دقیقهای |
| توکن ورودی در دقیقه (ITPM) | توکنهای ارسالشده به API | پنجره rolling ۱ دقیقهای |
| توکن خروجی در دقیقه (OTPM) | توکنهای تولیدشده توسط Claude | پنجره rolling ۱ دقیقهای |
وقتی هر کدام از این سه بُعد از حد گذشت به rate limit میخورید. این یعنی حتی اگر خیلی زیر حد RPM باشید، ارسال چند پرامپت بسیار طولانی میتواند محدودیت توکن ورودی شما را تمام کند.
تیرهای Rate Limit
Anthropic از یک سیستم تیر بر اساس تاریخچه استفاده و هزینه حساب شما استفاده میکند. از اوایل ۲۰۲۶، تیرها بهصورت زیر ساختار دارند:
Tier 1 (حسابهای جدید)
| مدل | RPM | Input TPM | Output TPM |
|---|---|---|---|
| Claude Opus 4 | ۵۰ | ۲۰,۰۰۰ | ۴,۰۰۰ |
| Claude Sonnet 4 | ۵۰ | ۴۰,۰۰۰ | ۸,۰۰۰ |
| Claude Haiku 3.5 | ۵۰ | ۵۰,۰۰۰ | ۱۰,۰۰۰ |
Tier 2
| مدل | RPM | Input TPM | Output TPM |
|---|---|---|---|
| Claude Opus 4 | ۱,۰۰۰ | ۸۰,۰۰۰ | ۱۶,۰۰۰ |
| Claude Sonnet 4 | ۱,۰۰۰ | ۱۶۰,۰۰۰ | ۳۲,۰۰۰ |
| Claude Haiku 3.5 | ۲,۰۰۰ | ۲۰۰,۰۰۰ | ۴۰,۰۰۰ |
Tier 3
| مدل | RPM | Input TPM | Output TPM |
|---|---|---|---|
| Claude Opus 4 | ۲,۰۰۰ | ۴۰۰,۰۰۰ | ۸۰,۰۰۰ |
| Claude Sonnet 4 | ۲,۰۰۰ | ۸۰۰,۰۰۰ | ۱۶۰,۰۰۰ |
| Claude Haiku 3.5 | ۴,۰۰۰ | ۱,۰۰۰,۰۰۰ | ۲۰۰,۰۰۰ |
Tier 4 (حجم بالا)
| مدل | RPM | Input TPM | Output TPM |
|---|---|---|---|
| Claude Opus 4 | ۴,۰۰۰ | ۲,۰۰۰,۰۰۰ | ۴۰۰,۰۰۰ |
| Claude Sonnet 4 | ۴,۰۰۰ | ۴,۰۰۰,۰۰۰ | ۸۰۰,۰۰۰ |
| Claude Haiku 3.5 | ۸,۰۰۰ | ۵,۰۰۰,۰۰۰ | ۱,۰۰۰,۰۰۰ |
توجه: اعداد دقیق ممکن است تغییر کنند. Anthropic این محدودیتها را دورهای تنظیم میکند و ممکن است برای حسابهای enterprise محدودیتهای سفارشی ارائه دهد. همیشه مستندات رسمی Anthropic را برای بهروزترین اعداد بررسی کنید.
نحوه بررسی Tier فعلی شما
میتوانید tier و محدودیتهای فعلی خود را در Anthropic Console زیر Settings > Limits بررسی کنید. tier شما بهطور خودکار با افزایش هزینه حساب شما در طول زمان ارتقاء مییابد.
هدرهای پاسخ Rate Limit
هر پاسخ API از Claude شامل header هایی است که دقیقاً نشان میدهند نسبت به محدودیتهای شما کجا قرار دارید:
anthropic-ratelimit-requests-limit: 1000
anthropic-ratelimit-requests-remaining: 998
anthropic-ratelimit-requests-reset: 2026-02-06T12:01:00Z
anthropic-ratelimit-tokens-limit: 160000
anthropic-ratelimit-tokens-remaining: 145230
anthropic-ratelimit-tokens-reset: 2026-02-06T12:01:00Z
| Header | معنا |
|---|---|
anthropic-ratelimit-requests-limit |
محدودیت RPM شما |
anthropic-ratelimit-requests-remaining |
درخواستهای باقیمانده در پنجره جاری |
anthropic-ratelimit-requests-reset |
زمان ریست شمارنده درخواست |
anthropic-ratelimit-tokens-limit |
محدودیت توکن در دقیقه شما |
anthropic-ratelimit-tokens-remaining |
توکنهای باقیمانده در پنجره جاری |
anthropic-ratelimit-tokens-reset |
زمان ریست شمارنده توکن |
خواندن header ها در کد
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello, Claude!"}]
)
# Access rate limit info from the response headers
print(f"Requests remaining: {response._response.headers.get('anthropic-ratelimit-requests-remaining')}")
print(f"Tokens remaining: {response._response.headers.get('anthropic-ratelimit-tokens-remaining')}")
print(f"Resets at: {response._response.headers.get('anthropic-ratelimit-requests-reset')}")
وقتی به Rate Limit میخورید چه اتفاقی میافتد
وقتی از هر بُعد rate limit تجاوز کنید، API یک پاسخ 429 Too Many Requests برمیگرداند:
{
"type": "error",
"error": {
"type": "rate_limit_error",
"message": "Number of request tokens has exceeded your per-minute rate limit (https://docs.anthropic.com/en/api/rate-limits); see the response headers for current usage. Please reduce the prompt length or the number of messages, and try again. You may also contact sales at https://www.anthropic.com/contact-sales to discuss your options for a rate limit increase."
}
}
پاسخ همچنین یک header retry-after دارد که نشان میدهد چند ثانیه باید قبل از تلاش مجدد صبر کرد.
استراتژیهای Retry
Exponential Backoff پایه
سادهترین رویکرد retry با تأخیرهای بهطور نمایی فزاینده است:
import time
import anthropic
client = anthropic.Anthropic()
def call_claude_with_retry(messages, max_retries=5):
for attempt in range(max_retries):
try:
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=messages,
)
return response
except anthropic.RateLimitError as e:
if attempt == max_retries - 1:
raise
wait_time = (2 ** attempt) + 0.5 # 1.5s, 2.5s, 4.5s, 8.5s, 16.5s
print(f"Rate limited. Retrying in {wait_time}s...")
time.sleep(wait_time)
استفاده از Header `retry-after`
رویکرد بهتر header retry-after از پاسخ 429 را میخواند:
import time
import anthropic
client = anthropic.Anthropic()
def call_claude_with_retry_after(messages, max_retries=5):
for attempt in range(max_retries):
try:
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=messages,
)
return response
except anthropic.RateLimitError as e:
if attempt == max_retries - 1:
raise
# Use retry-after header if available, otherwise exponential backoff
retry_after = getattr(e, 'response', None)
if retry_after and retry_after.headers.get('retry-after'):
wait_time = int(retry_after.headers['retry-after'])
else:
wait_time = 2 ** attempt
print(f"Rate limited. Waiting {wait_time}s before retry {attempt + 1}...")
time.sleep(wait_time)
صفبندی درخواست آگاه از توکن
برای سیستمهای production که درخواستهای همزمان زیادی مدیریت میکنند، یک صف آگاه از توکن پیادهسازی کنید:
import asyncio
import time
from dataclasses import dataclass
@dataclass
class RateLimitState:
requests_remaining: int = 1000
tokens_remaining: int = 160000
reset_time: float = 0.0
class TokenAwareQueue:
def __init__(self, client):
self.client = client
self.state = RateLimitState()
self.lock = asyncio.Lock()
async def call(self, messages, estimated_tokens=500):
async with self.lock:
# Wait if we are close to the limit
if self.state.tokens_remaining < estimated_tokens:
wait_time = max(0, self.state.reset_time - time.time())
if wait_time > 0:
await asyncio.sleep(wait_time)
response = await self.client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=messages,
)
# Update state from response headers
headers = response._response.headers
self.state.requests_remaining = int(
headers.get('anthropic-ratelimit-requests-remaining', 0)
)
self.state.tokens_remaining = int(
headers.get('anthropic-ratelimit-tokens-remaining', 0)
)
return response
بهترین روشها برای ماندن زیر Rate Limit
۱. مدل مناسب را برای هر کار استفاده کنید
از Claude Opus برای کارهایی که Claude Haiku میتواند انجام دهد استفاده نکنید. Haiku محدودیتهای rate limit بالاتر و قیمت بهمراتب کمتری دارد:
| کار | مدل پیشنهادی |
|---|---|
| طبقهبندی ساده | Haiku 3.5 |
| خلاصهسازی | Sonnet 4 |
| تولید کد | Sonnet 4 |
| استدلال پیچیده | Opus 4 |
| استخراج سریع | Haiku 3.5 |
۲. مصرف توکن ورودی را کاهش دهید
- system prompt ها را کوتاه کنید. هر درخواست system prompt شما را ارسال میکند. دستورالعملهای غیرضروری را حذف کنید.
- از خلاصههای مکالمه استفاده کنید. بهجای ارسال کل تاریخچه مکالمه، پیامهای قدیمیتر را خلاصه کنید.
- context را محدود کنید. فقط context ای را وارد کنید که مدل واقعاً نیاز دارد.
# Bad: Sending entire file content for a simple question
messages = [{"role": "user", "content": f"What language is this file? {entire_10000_line_file}"}]
# Good: Send only what's needed
messages = [{"role": "user", "content": f"What language is this file? First 20 lines:\n{first_20_lines}"}]
۳. درخواستها را هوشمندانه batch کنید
اگر نیاز دارید ۱۰۰ آیتم پردازش کنید، ۱۰۰ درخواست همزمان ارسال نکنید. به جایش آنها را با محدودیت همزمانی batch کنید:
import asyncio
async def process_batch(items, max_concurrent=5):
semaphore = asyncio.Semaphore(max_concurrent)
async def process_one(item):
async with semaphore:
return await call_claude(item)
results = await asyncio.gather(*[process_one(item) for item in items])
return results
۴. از Message Batches API استفاده کنید
برای بار کاریهای غیر time-sensitive، Message Batches API Anthropic اجازه میدهد تا ۱۰,۰۰۰ درخواست را در یک batch ارسال کنید. درخواستهای batch محدودیتهای جداگانه و بسیار بالاتری دارند و ظرف ۲۴ ساعت با ۵۰٪ تخفیف پردازش میشوند.
batch = client.messages.batches.create(
requests=[
{
"custom_id": f"request-{i}",
"params": {
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [{"role": "user", "content": prompt}],
}
}
for i, prompt in enumerate(prompts)
]
)
۵. درخواستهای تکراری را cache کنید
اگر کاربران متعدد سوالات مشابه میپرسند، پاسخها را cache کنید:
import hashlib
import json
def get_cache_key(messages, model):
content = json.dumps({"messages": messages, "model": model}, sort_keys=True)
return hashlib.sha256(content.encode()).hexdigest()
۶. از Prompt Caching استفاده کنید
Anthropic از prompt caching برای system prompt ها و context طولانی پشتیبانی میکند. توکنهای cached در درخواستهای بعدی برای rate limit توکن ورودی شما حساب نمیشوند و ۹۰٪ کمتر هزینه دارند:
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
system=[
{
"type": "text",
"text": "Your very long system prompt here...",
"cache_control": {"type": "ephemeral"}
}
],
messages=[{"role": "user", "content": "Your question"}]
)
مانیتورینگ مصرف Rate Limit
برای سیستمهای production، header های rate limit را لاگ کنید و هشدار تنظیم کنید:
- در ۸۰٪ مصرف هشدار دهید تا زمان واکنش داشته باشید
- الگوها را ردیابی کنید تا ساعات اوج را شناسایی کنید
- به ازای مدل مانیتور کنید چون هر مدل محدودیتهای مستقل دارد
چه زمانی افزایش Rate Limit درخواست دهید
اگر با وجود بهینهسازی بهطور مداوم به محدودیت میخورید، با فروش Anthropic برای پلن سفارشی تماس بگیرید. آماده باشید با:
- الگوهای استفاده فعلی (RPM، TPM)
- رشد مورد انتظار در ۳-۶ ماه آینده
- توضیح موردی استفاده
ساختن اپلیکیشنهای AI در مقیاس
محدودیتهای rate limit یک تکه از پازل ساختن اپلیکیشنهای AI تولیدی هستند. اگر پروژه شما شامل تولید رسانه (تصویر، ویدیو، صدا، آواتار) در کنار تولید متن است، استفاده از یک پلتفرم API یکپارچه مثل Hypereal را در نظر بگیرید که rate limiting، صفبندی و retry را در چندین مدل AI مدیریت میکند — تا بتوانید به جای زیرساخت روی منطق اپلیکیشن تمرکز کنید. توسعهدهندگان ایرانی میتوانند بدون محدودیت تحریم از طریق Hypereal به این API ها دسترسی داشته باشند.
خلاصه
مدیریت محدودیتهای rate limit API Claude به سه اصل میرسد: محدودیتهایتان را بدانید (header ها را بررسی کنید)، از توکنها بهینه استفاده کنید (مدل مناسب، context حداقلی)، و خطاهای 429 را بلندمدت مدیریت کنید (exponential backoff با retry-after). این استراتژیها را پیادهسازی کنید و اپلیکیشن شما حتی زیر بار سنگین پایدار خواهد بود.
مقالات مرتبط
Download Hypereal Agent
Run a local AI media workspace for image generation, video prompts, model selection, credit tracking, and saved artifacts.


