InvoiceHub DocsDocs

Rate Limits

To prevent abuse, Plato institutes a rate limit of a fixed number of API requests every minute for API usage. Each API request can fetch up to 20 records. (You can go to "System Setup" - "General Settings" - "API" to check your API rate limit.) This means that with an API limit of 20 req/min, you can fetch up to 576,000 records per day using Plato's API - for most databases, this should be sufficient for managing multiple integrations. These are in line with market standards for developer platforms.

If your database exceeds the rate limit, this will result in an HTTP 429 (too many requests) response. API also returns x-ratelimit-limit and x-ratelimit-remaining headers to help you manage your requests.

If your database truly do needs to go beyond Plato's rate limit - because your database is managing multiple integrations, or because your integrations are inefficient - you can upgrade your rate limits. Rate limits are in place to ensure equitable use of Plato's developer platform - heavy users help contribute to ensuring maintenance, and light/efficient users are rewarded for building their apps in a judicious way.

In addition to adhering to rate-limits, apps are required to adhere to Plato's terms of service, and are required to make efficient use Plato resources. Non-adherence to Plato's terms of service or misuse of Plato resources may result in a permanent ban from Plato's Developer Platform.


Can I get a higher rate limit?Copied!

Most apps should not require a higher rate limit - before upgrading your rate limit, ensure your app is pulling data from Plato in an efficient manner. All apps using Plato's API are required to follow best-practices listed below and implement an efficient linkage.

If your app genuinely needs a higher number of API calls to interact with Plato, you can purchase additional requests per-minute from "System Setup" - "General Settings" - "API".

Best practices for using Plato's APICopied!

  1. Use "modified_since" parameter to only query data that has been modified in the last X seconds. This will reduce the number of calls needed.

  2. Use central querying and caching. If you have multiple modules requesting for the same data - do cache that data locally.

  3. Track x-ratelimit-limit and x-ratelimit-remaining headers returned by Plato's API to throttle the requests.

  4. Use an exponential backoff strategy for requests that fail.