Retry Logic for HttpClient in Business Central AL: Handling 429 and 503 Errors
When you call an external API from Business Central using HttpClient , the happy path is easy. The hard part starts when the API returns 429 Too Many Requests or 503 Service Unavailable . A single failed call can break a posting routine, leave a sales order half-synced, or throw a raw error at the user. This post shows a clean, production-ready retry pattern in AL with exponential backoff. Why You Need Retry Logic Most modern APIs (payment gateways, WhatsApp Cloud API, shipping providers, Azure services) enforce rate limits. When you exceed them, the server responds with HTTP 429 and often a Retry-After header. Transient failures like 503 and 504 are also common under load. Without retry logic, your integration is only as reliable as the busiest second on the remote server. The Core Pattern The idea is simple: wrap the send call in a loop, catch retryable status codes, wait a growing interval between attempts, and give up after a maximum number of tries. codeunit 50120 ...