Developers

Integration guidelines

To ensure a consistent and robust service for our shared clients, we require our technical partners to adhere to the following guidelines when integrating their services and solutions with Agillic.

If you have any doubts or technical questions regarding these guidelines, please contact our technical support before proceeding.

Rate limiting

The Agillic Rest API is rate limited. This means we impose certain limits on the API, per production instance, per day. We reserve the right to adjust the rate limit for the given endpoints in order to provide a high quality of service for all customers.

The rate limit enforces the following restrictions on production instances:

  1. Daily Cap on API calls: 5x times as many API calls as Active Recipients.
  2. Concurrent Call Limit: Maximum of 20 concurrent API calls
  3. Max Payload Size: Capped at 20MBs.

Exceeding this limit will result in Agillic applying backpressure to inform callers to regulate the flow of requests. Backpressure is indicated by the API returning an HTTP status code 429. If the API returns status code 429, no changes have been made and the call can be retried safely later.

API Requests

To avoid backpressure and to make a robust solution in case of network problems, temporary unavailability, upgrades, and timeouts, you must implement measures to handle the failed requests. This can be achieved by one or more of the following mechanisms :

Batch Processing

Batch resource handling is created for fast and efficient execution of the same operation over an entire set of resources. The efficiency of using batch operations can vary depending on the complexity and size of the batch.

Instead of calling an endpoint multiple times for every resource, you should call an endpoint once, with a set of resources. This way, the overhead of creating and executing multiple HTTP requests is mitigated.

An upper hard limit on batch sizes of 1000 entries is applied.

Connection Pooling

To reduce protocol overhead and latency you should use connection pooling with reuse of persistent connections.

Asynchronous Calls

To improve performance and responsiveness, use asynchronous API calls whenever possible. Utilize callback options available for success, failure, or both.

Examples of good integrations:

Examples of poor integrations: