TwelveLabs Embed API

Create multimodal Marengo embeddings.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/twelvelabs-embed-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

twelvelabs-embed-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: TwelveLabs Analyze Embed API
  description: REST API for the TwelveLabs video-understanding platform. Upload and index video, run any-to-video semantic search (Marengo), generate text from video (Pegasus) - open-ended analysis, gist, and summaries - and create multimodal embeddings. All requests are authenticated with an `x-api-key` header.
  termsOfService: https://www.twelvelabs.io/terms-of-use
  contact:
    name: TwelveLabs Support
    url: https://docs.twelvelabs.io
    email: support@twelvelabs.io
  version: '1.3'
servers:
- url: https://api.twelvelabs.io/v1.3
security:
- apiKeyAuth: []
tags:
- name: Embed
  description: Create multimodal Marengo embeddings.
paths:
  /embed:
    post:
      operationId: createEmbeddings
      tags:
      - Embed
      summary: Create sync embeddings
      description: Creates Marengo embeddings for text, image, audio, or short video in a single shared multimodal vector space. For longer audio/video, use the asynchronous embedding task endpoints.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
              - model_name
              properties:
                model_name:
                  type: string
                  description: The Marengo embedding model, e.g. Marengo-retrieval-2.7.
                text:
                  type: string
                  description: Text to embed.
                image_url:
                  type: string
                image_file:
                  type: string
                  format: binary
                audio_url:
                  type: string
                audio_file:
                  type: string
                  format: binary
                video_url:
                  type: string
                  description: URL of a short (<10 min) video to embed.
                video_file:
                  type: string
                  format: binary
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddingResponse'
  /embed/tasks:
    post:
      operationId: createEmbeddingTask
      tags:
      - Embed
      summary: Create an async embedding task
      description: Creates an asynchronous embedding task for longer audio and video (up to several hours). Results are stored for seven days.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
              - model_name
              properties:
                model_name:
                  type: string
                video_url:
                  type: string
                video_file:
                  type: string
                  format: binary
                video_embedding_scopes:
                  type: array
                  items:
                    type: string
                    enum:
                    - clip
                    - video
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  _id:
                    type: string
    get:
      operationId: listEmbeddingTasks
      tags:
      - Embed
      summary: List async embedding tasks
      parameters:
      - name: page
        in: query
        schema:
          type: integer
          default: 1
      - name: page_limit
        in: query
        schema:
          type: integer
          default: 10
          maximum: 50
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/EmbeddingTask'
                  page_info:
                    $ref: '#/components/schemas/PageInfo'
  /embed/tasks/{task_id}:
    get:
      operationId: retrieveEmbeddingTask
      tags:
      - Embed
      summary: Retrieve embedding task status and results
      parameters:
      - $ref: '#/components/parameters/TaskId'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddingTask'
components:
  schemas:
    PageInfo:
      type: object
      properties:
        limit_per_page:
          type: integer
        total_results:
          type: integer
        page:
          type: integer
        total_page:
          type: integer
        next_page_token:
          type: string
        prev_page_token:
          type: string
    EmbeddingTask:
      type: object
      properties:
        _id:
          type: string
        model_name:
          type: string
        status:
          type: string
          enum:
          - processing
          - ready
          - failed
        created_at:
          type: string
          format: date-time
        video_embedding:
          $ref: '#/components/schemas/EmbeddingSegments'
    EmbeddingResponse:
      type: object
      properties:
        model_name:
          type: string
        text_embedding:
          $ref: '#/components/schemas/EmbeddingSegments'
        image_embedding:
          $ref: '#/components/schemas/EmbeddingSegments'
        audio_embedding:
          $ref: '#/components/schemas/EmbeddingSegments'
        video_embedding:
          $ref: '#/components/schemas/EmbeddingSegments'
    EmbeddingSegments:
      type: object
      properties:
        segments:
          type: array
          items:
            type: object
            properties:
              float:
                type: array
                items:
                  type: number
              start_offset_sec:
                type: number
              end_offset_sec:
                type: number
              embedding_scope:
                type: string
                enum:
                - clip
                - video
  parameters:
    TaskId:
      name: task_id
      in: path
      required: true
      schema:
        type: string
      description: Unique identifier of the task.
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: TwelveLabs API key sent in the `x-api-key` request header.