Skip to main content
View as Markdown

Entry CRUD Operations - Content Management

Entry CRUD Operations​

media.get -- Retrieve Entry Details​

POST /api_v3/service/media/action/get
ParameterTypeRequiredDescription
entryIdstringYesThe entry ID to retrieve
versionintNoSpecific version to retrieve (default: latest)
curl -X POST "$KALTURA_SERVICE_URL/service/media/action/get" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "entryId=$KALTURA_ENTRY_ID"

Poll for READY status after upload: After calling media.addContent, poll media.get until status reaches 2 (READY):

while true; do
STATUS=$(curl -s -X POST "$KALTURA_SERVICE_URL/service/media/action/get" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "entryId=$KALTURA_ENTRY_ID" | jq -r '.status')
echo "Status: $STATUS"
[ "$STATUS" = "2" ] && break
[ "$STATUS" = "-1" ] && echo "Transcoding failed" && break
[ "$STATUS" = "-2" ] && echo "Import failed" && break
sleep 5
done

media.list -- Search and Filter Entries​

POST /api_v3/service/media/action/list
ParameterTypeDescription
filter[objectType]stringKalturaMediaEntryFilter
filter[nameLike]stringPartial name match
filter[tagsMultiLikeOr]stringMatch any of these comma-separated tags
filter[mediaTypeEqual]int1=Video, 2=Image, 5=Audio
filter[statusEqual]intFilter by entry status (e.g., 2 for READY)
filter[createdAtGreaterThanOrEqual]intUnix timestamp -- entries created after
filter[createdAtLessThanOrEqual]intUnix timestamp -- entries created before
filter[orderBy]stringSort order (e.g., -createdAt, +plays)
pager[pageSize]intResults per page (max 500)
pager[pageIndex]intPage number (1-based)
curl -X POST "$KALTURA_SERVICE_URL/service/media/action/list" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "filter[objectType]=KalturaMediaEntryFilter" \
-d "filter[tagsMultiLikeOr]=api,upload" \
-d "filter[statusEqual]=2" \
-d "pager[pageSize]=30" \
-d "pager[pageIndex]=1"

Results beyond 10,000 total are not pageable. Use createdAtGreaterThanOrEqual date windowing to iterate large datasets.

media.count -- Count Matching Entries​

POST /api_v3/service/media/action/count

Same filter parameters as media.list. Returns an integer count.

media.update -- Update Entry Metadata​

POST /api_v3/service/media/action/update
ParameterTypeRequiredDescription
entryIdstringYesEntry ID to update
mediaEntry[objectType]stringYesKalturaMediaEntry
mediaEntry[name]stringNoUpdated name
mediaEntry[description]stringNoUpdated description
mediaEntry[tags]stringNoUpdated comma-separated tags
mediaEntry[referenceId]stringNoExternal reference ID

Only include the fields you want to change -- omitted fields remain unchanged (partial update).

curl -X POST "$KALTURA_SERVICE_URL/service/media/action/update" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "entryId=$KALTURA_ENTRY_ID" \
-d "mediaEntry[objectType]=KalturaMediaEntry" \
-d "mediaEntry[name]=Updated Title" \
-d "mediaEntry[tags]=updated,production"

media.delete -- Delete an Entry​

POST /api_v3/service/media/action/delete

Deletion is soft-delete (status changes to 3 = DELETED). The entry can be recovered from the recycle bin for a limited time.

curl -X POST "$KALTURA_SERVICE_URL/service/media/action/delete" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "entryId=$KALTURA_ENTRY_ID"

media.convert -- Trigger Transcoding​

POST /api_v3/service/media/action/convert
ParameterTypeDescription
entryIdstringEntry ID
conversionProfileIdintTranscoding profile to use (optional; uses account default)

Triggers conversion on an existing entry. Useful after changing the transcoding profile or when you need additional renditions.