What does "rate limit exceeded" mean? (UPDATED)

This is a question I am being asked more and more often so I thought I’d give you a brief overview of what it is, why it exists and what can be done about it. 

In order to control the use of the Twitter API (the service which provides the twitter data for 3rd party Twitter applications such as TweetDeck) Twitter sets a limit on how many times it can be used in an hour. This limit applies to your Twitter account rather than the applications which make the calls to the API i.e. you have 100 API calls per hour in total regardless of which Twitter applications you use - it is NOT 100 API calls per application. It is also important to note that this limit only applies to 3rd party Twitter applications, the twitter.com website does not use it’s own API (mmm doesn’t seem particularly fair) and therefore has no limits.

UPDATE: 3rd party applications obviously include desktop and web based twitter clients but less-obviously they also include that widget on your blog which shows the last few tweets you made, the facebook twitter application which cross posts your tweets to your facebook status etc etc essentially ANY software where you’ve entered your twitter username & password.

So what constitutes an API call? Strictly speaking every operation which communicates with Twitter is an API call, what we really need to know is which API calls have an impact on the 100 calls limit. The simplest  way to think about this is every call to the Twitter API which requests data will count towards your limit. So when TweetDeck updates the All Tweets, Replies or Direct Messages columns this would count as 1 call each as would viewing a twitterers profile (this actually costs two calls, one for the profile itself and one for the archive of their sent tweets).

Sending data to Twitter (posting), such as posting an update or a direct message, favoriting a tweet, unfollowing or following a user, does not count towards the limit and you can continue to do so even when your rate limit has been exceeded. Also, updates to the search, groups, twitscoop and 12seconds columns do not count towards the rate limit since the data does not (directly) come via the Twitter API.

If you use up your 100 API calls in the hour then you will see the “rate limit exceeded” message in TweetDeck and Twitter will not provide any updates until the hour is up. The All Tweets, Replies & DM columns in TweetDeck will appear to be frozen. At the end of the hour the rate limit will be reset and you will start getting updates again. You can view your rate limit status in the top right corner of TweetDeck.

So what can you do to avoid the “rate limit exceeded” message and what can you do if you get it? Unfortunately not very much. This is a Twitter enforced limitation rather than a TweetDeck one but I would suggest the following to reduce the risk:

  • only ever run one twitter application at a time, even if you’re not using the others make sure they are closed
  • try not to over use the refresh button - this will cost you 3 calls per click (All Tweets, Replies & DMs)
  • UPDATE: try lowering the total % in the settings window, twitter API tab to around 60-70% - you’ll get less frequent updates but you’ll use less API
  • if you do get the rate limit exceeded message then make a note of your reset time shown in the top right corner of TweetDeck, TweetDeck will not get any updates until this time (so it might be a good opportunity to get a coffee) - you CAN continue to post messages, you just won’t see any responses
  • also if you do get the rate limit exceeded, close down your twitter applications and then reopen then at the reset time (see above) 

UPDATE: great advice from @warzabidul “If people are having limit problems just get them to reset their password (on the twitter website)…Worked well for me when I reset the twitter password.”

I hope this helps explain the API limit a bit more, it can get rather complicated. It’s not an ideal scenario but if this control keeps Twitter running more stably then it’s obviously worthwhile.