An index is a basic unit for organizing and storing video data consisting of video embeddings and metadata. Indexes facilitate information retrieval and processing. The Resources.Index class provides methods to manage your indexes.
Properties
| Name | Type | Description |
|---|---|---|
video | VideoResource | Use this property to manage the videos uploaded to this index. |
Methods
Create an index
Description: This method creates a new index based on the provided parameters.
Function signature and example:
async create(
{ name, models, addons }: CreateIndexParams,
options: RequestOptions = {},
): Promise<Models.Index>const createdIndex = await client.index.create({
name: '<YOUR_INDEX_NAME>',
models: [
{
name: 'marengo2.7',
options: ['visual', 'audio'],
},
],
addons: ['thumbnail'],
});
console.log(`ID: ${createdIndex.id}`);
console.log(`Name: ${createdIndex.name}`);
console.log("Models:");
createdIndex.models.forEach((model, index) => {
console.log(` Model ${index + 1}:`);
console.log(` Name: ${model.name}`);
console.log(` Options: ${JSON.stringify(model.options)}`);
});
console.log(`Video count: ${createdIndex.videoCount}`);
console.log(`Total turation: ${createdIndex.totalDuration} seconds`);
console.log(`Created at: ${createdIndex.createdAt}`);
if (createdIndex.updatedAt) {
console.log(`Updated at: ${createdIndex.updatedAt}`);
}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
params | CreateIndexParams | Yes | Parameters for creating the index. |
options | RequestOptions | No | Additional options for the request. Defaults to {}. |
The CreateIndexParams interface has the following properties:
| Name | Type | Required | Description |
|---|---|---|---|
name | string | Yes | The name of the new index. |
models | `name: 'marengo2.7' \ | 'pegasus1.2'; options: ('visual' \ | 'audio')[] }[]` |
addons | string[] | No | A list specifying which add-ons you want to enable. |
Return value: Returns a Promise that resolves to a Models.Index instance representing the newly created index.
API Reference: For a description of each field in the request and response, see the Create an index page.
Related guide: Create indexes.
Retrieve an index
Description: This method retrieves details of a specific index.
Function signature and example:
async retrieve(id: string, options: RequestOptions = {}): Promise<Models.Index>const retrievedIndex = await client.index.retrieve('<YOUR_INDEX_ID>');
console.log(`ID: ${retrievedIndex.id}`);
console.log(`Name: ${retrievedIndex.name}`);
console.log("Models:");
retrievedIndex.modles.forEach((model, index) => {
console.log(` Model ${index + 1}:`);
console.log(` Name: ${model.name}`);
console.log(` Options: ${JSON.stringify(model.options)}`);
});
console.log(`Video count: ${retrievedIndex.videoCount}`);
console.log(`Total turation: ${retrievedIndex.totalDuration} seconds`);
console.log(`Created at: ${retrievedIndex.createdAt}`);
if (retrievedIndex.updatedAt) {
console.log(`Updated at: ${retrievedIndex.updatedAt}`);Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The unique identifier of the index you want to retrieve. |
options | RequestOptions | No | Additional options for the request. Defaults to {}. |
Return value: Returns a Promise that resolves to a Models.Index instance.
API Reference: For a description of each field in the request and response, see the Retrieve an index page
List indexes with direct pagination
Description: The list method retrieves a paginated list of indexes based on the provided parameters. Choose this method mainly when the total number of items is manageable, or you must fetch a single page of results. By default, the platform returns your indexes sorted by creation date, with the newest at the top of the list.
Function signature and example:
async list(
{ id, name, createdAt, updatedAt, ...restParams }: ListIndexParams = {},
options: RequestOptions = {},
): Promise<Models.Index[]>const listParams = {
id: '<YOUR_INDEX_ID>',
name: '<YOUR_INDEX_NAME>',
modelOptions: ['audio', 'visual'],
modelFamily: 'marengo',
page: 1,
pageLimit: 5,
sortBy: 'updated_at',
sortOption: 'asc'
};
const indexes = await client.index.list(listParams);
indexes.forEach(index => {
console.log(`ID: ${index.id}`);
console.log(` Name: ${index.name}`);
console.log(" Models:");
index.models.forEach((model, index) => {
console.log(` Model ${index + 1}:`);
console.log(` Name: ${model.name}`);
console.log(` Options: ${JSON.stringify(model.options)}`);
});
console.log(` Video count: ${index.videoCount}`);
console.log(` Total duration: ${index.totalDuration} seconds`);
console.log(` Created at: ${index.createdAt}`);
if (index.updatedAt) {
console.log(` Updated at: ${index.updatedAt}`);
}
});Parameters
| Name | Type | Required | Description |
|---|---|---|---|
params | ListIndexParams | No | Parameters for retrieving the list of indexes. Defaults to {}. |
options | RequestOptions | No | Additional options for the request. Defaults to {}. |
The ListIndexParams interface extends the PageOptions interface and defines the parameters for listing indexes:
| Name | Type | Required | Description |
|---|---|---|---|
id | string | No | Filter by the unique identifier of an index. |
name | string | No | Filter by the name of an index. |
modelOptions | string[] | No | Filter by model options. |
modelFamily | `'marengo' \ | 'pegasus'` | No |
createdAt | string \ | Record<string, string> | No |
updatedAt | string \ | Record<string, string> | No |
The following properties are inherited from PageOptions:
| Name | Type | Required | Description |
|---|---|---|---|
page | number | No | Page number for pagination. Defaults to 1. |
pageLimit | number | No | Number of items per page. Defaults to 10. |
sortBy | `'createdAt' \ | 'updatedAt'` | No |
sortOption | `'asc' \ | 'desc'` | No |
Return value: Returns a Promise that resolves to an array of Models.Index instances.
API Reference: For a description of each field in the request and response, see the List indexes page.
Related guides:
List indexes with iterative pagination
Description: This method iterates through a paginated list of indexes based on the provided parameters. Choose this method mainly when your application must retrieve a large number of items. By default, the platform returns your indexes sorted by creation date, with the newest at the top of the list.
Function signature and example:
async listPagination(
{ id, name, createdAt, updatedAt, ...restParams }: ListIndexParams = {},
options: RequestOptions = {},
): Promise<Models.IndexListWithPagination>function printIndexPage(indexPage) {
indexPage.forEach(index => {
console.log(`ID: ${index.id}`);
console.log(` Name: ${index.name}`);
console.log(" Models:");
index.models.forEach((model, index) => {
console.log(` Model ${index + 1}:`);
console.log(` Name: ${model.name}`);
console.log(` Options: ${JSON.stringify(model.options)}`);
});
console.log(` Video count: ${index.videoCount}`);
console.log(` Total duration: ${index.totalDuration} seconds`);
console.log(` Created at: ${index.createdAt}`);
if (index.updatedAt) {
console.log(` Updated at: ${index.updatedAt}`);
}
});
}
const listParams = {
id: '66e9358a808d95368f6f7a7c',
name: 'sdk-ref-index-create-01',
modelOptions: ['audio', 'visual'],
modelFamily: 'marengo',
page: 1,
pageLimit: 5,
sortBy: 'updated_at',
sortOption: 'asc'
};
// Fetch the initial page of results
const indexPaginator = await client.index.listPagination(listParams);
// Print the first page of results
printIndexPage(indexPaginator.data);
// Iterate through subsequent pages
while (true) {
const nextIndexPage = await indexPaginator.next();
if (!nextIndexPage) {
console.log('No more pages of index results available');
break;
}
printIndexPage(nextIndexPage);
}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
params | ListIndexParams | No | Parameters retrieving the list of indexes. Defaults to {}. |
options | RequestOptions | No | Additional options for the request. Defaults to {}. |
The ListIndexParams interface extends the PageOptions interface and defines the parameters for listing indexes:
| Name | Type | Required | Description |
|---|---|---|---|
id | string | No | Filter by the unique identifier of an index. |
name | string | No | Filter by the name of an index. |
modelOptions | string[] | No | Filter by the model options. |
modelFamily | `'marengo' \ | 'pegasus'` | No |
createdAt | string \ | Record<string, string> | No |
updatedAt | string \ | Record<string, string> | No |
The following properties are inherited from PageOptions:
| Name | Type | Required | Description |
|---|---|---|---|
page | number | No | Page number for pagination. Defaults to 1. |
pageLimit | number | No | Number of items per page. Defaults to 10. |
sortBy | `'createdAt' \ | 'updatedAt'` | No |
sortOption | `'asc' \ | 'desc'` | No |
Return value: Returns a Promise that resolves to a Models.IndexListWithPagination instance.
Note:To retrieve subsequent pages of results, use the async iterator protocol:
- Invoke the
nextmethod of theIndexListWithPaginationobject.- Repeat this call until the method returns a promise that resolves to
null, indicating no more pages exist.
API Reference: For a description of each field in the request and response, see the List indexes page.
Related guides:
Update an index
Description: This method updates the name of an existing index.
Function signature and example:
async update(id: string, name: string, options: RequestOptions = {}): Promise<void>await client.index.update('<YOUR_INDEX_ID>', '<NEW_NAME>');Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The unique identifier of the index you want to update. |
name | string | Yes | The new name of the index. |
options | RequestOptions | No | Additional options for the request. Defaults to {}. |
Return value: Returns a Promise that resolves to void. This method doesn't return any data upon successful completion.
API Reference: Update an index.
Delete an index
Description: This method deletes an existing index.
Function signature and example:
async delete(id: string, options: RequestOptions = {}): Promise<void>await client.index.delete('YOUR_INDEX_ID>');Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The unique identifier of the index to delete. |
options | RequestOptions | No | Additional options for the request. Defaults to {}. |
Return value: Returns a Promise that resolves to void. This method doesn't return any data upon successful completion.
API Reference: Delete an index.