Search

This quickstart guide provides a simplified introduction to searching video content using the TwelveLabs Video Understanding Platform. It includes:

  • A basic working example
  • Minimal implementation details
  • Core parameters for common use cases

For a comprehensive guide, see the Search page.

Prerequisites

  • To use the platform, you need an API key:

    1

    If you don’t have an account, sign up for a free account.

    2

    Go to the API Keys page.

    3

    Select the Copy icon next to your key.

  • Depending on the programming language you are using, install the TwelveLabs SDK by entering one of the following commands:

    $pip install twelvelabs
  • Your video files must meet the format requirements.

Starter code

Copy and paste the code below to make a search request, replacing the placeholders surrounded by <> with your values.

1from twelvelabs import TwelveLabs
2from twelvelabs.indexes import IndexesCreateRequestModelsItem
3from twelvelabs.tasks import TasksRetrieveResponse
4
5# 1. Initialize the client
6client = TwelveLabs(api_key="<YOUR_API_KEY>")
7
8# 2. Create an index
9# An index is a container for organizing your video content
10index = client.indexes.create(
11 index_name="<YOUR_INDEX_NAME>",
12 models=[
13 IndexesCreateRequestModelsItem(
14 model_name="marengo3.0",
15 model_options=["visual", "audio"]
16 )
17 ]
18)
19if index.id is None:
20 raise RuntimeError("Failed to create an index.")
21print(f"Created index: id={index.id}")
22
23# 3. Upload a video
24task = client.tasks.create(
25 index_id=index.id,
26 video_url="<YOUR_VIDEO_URL>"
27 # Or for a local file: video_file=open("<PATH_TO_VIDEO_FILE>", "rb")
28 )
29print(f"Created task: id={task.id}")
30
31# 4. Monitor the indexing process
32def on_task_update(task: TasksRetrieveResponse):
33 print(f" Status={task.status}")
34task = client.tasks.wait_for_done(task_id=task.id, callback=on_task_update)
35if task.status != "ready":
36 raise RuntimeError(f"Indexing failed with status {task.status}")
37print(
38 f"Upload complete. The unique identifier of your video is {task.video_id}.")
39
40# 5. Perform a search request
41search_pager = client.search.query(
42 index_id=index.id, query_text="<YOUR_QUERY>", search_options=["visual", "audio"],)
43
44# 6. Process the search results
45print("Search results:")
46for clip in search_pager:
47 print(
48 f" video_id {clip.video_id} rank={clip.rank} start={clip.start} end={clip.end}"
49 )

Step-by-step guide

1

Import the SDK and initialize the client

Create a client instance to interact with the TwelveLabs Video Understanding Platform.

2

Create an index

Indexes store and organize your video data, allowing you to group related videos. Create one before uploading videos. See the Indexes page for more details.

3

Upload videos

To perform any downstream tasks, you must first upload your videos, and the platform must finish indexing them.

4

Monitor the indexing process

The platform requires some time to index videos. Check the status of the video indexing task until it’s completed.

5

Perform searches

Search the videos within the specified index using natural language to find video segments matching specific keywords or phrases.

6

Process the search results

This example prints the search results to the standard output.