Idempotency keys let servers recognize retry requests and return cached results.
How it works:
Client generates unique ID (UUID) per operation
Include ID in request header: Idempotency-Key: abc123
Server checks if ID was processed before
If yes, return cached result. If no, process and cache.
Requirements:
- Keys unique per client per operation
- Cache results for retry window (e.g., hours)
- Same key must always mean same operation
Critical for payment APIs. Stripe, PayPal all support this.