# ServerEvent

Source: https://docs.voice.kheelona.com/reference/sdk/type-aliases/serverevent/

> **ServerEvent** = [`SessionReadyEvent`](https://docs.voice.kheelona.com/reference/sdk/interfaces/sessionreadyevent.md) \| \{ `type`: `"state"`; `value`: `"listening"` \| `"thinking"` \| `"speaking"`; \} \| \{ `turn`: `number`; `type`: `"input.speech_started"`; \} \| \{ `turn`: `number`; `type`: `"input.speech_stopped"`; \} \| \{ `language`: `string`; `language_beta`: `boolean`; `language_stage`: [`LanguageStage`](https://docs.voice.kheelona.com/reference/sdk/type-aliases/languagestage.md); `text`: `string`; `turn`: `number`; `type`: `"transcript.final"`; \} \| \{ `reply_id`: `string`; `turn`: `number`; `type`: `"reply.started"`; \} \| \{ `emotion`: [`Emotion`](https://docs.voice.kheelona.com/reference/sdk/type-aliases/emotion.md); `index`: `number`; `reply_id`: `string`; `text`: `string`; `type`: `"reply.sentence"`; \} \| \{ `reason`: `string`; `reply_id`: `string`; `sentences_spoken`: `number`; `type`: `"reply.done"`; \} \| \{ `reply_id`: `string`; `type`: `"reply.paused"`; \} \| \{ `reply_id`: `string`; `type`: `"reply.resumed"`; \} \| \{ `heard_ms`: `number`; `reply_id`: `string`; `type`: `"interrupted"`; \} \| \{ `action`: `string`; `category`: `string`; `stage`: `string`; `turn`: `number`; `type`: `"safety"`; \} \| \{ `code`: `string`; `seconds_left`: `number`; `type`: `"session.warning"`; \} \| \{ `code`: [`ErrorCode`](https://docs.voice.kheelona.com/reference/sdk/type-aliases/errorcode.md); `fatal`: `boolean`; `message`: `string`; `retryable`: `boolean`; `type`: `"error"`; \} \| \{ `duration_ms`: `number`; `reason`: `string`; `turns`: `number`; `type`: `"session.ended"`; \} \| \{ `type`: `"pong"`; \}

Events the service sends (known fields only).
