Delay

You can delay a request so it executes after a specified time. This works for both the v2 REST API and the legacy zeplo.to proxy.

REST API

Set the delay field (in seconds) when enqueuing a request:

curl -X POST "https://api.zeplo.io/queues/enqueue" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "method": "POST",
    "url": "https://your-api.com/send-reminder",
    "body": "{\"user_id\": 42}",
    "delay": 1800
  }'

This will execute the request after 30 minutes (1800 seconds).

Headers

You can also set delay via request headers. This is useful when you can’t modify the JSON body.

Header Description
X-Zeplo-Delay Delay in seconds
X-Zeplo-Delay-Until Unix timestamp to delay until

Precedence: body delay > X-Zeplo-Delay header > X-Zeplo-Delay-Until header.

# Delay 60 seconds via header
curl -X POST "https://api.zeplo.io/queues/enqueue" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Zeplo-Delay: 60" \
  -H "Content-Type: application/json" \
  -d '{
    "method": "POST",
    "url": "https://your-api.com/webhook"
  }'

# Delay until a specific time via header
curl -X POST "https://api.zeplo.io/queues/enqueue" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Zeplo-Delay-Until: 1711900800" \
  -H "Content-Type: application/json" \
  -d '{
    "method": "POST",
    "url": "https://your-api.com/webhook"
  }'

zeplo.to Proxy (v1 compatible)

If you use the zeplo.to proxy, you can pass delay as URL query parameters:

Parameter Description
_delay Delay in seconds
_delay_until Unix timestamp to delay until

Precedence: _delay query param > X-Zeplo-Delay header > _delay_until query param > X-Zeplo-Delay-Until header.

# Delay 30 seconds
curl https://zeplo.to/https://your-api.com/webhook?_token=YOUR_TOKEN&_delay=30

# Delay until a specific unix timestamp
curl https://zeplo.to/https://your-api.com/webhook?_token=YOUR_TOKEN&_delay_until=1711900800

Examples

Use case delay
Send welcome email 5 min after signup 300
Reminder notification after 1 hour 3600
Delete temp data after 24 hours 86400
30-day account cleanup 2592000

How it works under the hood

  • ≤ 15 minutes — The request is held in the queue with a native delay. Execution is near-instant once the delay expires.
  • > 15 minutes — The request is scheduled via a one-time timer that fires at the exact delay time, then enqueues the request for immediate execution.

Both paths are handled automatically. You just set the delay and Zeplo picks the optimal routing.

Combining delay with retry

If a delayed request fails, retries begin immediately after the first execution attempt (not after another delay). The delay only applies to the initial execution.