GET is free, POST is not
GET and DELETE are naturally idempotent: doing them twice is the same as once. POST is not. Any POST whose result you might retry needs an idempotency key so the server can recognise the repeat.
Key per attempt, not per call
The key identifies one logical attempt. Reuse it across retries of that attempt, but use a fresh key for a genuinely new action. A key that never changes turns every real submission into a no-op.