Safe retries
A retry is safe when:
- The request carries an
Idempotency-Key. - The request body is byte-identical to the original.
- You retry within 24 hours.
If all three hold, Permissio returns the original response — same status code, same body, same headers — without performing the side effect a second time. The replay carries an extra response header:
Idempotent-Replayed: true
Use that header to confirm the work was deduped rather than re-run.
If the body differs, Permissio returns 409 idempotency_conflict. If the original request is still in flight, Permissio returns 425 idempotency_in_progress; wait briefly (a second or two) and retry. See Errors → Idempotency.