If you’re using Logic App Standard and trying to bulk resubmit failed runs (via API, portal, or custom tool), you may hit an undocumented, or less known fact, but very real limit:
Only 56 runs can be resubmitted every 5 minutes.
Why does this happens?
Each resubmit issues a call to the Logic App’s Request trigger via Azure’s management API.
These calls are controlled by internal Azure throttling to prevent overload or abuse.
The platform enforces a fair limit of 56 resubmit calls per workflow every 5 minutes.
What happens if you exceed it?
- You might get a
429 Too Many Requests
error. - Extra resubmits will not be processed.
- If unhandled, failed resubmits can go unnoticed.
A solution?
A practical workaround and one that could be a great feature in the Azure Portal is to use the callback URL instead of the built-in bulk resubmit mechanism, which is subject to throttling.
Instead of calling the Logic App’s Request trigger via the management API, you can retrieve the original trigger input like this:
GET
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/sites/{logicAppName}/hostruntime/runtime/webhooks/workflow/api/management/workflows/{workflowName}/runs/{runId}/trigger/inputs?api-version=2018-11-01
You can then POST that content directly to the callback URL, effectively replaying the run without hitting the 56-call throttle limit.
A native button in the Azure Portal to “Resubmit using original body” (via callback) would make this process smoother and help avoid silent failures caused by throttling.
The limitations?
Using the callback URL avoids the 56-run limit, but it’s not a true resubmit it creates a new run with a new ID. You’ll need to manually fetch the original payload, ensure your Logic App can handle duplicates, and secure the URL. It also requires custom tooling, since the Azure Portal doesn’t support this directly.
When this could be beneficial?
If a client wakes up to 10,000 failed Logic App runs, the current resubmit method limited to 56 runs every 5 minutes could take over 14 hours to recover. You’d need custom scripts, careful throttling, and still risk losing runs. A built-in option to replay runs via the callback URL with the original body would allow instant, parallel resubmission with no throttling, no extra tools, and much faster recovery.
Hope you find this helpful! If you enjoyed the content or found it useful and wish to support our efforts to create more, you can contribute towards purchasing a Star Wars Lego for Sandro’s son!