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

# Retrieve an index

GET https://api.twelvelabs.io/v1.3/indexes/{index-id}

This method retrieves details about the specified index.


Reference: https://docs.twelvelabs.io/api-reference/indexes/retrieve

## Authentication

- `x-api-key` header (required) — Your API key. You can find your API key on the API Keys page.

## Request

### Path parameters

- `index-id` (string, required) — Unique identifier of the index to retrieve.

## Response

### 200

The specified index has successfully been retrieved.

- `_id` (string, optional) — A string representing the unique identifier of the index. It is assigned by the platform when an index is created.
- `created_at` (string, optional) — A string representing the date and time, in the RFC 3339 format ("YYYY-MM-DDTHH:mm:ssZ"), that the index was created.
- `updated_at` (string, optional) — A string representing the date and time, in the RFC 3339 format ("YYYY-MM-DDTHH:mm:ssZ"), that the index has been updated.
- `expires_at` (string, optional) — A string representing the date and time, in the RFC 3339 format ("YYYY-MM-DDTHH:mm:ssZ"), when your index will expire. If you're on the Free plan, the platform retains your index data for 90 days from creation. After this period, the platform deletes your index data, and this action cannot be undone. To continue using your index beyond this period, consider upgrading to the Developer plan, which offers unlimited index retention. For details, see the [Upgrade to the Developer plan](/v1.3/docs/get-started/manage-your-plan#upgrade-to-the-developer-plan) section. If you're on the Developer plan, this field is set to `null`, indicating no expiration.
- `index_name` (string, optional) — A string representing the name of the index.
- `total_duration` (double, optional) — A number representing the total duration, in seconds, of the videos in the index.
- `video_count` (double, optional) — The number of videos uploaded to this index.
- `models` (list of IndexModelsItems, optional) — An array containing the list of the [video understanding models](/v1.3/docs/concepts/models) enabled for this index.
- `addons` (list of string, optional) — The list of the add-ons that are enabled for this index.

## Errors

### 400 Bad Request Error

The request has failed.

- `code` (string, optional) — A string representing the code associated with the error. See the [Error codes](/v1.3/api-reference/error-codes) page for details.
- `message` (string, optional) — A human-readable string describing the error, intended to be suitable for display in a user interface.

## Types

### IndexModelsItems

- `model_name` (string, optional) — A string representing the name of the model.
- `model_options` (list of string, optional) — An array of strings that contains the [model options](/v1.3/docs/concepts/modalities#model-options) enabled for this index.

## Examples

**Response**

```json
{
  "_id": "62d9bafa90077fc60af827a0",
  "created_at": "2024-01-09T11:11:20.463Z",
  "updated_at": "2024-01-09T11:17:15.296Z",
  "expires_at": "2024-04-08T11:11:20.463Z",
  "index_name": "myIndex",
  "total_duration": 8716.8969,
  "video_count": 12,
  "models": [
    {
      "model_name": "marengo3.0",
      "model_options": [
        "visual",
        "audio"
      ],
      "addons": [
        "thumbnail"
      ]
    }
  ]
}
```

**SDK Code**

```python indexes_retrieve_example
import requests

url = "https://api.twelvelabs.io/v1.3/indexes/6298d673f1090f1100476d4c"

headers = {"x-api-key": "<apiKey>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript indexes_retrieve_example
const url = 'https://api.twelvelabs.io/v1.3/indexes/6298d673f1090f1100476d4c';
const options = {method: 'GET', headers: {'x-api-key': '<apiKey>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go indexes_retrieve_example
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.twelvelabs.io/v1.3/indexes/6298d673f1090f1100476d4c"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("x-api-key", "<apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby indexes_retrieve_example
require 'uri'
require 'net/http'

url = URI("https://api.twelvelabs.io/v1.3/indexes/6298d673f1090f1100476d4c")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<apiKey>'

response = http.request(request)
puts response.read_body
```

```java indexes_retrieve_example
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.twelvelabs.io/v1.3/indexes/6298d673f1090f1100476d4c")
  .header("x-api-key", "<apiKey>")
  .asString();
```

```php indexes_retrieve_example
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.twelvelabs.io/v1.3/indexes/6298d673f1090f1100476d4c', [
  'headers' => [
    'x-api-key' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp indexes_retrieve_example
using RestSharp;

var client = new RestClient("https://api.twelvelabs.io/v1.3/indexes/6298d673f1090f1100476d4c");
var request = new RestRequest(Method.GET);
request.AddHeader("x-api-key", "<apiKey>");
IRestResponse response = client.Execute(request);
```

```swift indexes_retrieve_example
import Foundation

let headers = ["x-api-key": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.twelvelabs.io/v1.3/indexes/6298d673f1090f1100476d4c")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```