Send one event to the chat and receive a streaming JSON array of events in response.
Only one send-event request should be in flight per chat at a time — disable user input until the stream completes. The backend will hold the connection open for up to 60 seconds; clients should match this with an AbortController to avoid stalled connections locking the UI.
The response stream includes the same user event that the client sent. If the UI already rendered that message optimistically, ignore the streamed copy with the same id to avoid showing the shopper's message twice.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
400Bad Request — invalid event format or missing required field.
404Not Found — unknown projectId, personaId, or chatId.
429Too Many Requests — rate limit exceeded. Back off before retrying.
500Internal Server Error — backend error.

