Content Model - Getting Started
Content Model: Entries and Assets
Understanding Kaltura's content model helps agents choose the right API for each task. All content in Kaltura is organized around two core concepts: entries and assets.
Entries — The Content Container
An entry is a logical container that represents a single piece of content. It holds metadata (name, description, tags, categories) and links to one or more assets (files). Every entry has a unique id (e.g., 1_abc12345) and a type that determines its behavior.
Entry type hierarchy:
| Entry Class | Type Value | Service | Description |
|---|---|---|---|
KalturaMediaEntry | 1 | media | Video, audio, or image — transcoded into playable renditions (flavors) |
KalturaLiveStreamEntry | 7 | liveStream | Live broadcast entry with streaming endpoints |
KalturaPlaylist | 5 | playlist | Ordered collection of entries (playlistType: 3=static list, 10=dynamic filter) |
KalturaDataEntry | 6 | data | Arbitrary file storage — served as-is, no transcoding |
KalturaDocumentEntry | 10 | documents_documents | PDF, DOCX, PPTX — document conversion for web viewing |
KalturaMediaEntry is the most common type. It extends KalturaPlayableEntry, which adds playback-related fields (plays, views, duration, width, height). Data and document entries extend KalturaBaseEntry directly and have no playback fields.
Assets — The Files Inside an Entry
An asset is a file attached to an entry. Each entry can have multiple assets of different types:
| Asset Type | Service | Description |
|---|---|---|
| Flavor asset | flavorAsset | A transcoded rendition of the source video (e.g., 360p, 720p, 1080p). Created automatically by the conversion profile. The source file is also stored as a flavor (with isOriginal=true). |
| Thumbnail asset | thumbAsset | A thumbnail image. The default is auto-generated; additional thumbnails can be uploaded or captured from a video frame. |
| Caption asset | caption_captionAsset | A subtitle/caption file (SRT, VTT, DFXP). Can be uploaded manually or generated by REACH AI services. |
| Attachment asset | attachment_attachmentAsset | A supplementary file (PDF, JSON, etc.) linked to the entry. Shown as "Related Files" in the KMC. |
The relationship is one-to-many: one entry has many assets. Each asset has an entryId linking it to its parent entry.
Entry Lifecycle
A media entry progresses through these states:
media.add (creates empty entry, status=7 NO_CONTENT)
↓
media.addContent (attaches uploaded file to entry)
↓
Transcoding (status=4 PENDING — conversion profile creates flavors)
↓
Entry Ready (status=2 READY — all required flavors transcoded)
The conversion profile assigned to the entry determines which flavors to create and when the entry is considered READY (e.g., "ready when the lowest-bitrate flavor is done" vs "ready when all flavors are done").
Partial Updates
Update calls (media.update, baseEntry.update) apply partial updates — only the fields you include in the request are changed. Fields you omit are left unchanged. There is no need to get the entry before updating it.
# Only the tags field is updated — name, description, and all other fields remain unchanged
curl -X POST "$KALTURA_SERVICE_URL/service/media/action/update" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "entryId=$KALTURA_ENTRY_ID" \
-d "mediaEntry[tags]=updated,tags,here"