> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.twelvelabs.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.twelvelabs.io/_mcp/server.

# Upload and processing methods

> Learn how to upload or import content to the platform and choose the processing mode based on content duration.

When providing content to the platform, you can upload or import it as a reusable asset, or pass it inline. For embeddings and video analysis, you also choose a processing mode based on the duration of your file.

# Upload methods

You can provide content to the platform in two ways:

| Method | Description                                                                                                     | Use for                          |
| ------ | --------------------------------------------------------------------------------------------------------------- | -------------------------------- |
| Assets | Creates a reusable resource with a unique identifier. You can reference your assets across multiple operations. | Search, analysis, and embeddings |
| Inline | Provides content inline through a URL or base64-encoded data. You cannot reuse this content                     | Analysis and embeddings          |

When providing a URL, use direct links to raw media files. Video hosting platforms and cloud storage sharing links are not supported.

## Assets

When you upload or import content as an asset, you can use one of the following methods:

| Method            | Content                                 | Limit                                                                                   | Reference                                                                                                                                                                                                                         |
| ----------------- | --------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Direct uploads    | Video, audio, and images                | Video and audio: up to 200 MB (local files) or 4 GB (public URLs). Images: up to 32 MB. | [Python SDK](/v1.3/sdk-reference/python/upload-content/direct-uploads) \| [Node.js SDK](/v1.3/sdk-reference/node-js/upload-content/direct-uploads) \| [API Reference](/v1.3/api-reference/upload-content/direct-uploads)          |
| Multipart uploads | Video, audio, and images (local files)  | Video and audio: up to 10 GB. Images: up to 32 MB.                                      | [Python SDK](/v1.3/sdk-reference/python/upload-content/multipart-uploads) \| [Node.js SDK](/v1.3/sdk-reference/node-js/upload-content/multipart-uploads) \| [API Reference](/v1.3/api-reference/upload-content/multipart-uploads) |
| Data connectors   | Video, audio, and images (Google Drive) | Video: up to 10 GB. Audio: up to 4 GB. Images: up to 32 MB.                             | [Python SDK](/v1.3/sdk-reference/python/data-connectors) \| [Node.js SDK](/v1.3/sdk-reference/node-js/data-connectors) \| [API Reference](/v1.3/api-reference/data-connectors)                                                    |

Direct uploads are processed asynchronously. Every upload returns `status: processing`; poll the status of the asset until it is `ready` before you use the asset.

Use multipart uploads for larger local video and audio files.

The limits above apply when you upload or import content. Each model applies its own file size and duration limits. For details, see the [Marengo](/v1.3/docs/concepts/models/marengo#video-file-requirements) and [Pegasus](/v1.3/docs/concepts/models/pegasus#input-requirements) requirements.

## Inline

Provide content inline in the request for one-time embedding generation. You cannot reuse this content across multiple operations.

| Method | Limit                                       |
| ------ | ------------------------------------------- |
| URL    | 4 GB                                        |
| Base64 | 36 MB for video and audio, 32 MB for images |

# Processing modes

Choose a processing mode based on the type and duration of your content. Both modes support all input methods (asset ID, URL, and base64).

## Analyze videos

| Mode  | Limit         | Reference                                                                                                                                                                                                                            |
| ----- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Sync  | Up to 1 hour  | [Python SDK](/v1.3/sdk-reference/python/analyze-videos/sync-analysis) \| [Node.js SDK](/v1.3/sdk-reference/node-js/analyze-videos/sync-analysis) \| [API Reference](/v1.3/api-reference/analyze-videos/analyze)                      |
| Async | Up to 2 hours | [Python SDK](/v1.3/sdk-reference/python/analyze-videos/async-analysis) \| [Node.js SDK](/v1.3/sdk-reference/node-js/analyze-videos/async-analysis) \| [API Reference](/v1.3/api-reference/analyze-videos/create-async-analysis-task) |

The synchronous mode returns results immediately. The asynchronous mode creates an analysis task that you poll until processing completes. Streaming responses are only available with the synchronous mode.

## Create embeddings

| Mode  | Content type | Limit                 | Reference                                                                                                                                                                                                                                                                   |
| ----- | ------------ | --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Sync  | Video, audio | Up to 10 minutes      | [Python SDK](/v1.3/sdk-reference/python/create-embeddings-v-2/create-sync-embeddings) \| [Node.js SDK](/v1.3/sdk-reference/node-js/create-embeddings-v-2/create-sync-embeddings) \| [API Reference](/v1.3/api-reference/create-embeddings-v2/create-embeddings)             |
| Sync  | Images       | Up to 32 MB           | [Python SDK](/v1.3/sdk-reference/python/create-embeddings-v-2/create-sync-embeddings) \| [Node.js SDK](/v1.3/sdk-reference/node-js/create-embeddings-v-2/create-sync-embeddings) \| [API Reference](/v1.3/api-reference/create-embeddings-v2/create-embeddings)             |
| Async | Video, audio | 10 minutes to 4 hours | [Python SDK](/v1.3/sdk-reference/python/create-embeddings-v-2/create-async-embeddings) \| [Node.js SDK](/v1.3/sdk-reference/node-js/create-embeddings-v-2/create-async-embeddings) \| [API Reference](/v1.3/api-reference/create-embeddings-v2/create-async-embedding-task) |

The synchronous mode returns results immediately. The asynchronous mode creates an embedding task that you poll until processing completes.

# Search content

To search content, upload or import your files as assets.