I’ve been investigating some “You must not exceed 120 requests per 60 seconds” errors on our integration with the FreeAgent API and looking for a sensible solution to help work around the problem. Our integration syncs contacts in FreeAgent with another system. When more than 12,000 contacts are in the FreeAgent account then the 120+ calls we will need to make because of the 100 contact pagination limit causes the API to fire a 429.
Ideally the endpoint
GET https://api.freeagent.com/v2/contacts would have an additional filter option since= that would only return contacts that have been updated or added since the timestamp supplied. This would reduce load on your servers and ours by reducing the number of records being pull of disk and reducing the number of records processed by us.
This doesn’t solve the problem for customers who have large numbers of contacts in the first place for completing the first sync. However with filtering in place we could consider some kind of stand off to allow the calls to spread over a longer time period.