---
title: Overview
url: https://docs.kaltura.com/docs/rich-media-cms-apis/content-management/upload-ingestion-overview
---

## Upload & Ingestion Overview

This guide covers the complete lifecycle of getting content into Kaltura: creating upload tokens, uploading files (including chunked/resumable transfers), creating media, document, and data entries, importing from URLs, copying entries, replacing content, and managing flavor assets and attachments.

**Base URL:** `$KALTURA_SERVICE_URL` (default: `https://www.kaltura.com/api_v3`)  
**Auth:** All requests require a valid KS (see [Session Guide](/docs/getting-started/authentication/ks-overview))  
**Format:** Form-encoded POST, `format=1` for JSON responses

### When to Use


| Scenario | What to Use |
|----------|-------------|
| **Media onboarding pipeline** — Ingest video, audio, or images from local storage | `uploadToken` + `media.add` + `media.addContent` with `KalturaUploadedFileTokenResource` |
| **CMS integration** — Programmatic upload with progress tracking and resume | Chunked `uploadToken.upload` with `resume=true` |
| **Bulk migration** — Move thousands of files from an existing library | `media.add` + `media.addContent` with `KalturaUrlResource`, or CSV `bulkUploadAdd` |
| **Content replacement** — Swap a video's source file without changing its entry ID | `media.updateContent` |
| **Entry cloning** — Duplicate an entry with all metadata and assets | `baseEntry.clone` (full deep copy with granular options) |
| **Clipping / trimming** — Extract a time segment from an existing video | `media.addContent` with `KalturaOperationResource` + `KalturaClipAttributes` |
| **Concatenation** — Combine segments from multiple videos into one | `media.addContent` with `KalturaOperationResources` (plural) |
| **Multi-bitrate ingest** — Upload pre-transcoded renditions without re-encoding | `media.addContent` with `KalturaAssetsParamsResourceContainers` |
| **SFTP import** — Pull files from secure servers with SSH key auth | `media.addContent` with `KalturaSshUrlResource` |
| **Remote storage** — Register content on external CDN/S3 without copying | `media.addContent` with `KalturaRemoteStorageResource` |
| **Document management** — Upload PDFs, slides, or Word docs for web viewing | `documents.addContent` with `KalturaDocumentEntry` |
| **Arbitrary file storage** — Store JSON, CSV, ZIP, or config files | `data.add` with `KalturaDataEntry` (type=6) |
| **Supplementary files** — Attach transcripts, slide decks, or data files to a video | `attachmentAsset.add` + `attachmentAsset.setContent` |
| **Automated post-upload processing** — Trigger captions, translation, or AI enrichment | Upload, then use Agents Manager or REACH rules |




### Prerequisites


- **Kaltura Session (KS):** ADMIN KS (type=2) for upload and entry management. See [Session Guide](/docs/getting-started/authentication/ks-overview).  
- **Partner ID and API credentials:** Available from KMC > Settings > Integration Settings.  
- **Service URL:** Set `$KALTURA_SERVICE_URL` to your regional endpoint (default: `https://www.kaltura.com/api_v3`).  
- **Permissions:** `CONTENT_MANAGE_BASE` permission for creating entries and uploading content.
