> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cognigy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# transcription

Emitted when transcription data is received during a call. Transcription messages are automatically separated from regular [`infoReceived`](/click-to-call/sdk/event-reference/info-received) events.

## Category

Transcription

## Callback Parameters

| Parameter       | Type     | Description                                                                                           |
| --------------- | -------- | ----------------------------------------------------------------------------------------------------- |
| `transcription` | `object` | The transcription data extracted from the `_transcription` property of the incoming SIP INFO message. |

The transcription object typically has the following structure (depending on your Voice Gateway configuration):

| Property     | Type                 | Description                                                                  |
| ------------ | -------------------- | ---------------------------------------------------------------------------- |
| `originator` | `string`             | Indicates the source of the transcription, for example, `'user'` or `'bot'`. |
| `messages`   | `{ text: string }[]` | Array of message objects, each containing a `text` field.                    |

## Example

```typescript theme={null}
client.on('transcription', (transcription) => {
  const speaker = transcription.originator === 'user' ? 'User' : 'Bot';
  transcription.messages.forEach((message) => {
    console.log(`${speaker}: ${message.text}`);
  });
});
```

<Note>
  If an incoming info message contains a `_transcription` property, it is emitted only as a `transcription` event — not as an [`infoReceived`](/click-to-call/sdk/event-reference/info-received) event.
</Note>

## Transcription Filtering

The SDK automatically separates transcription data from regular info messages. No additional configuration is needed — the filtering is handled automatically:

* **`transcription` event**: Receives only messages that contain a `_transcription` property.
* **`infoReceived` event**: Receives all other info messages.

This means you can listen to both events independently without worrying about duplicates.

## More Information

* [infoReceived](/click-to-call/sdk/event-reference/info-received)
* [Types](/click-to-call/sdk/api-reference/types#transcription-data)
