Video indexing tasks

This method of uploading videos will be deprecated in a future version. New implementations should use direct uploads or multipart uploads followed by separate indexing.

A video indexing task represents a request to upload and index a video. The TasksWrapper class provides methods to manage your video indexing tasks.

Methods

Create a video indexing task

Description: This method creates a new video indexing task that uploads and indexes a video.

Your video files must meet the format requirements based on the models enabled for your index:

Note

This method is rate-limited. For details, see the Rate limits page.

Function signature and example:

1create(request: TwelvelabsApi.TasksCreateRequest, requestOptions?: Tasks.RequestOptions): core.HttpResponsePromise<TwelvelabsApi.TasksCreateResponse>;

Parameters:

NameTypeRequiredDescription
requestTasksCreateRequestYesParameters for creating the new video indexing task.
requestOptionsRequestOptionsNoRequest-specific configuration.

The TasksCreateRequest interface defines the parameters for creating a new video indexing task:

NameTypeRequiredDescription
indexIdstringYesThe unique identifier of the index to which the video will be uploaded.
videoFileFile | fs.ReadStream | BlobNoThe video file to upload. This parameter can be a File, an fs.ReadStream, or a Blob.
videoUrlstringNoThe publicly accessible URL of the video you want to upload.
enableVideoStreambooleanNoIndicates if the platform stores the video for streaming. When set to true, the platform stores the video, and you can retrieve its URL. For details, see the Retrieve video information section.
userMetadatastringNoMetadata that helps you categorize your videos. You can specify a stringified list of keys and values.

Return value: Returns a Promise that resolves to a TasksCreateResponse instance.

The TasksCreateResponse interface contains the following properties:

NameTypeDescription
idstringThe unique identifier of your video indexing task.
videoIdstringThe unique identifier of the video associated with your video indexing task.

API Reference: Create a video indexing task.

Retrieve a video indexing task

Description: This method retrieves the details of a specific video indexing task.

Function signature and example:

1retrieve(taskId: string, requestOptions?: Tasks.RequestOptions): core.HttpResponsePromise<TwelvelabsApi.TasksRetrieveResponse>;

Parameters:

NameTypeRequiredDescription
taskIdstringYesThe unique identifier of the video indexing task to retrieve.
requestOptionsRequestOptionsNoRequest-specific configuration.

Return value: Returns a Promise that resolves to a TasksRetrieveResponse instance representing the retrieved video indexing task..

The TasksRetrieveResponse interface extends VideoIndexingTask and contains the following properties:

NameTypeDescription
idstringThe unique identifier of the task.
videoIdstringThe unique identifier of the video associated with the specified video indexing task.
createdAtstringThe date and time, in the RFC 3339 format, that the task was created.
updatedAtstringThe date and time, in the RFC 3339 format, that the task object was last updated.
statusstringThe status of the video indexing task.
indexIdstringThe unique identifier of the index to which the video must be uploaded.
systemMetadataVideoIndexingTaskSystemMetadataSystem-generated metadata about the video.
hlsHlsObjectHLS streaming information for the video.

The VideoIndexingTaskSystemMetadata interface contains the following properties:

NameTypeDescription
durationnumberThe duration of the video.
filenamestringThe filename of the video.
heightnumberThe height of the video.
widthnumberThe width of the video.

The HlsObject interface contains the following properties:

NameTypeDescription
videoUrlstringThe URL of the video for HLS streaming.
thumbnailUrlsstring[]An array containing the URL of the thumbnail.
statusstringThe encoding status of the video file from its original format to a streamable format.
updatedAtstringThe date and time, in the RFC 3339 format, that the encoding status was last updated.

API Reference: Retrieve a video indexing task.

Wait for a video indexing task to complete

Description: This method waits until a video indexing task is completed. It checks the task status at regular intervals by retrieving its details. If you provide a callback function, the method calls it after each status check with the current task object. This allows you to monitor the progress of the task.

1waitForDone(taskId: string, options?: {
2sleepInterval?: number;
3callback?: (task: TwelvelabsApi.TasksRetrieveResponse) => void | Promise<void>;
4}, requestOptions?: Tasks.RequestOptions): Promise<TwelvelabsApi.TasksRetrieveResponse>;

Parameters:

NameTypeRequiredDescription
taskIdstringYesThe unique identifier of the task to wait for.
optionsobjectNoOptions for the wait operation.
options.sleepIntervalnumberNoThe time in seconds to wait between status checks. Must be greater than 0. Default: 5.0.
options.callback(task: TasksRetrieveResponse) => void | Promise<void>NoAn optional function to call after each status check. It receives the current task object. Use this to monitor progress.
requestOptionsRequestOptionsNoRequest-specific configuration.

Return value: A Promise that resolves to a TasksRetrieveResponse representing the completed task. See the Retrieve a video indexing task section above for complete property details.

