---
title: Entry CRUD Operations
url: https://docs.kaltura.com/docs/rich-media-cms-apis/content-management/upload-ingestion-entry-crud-operations
---

## 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) |


```bash
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):


```bash
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) |


```bash
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).


```bash
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.


```bash
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.
