Skip to main content

Retry behavior

A webhook delivery is considered successful when your endpoint returns a 2xx status within Permissio's request timeout. Any other outcome triggers a retry.

The exact retry schedule (intervals, attempt count, dead-letter behavior) is owned by the Permissio API team and not yet documented in the public surface. Until it is, treat the schedule as opaque and at-least-once:

  • Build handlers that are idempotent. Use Permissio-Delivery-Id as the dedup key.
  • Do not assume any specific retry interval. Plan for the same event ID arriving more than once, even after a long gap.
  • For an authoritative breakdown of retries, intervals, and dead-letter behavior, contact the API team — that documentation has not yet shipped.

The t= value in Permissio-Signature is generated fresh for every send, including retries — a retried delivery carries a new t and a new signature, so a 5-minute freshness window will still accept it. For deduplication, use Permissio-Delivery-Id — it stays the same across every retry of the same delivery row, so handlers can dedupe on it safely — rather than t.