List video indexing tasks

Description: This method returns a paginated list of the video indexing tasks in your account based on the provided parameters. By default, the platform returns your video indexing tasks sorted by creation date, with the newest at the top of the list.

Function signature and example:

1list(request?: TwelvelabsApi.TasksListRequest, requestOptions?: Tasks.RequestOptions): Promise<core.Page<TwelvelabsApi.VideoIndexingTask>>;

Parameters:

NameTypeRequiredDescription
requestTasksListRequestNoParameters for filtering the list of tasks. Default: {}.
requestOptionsRequestOptionsNoRequest-specific configuration.

The TasksListRequest interface defines the parameters for listing video indexing tasks:

NameTypeRequiredDescription
pagenumberNoA number that identifies the page to retrieve. Default: 1.
pageLimitnumberNoThe number of items to return on each page. Default: 10. Max: 50.
sortBystringNoThe field to sort on. Available options: updated_at, created_at. Default: created_at.
sortOptionstringNoThe sorting direction. Available options: asc, desc. Default: desc.
indexIdstringNoFilter by the unique identifier of an index.
statusTasksListRequestStatusItem | TasksListRequestStatusItem[]NoFilter by one or more video indexing task statuses. Available options: ready, uploading, validating, pending, queued, indexing, failed.
filenamestringNoFilter by filename.
durationnumberNoFilter by duration. Expressed in seconds.
widthnumberNoFilter by width.
heightnumberNoFilter by height.
createdAtstringNoFilter video indexing tasks by the creation date and time, in the RFC 3339 format. The platform returns the video indexing tasks that were created on the specified date at or after the given time.
updatedAtstringNoFilter video indexing tasks by the last update date and time, in the RFC 3339 format. The platform returns the video indexing tasks that were updated on the specified date at or after the given time.

Return value: Returns a Promise that resolves to a Page<VideoIndexingTask> object that implements AsyncIterable, allowing you to iterate through the results.

The VideoIndexingTask interface contains the following properties:

NameTypeDescription
idstringThe unique identifier of the task.
videoIdstringThe unique identifier of the video associated with the specified video indexing task.
createdAtstringThe date and time, in the RFC 3339 format, that the task was created.
updatedAtstringThe date and time, in the RFC 3339 format, that the task object was last updated.
statusstringThe status of the video indexing task.
indexIdstringThe unique identifier of the index to which the video must be uploaded.
systemMetadataVideoIndexingTaskSystemMetadataSystem-generated metadata about the video.

The VideoIndexingTaskSystemMetadata interface contains the following properties:

NameTypeDescription
durationnumberThe duration of the video.
filenamestringThe filename of the video.
heightnumberThe height of the video.
widthnumberThe width of the video.

API Reference: List video indexing tasks.

Delete a video indexing task

Description: This method deletes an existing video indexing task. This action cannot be undone. You can only delete video indexing tasks for which the status is ready or failed. If the status of your video indexing task is ready, you must first delete the video vector associated with your video indexing task.

Function signature and example:

1delete(taskId: string, requestOptions?: Tasks.RequestOptions): core.HttpResponsePromise<void>;

Parameters:

NameTypeRequiredDescription
taskIdstringYesThe unique identifier of the video indexing task to delete.
requestOptionsRequestOptionsNoRequest-specific configuration.

Return value: Returns a Promise that resolves to void. This method doesn’t return any data upon successful completion.

API Reference: Delete a video indexing task.

Error codes

This section lists the most common error messages you may encounter while uploading videos.

  • video_resolution_too_low
    • The resolution of the video is too low. Please upload a video with resolution between 360x360 and 5184x2160. Current resolution is {current_resolution}.
  • video_resolution_too_high
    • The resolution of the video is too high. Please upload a video with resolution between 360x360 and 5184x2160. Current resolution is {current_resolution}.
  • video_resolution_invalid_aspect_ratio
    • The aspect ratio of the video is invalid. Please upload a video with aspect ratio between 1:1 and 2.4:1. Current resolution is {current_resolution}.
  • video_file_broken
    • Cannot read video file. Please check the video file is valid and try again.
  • task_cannot_be_deleted
    • (Returns raw error message)
  • usage_limit_exceeded
  • video_filesize_too_large
    • The video is too large. Please use a video with a size less than {maximum_size}. The current size is {current_file_size}.
  • video_duration_too_short
    • The video is too short. Please use a video with duration at least {minimum_duration} seconds. Current duration is {current_duration} seconds.
  • video_duration_too_long
    • The video is too long. Please use a video with duration at most {maximum_duration} seconds. Current duration is {current_duration} seconds.

Note that the minimum and maximum durations depend on the models enabled for your index. For details, see the input requirements of each model on the Marengo and Pegasus pages. If both models are enabled, the most restrictive requirements apply.