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

# Transcription events

> Events for transcription lifecycle — start, stop, new transcription messages, and errors.

***

## transcription-started

Fires for all participants when transcription starts.

<ResponseField name="action" type="string">
  Always `"transcription-started"`.
</ResponseField>

<ResponseField name="callClientId" type="string">
  The ID of the call client instance that emitted this event.
</ResponseField>

<ResponseField name="instanceId" type="string">
  Unique ID for this transcription instance.
</ResponseField>

<ResponseField name="transcriptId" type="string">
  Optional ID of the resulting transcript.
</ResponseField>

<ResponseField name="language" type="string">
  Language code passed to Deepgram (e.g. `'en'`).
</ResponseField>

<ResponseField name="model" type="string">
  The Deepgram model in use (e.g. `'general'`).
</ResponseField>

<ResponseField name="tier" type="string">
  Optional Deepgram tier.
</ResponseField>

<ResponseField name="profanity_filter" type="boolean">
  Optional. Whether profanity filtering is enabled.
</ResponseField>

<ResponseField name="redact" type="Array | boolean">
  Optional redaction configuration.
</ResponseField>

<ResponseField name="endpointing" type="number | boolean">
  Optional endpointing setting.
</ResponseField>

<ResponseField name="punctuate" type="boolean">
  Optional. Whether punctuation is added to transcriptions.
</ResponseField>

<ResponseField name="extra" type="object">
  Optional extra Deepgram parameters.
</ResponseField>

<ResponseField name="includeRawResponse" type="boolean">
  Optional. When `true`, `transcription-message` events include a `rawResponse` field with the raw Deepgram response.
</ResponseField>

<ResponseField name="startedBy" type="string">
  The `session_id` of the participant who started transcription.
</ResponseField>

```json theme={null}
// Example event object
{
  "action": "transcription-started",
  "callClientId": "16323425945550.36134184140203573",
  "instanceId": "a1f2f6b7-b1ac-4202-85e5-d446cb6c3d3f",
  "transcriptId": "transcript-abc123",
  "language": "en",
  "model": "general",
  "startedBy": "049ebba2-523b-4e6c-9a9f-1f8bb956670d"
}
```

***

## transcription-stopped

Fires for all participants when transcription stops.

<ResponseField name="action" type="string">
  Always `"transcription-stopped"`.
</ResponseField>

<ResponseField name="callClientId" type="string">
  The ID of the call client instance that emitted this event.
</ResponseField>

<ResponseField name="instanceId" type="string">
  ID of the transcription instance that stopped.
</ResponseField>

<ResponseField name="updatedBy" type="string">
  The `session_id` of the participant who stopped transcription.
</ResponseField>

```json theme={null}
// Example event object
{
  "action": "transcription-stopped",
  "callClientId": "16323425945550.36134184140203573",
  "instanceId": "a1f2f6b7-b1ac-4202-85e5-d446cb6c3d3f",
  "updatedBy": "049ebba2-523b-4e6c-9a9f-1f8bb956670d"
}
```

***

## transcription-message

Fires for all participants when a new transcription snippet is available.

<ResponseField name="action" type="string">
  Always `"transcription-message"`.
</ResponseField>

<ResponseField name="callClientId" type="string">
  The ID of the call client instance that emitted this event.
</ResponseField>

<ResponseField name="instanceId" type="string">
  Optional ID of the transcription instance.
</ResponseField>

<ResponseField name="participantId" type="string">
  The `session_id` of the participant who spoke.
</ResponseField>

<ResponseField name="trackType" type="string">
  Optional. Which track was transcribed: `'cam-audio'`, `'screen-audio'`, `'rmpAudio'`, or a custom track name.
</ResponseField>

<ResponseField name="text" type="string">
  The transcribed text.
</ResponseField>

<ResponseField name="timestamp" type="Date">
  When the transcription was produced.
</ResponseField>

<ResponseField name="rawResponse" type="object">
  Raw response from Deepgram. Only present when `includeRawResponse` was `true` when transcription started.
</ResponseField>

```json theme={null}
// Example event object
{
  "action": "transcription-message",
  "callClientId": "17026592880190.6408519754664044",
  "instanceId": "a1f2f6b7-b1ac-4202-85e5-d446cb6c3d3f",
  "participantId": "9c50d278-abb4-433e-a8b0-3964d363416a",
  "trackType": "cam-audio",
  "text": "Good morning.",
  "timestamp": "2023-12-15T16:55:02.000Z"
}
```

```javascript theme={null}
call.on('transcription-message', ({ participantId, text, timestamp }) => {
  appendTranscriptLine(participantId, text, timestamp);
});
```

***

## transcription-error

Fires for all participants when a transcription error occurs.

<ResponseField name="action" type="string">
  Always `"transcription-error"`.
</ResponseField>

<ResponseField name="callClientId" type="string">
  The ID of the call client instance that emitted this event.
</ResponseField>

<ResponseField name="instanceId" type="string">
  ID of the transcription instance that errored.
</ResponseField>

<ResponseField name="errorMsg" type="string">
  Optional human-readable error description.
</ResponseField>

```json theme={null}
// Example event object
{
  "action": "transcription-error",
  "callClientId": "16323425945550.36134184140203573",
  "instanceId": "a1f2f6b7-b1ac-4202-85e5-d446cb6c3d3f",
  "errorMsg": "Transcription service unavailable"
}
```

***

## See also

<CardGroup>
  <Card title="Methods" icon="code" iconType="solid">
    * [startTranscription()](/reference/react-native/instance-methods/start-transcription)
    * [stopTranscription()](/reference/react-native/instance-methods/stop-transcription)
  </Card>

  <Card title="Guides" icon="book-open" iconType="solid">
    * [Events](/docs/daily-js/concepts/events)
    * [Transcription](/docs/daily-js/features/transcription)
  </Card>
</CardGroup>
