Skip to main content
Every failure the SDK reports, whether thrown as a CuriousError, carried in a decision result’s error, or passed to onError, is a CuriousErrorSummary:
decide() reports through the result; identify(), declare() and bad arguments throw; events report through onError and the flush summary.

Codes

A 409 that is none of the above (the active-arm limit) is invalid_input.

Retry behaviour

The SDK never retries decide(). It retries event batches and identify() on timeout, network_error, rate_limited (after Retry-After) and server_error, up to eventMaxAttempts, always under the same ids. Everything else fails at once. The API-side rules are on Idempotency.

Redaction

Messages are bounded to 300 characters and never contain the key, a user id, identifiers, attributes, event properties, returned content or a raw response body, so they are safe to log as they are. The requestId is what support needs.