Rate Limiting

Rate limit is the maximum number of requests you can make to webMethods.io Integration in a span of one minute. The rate limit works at the tenant level and is applicable to manually run, trigger-enabled, and webhook-enabled workflows.

How Rate Limiting Works

webMethods.io Integration employs two different rate limiting mechanisms for workflows based on their type:

  1. Rate limiting for sync webhook-enabled workflows
  2. Rate limiting for manually run, trigger-enabled, and async webhook-enabled workflows

Rate limiting for sync webhook-enabled workflows

Sync webhook-enabled workflows are the ones which contain the Return Data on Sync Webhook action. This action is used to send the workflow output in the body of the webhook URL.

The webhook URL for sync webhook-enabled workflows looks similar to the one given below:

Rate limit condition for paid plans - Sync webhook-enabled workflows

Under paid plans, if you send execution requests for more than 1500 sync webhook-enabled workflows within a minute, the first 1500 requests will be processed while the rest of the requests will be rejected. In such a case, you will need to send the execution request for the rejected workflows again.

Rate limit condition for trial/unpaid plans - Sync webhook-enabled workflows

Under trial/unpaid plans, if you send execution requests for more than 30 sync webhook-enabled workflows within a minute, the first 30 requests will be processed while the rest of the requests will be rejected. In such a case, you will need to send the execution request for the rejected workflows again. When a workflow request is rejected, you will receive the following data in the response header. You can use these details to design your APIs accordingly and resend the execution requests.

"Retry-After": <retry_after_time>
"X-RateLimit-Limit": <total_requests_allowed>
"X-RateLimit-Remaining": <total_requests_remain>
"X-RateLimit-Reset": <next_limit_start_date>

Rate limiting for manually run, trigger-enabled, and async webhook-enabled workflows

The rate limiting mechanism for manually run, trigger-enabled, and async webhook-enabled workflows, that is, workflows that do not contain the Return Data on Sync Webhook action, varies from the sync-webhook enabled workflows.

Rate limit condition for paid plans - Manually run, trigger-enabled, and async webhook-enabled workflows

Under paid plans, if you send execution requests for more than 1500 manually run/trigger-enabled/async webhook-enabled workflows within a minute, the first 1500 requests will be processed while the rest of the requests will be kept on hold. Such workflows will have a Hold status against them in the Monitor > Workflow Execution screen.

Rate limit condition for trial/unpaid plans - Manually run, trigger-enabled, and async webhook-enabled workflows

Under trial/unpaid plans, if you send execution requests for more than 30 manually run/trigger-enabled/async webhook-enabled workflows within a minute, the first 30 requests will be processed while the rest of the requests will be kept on hold. Such workflows will have a Hold status against them in the Monitor > Workflow Execution screen.

Notes:

  • All workflow execution requests which are kept on hold will be automatically executed after some time.
  • Rate limit for async webhook-enabled workflows is not applicable to tenants which are assigned a dedicated queue.

Resuming workflows

You can also manually resume the execution of the workflows that did not complete execution due to some error and were not automatically re-executed. To do so, click the respective workflow name and then click the Resume button located at the upper-right corner of the execution log screen.

If you resume a workflow at a time when the rate limit is already reached, you will receive an error message along with the following data in the response header. You can use these details to design your APIs accordingly, and resend further execution requests.

"Retry-After": <retry_after_time>
"X-RateLimit-Limit": <total_requests_allowed>
"X-RateLimit-Remaining": <total_requests_remain>
"X-RateLimit-Reset": <next_limit_start_date>