Start here. This is the direct spoken answer to practice first.
Why this question matters
A client can lose the response after the server commits. Retry safety therefore depends on remembering the logical operation and its outcome, not on hoping the client submits only once.
I require a client-generated idempotency key for a POST whose duplicate effect would matter. The server scopes it to the caller and operation, stores it with a fingerprint of the meaningful request, and creates the business record atomically with the key. A retry with the same key and request returns the original status and result. Reusing the key with different input is rejected, so one key cannot silently represent two operations.