Particle Cloud API rate limit for a custom client

Hi,

I’m trying to understand the limitation of 10 calls per second mentioned here,
https://docs.particle.io/reference/device-cloud/api/#api-rate-limits

In our end use case, there will be a high number of electron devices(>500) connected to the Particle Cloud. The interaction to the Particle Cloud for data/device specific functions is done by a custom client which owns all devices. The devices will be will be publishing data through Particle.publish() and a Webhook over to the custom server.

The users will have their own credentials to login to our service(i.e., server) but not directly to the Particle Cloud. So from the Particle’s point-of-view, all requests will come through a single IP.

Will I hit API limits if I try to access multiple devices using Cloud API’s i.e., things like device diagnostics etc.?

Just trying to understand the design-side requirements from our server side.

Cheers

@rickkas7 might have thoughts/suggestions on this.

You could run into the API per-IP address request limit.

One way to solve this since you are making API requests on behalf of your clients is to queue them, and meter them out at a rate that’s under the limit.

If you have so many requests that the queueing delay would be too long, you could split the outgoing requests among multiple IP addresses.

Because the API request limit is enforced at the load balancer we don’t have a way to override on a per-account basis at this time, but is something we’re considering as a future enhancement.

1 Like

Thanks @rickkas7

Apologies for the delay, I understand.

This doesn’t affect publishes to a single IP via WebHooks I’m hoping?

Best

Correct - there is no limit to the number of requests to webhook host.

However there is a scoring system so if you fail to respond or throw errors in response to a webhook, you will be throttled, which is designed to prevent overloading the recipients of webhooks.

Is this 10 calls per second and there being no way to override it on a per-account basis still accurate? Is there anymore information somewhere about the rate limit? For example, how long it lasts before the limit is reset and any information from the JavaScript API that can tell us the current status of the limit? The ‘X-RateLimit-Remaining’ header or something similar? I don’t see this exposed anywhere.

The limit is somewhat higher than 10 calls per second, but it’s hard to predict exactly what it will be. It’s per public IP address making a connection to api.particle.io.

The best way to avoid the limit is to use HTTP/2. The limit is enforced upon initial connection, but with HTTP/2 you can make multiple API calls on a single TCP connection. The 2nd and subsequent calls on the same connection don’t count against the limit.