---
title: Non-Media Entry Types
url: https://docs.kaltura.com/docs/rich-media-cms-apis/content-management/upload-ingestion-non-media-entry-types
---

## Non-Media Entry Types


### Document Entries (documents service)

Upload documents (PDF, DOCX, PPTX) using the `documents` service. Documents go through Kaltura's document conversion pipeline for web viewing.

| Action | Description |
|--------|-------------|
| `documents.addContent` | Attach content to a NO_CONTENT document entry |
| `documents.updateContent` | Replace document content |
| `documents.convert` | Trigger document conversion |
| `documents.get` | Get document entry |
| `documents.update` | Update document metadata |
| `documents.delete` | Delete document entry |
| `documents.list` | List document entries |
| `documents.serve` | Serve document file directly |
| `documents.serveByFlavorParamsId` | Serve a specific converted rendition |

**Document types (`documentType`):**

| Value | Name | Description |
|-------|------|-------------|
| 11 | DOCUMENT | General document (Word, PowerPoint, etc.) |
| 12 | SWF | Flash document |
| 13 | PDF | PDF document |


```bash
# Create a document entry and attach content
curl -X POST "$KALTURA_SERVICE_URL/service/baseEntry/action/add" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "entry[objectType]=KalturaDocumentEntry" \
  -d "entry[name]=Presentation Slides" \
  -d "entry[documentType]=11" \
  -d "entry[tags]=slides,training"

curl -X POST "$KALTURA_SERVICE_URL/service/documents_documents/action/addContent" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "entryId=$DOC_ENTRY_ID" \
  -d "resource[objectType]=KalturaUploadedFileTokenResource" \
  -d "resource[token]=$UPLOAD_TOKEN_ID"
```


**Business scenario -- slide sync:** A university uploads PPTX presentations that are automatically converted for web viewing and can be synchronized with recorded lectures using the [Chapters & Slides API](/docs/embeddable-kaltura-products/kaltura-player/chapters-slides).

### Data Entries (data service)

Upload any file type as a data entry. Data entries are stored and served as-is without transcoding.

| Action | Description |
|--------|-------------|
| `data.add` | Create a data entry (status is immediately READY) |
| `data.addContent` | Set text/XML content on an existing entry |
| `data.get` | Get data entry |
| `data.update` | Update data entry metadata |
| `data.delete` | Delete data entry |
| `data.list` | List data entries |
| `data.serve` | Serve data content as file download |


```bash
curl -X POST "$KALTURA_SERVICE_URL/service/baseEntry/action/add" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "entry[objectType]=KalturaDataEntry" \
  -d "entry[type]=6" \
  -d "entry[name]=Configuration File" \
  -d "entry[tags]=config,json"

curl -X POST "$KALTURA_SERVICE_URL/service/baseEntry/action/addContent" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "entryId=$DATA_ENTRY_ID" \
  -d "resource[objectType]=KalturaUploadedFileTokenResource" \
  -d "resource[token]=$UPLOAD_TOKEN_ID"
```


Set `conversionProfileId=-1` to skip transcoding for data entries.

**Business scenario -- configuration storage:** A video platform stores per-player configuration JSON as data entries, versioned alongside the media they configure.

### Choosing the Right Entry Type

| File Type | Service | Entry Object | Transcoded? | Delivered Via |
|-----------|---------|-------------|-------------|--------------|
| Video, audio, image | `media` | `KalturaMediaEntry` | Yes | playManifest (HLS/DASH) |
| PDF, Word, PowerPoint | `documents` | `KalturaDocumentEntry` | Converted for web | documents.serve |
| Any other file | `baseEntry` | `KalturaDataEntry` (type=6) | No | Raw serve URL |
| Supplementary file on a media entry | `attachmentAsset` | `KalturaAttachmentAsset` | No | attachmentAsset.serve |
