रेट लिमिट्स यह नियंत्रित करती हैं कि आप हर एंडपॉइंट पर कितने अनुरोध कर सकते हैं। इन सीमाओं से अधिक होने पर, विंडो रीसेट होने तक 429 त्रुटि मिलती है।
रेट लिमिट्स कैसे काम करती हैं
| अवधारणा | विवरण |
|---|
| समय विंडो | आमतौर पर 15 मिनट या 24 घंटे |
| प्रति-उपयोगकर्ता लिमिट्स | OAuth 1.0a या OAuth 2.0 यूज़र टोकन के साथ लागू होती हैं |
| प्रति-ऐप लिमिट्स | बेयरर टोकन (केवल-ऐप) के साथ लागू होती हैं |
| प्रति-एंडपॉइंट | हर एंडपॉइंट की अपनी लिमिट्स होती हैं |
रिस्पॉन्स हेडर आपकी मौजूदा रेट लिमिट की स्थिति दिखाते हैं:
x-rate-limit-limit: 900
x-rate-limit-remaining: 847
x-rate-limit-reset: 1705420800
| Header | विवरण |
|---|
x-rate-limit-limit | अनुमत अनुरोधों की अधिकतम संख्या |
x-rate-limit-remaining | विंडो में बचे हुए अनुरोध |
x-rate-limit-reset | विंडो रीसेट होने का Unix टाइमस्टैम्प |
नीचे हर endpoint के लिए रेट लिमिट देखें। आप ये लिमिट डेवलपर कंसोल में भी देख सकते हैं।
जब तक अलग से न बताया गया हो, लिमिट 15 मिनट के आधार पर दिखाई जाती हैं (उदा., “/24hrs” या “/sec”)।
| मेथड | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/tweets | 3,500/15min | 5,000/15min |
| GET | /2/tweets/:id | 450/15min | 900/15min |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता | टिप्पणियाँ |
|---|
| GET | /2/tweets/search/recent | 450/15min | 300/15min | डिफ़ॉल्ट 10, अधिकतम 100 परिणाम; क्वेरी लंबाई 512 |
| Method | Endpoint | प्रति ऐप | प्रति उपयोगकर्ता | नोट्स |
|---|
| GET | /2/tweets/search/all | 1/sec, 300/15min | 1/sec | डिफ़ॉल्ट 10, अधिकतम 500 परिणाम; क्वेरी लंबाई 1024 |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता | टिप्पणियाँ |
|---|
| GET | /2/tweets/counts/recent | 300/15min | — | 512 क्वेरी की लंबाई |
| GET | /2/tweets/counts/all | 300/15min | — | 1024 क्वेरी की लंबाई |
| Method | Endpoint | प्रति ऐप | प्रति उपयोगकर्ता | टिप्पणियाँ |
|---|
| GET | /2/tweets/search/stream | 50/15min | — | 1 कनेक्शन; 1000 नियम; नियम की लंबाई 1024; 250 पोस्ट्स/सेकंड |
| GET | /2/tweets/search/stream/rules | 450/15min | — | 1 कनेक्शन; 1000 नियम; नियम की लंबाई 1024 |
| POST | /2/tweets/search/stream/rules | 100/15min | — | 1 कनेक्शन; 1000 नियम; नियम की लंबाई 1024 |
| मेथड | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| POST | /2/tweets | 10,000/24hrs | 100/15min |
| DELETE | /2/tweets/:id | — | 50/15min |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/users/:id/tweets | 10,000/15min | 900/15min |
| GET | /2/users/:id/mentions | 450/15min | 300/15min |
| GET | /2/users/:id/timelines/reverse_chronological | — | 180/15min |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/tweets/:id/liking_users | 75/15min | 75/15min |
| GET | /2/users/:id/liked_tweets | 75/15min | 75/15min |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| POST | /2/users/:id/likes | — | 50/15min, 1,000/24hrs |
| DELETE | /2/users/:id/likes/:tweet_id | — | 50/15min, 1,000/24hrs |
| मेथड | Endpoint | प्रति ऐप | प्रति उपयोगकर्ता | नोट्स |
|---|
| GET | /2/tweets/:id/retweeted_by | 75/15min | 75/15min | — |
| GET | /2/tweets/:id/quote_tweets | 75/15min | 75/15min | — |
| GET | /2/users/reposts_of_me | — | 75/15min | अधिकतम 100 परिणाम |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| POST | /2/users/:id/retweets | — | 50/15min |
| DELETE | /2/users/:id/retweets/:tweet_id | — | 50/15min |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| PUT | /2/tweets/:tweet_id/hidden | — | 50/15 मिनट |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/users | 300/15min | 900/15min |
| GET | /2/users/:id | 300/15min | 900/15min |
| GET | /2/users/by | 300/15min | 900/15min |
| GET | /2/users/by/username/:username | 300/15min | 900/15min |
| GET | /2/users/me | — | 75/15min |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/users/search | 300/15min | 900/15min |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/users/:id/following | 300/15min | 300/15min |
| GET | /2/users/:id/followers | 300/15min | 300/15min |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| POST | /2/users/:id/following | — | 50/15min |
| DELETE | /2/users/:source_user_id/following/:target_user_id | — | 50/15min |
| मेथड | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/users/:id/blocking | — | 15/15min |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/users/:id/muting | — | 15/15min |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| POST | /2/users/:id/muting | — | 50/15min |
| DELETE | /2/users/:source_user_id/muting/:target_user_id | — | 50/15min |
| Method | Endpoint | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/spaces/:id | 300/15 मिनट | 300/15 मिनट |
| GET | /2/spaces | 300/15 मिनट | 300/15 मिनट |
| GET | /2/spaces/:id/tweets | 300/15 मिनट | 300/15 मिनट |
| GET | /2/spaces/by/creator_ids | 300/15 मिनट, 1/सेकंड | 300/15 मिनट, 1/सेकंड |
| GET | /2/spaces/:id/buyers | 300/15 मिनट | 300/15 मिनट |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/spaces/search | 300/15min | 300/15min |
डायरेक्ट मैसेज (8 एंडपॉइंट)
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/dm_events | — | 15/15min |
| GET | /2/dm_events/:id | — | 15/15min |
| GET | /2/dm_conversations/:dm_conversation_id/dm_events | — | 15/15min |
| GET | /2/dm_conversations/with/:participant_id/dm_events | — | 15/15min |
डायरेक्ट मैसेज प्रबंधित करें
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| POST | /2/dm_conversations | 1,440/24hrs | 15/15min, 1,440/24hrs |
| POST | /2/dm_conversations/with/:participant_id/messages | 1,440/24hrs | 15/15min, 1,440/24hrs |
| POST | /2/dm_conversations/:dm_conversation_id/messages | 1,440/24hrs | 15/15min, 1,440/24hrs |
| DELETE | /2/dm_events/:id | 4,000/24hrs | 300/15min, 1,500/24hrs |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/lists/:id | 75/15min | 75/15min |
| GET | /2/users/:id/owned_lists | 15/15min | 15/15min |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/lists/:id/tweets | 900/15min | 900/15min |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/lists/:id/members | 900/15min | 900/15min |
| GET | /2/users/:id/list_memberships | 75/15min | 75/15min |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| POST | /2/lists | — | 300/15min |
| DELETE | /2/lists/:id | — | 300/15min |
| PUT | /2/lists/:id | — | 300/15min |
सूची के सदस्यों का प्रबंधन
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| POST | /2/lists/:id/members | — | 300/15min |
| DELETE | /2/lists/:id/members/:user_id | — | 300/15min |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| POST | /2/users/:id/followed_lists | — | 50/15min |
| DELETE | /2/users/:id/followed_lists/:list_id | — | 50/15min |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/users/:id/pinned_lists | 15/15min | 15/15min |
| POST | /2/users/:id/pinned_lists | — | 50/15min |
| DELETE | /2/users/:id/pinned_lists/:list_id | — | 50/15min |
बुकमार्क्स (5 एंडपॉइंट्स)
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/users/:id/bookmarks | — | 180/15min |
| GET | /2/users/:id/bookmarks/folders | 50/15min | 50/15min |
| GET | /2/users/:id/bookmarks/folders/:folder_id | 50/15min | 50/15min |
| मेथड | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| POST | /2/users/:id/bookmarks | — | 50/15min |
| DELETE | /2/users/:id/bookmarks/:tweet_id | — | 50/15min |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| POST | /2/compliance/jobs | 150/15min | — |
| GET | /2/compliance/jobs/:job_id | 150/15min | — |
| GET | /2/compliance/jobs | 150/15min | — |
| मेथड | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/usage/tweets | 50/15min | — |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/users/personalized_trends | 200/24hrs, 200/15min | 100/24hrs, 10/15min |
WOEID के आधार पर ट्रेंड्स
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/trends/by/woeid/:id | 75/15min | — |
| मेथड | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता | टिप्पणियाँ |
|---|
| GET | /2/communities/:id | 300/15min | 300/15min | — |
| GET | /2/communities/search | 300/15min | 300/15min | अधिकतम 100 परिणाम |
| मेथड | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/tweets/analytics | 300/15min | 300/15min |
| मेथड | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| POST | /2/media/upload | 50,000/24hrs | 500/15min |
| GET | /2/media/upload | 100,000/24hrs | 1,000/15min |
| POST | /2/media/upload/initialize | 180,000/24hrs | 1,875/15min |
| POST | /2/media/upload/:id/append | 180,000/24hrs | 1,875/15min |
| POST | /2/media/upload/:id/finalize | 180,000/24hrs | 1,875/15min |
| POST | /2/media/metadata | 50,000/24hrs | 500/15min |
| POST | /2/media/subtitles | 10,000/24hrs | 100/15min |
| DELETE | /2/media/subtitles | 10,000/24hrs | 100/15min |
| विधि | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता | टिप्पणियाँ |
|---|
| GET | /2/activity/stream | 450/15min | — | 2 कनेक्शन; 250 पोस्ट्स/सेकंड |
| POST | /2/activity/subscriptions | 500/15min | — | — |
| GET | /2/activity/subscriptions | 500/15min | — | — |
| PUT | /2/activity/subscriptions/:subscription_id | 500/15min | — | — |
| DELETE | /2/activity/subscriptions/:subscription_id | 500/15min | — | — |
| POST | /2/webhooks | 450/15min | — | — |
| GET | /2/webhooks | 450/15min | — | — |
| PUT | /2/webhooks/:webhook_id | 450/15min | — | — |
| DELETE | /2/webhooks/:webhook_id | 450/15min | — | — |
| POST | /2/webhooks/replay | 100/15min | — | — |
| मेथड | एंडपॉइंट | प्रति ऐप | प्रति उपयोगकर्ता |
|---|
| GET | /2/tweets/sample10/stream | 100/15min | — |
| GET | /2/news/:id | 200/15min | — |
| GET | /2/news/search | 200/15min | 200/15min |
| POST | /2/users/:id/dm/block | 25/15min, 1,000/24hrs | 10/15min, 400/24hrs |
| POST | /2/users/:id/dm/unblock | 25/15min, 1,000/24hrs | 10/15min, 400/24hrs |
| GET | /2/users/by/username/:username/tweets | 1,500/15min | 900/15min |
| GET | /2/users/by/username/:username/mentions | 450/15min | 180/15min |
| GET | /2/users/:id/following/spaces | 300/15min | 300/15min |
| GET | /2/tweets/:id/retweets | 75/15min | 75/15min |
| DELETE | /2/connections/all | 25/15min | 25/15min |
जब आप रेट लिमिट तक पहुँच जाते हैं, तो आपको 429 प्रतिक्रिया मिलेगी:
{
"errors": [{
"code": 88,
"message": "Rate limit exceeded"
}]
}
- विंडो कब रीसेट होगी, यह जानने के लिए
x-rate-limit-reset देखें
- फिर से प्रयास करने से पहले उस समय तक प्रतीक्षा करें
- आवश्यकता होने पर exponential backoff का उपयोग करें
import time
def make_request_with_backoff(url, headers):
response = requests.get(url, headers=headers)
if response.status_code == 429:
reset_time = int(response.headers.get('x-rate-limit-reset', 0))
wait_time = max(reset_time - time.time(), 60)
time.sleep(wait_time)
return make_request_with_backoff(url, headers)
return response
रिस्पॉन्स को कैश करें
बार-बार अनुरोध करने से बचने के लिए परिणामों को लोकल तौर पर स्टोर करें।
स्ट्रीमिंग का उपयोग करें
रीयल-टाइम डेटा के लिए, polling के बजाय filtered stream का उपयोग करें।
हेडर मॉनिटर करें
सीमाओं तक पहुँचने से बचने के लिए बचे हुए अनुरोधों को ट्रैक करें।
अनुरोधों को वितरित करें
अनुरोधों को पूरे समय-विंडो में फैलाकर भेजें।
रेट लिमिट्स और बिलिंग अलग-अलग चीज़ें हैं:
| अवधारणा | उद्देश्य |
|---|
| रेट लिमिट्स | सिस्टम की स्थिरता बनाए रखने के लिए अनुरोधों की आवृत्ति नियंत्रित करना |
| उपयोग बिलिंग | प्राप्त किए गए डेटा के लिए शुल्क लेना (उपयोग के आधार पर भुगतान) |
आप रेट लिमिट्स के भीतर रह सकते हैं, लेकिन फिर भी उपयोग शुल्क लग सकता है। वहीं, बिना किसी अतिरिक्त शुल्क के भी रेट लिमिट्स तक पहुँचा जा सकता है।
Enterprise ग्राहकों के लिए कस्टम रेट लिमिट्स होती हैं। अपने अकाउंट मैनेजर से संपर्क करें या Enterprise access के लिए आवेदन करें।
त्रुटि प्रबंधन
429 और अन्य त्रुटियों को संभालना सीखें।
शुरुआत करें
एक्सेस स्तरों और सुविधाओं के बारे में जानें।