Skip to content

Idempotency key invalid

FieldValue
Type URIhttps://echo.labstack.com/pro/problems/idempotency-key-invalid
Codeidempotency_key_invalid
HTTP status400
HTTP statusEnglish title
400Bad Request

The idempotency key header is invalid. It must be one field line of at most 300 bytes, containing one RFC 8941 string, such as "order-42", or one token. Execution rejects lists and repeated lines. Nothing was recorded, and the handler did not run.

Send the key once as a quoted string or token. Keep that value when retrying the operation.

If your application installs a custom handler, the body may differ.

HTTP/1.1 400 Bad Request
Content-Type: application/problem+json
Cache-Control: no-store
{
"code": "idempotency_key_invalid",
"operation_ref": "",
"operation_state": "",
"safe_new_key": false,
"status": 400,
"title": "Bad Request",
"type": "https://echo.labstack.com/pro/problems/idempotency-key-invalid"
}

Check that clients and proxies preserve one Idempotency-Key field line. Reject duplicate lines, lists and unsupported syntax.

  • type (string, always): The exact type URI above.
  • title (string, always): The HTTP status text.
  • status (integer, always): The HTTP status of the response.
  • code (string, always): The stable code above.
  • operation_ref (string, always): An opaque reference to the operation. It is set only after ReplayCheck allows the request, and is empty when no operation was found. Use it to look up the operation; it does not grant access.
  • operation_state (string, always): started, uncertain, completed or failed; empty when no operation was found.
  • safe_new_key (boolean, always): true only when the client may retry with a new key. It is always false when operation_ref and operation_state are empty.

Headers:

  • Cache-Control (always): no-store on every execution problem.

Notes:

  • Execution removes any Idempotent-Replayed header from problem responses.

See execution for operation state and replay rules.