Entry CRUD Operations - Content Management
Entry CRUD Operations
media.get -- Retrieve Entry Details
POST /api_v3/service/media/action/get
| Parameter | Type | Required | Description |
|---|---|---|---|
entryId | string | Yes | The entry ID to retrieve |
version | int | No | Specific 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
| Parameter | Type | Description |
|---|---|---|
filter[objectType] | string | KalturaMediaEntryFilter |
filter[nameLike] | string | Partial name match |
filter[tagsMultiLikeOr] | string | Match any of these comma-separated tags |
filter[mediaTypeEqual] | int | 1=Video, 2=Image, 5=Audio |
filter[statusEqual] | int | Filter by entry status (e.g., 2 for READY) |
filter[createdAtGreaterThanOrEqual] | int | Unix timestamp -- entries created after |
filter[createdAtLessThanOrEqual] | int | Unix timestamp -- entries created before |
filter[orderBy] | string | Sort order (e.g., -createdAt, +plays) |
pager[pageSize] | int | Results per page (max 500) |
pager[pageIndex] | int | Page 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
| Parameter | Type | Required | Description |
|---|---|---|---|
entryId | string | Yes | Entry ID to update |
mediaEntry[objectType] | string | Yes | KalturaMediaEntry |
mediaEntry[name] | string | No | Updated name |
mediaEntry[description] | string | No | Updated description |
mediaEntry[tags] | string | No | Updated comma-separated tags |
mediaEntry[referenceId] | string | No | External 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
| Parameter | Type | Description |
|---|---|---|
entryId | string | Entry ID |
conversionProfileId | int | Transcoding 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.