What is the API Rate Limit?

For API users: Explains that the API rate limit is generous and is designed to protect Wattwatchers servers from bad scripts. Limits also may trigger a commercial discussion for API-intensive use-cases

The Wattwatchers Application Programming Interface (API) is how real-time data is shared with applications. It also provides the interface for switching control, and features for device configuration.
Wattwatchers has a reasonable use policy on API keys, with rate limits that auto-scale with your fleet size. The rate limit is intended to be triggered if:
  • Bad scripts are placing high load on our servers,
  • A high proportion of devices are in 5 second short energy mode
  • The API is being used in an unusual way.
The rate limit is designed to get Wattwatchers and relevant customers talking if the limit is reached, to discuss how the API is being used. This may start further commercial negotiation if a large proportion of devices are operating at 5 second short energy (which increases cellular data plan costs).

Our reasonable use policy

The policy is intended to provide sufficient capacity for a fleet of devices reporting 30 second short energy, with a margin that allows ~15% of the fleet to operate in 5 second short energy mode. 

The API technical detail

Transactions Per Day (TPD) is calculated based on:

  • Number of requests to get LE data every 5 mins for every device in your key
  • Number of requests to get SE data every 30s for every device in your key
  • An allowance for retrieving device status for each device every 5 mins
  • A 25% buffer over and above (some 'wriggle room')
  • i.e. 288 LE and status per day (every 5 mins) and 2880 SE per day (every 30 secs) for every device + the 25% 'wriggle room'
Transactions Per Second (TPS) calculation is based on:
  • Device count, with a minimum of 5 and a maximum of whatever is bigger out of 50 or device count/3 (so 200 devices = 66TPS).
  • Except for 5s devices, this should be plenty. And even for 5 sec devices as long as you're not polling > 30s for SE data.