# Idempotency

> Retry writes safely with an Idempotency-Key.

Source: https://docs.tune.toys/developers/idempotency/ (updated 2026-11-01)

Project creation, saves and operations, publication, visibility, forks, library mutations and listing writes require an `Idempotency-Key` of 1 to 128 characters.

- A receipt is scoped to the account and the canonical request, including the action and the project or release identity.
- An exact retry returns the original result. Reusing a key with different input returns `409 IDEMPOTENCY_CONFLICT`.
- Owner and access checks still run before a result is replayed.
- **Keep the original key when a connection fails before you know whether the write succeeded.** Generate a new key only for a new intent.

Writes that change a versioned resource also take an `expectedVersion` (or revision). Idempotency protects retries; versions protect against overwriting someone else's change.
