Evernote, the company that makes it easy to remember things, wants developers to remember to use its API responsibly. To ensure this, Evernote is imposing rate limits on its API, the company announced on a blog post. Those limits went into effect yesterday (August 14) for non-production API keys. Existing users have until November 1 to adjust to the change.
But for most, it won't be much of a change. Even though Evernote has not indicated what its rate limits will be, assuming reasonable use of the API, most third-party apps won’t be impacted, the company says. The virtual note keeper will apply rate limits on a per API key, per user basis. The means the API limits the number of calls a third-party application can make for each individual user during a one hour period.
If you are using the Evernote API in a third-party application, now is a good time to review your programming to make sure you are using the API as economically as possible.
In its developer guidelines, Evernote lists the three most likely reasons clients exceed rate limits. These include repeatedly retrying failed API calls, polling for changes, and inefficient algorithms.
Instead of retrying failed calls, you may want to look at the different exception types and handle them on an individual basis. You also want to make sure the problem is not with the type of request you are sending.
In most cases, polling is not necessary. If your program is polling for changes to an Evernote’s user account, Evernote suggest polling no more than once every 15 minutes. A better idea is to take advantage of the company’s webhooks to receive real-time notifications (sent as HTTP GET requests) when a user creates or updates a note.
Inefficient algorithms simply means your web service should try and make the most of each API request. Look for ways to collect the resources you need with fewer calls.
Clients in full sync (those that synchronize an Evernote user’s full account) will without a doubt go over the rate limit. In an effort to minimize problems, Evernote asks those developers to get in touch so they can work through the problem directly.
It is not uncommon or unreasonable for a company to set rate limits on its API. Evernote is not pulling a Twitter. It is simply doing the responsible thing to ensure its servers can handle all the requests coming through.