📡 You're offline — showing cached content
New version available!
Quick Access
Tutorials API Design Idempotency Keys

Idempotency Keys

5 min read Quiz at the end
Idempotency keys prevent duplicate charges when clients safely retry failed POST requests.

Idempotency Keys

# Prevent duplicate operations on retry
POST /api/payments
Idempotency-Key: uuid-abc-123

# Server (Redis)
from redis import Redis
r = Redis()

def process_payment(key: str, amount: float):
    cached = r.get("idempotency:" + key)
    if cached:
        return json.loads(cached)  # same response
    result = do_charge(amount)
    r.setex("idempotency:" + key, 86400, json.dumps(result))
    return result

# Without idempotency: retry -> double charge!
# With idempotency: retry -> same result, no second charge