---
title: Transcripts
url: https://docs.kaltura.com/docs/rich-media-cms-apis/content-management/captions-transcripts
---

## Transcripts


### Transcript vs Caption

- **Caption (KalturaCaptionAsset):** Timed text segments with start/end timestamps. Displayed as subtitles during playback.
- **Transcript (TranscriptAsset):** Full text document derived from the audio track. Extends `TextualAttachmentAsset` (separate from CaptionAsset). Linked to caption assets via the `associatedTranscriptIds` field.

In practice, REACH-generated captions serve as both: the timed segments display as subtitles, and the full text is available for search and download.

### Machine Transcription via REACH

Order automatic speech recognition (ASR) via REACH:


```bash
curl -X POST "$KALTURA_SERVICE_URL/service/reach_entryVendorTask/action/add" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "entryVendorTask[objectType]=KalturaEntryVendorTask" \
  -d "entryVendorTask[entryId]=$KALTURA_ENTRY_ID" \
  -d "entryVendorTask[reachProfileId]=$REACH_PROFILE_ID" \
  -d "entryVendorTask[catalogItemId]=$ASR_CATALOG_ITEM_ID"
```


- **serviceFeature:** `1` (CAPTIONS)
- **serviceType:** `2` (MACHINE)
- **Accuracy:** ~83-87%
- **Turnaround:** Near-instant (minutes)

See REACH API for full REACH task configuration.

### Human Transcription via REACH

Order professional human transcription:

- **serviceFeature:** `1` (CAPTIONS)
- **serviceType:** `1` (HUMAN)
- **Accuracy:** 99%+
- **Turnaround:** 3-72 hours depending on vendor and turnaround tier
- **Vendors:** Professional human transcription vendors available through the REACH marketplace

### Transcript Alignment via REACH

Upload existing text and let REACH align it to the audio timeline:

- **serviceFeature:** `1` (CAPTIONS)
- Provide the text via the task's `inputMetadata` field
- REACH syncs text to audio, creating timed caption segments

### Checking Task Status


```bash
curl -X POST "$KALTURA_SERVICE_URL/service/reach_entryVendorTask/action/getJobs" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "filter[objectType]=KalturaEntryVendorTaskFilter" \
  -d "filter[entryIdEqual]=$KALTURA_ENTRY_ID"
```


**Task status flow:**

| Value | Name | Description |
|-------|------|-------------|
| 8 | PENDING_ENTRY_READY | Waiting for entry to reach READY status |
| 1 | PENDING | Queued for processing |
| 3 | PROCESSING | Being transcribed |
| 2 | READY | Complete |
| 6 | ERROR | Processing failed |

With moderation enabled: `PENDING_MODERATION` (4) requires explicit approve/reject before delivery.

### Output

When a REACH task completes, it creates a `KalturaCaptionAsset` attached to the entry automatically. The `outputObjectId` on the completed task references the created caption asset ID. The caption is set as default if no default exists.

### Custom Vocabulary

REACH supports custom dictionaries for domain-specific terminology. Configure vocabulary lists in the REACH profile to improve accuracy for specialized content (medical, legal, technical terms). See REACH API for dictionary management.
