Retry
Zeplo automatically retries failed requests based on the max_attempts field set when enqueuing.
How it works
When you enqueue a request, set max_attempts to control how many times Zeplo will try to deliver it:
curl -X POST "https://v2-api.zeplo.io/queues/QUEUE_ID/enqueue" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"method": "POST",
"url": "https://your-api.com/webhook",
"body": "{\"event\": \"payment.completed\"}",
"max_attempts": 5
}'
With max_attempts: 5, Zeplo will make up to 5 total calls — 1 initial attempt plus 4 retries.
The default is 3 attempts if not specified.
Backoff
Retries use automatic exponential backoff. The delay between retries increases with each attempt, giving your endpoint time to recover from transient failures.
What is considered a failure?
A request attempt is considered failed if:
- The HTTP response status code is ≥ 400
- The request times out (30 second default)
- The target URL is unreachable (DNS failure, connection refused, etc.)
Final failure
After all attempts are exhausted, the request status is set to failed. You can monitor failed requests in the dashboard or get notified via webhooks.
Retry with schedules
When a schedule triggers a request, the max_attempts from the schedule’s request template applies to each individual execution. If one scheduled execution fails all its retries, the schedule continues — the next cron tick will create a fresh request.