I would like to implement a multithreaded client which may scale up or down. The simplest way to handle the rate limiting is to rely on the API to tell me when I’ve hit a limit; then each client can exponentially back off until the rate limit is restored.
But this depends on how rate limiting is implemented. When I hit my limit, do I get a specific error code? Am I limited for a certain amount of time? Is the 600 requests counter reset every 5 minutes, or averaged over a different period?