> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sunra.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create embeddings

Crea vectores de embedding a partir de entradas de texto o multimedia. Las solicitudes de solo texto devuelven un vector por cada entrada, útil para retrieval, búsqueda semántica, clustering, clasificación y RAG. Las solicitudes que contienen multimedia (imágenes, audio o vídeo como data URIs en base64) fusionan **todas** las entradas en un **único** vector cross-modal — procese cada recurso en su propia solicitud cuando necesite un vector por recurso. Compatible con el formato de la API OpenAI Embeddings. El streaming no está soportado en este endpoint.

## Autenticación

<ParamField header="Authorization" type="string" required>
  Token Bearer. Use su clave API como token Bearer en el encabezado Authorization.

  Formato: `Bearer <SUNRA_KEY>`
</ParamField>

## Solicitud

Este endpoint espera un objeto.

<ParamField body="model" type="string" required>
  ID del modelo de embedding a utilizar, p. ej. `google/gemini-embedding-2`. Consulte la [página de modelos](https://sunra.ai/models) para ver los modelos de embedding disponibles.
</ParamField>

<ParamField body="input" type="string | string[]" required>
  Entradas a convertir en embedding, como una cadena de texto única o un array de cadenas. Las entradas de solo texto se procesan de forma independiente y devuelven un vector por entrada, en el mismo orden que las entradas. Las entradas multimedia se pasan como data URIs en base64 (`data:image/png;base64,…`, `data:audio/mpeg;base64,…`, `data:video/mp4;base64,…`) y pueden mezclarse con texto — pero cualquier solicitud que contenga multimedia devuelve un único vector fusionado para el conjunto de todas las entradas. Límites (del proveedor upstream): como máximo 6 imágenes por solicitud, vídeo de hasta 120 segundos y un presupuesto combinado de 8.192 tokens entre todas las modalidades (tokens de texto; las imágenes cuentan 258 tokens cada una, el audio 25 tokens/segundo y el vídeo 66 tokens/segundo).
</ParamField>

<ParamField body="dimensions" type="integer">
  El número de dimensiones de los embeddings de salida. Solo lo soportan los modelos con dimensiones de salida flexibles (Matryoshka Representation Learning). Para `google/gemini-embedding-2` el valor por defecto es `3072`, y se admiten valores de `128` a `3072`. Los valores más pequeños truncan el vector conservando la mayor parte de la calidad semántica.
</ParamField>

<ParamField body="encoding_format" type="string">
  El formato de los embeddings devueltos. Puede ser `float` (por defecto) o `base64`.
</ParamField>

## Respuesta

<ResponseField name="object" type="string">
  Siempre `list`.
</ResponseField>

<ResponseField name="data" type="object[]">
  Una lista de objetos embedding, uno por entrada, en el orden de las entradas.

  <Expandable title="objeto embedding">
    <ResponseField name="object" type="string">
      Siempre `embedding`.
    </ResponseField>

    <ResponseField name="index" type="integer">
      El índice de la entrada correspondiente.
    </ResponseField>

    <ResponseField name="embedding" type="number[]">
      El vector de embedding.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="model" type="string">
  El modelo utilizado para crear los embeddings.
</ResponseField>

<ResponseField name="usage" type="object">
  Uso de tokens de la solicitud. Los embeddings se facturan únicamente por tokens de entrada, con tarifas específicas por modalidad (consulte la página del modelo para conocer los precios). Las solicitudes con multimedia incluyen recuentos de tokens por modalidad.

  <Expandable title="objeto usage">
    <ResponseField name="prompt_tokens" type="integer">
      Número de tokens de entrada de texto.
    </ResponseField>

    <ResponseField name="input_image_tokens" type="integer">
      Tokens de entrada de imagen (258 por imagen). Presente solo cuando la solicitud contiene imágenes.
    </ResponseField>

    <ResponseField name="input_audio_tokens" type="integer">
      Tokens de entrada de audio (25 por segundo). Presente solo cuando la solicitud contiene audio.
    </ResponseField>

    <ResponseField name="input_video_tokens" type="integer">
      Tokens de entrada de vídeo (66 por segundo). Presente solo cuando la solicitud contiene vídeo.
    </ResponseField>

    <ResponseField name="total_tokens" type="integer">
      Total de tokens de entrada entre todas las modalidades (los embeddings no producen tokens de salida).
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://api-llm.sunra.ai/v1/embeddings \
    -H "Authorization: Bearer <SUNRA_KEY>" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "google/gemini-embedding-2",
      "input": [
        "The quick brown fox jumps over the lazy dog.",
        "Sunra is a platform for AI models."
      ],
      "dimensions": 768
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api-llm.sunra.ai/v1/embeddings",
      headers={
          "Authorization": "Bearer <SUNRA_KEY>",
          "Content-Type": "application/json"
      },
      json={
          "model": "google/gemini-embedding-2",
          "input": [
              "The quick brown fox jumps over the lazy dog.",
              "Sunra is a platform for AI models."
          ],
          "dimensions": 768
      }
  )
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api-llm.sunra.ai/v1/embeddings", {
    method: "POST",
    headers: {
      "Authorization": "Bearer <SUNRA_KEY>",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      model: "google/gemini-embedding-2",
      input: [
        "The quick brown fox jumps over the lazy dog.",
        "Sunra is a platform for AI models."
      ],
      dimensions: 768
    })
  });
  const data = await response.json();
  console.log(data);
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "object": "list",
    "data": [
      {
        "object": "embedding",
        "index": 0,
        "embedding": [0.011253, -0.020551, 0.049236, "..."]
      },
      {
        "object": "embedding",
        "index": 1,
        "embedding": [0.031744, 0.008122, -0.014307, "..."]
      }
    ],
    "model": "google/gemini-embedding-2",
    "usage": {
      "prompt_tokens": 18,
      "total_tokens": 18
    }
  }
  ```
</ResponseExample>
