Tours & Events
Conventions

Idempotency & retries

Which methods are safe to retry, and what isn't

Safe by HTTP method

MethodSafe to retry?Notes
GETYesAlways idempotent.
DELETEYesDeleting an already-deleted resource returns 404, which is safe to ignore.
PATCHUsuallyMost PATCHes set fields to absolute values, so re-applying the same payload is harmless.
PUTYesReplaces the resource — re-applying is a no-op.
POSTNoCreation endpoints will create duplicate resources on retry.

Idempotency-Key header

The API does not currently honour an Idempotency-Key request header. Tracked for a future release.

Until idempotency keys ship, follow these patterns for at-most-once delivery on POST:

  1. Generate the resource ID client-side where the endpoint allows it (e.g. external reference IDs on guests/expenses) — re-posting the same ID surfaces a 409 instead of creating a duplicate.
  2. Check before creatingGET with a filter, only POST if absent. Tolerates the race; pair with a unique constraint on the server.
  3. Use the bulk endpoints where available — bulk endpoints often dedupe server-side.

Retry budget

For automated retries on 5xx and 429:

  • Cap attempts at 5.
  • Exponential backoff: min(2^attempt, 60) seconds, with ±20% jitter.
  • Surface the failure after the budget is exhausted; do not retry forever.

On this page