Skip to main content
View as Markdown

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 ClassType ValueServiceDescription
KalturaMediaEntry1mediaVideo, audio, or image — transcoded into playable renditions (flavors)
KalturaLiveStreamEntry7liveStreamLive broadcast entry with streaming endpoints
KalturaPlaylist5playlistOrdered collection of entries (playlistType: 3=static list, 10=dynamic filter)
KalturaDataEntry6dataArbitrary file storage — served as-is, no transcoding
KalturaDocumentEntry10documents_documentsPDF, 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 TypeServiceDescription
Flavor assetflavorAssetA 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 assetthumbAssetA thumbnail image. The default is auto-generated; additional thumbnails can be uploaded or captured from a video frame.
Caption assetcaption_captionAssetA subtitle/caption file (SRT, VTT, DFXP). Can be uploaded manually or generated by REACH AI services.
Attachment assetattachment_attachmentAssetA 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"