usingvarclient=newTwelveLabsClient(apiKey);// List all video indexes in your account.varresponse=awaitclient.SubpackageIndexes.ListAsync(xApiKey:apiKey);// The response contains a paginated list of indexes.foreach(varindexinresponse.Data!){Console.WriteLine($"Index: {index.IndexName} (ID: {index.Id}, Videos: {index.VideoCount})");}
Search Videos
Shows how to search across indexed videos using a text query.
1 2 3 4 5 6 7 8 91011121314151617181920
usingvarclient=newTwelveLabsClient(apiKey);// Retrieve the first index to use for searching.varindexes=awaitclient.SubpackageIndexes.ListAsync(xApiKey:apiKey);varindexId=indexes.Data?.FirstOrDefault()?.Id??thrownewAssertInconclusiveException("No indexes found. Create an index and upload videos first.");// Search for video segments matching a text query using visual search.varresults=awaitclient.SubpackageSearch.CreateAsync(xApiKey:apiKey,indexId:indexId,queryText:"a person walking",searchOptions:[SearchPostRequestBodyContentMultipartFormDataSchemaSearchOptionsItems.Visual]);// The response contains matching video clips with timestamps and relevance ranking.foreach(variteminresults.Data!){Console.WriteLine($"Video: {item.VideoId}, Start: {item.Start}s, End: {item.End}s, Rank: {item.Rank}");}
Analyze Video
Shows how to generate text from video content using open-ended analysis.
1 2 3 4 5 6 7 8 910111213141516171819202122232425
usingvarclient=newTwelveLabsClient(apiKey);// Retrieve an indexed video to analyze.varindexes=awaitclient.SubpackageIndexes.ListAsync(xApiKey:apiKey);varindexId=indexes.Data?.FirstOrDefault()?.Id??thrownewAssertInconclusiveException("No indexes found. Create an index and upload videos first.");varassets=awaitclient.SubpackageIndexesSubpackageIndexesIndexedAssets.ListAsync(indexId:indexId,xApiKey:apiKey);varvideoId=assets.Data?.FirstOrDefault()?.Id??thrownewAssertInconclusiveException("No indexed assets found in the index.");// Generate a summary of the video using open-ended analysis with streaming disabled.varresponse=awaitclient.AnalyzeAsync(xApiKey:apiKey,videoId:videoId,prompt:"Provide a brief summary of this video, including the main topic and key points.",stream:false);// The non-streaming response contains the generated text and token usage.varresult=response.NonStreamAnalyzeResponse;Console.WriteLine($"Generated text: {result!.Data}");Console.WriteLine($"Finish reason: {result.FinishReason}");
Text Embedding
Shows how to generate text embeddings using the MEAI IEmbeddingGenerator interface.
1234567
usingvarclient=newTwelveLabsClient(apiKey);client.WithApiKey(apiKey);// Use the MEAI IEmbeddingGenerator interface for text embeddings.IEmbeddingGenerator<string,Embedding<float>>generator=client;varmetadata=generator.GetService<EmbeddingGeneratorMetadata>();