409 means the request conflicts with current state. The error code and the message say which conflict.
No live experiment for element
declare from a setup step or your server, then the browser call succeeds. The server SDK reports this as undeclared_element.
Identity conflicts with an existing user
identify call contradicts an existing link, typically an anonymous_id already linked to a different user_id. The usual cause is reusing an anonymous id after logout, so the next account on the device collides with the previous one. Mint a fresh anonymous id on logout and resolve the collision on your side; Curious does not guess. See Identify users.
Experiment already has 50 active arms
arms.
Identity changed during selection; retry the request
identify call while this decision was selecting an arm. This is the one retryable 409, and the only one with the code lock_timeout: retry the same request once. The server SDK reports it as lock_timeout with retryable: true.
idempotency_key was already used with a different request
mutation_drift. See Idempotency.