When it fires
You sent aclientRequestId in the body of POST /v1/trades that you already used for an earlier trade with a different body. Once you opt in, a clientRequestId is unique per user.
Why it happens
clientRequestIdis a body field with stricter semantics than theIdempotency-Keyheader: it deduplicates against your trade history and does not expire. Most callers only need the header.- A bug rebuilt the body but kept the same
clientRequestId.
How to fix
- For most use cases, rely on
Idempotency-Keyalone. See Idempotency. - If you use
clientRequestId, generate a fresh value for each logical trade. - The
detailfield references the earlier trade. Fetch it withGET /v1/trades/{id}to see what was submitted.
Related codes
IDEMPOTENCY_KEY_CONFLICT— the same conflict on the header