# EVENT_ID_CONFLICT

- Surface: API
- HTTP status: 409
- Details: `{ eventId: string }`

## Cause

The same `exposureId` (or other client-owned event id) was reused with a different payload than the one already accepted.

## Fix

Keep `exposureId` stable across retries of the same logical first read. Mint a new id only for a new first-read; never attach a different Exposure Ticket to an id that already sealed.

## Related

- [EXPOSURE_TICKET_INVALID](https://splitch.dev/docs/error/EXPOSURE_TICKET_INVALID)
- [IDEMPOTENCY_KEY_CONFLICT](https://splitch.dev/docs/error/IDEMPOTENCY_KEY_CONFLICT)

Source: https://splitch.dev/docs/error/EVENT_ID_CONFLICT