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

# Migration guide

> Migrate from Marengo 2.7 to Marengo 3.0 on Amazon Bedrock.

Marengo 2.7 will be deprecated. Embeddings created with Marengo 2.7 are not compatible with Marengo 3.0. You must migrate to Marengo 3.0 and regenerate all your embeddings.

Marengo 3.0 introduces the following key changes to how you invoke the model:

* **Nested input structure**: Input parameters are now organized inside objects based on the value of the `inputType` parameter.
* **Combined text and image inputs**: You can now combine text and image in a single request using the new `text_image` input type.
* **Parameter updates**: Several parameters have changed. For example, `embedding_options` now uses different values to specify which types of embeddings to retrieve.

# Migration steps

Update your code to use the new structure and the parameter changes. For details see the [Structural changes](#structural-changes) and [Parameter changes](#parameter-changes) sections below.

Update your model ID to `twelvelabs.marengo-embed-3-0-v1:0`.

Test your integration with the new version.

# Structural changes

Marengo 3.0 uses a nested structure for all input types. To organize your input parameters, place them inside an object that corresponds to the value of the `inputType` parameter. For example, if you set `inputType` to `text`, you should nest your `inputText` parameter within an object called `text`. This structure applies to all input types, including text, image, video, audio, and text\_image. The examples below illustrate the differences in structure between Marengo 2.7 and Marengo 3.0 for each input type.

## Synchronous processing changes

### Text inputs

**Marengo 2.7 structure:**

```json
{
  "inputType": "text",
  "inputText": "<YOUR_TEXT>"
}
```

**Marengo 3.0 structure:**

```json
{
  "inputType": "text",
  "text": {
    "inputText": "<YOUR_TEXT>"
  }
}
```

### Image inputs

**Marengo 2.7 structure:**

```json
{
  "inputType": "image",
  "mediaSource": {
    "s3Location": {
      "uri": "<YOUR_S3_URI>",
      "bucketOwner": "<YOUR_BUCKET_OWNER>"
    }
  }
}
```

**Marengo 3.0 structure:**

```json
{
  "inputType": "image",
  "image": {
    "mediaSource": {
      "s3Location": {
        "uri": "<YOUR_S3_URI>",
        "bucketOwner": "<YOUR_BUCKET_OWNER>"
      }
    }
  }
}
```

### Combined text and image inputs

**Marengo 2.7 structure**: Not supported. You must create separate embeddings.

**Marengo 3.0 structure**:

```json
{
  "inputType": "text_image",
  "text_image": {
      "inputText": "<YOUR_TEXT>",
      "mediaSource": {
          "s3Location": {
              "uri": "<YOUR_URI>",
              "bucketOwner": "<YOUR_ACCOUNT_ID>"
          }
      }
  }
}
```

## Asynchronous processing changes

### Video inputs

**Marengo 2.7 structure:**

```json
{
  "inputType": "video",
  "mediaSource": {
    "s3Location": {
      "uri": "<YOUR_S3_URI>",
      "bucketOwner": "<YOUR_BUCKET_OWNER>"
    }
  }
}
```

**Marengo 3.0 structure:**

```json
{
  "inputType": "video",
  "video": {
    "mediaSource": {
      "s3Location": {
        "uri": "<YOUR_S3_URI>",
        "bucketOwner": "<YOUR_BUCKET_OWNER>"
      }
    }
  }
}
```

### Audio inputs

**Marengo 2.7 structure:**

```json
{
  "inputType": "audio",
  "mediaSource": {
    "s3Location": {
      "uri": "<YOUR_S3_URI>",
      "bucketOwner": "<YOUR_BUCKET_OWNER>"
    }
  }
}
```

**Marengo 3.0 structure:**

```json
{
  "inputType": "audio",
  "audio": {
    "mediaSource": {
      "s3Location": {
        "uri": "<YOUR_S3_URI>",
        "bucketOwner": "<YOUR_BUCKET_OWNER>"
      }
    }
  }
}
```

### Image inputs

**Marengo 2.7 structure:**

```json
{
  "inputType": "image",
  "mediaSource": {
    "s3Location": {
      "uri": "<YOUR_S3_URI>",
      "bucketOwner": "<YOUR_BUCKET_OWNER>"
    }
  }
}
```

**Marengo 3.0 structure:**

```json
{
  "inputType": "image",
  "image": {
    "mediaSource": {
      "s3Location": {
        "uri": "<YOUR_S3_URI>",
        "bucketOwner": "<YOUR_BUCKET_OWNER>"
      }
    }
  }
}
```

### Text inputs

**Marengo 2.7 structure:**

```json
{
  "inputType": "text",
  "inputText": "<YOUR_TEXT>"
}
```

**Marengo 3.0 structure:**

```json
{
  "inputType": "text",
  "text": {
    "inputText": "<YOUR_TEXT>"
  }
}
```

### Combined text and image inputs

**Marengo 2.7 structure**: Not supported. You must create separate embeddings.

**Marengo 3.0 structure**:

```json
{
    "inputType": "text_image",
    "text_image": {
        "inputText": "<YOUR_TEXT>",
        "mediaSource": {
            "s3Location": {
                "uri": "<YOUR_S3_URI>",
                "bucketOwner": "<YOUR_ACCOUNT_ID>"
            }
        }
    }
}
```

# Parameter changes

Marengo 3.0 changes the valid values for the `embedding_options` parameter. This parameter specifies which types of embeddings to retrieve.

**Marengo 2.7 values**:

* `visual-text`: Visual embeddings optimized for text search
* `visual-image`: Visual embeddings optimized for image search
* `audio`: Embeddings of the audio in the video

**Marengo 3.0 values**:

* `visual`: Visual embeddings from the video
* `audio`: Embeddings of the audio in the video
* `transcription`: Embeddings of the transcribed text

> **Note**
>
> Marengo 3.0 introduces additional parameter changes beyond those documented in this guide. For a complete list of request parameters and response fields, see the [TwelveLabs Marengo Embed 3.0](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-marengo-3.html) page in the AWS Bedrock documentation.