> This page is for version v1.3 (default).
> For other versions, use one of these documentation indexes:
> - v1.3 (default): https://docs.twelvelabs.io/v1.3/llms.txt

> 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 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. Image analysis supports both processing modes.

# 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 or supported documents. 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, images, and documents     | Video and audio: up to 200 MB (local files) or 4 GB (public URLs). Images: up to 32 MB. Documents: up to 200 MB (local files) or 512 MB (public URLs). | [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) and [Pegasus](/v1.3/docs/concepts/models/pegasus/pegasus-1-6#input-requirements) requirements.

## Inline

Provide content inline in the request. You cannot reuse this content across multiple operations.

| Method | Limit                                                                                                    |
| ------ | -------------------------------------------------------------------------------------------------------- |
| URL    | Video and audio: 4 GB. Documents: 512 MB. Images: 32 MB.                                                 |
| Base64 | Video, audio, and PDF files up to 36 MB before encoding, up to 48 MB as base64 text. Images up to 32 MB. |

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

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.

## 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 | Video up to 2 hours, or up to 4 hours when you analyze only a portion of it; analyze between 1 second and 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) |

## Analyze images

| Mode  | Limit                           | Reference                                                                                                                                                                                                                            |
| ----- | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Sync  | Up to twenty images per request | [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 twenty images per request | [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) |

## Create embeddings

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

| Mode  | Content type | Limit                                                                                                | Reference                                                                                                                                                                                                                                                                   |
| ----- | ------------ | ---------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Sync  | Video, audio | Marengo 3.5: up to 30 seconds, and up to 32 MB for each media source. Marengo 3.0: 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 | Marengo 3.5: no duration limit. Marengo 3.0: up 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) |

# Search content

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