Idempotency key reused
idempotency_key_reused
This Idempotency-Key has been seen before, attached to a DIFFERENT request body. One key means one request, so replaying it with new content is refused rather than quietly doing new work under an old key.
Why it happens
A key generated once and reused across a loop instead of once per logical request — or a body that changed between attempts. The fingerprint is taken over the raw bytes you sent, so re-serializing the same object with its fields in a different order, or with a regenerated timestamp inside, counts as a different body.
How to fix it
Send a fresh key — a UUID per logical request — for new content. If you meant to retry, resend the byte-identical body you sent the first time, which returns the original response instead of generating again.
Safe to retry?
Not with this key. Change the key, or restore the original body.
What it looks like on the wire
{
"type": "https://voicelabs.now/errors/idempotency_key_reused",
"title": "Idempotency key reused",
"status": 422,
"detail": "A human-readable explanation of this particular occurrence.",
"instance": "/v1/speech",
"code": "idempotency_key_reused"
}
Branch on code, never on status or on the prose in detail: two different problems can share a status, and detail is written for humans and may be reworded. Problems a settings page can resolve also carry settings_url, and a scope failure carries required_scope.
Every VoiceLabs API error is an RFC 9457 problem document with a stable code.