> This page is for version v1.3 (default).
> For other versions, use one of these documentation indexes:
> - v1.3 (default): https://docs.twelvelabs.io/v1.3/llms.txt

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

## Predefined formats for video analysis will be sunset and removed

**Update**: This deprecation was completed on February 15, 2026. See the February 15, 2026 entry for details.

The `/gist` and `/summarize` endpoints, which generate text based on predefined formats, will be sunset and removed on February 15, 2026. Instead, use the [`/analyze`](/api-reference/analyze-videos/analyze) endpoint, which provides structured JSON responses.

This consolidation provides the same capabilities with the following benefits:

* **Reduced API surface area**: A single endpoint simplifies integration and maintenance
* **Fully customizable schemas**: Define custom fields, naming conventions, and schema variations to match your requirements
* **Improved chapterization quality**: Significantly better chapter detection and segmentation
* **Better adherence to rules**: Enhanced accuracy when applying duration-based chapter rules
* **More stable output**: Predictable, consistent responses across requests

### Actions required

Complete these migration steps before February 15, 2026:

Update your code to use the `/analyze` endpoint instead of `/gist` and `/summarize`.

Define a schema for the `/analyze` endpoint that outlines the expected structure for the response.

The prompt in the example below requests the title of a video, and the schema defines a field named `title` for the response.

**`Python SDK`**

```python Python SDK
import json
from twelvelabs import TwelveLabs
from twelvelabs.types import ResponseFormat

client = TwelveLabs(api_key="<YOUR_API_KEY>")

text = client.analyze(
    video_id="<YOUR_VIDEO_ID>",
    prompt="Provide the title of this video",
    response_format=ResponseFormat(
        type="json_schema",
        json_schema={
            "type": "object",
            "properties": {
                "title": {"type": "string"}
            },
            "required": ["title"],
        },
    ),
)

data = json.loads(text.data) if text.data else {}
print(f"Title: {data.get('title', 'N/A')}")

```

**`Node.js SDK`**

```typescript Node.js SDK
import { TwelveLabs } from "twelvelabs-js";

const client = new TwelveLabs({ apiKey: "<YOUR_API_KEY>" });

const result = await client.analyze({
  videoId: "<YOUR_VIDEO_ID>",
  prompt: "Provide the title of this video",
  responseFormat: {
    type: "json_schema",
    jsonSchema: {
      type: "object",
      properties: {
        title: { type: "string" },
      },
      required: ["title"],
    },
  },
});

const data = result.data ? JSON.parse(result.data) : {};
console.log(`Title: ${data.title ?? "N/A"}`);

```

**`cURL`**

```shell cURL
curl -X POST https://api.twelvelabs.io/v1.3/analyze \
  -H "x-api-key: <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "video_id": "<YOUR_VIDEO_ID>",
    "prompt": "Provide the title of this video",
    "response_format": {
      "type": "json_schema",
      "json_schema": {
        "type": "object",
        "properties": {
          "title": {"type": "string"}
        },
        "required": ["title"]
      }
    },
    "stream": false
  }'
```

For more examples demonstrating how to use structured JSON responses instead of the `/gist` and `/summarize` endpoints, see the [Structured responses](/v1.3/docs/guides/analyze-videos-and-images/structured-responses) page.

Test your changes by comparing outputs and finalizing your schemas before February 15, 2026.

### Support

For migration assistance, contact our support team at [support@twelvelabs.io](mailto:support@twelvelabs.io).