Skip to main content
When your endpoint doesn’t respond 2xx within 10 seconds, the gavAI dispatcher retries the delivery on a fixed exponential schedule. After enough consecutive deliveries have exhausted all their retries, a circuit breaker opens and pauses traffic to that endpoint for an hour. This page is the spec for both behaviors — the exact schedule, what counts as failure, and what to do when the breaker trips. By the end you’ll know how long you have to recover from an outage before deliveries start getting dropped.

A delivery’s lifecycle

A single delivery (whd_01H...) walks this graph. Each transition through Pending → Retrying → Pending is one retry attempt, and the dispatcher gives up after the sixth attempt fails. Exhausted deliveries are recorded in the delivery log but not re-attempted automatically — you can replay them from the console for up to 7 days.

The retry schedule

A single event gets up to 6 delivery attempts. The delay before each attempt is fixed: End to end, a single delivery has roughly 1 hour 6 minutes from initial dispatch to the final attempt. That’s your maximum recovery window for a transient outage. Anything longer and the dispatcher gives up on that specific delivery — though new events keep flowing, see the circuit breaker below.

What counts as a delivery failure

The dispatcher treats any of these as a failed attempt and schedules the next retry: A 2xx is the only thing that closes the delivery successfully — including 204 No Content and 202 Accepted. Return whatever 2xx is most truthful for your handler.

The circuit breaker

Six attempts on a single event is one kind of failure. A persistently broken endpoint is a different kind, and the dispatcher handles it separately so one bad endpoint can’t burn the retry queue for the whole workspace. After 5 consecutive deliveries each exhaust all 6 attempts (5 × 6 = 30 total failed attempts) on the same subscription, the circuit breaker opens. While it’s open: The 1-hour cool-down is deliberate — it gives a deploy or cert renewal time to land without you having to chase a button to re-enable the subscription.

Recovering from an open breaker

Dropped-during-breaker events are gone from the delivery pipeline. The audit log keeps them, but you have to ask for them — there is no automatic replay. Decide ahead of time whether your handler is the kind that needs reconciliation, and write the reconciliation script before you need it at 2 a.m.

Operating the endpoint

Where to next