## Connection Events

| Event | Description | Callback Parameters |
| --- | --- | --- |
| [connecting](https://docs.cognigy.com/click-to-call/sdk/event-reference/connecting) | SIP connection is starting. | `()` |
| [connected](https://docs.cognigy.com/click-to-call/sdk/event-reference/connected) | SIP connection established. | `()` |
| [disconnected](https://docs.cognigy.com/click-to-call/sdk/event-reference/disconnected) | SIP connection lost. | `()` |
| [registered](https://docs.cognigy.com/click-to-call/sdk/event-reference/registered) | SIP client registered successfully. | `()` |
| [unregistered](https://docs.cognigy.com/click-to-call/sdk/event-reference/unregistered) | SIP client unregistered. | `()` |

## Call Events

| Event | Description | Callback Parameters |
| --- | --- | --- |
| [ringing](https://docs.cognigy.com/click-to-call/sdk/event-reference/ringing) | Call is ringing (progress). | `(session: CallSession)` |
| [answered](https://docs.cognigy.com/click-to-call/sdk/event-reference/answered) | Call was answered by the remote party. | `(session: CallSession)` |
| [ended](https://docs.cognigy.com/click-to-call/sdk/event-reference/ended) | Call ended normally. | `(session: CallSession, endInfo: CallEndInfo)` |
| [failed](https://docs.cognigy.com/click-to-call/sdk/event-reference/failed) | Call failed to connect or was rejected. | `(session: CallSession, endInfo: CallEndInfo)` |
| [muted](https://docs.cognigy.com/click-to-call/sdk/event-reference/muted) | Local microphone was muted. | `(session: CallSession)` |
| [unmuted](https://docs.cognigy.com/click-to-call/sdk/event-reference/unmuted) | Local microphone was unmuted. | `(session: CallSession)` |

## Audio Events

| Event | Description | Callback Parameters |
| --- | --- | --- |
| [captureAudio](https://docs.cognigy.com/click-to-call/sdk/event-reference/capture-audio) | Remote audio stream is available for advanced processing. Requires `captureAudio: true` in the client config. | `(stream: MediaStream)` |
| [audioEnded](https://docs.cognigy.com/click-to-call/sdk/event-reference/audio-ended) | Remote audio stream ended. | `()` |

## Info Message Events

| Event | Description | Callback Parameters |
| --- | --- | --- |
| [infoSent](https://docs.cognigy.com/click-to-call/sdk/event-reference/info-sent) | Info message was sent successfully. | `(text: string, data: Record<string, any>)` |
| [infoReceived](https://docs.cognigy.com/click-to-call/sdk/event-reference/info-received) | Info message received from the remote party. | `(data: { originator: string, info: { body: string } })` |

## Transcription Events

| Event | Description | Callback Parameters |
| --- | --- | --- |
| [transcription](https://docs.cognigy.com/click-to-call/sdk/event-reference/transcription) | Transcription data received. | `(transcription: { originator: string; messages: { text: string }[] })` |

## Error Events

| Event | Description | Callback Parameters |
| --- | --- | --- |
| [error](https://docs.cognigy.com/click-to-call/sdk/event-reference/error) | An error occurred. | `(error: Error)` |

## Unsubscribing from Events

To remove an event listener, use [`client.off()`](https://docs.cognigy.com/click-to-call/sdk/api-reference/off) with the same event name and callback reference:

```
const onAnswered = (session) => {
  console.log('Call answered:', session.id);
};

// Subscribe
client.on('answered', onAnswered);

// Unsubscribe
client.off('answered', onAnswered);
```
