Skip to main content

Retry Policy

Recho retries failed deliveries automatically with exponential backoff.

Attempts and intervals

  • Initial attempt + up to 5 retries = up to 6 attempts total.
  • Retry intervals (exponential backoff): 0.25s → 0.75s → 2.25s → 6.75s → 20.25s.
  • Total wait time: about 30 seconds.

Retried statuses

  • HTTP status codes: 408 (Request Timeout), 429 (Too Many Requests), 500, 502, 503, 504.
  • Network timeouts.
  • On 429, if the response includes a Retry-After header, that value is used instead (with a 1-second floor).

Not retried

  • Persistent errors such as HTTP 400 (Bad Request), 401 (Unauthorized), 403 (Forbidden), 501 (Not Implemented).
  • Logic errors on the receiver side are treated as immediate failures and logged.

After max attempts

  • The delivery is recorded as a final failure (no automatic resend).
  • If your receiver may be down for extended periods, implement your own resend mechanism or reach out to Recho for a manual resend.